public static void Begin() { var parameters = new ConfiguredLogicalNetworkParameters { InputInterfaceLength = test.InputSize, OutputInterfaceLength = test.OutputSize, //MaxConnectionIndex = 40, //ConnectionCountRange = new InclusiveRange(100, 200), MaxConnectionIndex = 60, ConnectionCountRange = IntRange.CreateFixed(600), FeedForward = true, IndexMutationChance = 0.5, AvailableGates = new HashSet<LogicGateType> { LogicGateType.AND, LogicGateType.NAND, LogicGateType.NOR, LogicGateType.OR, LogicGateType.XNOR, LogicGateType.XOR }, Test = test }; var factory = new ConfiguredLogicalNetworkBodyFactory(parameters); factory.MutationParameters.MutationChunkSize = IntRange.CreateExclusive(1, parameters.ConnectionCountRange.MaxValue / 2); factory.MutationParameters.CrossoverChunkSize = IntRange.CreateExclusive(1, parameters.ConnectionCountRange.MaxValue); //factory.MutationParameters.MutationChunkSize = new InclusiveRange(100); //factory.MutationParameters.CrossoverChunkSize = new InclusiveRange(10); factory.MutationParameters.PointMutationChance = 0.01; factory.MutationParameters.DeletionMutationChance = 0.001; factory.MutationParameters.DuplicationMutationChance = 0.001; factory.MutationParameters.InsertionMutationChance = 0.001; factory.MutationParameters.TranslocationMutationChance = 0.001; factory.MutationParameters.InversionMutationChance = 0.001; var population = new ConfiguredLogicalNetworkPopulation(); population.ChanceOfMigration = 0.05; for (int idx = 0; idx < groupCount; idx++) { var group = new ConfiguredLogicalNetworkGroup( factory, groupSize); //group.SelectionStrategy = new RandomSelectionStrategy(); group.ParentCount = IntRange.CreateFixed(3); population.Groups.Add(group); } var context = new GAContext(population); context.BestBodyArrived += OnBestArrived; sw.Start(); context.Start(); Console.ReadKey(); context.Stop(); sw.Stop(); }
public static void Begin() { var parameters = new ConfiguredNeuralNetworkParameters { InputInterfaceLength = test.InputSize, OutputInterfaceLength = test.OutputSize, MaxConnectionIndex = 24, ConnectionCountRange = IntRange.CreateInclusive(36, 72), FeedForward = true, ActivationFunction = new LinearActivationFunction(2.0), Test = test, FunctionalErrorTreshold = 0.001 }; var factory = new ConfiguredNeuralNetworkBodyFactory(parameters); factory.MutationParameters.MutationChunkSize = IntRange.CreateFixed(parameters.ConnectionCountRange.MaxValue); factory.MutationParameters.CrossoverChunkSize = IntRange.CreateFixed(parameters.ConnectionCountRange.MaxValue); factory.MutationParameters.PointMutationChance = 0.04; factory.MutationParameters.DeletionMutationChance = 0.002; factory.MutationParameters.DuplicationMutationChance = 0.002; factory.MutationParameters.InsertionMutationChance = 0.002; factory.MutationParameters.TranslocationMutationChance = 0.002; factory.MutationParameters.InversionMutationChance = 0.002; var population = new ConfiguredNeuralNetworkPopulation(); population.ChanceOfMigration = 0.1; for (int idx = 0; idx < groupCount; idx++) { var group = new ConfiguredNeuralNetworkGroup( factory, groupSize); //group.SelectionStrategy = new RandomSelectionStrategy(); population.Groups.Add(group); } var context = new GAContext(population); context.BestBodyArrived += OnBestArrived; context.Start(); Console.ReadKey(); context.Stop(); }
public static void Begin() { //var parameters = new AdjustedTestableNetworkParameters //{ // Test = test, // Network = NeuralArchitecture.CreateLayered( // test.InputSize, // test.OutputSize, // () => new Synapse(), // () => new ActivationNeuron(new LinearActivationFunction(1)), // true, // 20, 10) //}; var parameters = new AdjustedTestableNetworkParameters { Test = test, Network = NeuralArchitecture.CreateFullConnected( test.InputSize, test.OutputSize, 20, () => new Synapse(), () => new ActivationNeuron(new LinearActivationFunction(1)), true) }; var factory = new AdjustedNeuralNetworkBodyFactory(parameters); factory.CrossoverChunkSize = IntRange.CreateFixed((parameters.Network.ConnectionCount + parameters.Network.NodeCount) / 2 - 1); //factory.CrossoverChunkSize = new InclusiveRange(10, 10); factory.PointMutationChance = 0.005; var population = new AdjustedNeuralNetworkPopulation(); population.ChanceOfMigration = 0.1; for (int idx = 0; idx < groupCount; idx++) { var group = new AdjustedNeuralNetworkGroup( factory, groupSize); //group.SelectionStrategy = new RandomSelectionStrategy(); population.Groups.Add(group); } var context = new GAContext(population); context.BestBodyArrived += OnBestArrived; context.Start(); Console.ReadKey(); context.Stop(); }