Esempio n. 1
0
        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 ReInsert_BetterThanBest_Inserts()
        {
            var newInd = Helpers.CreateFitnessAssessedIndividualsFromArray(
                new double[][] { new[] { 1.0, 1.0 } },
                new[] { testPop.Best().Fitness - 1 })
                         .First();
            var reinserter = new ReinsertionReplaceRandom();

            reinserter.ReInsert(new[] { newInd }, testPop);

            Assert.Contains(newInd, testPop);
        }
        public void ReInsert_WorseThanWorst_DoesNotInsert()
        {
            var newInd = Helpers.CreateFitnessAssessedIndividualsFromArray(
                new double[][] { new[] { 1.0, 1.0 } },
                new[] { testPop.Worst().Fitness + 1 })
                         .First();
            var reinserter = new ReinsertionReplaceRandom();

            reinserter.ReInsert(new[] { newInd }, testPop);

            Assert.DoesNotContain(newInd, testPop);
        }