public static OptimiserBuilder GetBuilder(DecisionSpace problemSpace) { var hyps = EvolutionaryAlgorithmHyperParameters.GetDefaultHyperParameters(); var population = new Population( 200); hyps.UpdateHyperParameterValue( EvolutionaryAlgorithmHyperParameters.Population_Size, 200); IParentSelectionOperator parentSelector = new ParentSelectionTournament( 20, false); IRecombinationOperator recombinationOperator = new CrossoverSimulatedBinary( 2);; hyps.UpdateHyperParameterValue( EvolutionaryAlgorithmHyperParameters.Number_Of_Parents, 2); IMutationOperator mutationOperator = new MutationAddRandomNumber( 0.1, 0.1, 1); IReinsertionOperator reinsertionOperator = new ReinsertionReplaceRandom(); return(new EvolutionaryAlgorithmBuilderContinuousMO(population, problemSpace, hyps, parentSelector, recombinationOperator, mutationOperator, reinsertionOperator)); }
public void Select_RequestOne_BestIsAlwaysIncluded_GetBest() { var selector = new ParentSelectionTournament(10, true); var parents = selector.Select(testPop, 1); Assert.Equal(testPop.Best(), parents.ElementAt(0)); }
public void Select_NumberToSelectGreaterThanPopulationSize_Throws() { var selector = new ParentSelectionTournament(10); Assert.Throws <ArgumentOutOfRangeException>(() => selector.Select(testPop, testPop.Count() + 1)); }
public void Select_PopulationSmallerThanTournamentSize_Throws() { var selector = new ParentSelectionTournament(100); Assert.Throws <ArgumentOutOfRangeException>(() => selector.Select(testPop, 1)); }
public void Select_RequestFive_BestIsAlwaysIncluded_GetFiveIncludingBest() { var selector = new ParentSelectionTournament(10, true); var parents = selector.Select(testPop, 5); Assert.True(parents.Count() == 5); Assert.Contains(testPop.Best(), parents); }
public void Select_RequestOne_GetOne() { var selector = new ParentSelectionTournament(10, false); var parents = selector.Select(testPop, 1); Assert.True(parents.Count() == 1); Assert.True(parents.ElementAt(0) != testPop.Worst()); }