Exemplo n.º 1
0
    private void btnSearchStart_Click(object sender, EventArgs e)
    {
        if (_eaRunner is not null)
        {   // Resume existing EA & update GUI state.
            _eaRunner.StartOrResume();
            UpdateUIState();
            return;
        }

        // Get the current neat experiment, with parameters set from the UI.
        INeatExperiment <double> neatExperiment = GetNeatExperiment();

        // Create evolution algorithm and runner.
        NeatEvolutionAlgorithm <double> ea = NeatUtils.CreateNeatEvolutionAlgorithm(neatExperiment, _neatPop);

        ea.Initialise();

        _eaRunner = new EvolutionAlgorithmRunner(ea, UpdateScheme.CreateTimeSpanUpdateScheme(TimeSpan.FromSeconds(1)));

        // Attach event listeners.
        _eaRunner.UpdateEvent += _eaRunner_UpdateEvent;

        // Start the algorithm & update GUI state.
        _eaRunner.StartOrResume();
        UpdateUIState();
    }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes the evolution algorithm with the provided IGenomeListEvaluator
 /// and an IGenomeFactory that can be used to create an initial population of genomes.
 /// </summary>
 /// <param name="genomeListEvaluator">The genome evaluation scheme for the evolution algorithm.</param>
 /// <param name="genomeFactory">The factory that was used to create the genomeList and which is therefore referenced by the genomes.</param>
 /// <param name="populationSize">The number of genomes to create for the initial population.</param>
 public virtual void Initialize(IGenomeListEvaluator <TGenome> genomeListEvaluator,
                                IGenomeFactory <TGenome> genomeFactory,
                                int populationSize)
 {
     _currentGeneration   = 0;
     _genomeListEvaluator = genomeListEvaluator;
     _genomeFactory       = genomeFactory;
     _genomeList          = genomeFactory.CreateGenomeList(populationSize, _currentGeneration);
     _populationSize      = populationSize;
     _runState            = RunState.Ready;
     _updateScheme        = new UpdateScheme(new TimeSpan(0, 0, 1));
 }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes the evolution algorithm with the provided IGenomeListEvaluator, IGenomeFactory
 /// and an initial population of genomes.
 /// </summary>
 /// <param name="genomeListEvaluator">The genome evaluation scheme for the evolution algorithm.</param>
 /// <param name="genomeFactory">The factory that was used to create the genomeList and which is therefore referenced by the genomes.</param>
 /// <param name="genomeList">An initial genome population.</param>
 public virtual void Initialize(IGenomeListEvaluator <TGenome> genomeListEvaluator,
                                IGenomeFactory <TGenome> genomeFactory,
                                List <TGenome> genomeList)
 {
     _currentGeneration   = 0;
     _genomeListEvaluator = genomeListEvaluator;
     _genomeFactory       = genomeFactory;
     _genomeList          = genomeList;
     _populationSize      = _genomeList.Count;
     _runState            = RunState.Ready;
     _updateScheme        = new UpdateScheme(new TimeSpan(0, 0, 1));
 }
Exemplo n.º 4
0
        private void Initialize_private(IGenomeListEvaluator <TGenome> genomeListEvaluator, IGenomeFactory <TGenome> genomeFactory, List <TGenome> genomeList)
        {
            _prevUpdateGeneration = 0;
            _prevUpdateTimeTick   = DateTime.UtcNow.Ticks;

            _currentGeneration   = 0;
            _genomeListEvaluator = genomeListEvaluator;
            _genomeFactory       = genomeFactory;
            _genomeList          = genomeList;
            _populationSize      = _genomeList.Count;
            _runState            = RunState.Ready;
            _updateScheme        = new UpdateScheme(new TimeSpan(0, 0, 1));
        }
Exemplo n.º 5
0
 /// <summary>
 /// Initializes the evolution algorithm with the provided IGenomeListEvaluator
 /// and an IGenomeFactory that can be used to create an initial population of genomes.
 /// </summary>
 /// <param name="genomeListEvaluator">The genome evaluation scheme for
 /// the evolution algorithm.</param>
 /// <param name="genomeFactory">The factory that was used to create the
 /// genomeList and which is therefore referenced by the genomes.</param>
 /// <param name="populationSize">The number of genomes to create for the
 /// initial population.</param>
 public virtual void Initialize(IGenomeListEvaluator <TGenome> genomeListEvaluator,
                                IGenomeFactory <TGenome> genomeFactory,
                                int populationSize)
 {
     _currentGeneration   = 0;
     _genomeListEvaluator = genomeListEvaluator;
     _genomeFactory       = genomeFactory;
     _genomeList          = genomeFactory.CreateGenomeList(populationSize, _currentGeneration);
     // We set an arbitrary genome as champion to avoid possible null exceptions.
     _currentBestGenome = _genomeList[0];
     _populationSize    = populationSize;
     _runState          = RunState.Ready;
     _updateScheme      = new UpdateScheme(new TimeSpan(0, 0, 1));
 }
Exemplo n.º 6
0
        /// <summary>
        /// Initializes the evolution algorithm with the provided IGenomeListEvaluator, IGenomeFactory
        /// an initial population of genomes and a boolean to update the currentGeneration value.
        /// </summary>
        /// <param name="genomeListEvaluator">The genome evaluation scheme for the evolution algorithm.</param>
        /// <param name="genomeFactory">The factory that was used to create the genomeList and which is therefore referenced by the genomes.</param>
        /// <param name="genomeList">An initial genome population.</param>
        /// <param name="addGenerationValue">boolean to trigger currentGeneration value from last genome in list</param>
        public virtual void Initialize(IGenomeListEvaluator <TGenome> genomeListEvaluator,
                                       IGenomeFactory <TGenome> genomeFactory,
                                       List <TGenome> genomeList,
                                       bool addGenerationValue)
        {
            _currentGeneration = 0;

            if (genomeList.Count > 0)
            {
                int LastIndex = genomeList.Count - 1;

                _currentGeneration = genomeList.Min <TGenome, uint>(genome => genome.BirthGeneration);
            }
            _genomeListEvaluator = genomeListEvaluator;
            _genomeFactory       = genomeFactory;
            _genomeList          = genomeList;
            _populationSize      = _genomeList.Count;
            _runState            = RunState.Ready;
            _updateScheme        = new UpdateScheme(new TimeSpan(0, 0, 1));
        }