protected void InitGeneticManager()
    {
        var initialGenerationGenerator = new NeuralInitialGenerationCreatorBase(
            InitNeuralModel(),
            new RecursiveNetworkOpBaker());

        var selection = new RouletteWheelSelectionWithRepetion();

        var crossover = new OnePointCrossover(true);
        var breeding  = new BreedingClassic(
            crossoverPart,
            minProduction: 1,
            selection: selection,
            crossover: crossover,
            mutationManager: InitMutations()
            );

        var reinsertion = new ReinsertionFromSelection(
            reinsertionPart,
            minProduction: 0,
            selection: new EliteSelection());
        var producers   = new IGenomeProducer[] { breeding, reinsertion };
        var genomeForge = new GenomeForge(producers);

        var generationManager = new GenerationManagerKeepLast();

        geneticManager = new GeneticManagerClassic(
            generationManager,
            initialGenerationGenerator,
            genomeForge,
            genomesCount
            );

        geneticManager.Init();
    }
Beispiel #2
0
        public Program()
        {
            var synapseTracker = new SynapseInnovNbTracker();

            var initialGenerationGenerator = new NeuralInitialGenerationCreatorBase(
                InitModel(),
                new RecursiveNetworkOpBaker());

            //var selection = new EliteSelection();
            var selection = new RouletteWheelSelectionWithRepetion();
            var crossover = new OnePointCrossover(true);
            var breeding  = new BreedingClassic(
                crossoverPart,
                1,
                selection,
                crossover,
                InitMutations()
                );

            var reinsertion = new ReinsertionFromSelection(
                reinsertionPart, 0, new EliteSelection());
            var producers   = new IGenomeProducer[] { breeding, reinsertion };
            var genomeForge = new GenomeForge(producers);

            var generationManager = new GenerationManagerKeepLast();

            geneticManager = new GeneticManagerClassic(
                generationManager,
                initialGenerationGenerator,
                genomeForge,
                genomesCount
                );

            geneticManager.Init();
        }
Beispiel #3
0
    private void InitGenetics()
    {
        var initialGenerationGenerator = new NeuralInitialGenerationCreatorBase(
            //Init4InputsNeuralModel(),
            Init2InputsNeuralModel(),
            new FeedForwardOpBaker());

        //var selection = new EliteSelection();
        //var selection = new RouletteWheelSelection();
        var selection = new RouletteWheelSelectionWithRepetion();

        var crossover = new OnePointCrossover(true);
        var breeding  = new BreedingClassic(
            crossoverPart,
            1,
            selection,
            crossover,
            InitMutations()
            );

        var reinsertion = new ReinsertionFromSelection(reinsertionPart, 0, new EliteSelection());
        var producers   = new IGenomeProducer[] { breeding, reinsertion };
        var genomeForge = new GenomeForge(producers);

        var generationManager = new GenerationManagerKeepLast();

        geneticManager = new GeneticManagerClassic(
            generationManager,
            initialGenerationGenerator,
            genomeForge,
            genomesCount
            );

        geneticManager.Init();
    }
Beispiel #4
0
        protected int GetProducerNbOfGenomesToMake(
            int totalRequired,
            int available,
            IGenomeProducer producer)
        {
            var result = (int)(producer.ProductionPart * totalRequired);

            if (result > available)
            {
                result = available;
            }

            if (result < producer.MinProduction)
            {
                result = producer.MinProduction;
            }

            return(result);
        }
Beispiel #5
0
        protected void ExecuteProducer(
            IGenerationManager generationManager,
            GenomeProductionSession totalSession,
            IGenomeProducer producer)
        {
            var requiredNb = GetProducerNbOfGenomesToMake(
                totalSession.requiredNb,
                totalSession.requiredNb - totalSession.CurrentlyProduced.Count,
                producer);

            var thisSession = new GenomeProductionSession(requiredNb);

            producer.Produce(
                generationManager.GetGenomes().ToArray(),
                thisSession,
                totalSession
                );

            totalSession.Merge(thisSession);
        }
Beispiel #6
0
        public EcoSystemController(CanvasAnimatedControl control, MapSize mapSize, IEnumerable <Coordinates> obstacles)
        {
            this.control   = control;
            this.obstacles = obstacles;
            this.mapSize   = mapSize;

            generator      = new OpCodeGenerator();
            bots           = ImmutableList <BeetleBot> .Empty;
            map            = new CellType[mapSize.Width, mapSize.Height];
            cellSize       = new Size(control.Size.Width / mapSize.Width, control.Size.Height / mapSize.Height);
            genomeProducer = new GenomeProducer(generator, GenomeLength, 1);

            Epoch = 0;
            Scene = new Scene(this);

            control.PointerEntered  += OnPointerEntered;
            control.PointerExited   += OnPointerExited;
            control.PointerPressed  += OnPointerPressed;
            control.PointerReleased += OnPointerReleased;
            control.PointerMoved    += OnPointerMoved;
        }
        public Program()
        {
            datasets = GenerateDatasets(25, () => GARandomManager.Random.Next(1, 20)).ToArray();
            //datasets = GenerateDatasets(50, 10).ToArray();

            var synapseTracker = new SynapseInnovNbTracker();

            var initialGenerationGenerator = new NeuralInitialGenerationCreatorBase(
                InitModel(),
                new FeedForwardOpBaker());

            //var selection = new EliteSelection();
            var selection = new RouletteWheelSelectionWithRepetion();
            var crossover = new OnePointCrossover(true);
            var breeding  = new BreedingClassic(
                crossoverPart,
                1,
                selection,
                crossover,
                InitMutations()
                );

            var reinsertion = new ReinsertionFromSelection(
                reinsertionPart, 0, new EliteSelection());
            var producers   = new IGenomeProducer[] { breeding, reinsertion };
            var genomeForge = new GenomeForge(producers);

            var generationManager = new GenerationManagerKeepLast();

            geneticManager = new GeneticManagerClassic(
                generationManager,
                initialGenerationGenerator,
                genomeForge,
                genomesCount
                );

            geneticManager.Init();
        }
Beispiel #8
0
        public Salesman(Vector2[] locations)
        {
            Locations = locations;

            var initialGenerationGenerator = new TSInitGenerationGenerator(Locations);

            var selection = new RouletteWheelSelectionWithRepetion();
            var crossover = new TSCrossover();
            var breeding  = new BreedingClassic(
                crossoverPart,
                0,
                selection,
                crossover,
                InitMutations()
                );

            var reinsertion = new ReinsertionFromSelection(
                reinsertionPart,
                minProduction: 0,
                selection: new EliteSelection());
            var producers = new IGenomeProducer[]
            {
                reinsertion,
                breeding
            };

            var genomeForge       = new GenomeForge(producers);
            var generationManager = new GenerationManagerKeepLast();

            geneticManager = new GeneticManagerClassic(
                generationManager,
                initialGenerationGenerator,
                genomeForge,
                genomesCount
                );
            geneticManager.Init();
        }
Beispiel #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="genomeProducer"></param>
 /// <param name="positioningSystem"></param>
 public BeetleBotFactory(ICreatePositionProvider positionProvider, IGenomeProducer genomeProducer)
 {
     this.positionProvider = positionProvider;
     this.genomeProducer   = genomeProducer;
 }