Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }