示例#1
0
        static void Main(string[] args)
        {
            UCTProblem test;

            UCTProblem.HillClimbMode temp = UCTProblem.HillClimbMode.None;
            if (args == null || args.Length == 0)
            {
                Console.WriteLine("Starting with default parameters."); // Check for null array
                test = new UCTProblem(0.75, 200, 10000, 3, 0, true, 0.75, 0.0232558, false);
            }
            else
            {
                if (args.Length == 4)
                {
                    try
                    {
                        double seed = double.Parse(args[0], CultureInfo.InvariantCulture);

                        int pop = int.Parse(args[1]);
                        int gen = int.Parse(args[2]);

                        test = new UCTProblem(seed, pop, gen, 3, 0, true, 0.75, 0.0232558, false);


                        if (args[3] == "0")
                        {
                            temp = UCTProblem.HillClimbMode.None;
                        }
                        else if (args[3] == "1")
                        {
                            temp = UCTProblem.HillClimbMode.ChildOnly;
                        }
                        else if (args[3] == "3")
                        {
                            temp = UCTProblem.HillClimbMode.ParentOnly;
                        }
                        else if (args[3] == "4")
                        {
                            temp = UCTProblem.HillClimbMode.All;
                        }
                        else if (args[3] == "5")
                        {
                            temp = UCTProblem.HillClimbMode.BestOfParent;
                        }
                        else if (args[3] == "6")
                        {
                            temp = UCTProblem.HillClimbMode.AllBestOfParent;
                        }
                        else if (args[3] == "7")
                        {
                            temp = UCTProblem.HillClimbMode.AdaptiveParent;
                        }
                        else if (args[3] == "8")
                        {
                            temp = UCTProblem.HillClimbMode.Rank1Best;
                        }
                        else if (args[3] == "9")
                        {
                            temp = UCTProblem.HillClimbMode.Rank1All;
                        }
                        else if (args[3] == "10")
                        {
                            temp = UCTProblem.HillClimbMode.AdaptiveRank1All;
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Parameter Error: {ex}.");
                        Console.WriteLine("Usage: -seed -pop -generation");
                        return;
                    }
                }
                else
                {
                    Console.WriteLine("Wrong number of parameters.");
                    Console.WriteLine("Usage: -seed -pop -generation");
                    return;
                }
            }

            test.WriteMethod(temp);
            test.FirstGeneration();

            for (int i = 0; i < test.ProblemObj.MaxGeneration; i++)
            {
                test.NextGeneration(temp);
            }

            test.WriteBestGeneration();
            test.WriteFinalGeneration();
            UCTProblem.SaveToFile(test, test.ProblemObj.Title);
        }
示例#2
0
        private void NextGeneration()
        {
            if (_uctproblem.CurrentGeneration == 0)
            {
                _uctproblem.FirstGeneration();
                LogBox.Items.Insert(0, _uctproblem.BestReport());
                LogBox.Items.Insert(0, _uctproblem.GenerationReport());
            }
            else if (_uctproblem.CurrentGeneration < _uctproblem.ProblemObj.MaxGeneration)
            {
                UCTProblem.HillClimbMode temp = UCTProblem.HillClimbMode.None;
                if (RadioHillChild.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.ChildOnly;
                }
                else if (RadioHillParent.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.ParentOnly;
                }
                else if (RadioHillAll.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.All;
                }
                else if (RadioHillBest.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.BestOfParent;
                }
                else if (RadioHillAllBest.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.AllBestOfParent;
                }
                else if (RadioAdaptiveParent.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.AdaptiveParent;
                }
                else if (RadioRankBest.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.Rank1Best;
                }
                else if (RadioRankAll.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.Rank1All;
                }
                else if (RadioAdaptiveRankAll.IsChecked ?? false)
                {
                    temp = UCTProblem.HillClimbMode.AdaptiveRank1All;
                }

                _uctproblem.NextGeneration(temp);
                LogBox.Items.Insert(0, _uctproblem.BestReport());
                LogBox.Items.Insert(0, _uctproblem.GenerationReport());
            }
            else
            {
                _generationTimer.Stop();
                StartPauseGeneration.Content = "Start";
                LogBox.Items.Insert(0, "Problem reached upper generation limit.");
                _uctproblem.WriteBestGeneration();
                _uctproblem.WriteFinalGeneration();
            }

            SetTitleToProblem();
        }