private AlpsGeneticAlgorithm CreateAlpsGaTspSample() { AlpsGeneticAlgorithm alpsGa = new AlpsGeneticAlgorithm(); #region Problem Configuration var provider = new TSPLIBTSPInstanceProvider(); var instance = provider.GetDataDescriptors().Single(x => x.Name == "ch130"); TravelingSalesmanProblem tspProblem = new TravelingSalesmanProblem(); tspProblem.Load(provider.LoadData(instance)); tspProblem.UseDistanceMatrix.Value = true; #endregion #region Algorithm Configuration alpsGa.Name = "ALPS Genetic Algorithm - TSP"; alpsGa.Description = "An age-layered population structure genetic algorithm which solves the \"ch130\" traveling salesman problem (imported from TSPLIB)"; alpsGa.Problem = tspProblem; SamplesUtils.ConfigureAlpsGeneticAlgorithmParameters <GeneralizedRankSelector, MultiPermutationCrossover, InversionManipulator>(alpsGa, numberOfLayers: 1000, popSize: 100, mutationRate: 0.05, elites: 1, plusSelection: true, agingScheme: AgingScheme.Polynomial, ageGap: 20, ageInheritance: 1.0, maxGens: 1000); var checkedCrossovers = new[] { typeof(EdgeRecombinationCrossover), typeof(MaximalPreservativeCrossover), typeof(OrderCrossover2) }; var multiCrossover = (MultiPermutationCrossover)alpsGa.Crossover; var crossovers = multiCrossover.Operators.Where(c => checkedCrossovers.Any(cc => cc.IsInstanceOfType(c))).ToList(); foreach (var c in multiCrossover.Operators) { multiCrossover.Operators.SetItemCheckedState(c, crossovers.Contains(c)); } #endregion return(alpsGa); }
private AlpsGeneticAlgorithm CreateAlpsGaSymRegSample() { AlpsGeneticAlgorithm alpsGa = new AlpsGeneticAlgorithm(); #region Problem Configuration var provider = new VladislavlevaInstanceProvider(); var instance = provider.GetDataDescriptors().Single(x => x.Name.StartsWith("Vladislavleva-5 F5")); var symbRegProblem = new SymbolicRegressionSingleObjectiveProblem(); symbRegProblem.Load(provider.LoadData(instance)); symbRegProblem.MaximumSymbolicExpressionTreeDepth.Value = 35; symbRegProblem.MaximumSymbolicExpressionTreeLength.Value = 35; var grammar = (TypeCoherentExpressionGrammar)symbRegProblem.SymbolicExpressionTreeGrammar; grammar.Symbols.OfType <Exponential>().Single().Enabled = false; grammar.Symbols.OfType <Logarithm>().Single().Enabled = false; #endregion #region Algorithm Configuration alpsGa.Name = "ALPS Genetic Programming - Symbolic Regression"; alpsGa.Description = "An ALPS-GP to solve a symbolic regression problem (Vladislavleva-5 dataset)"; alpsGa.Problem = symbRegProblem; SamplesUtils.ConfigureAlpsGeneticAlgorithmParameters <GeneralizedRankSelector, SubtreeCrossover, MultiSymbolicExpressionTreeManipulator>(alpsGa, numberOfLayers: 1000, popSize: 100, mutationRate: 0.25, elites: 1, plusSelection: false, agingScheme: AgingScheme.Polynomial, ageGap: 15, ageInheritance: 1.0, maxGens: 500); #endregion return(alpsGa); }