Beispiel #1
0
        static void Main(string[] args)
        {
            var mutator1 = new MutatorFactory <Person>()
                           .AddMutation(p => p.FirstName, "Joe")
                           .AddMutation(p => p.LastName, "Blow")
                           .AddMutation(p => p.Email, "*****@*****.**")
                           .AddMutation(p => p.Address, "123 Main St")
                           .AddMutation(p => p.Birthday, new DateTime(1980, 1, 1))
                           .AddMutation(p => p.Age, 21)
                           .Build();

            var person1 = mutator1.Apply(Person.Default);

            Console.WriteLine(person1.ToString());


            var mutator2 = new MutatorFactory <Person>()
                           .AddMutation(p => p.FirstName, "Martin")
                           .AddMutation(p => p.Birthday, p => p.Birthday?.AddDays(1), options => { options.If = p => p.Age > 25; })
                           .Build();

            var person2 = mutator2.Apply(person1.Value);

            Console.WriteLine(person2.ToString());
        }
        public static IGeneticAlgorithmFactory GetInstance(IEvaluatableFactory evaluatableFactory)
        {
            var networkFactory    = NeuralNetworkFactory.GetInstance();
            var workingSetFactory = EvalWorkingSetFactory.GetInstance();
            var random            = new Random();
            var breederFactory    = BreederFactory.GetInstance(networkFactory, new RandomWeightInitializer(random));
            var mutatorFactory    = MutatorFactory.GetInstance(networkFactory, new RandomWeightInitializer(random));

            return(new GeneticAlgorithmFactory(networkFactory, workingSetFactory, evaluatableFactory, breederFactory, mutatorFactory));
        }
        public void GetMutator_NotRegistered_Throws()
        {
            // arrange
            var factory = new MutatorFactory();

            // act

            // assert
            Assert.Throws <ArgumentOutOfRangeException>(() => factory.GetMutator("foo", new JObject()));
        }
        static void Main(string[] args)
        {
            NeuralNetworkConfigurationSettings networkConfig = new NeuralNetworkConfigurationSettings
            {
                NumInputNeurons    = 1,
                NumOutputNeurons   = 1,
                NumHiddenLayers    = 2,
                NumHiddenNeurons   = 3,
                SummationFunction  = new SimpleSummation(),
                ActivationFunction = new TanhActivationFunction()
            };
            GenerationConfigurationSettings generationSettings = new GenerationConfigurationSettings
            {
                UseMultithreading    = true,
                GenerationPopulation = 500
            };
            EvolutionConfigurationSettings evolutionSettings = new EvolutionConfigurationSettings
            {
                NormalMutationRate  = 0.05,
                HighMutationRate    = 0.5,
                GenerationsPerEpoch = 10,
                NumEpochs           = 1000,
                NumTopEvalsToReport = 10
            };
            MutationConfigurationSettings mutationSettings = new MutationConfigurationSettings
            {
                MutateAxonActivationFunction       = true,
                MutateNumberOfHiddenLayers         = true,
                MutateNumberOfHiddenNeuronsInLayer = true,
                MutateSomaBiasFunction             = true,
                MutateSomaSummationFunction        = true,
                MutateSynapseWeights = true
            };
            var random = new RandomWeightInitializer(new Random());
            INeuralNetworkFactory factory          = NeuralNetworkFactory.GetInstance(SomaFactory.GetInstance(networkConfig.SummationFunction), AxonFactory.GetInstance(networkConfig.ActivationFunction), SynapseFactory.GetInstance(new RandomWeightInitializer(new Random()), AxonFactory.GetInstance(networkConfig.ActivationFunction)), SynapseFactory.GetInstance(new ConstantWeightInitializer(1.0), AxonFactory.GetInstance(new IdentityActivationFunction())), random);
            IBreeder            breeder            = BreederFactory.GetInstance(factory, random).Create();
            IMutator            mutator            = MutatorFactory.GetInstance(factory, random).Create(mutationSettings);
            IEvalWorkingSet     history            = EvalWorkingSetFactory.GetInstance().Create(50);
            IEvaluatableFactory evaluatableFactory = new GameEvaluationFactory();

            IStorageProxy proxy  = new NodeJSProxy(1, "http://localhost:3000", "123456789");
            IEpochAction  action = new BestPerformerUpdater(proxy);

            var GAFactory             = GeneticAlgorithmFactory.GetInstance(evaluatableFactory);
            IGeneticAlgorithm evolver = GAFactory.Create(networkConfig, generationSettings, evolutionSettings, factory, breeder, mutator, history, evaluatableFactory, action);

            evolver.RunSimulation();
        }
        public void RegisterT_RegistersMutator()
        {
            // arrange
            var factory     = new MutatorFactory();
            var mutatorInfo = new { Prop1 = "foo" };
            var asJson      = JsonConvert.SerializeObject(mutatorInfo);
            var jObj        = JsonConvert.DeserializeObject <JObject>(asJson);

            // act
            factory.Register <TestMutator>("test");

            // assert
            var mutator = factory.GetMutator("test", jObj);

            Assert.Equal("xx-foo", mutator("xx"));
        }
        public void GetMutator_Flyweight_ReusesMutator()
        {
            // arrange
            var factory = new MutatorFactory();

            factory.Register <TestMutator>("test");
            var mutatorInfo = new { Prop1 = "foo" };
            var asJson      = JsonConvert.SerializeObject(mutatorInfo);
            var jObj        = JsonConvert.DeserializeObject <JObject>(asJson);

            // act
            var mutator  = factory.GetMutator("test", jObj);
            var mutator2 = factory.GetMutator("test", jObj);

            // assert
            Assert.Equal(mutator2, mutator);
        }
        private Mutator getMutator(MainSettings settings)
        {
            MutatorSettings mutatorSettings = new MutatorSettings(settings.instructionMutationProbability, settings.newInstructionProbability, settings.skipInstructionProbability);

            return(MutatorFactory.getDefaultMutator(mutatorSettings));
        }