Beispiel #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 Operate_OneMutationDesired_ZeroMutationChance_ReturnsOriginalDv()
        {
            var mutator = new MutationAddRandomNumber(
                0.5, 0, 1);

            var newDv = mutator.Operate(testDv);

            Assert.Equal(testDv, newDv);
        }
        public void Operate_ManyMutationsDesired_ReturnsMutatedDv()
        {
            var mutator = new MutationAddRandomNumber(
                0.5, 1, 10);

            var newDv = mutator.Operate(testDv);

            Assert.NotEqual(testDv, newDv);
            Assert.Equal(testDv.Count, newDv.Count);
            Assert.True(newDv.Where((v, i) => v == testDv.ElementAt(i)).Count()
                        <= testDv.Count - 1);
        }
        public void Operate_DiscreteDv_Throws()
        {
            var mutator = new MutationAddRandomNumber(0.5, 1, 1);

            Assert.Throws <ArgumentException>(() => mutator.Operate(invalidDv));
        }