Example #1
0
        private void LoadFileButton_Click(object sender, EventArgs e)
        {
            var openFileDialog = new OpenFileDialog();

            openFileDialog.DefaultExt  = ".txt";
            openFileDialog.Filter      = "Text Files (*.txt)|*.txt";
            openFileDialog.Multiselect = true;

            var result = openFileDialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                var filePaths = openFileDialog.FileNames;

                var isAnyDataLoaded = false;
                try
                {
                    switch (currentFileType)
                    {
                    case FileTypeEnum.CityList:
                    {
                        if (filePaths.Length != 2)
                        {
                            ShowErrorForFileLoading("Please supply: \n1. City List, \n2. City Connections List");
                            return;
                        }
                        loadedData            = FileLoader.LoadCitiesFromCityFiles(filePaths[0], filePaths[1]);
                        loadedDataWithoutFill = FileLoader.CreateCopy(loadedData);

                        ShortestPathHelper.FillRealDistances(loadedData);
                    }
                    break;

                    case FileTypeEnum.GeneratedPoints:
                    {
                        var filePathToLoad = filePaths[0];
                        loadedData = FileLoader.LoadCitiesFromTestFile(filePathToLoad);
                        ShortestPathHelper.FillEuclideanDistances(loadedData);
                    }
                    break;

                    default:
                        break;
                    }

                    isAnyDataLoaded = loadedData.Any();
                }
                catch (Exception exception)
                {
                    ShowErrorForFileLoading(exception.Message);
                    return;
                }

                CalculateRouteButton.Enabled   = isAnyDataLoaded;
                MaxPossiblePathsButton.Enabled = isAnyDataLoaded || currentFileType == FileTypeEnum.CityList;
            }
        }
Example #2
0
        private static void Execute(Bot bot, StringBuilder failsLog, StringBuilder stepCountLog, bool logAverage = false)
        {
            var failedCount        = 0;
            var performanceSum     = 0.0;
            var successfulEpisodes = 0;

            for (var episode = 0; episode < 200000; episode++)
            {
                if (episode % 10 == 0 && episode != 0)
                {
                    if (logAverage)
                    {
                        stepCountLog.AppendFormat("{0}\n", performanceSum / successfulEpisodes);
                        successfulEpisodes = 0;
                        performanceSum     = 0;
                    }
                    failsLog.AppendFormat("{0}\t{1}\n", episode, failedCount);
                    failedCount = 0;
                }
                BotPosHelper.PlaceBot(bot);
                var shortestPath = ShortestPathHelper.GetMinStepCount(bot);
                var botSteps     = bot.FindPrincess();
                if (botSteps > -1 && !logAverage)
                {
                    stepCountLog.AppendFormat("{0:0.00}\n", GetPerformance(botSteps, shortestPath));
                }
                else if (botSteps == -1)
                {
                    failedCount++;
                }
                if (botSteps > -1 && logAverage)
                {
                    performanceSum += GetPerformance(botSteps, shortestPath);
                    successfulEpisodes++;
                }
            }
        }