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)); }