예제 #1
0
        void Update()
        {
            if (RequireReset)
            {
                Model        = new Model(this);
                Evolution    = new Evolution(Model, PopulationSize, Elites);
                RequireReset = false;
            }

            Model.UpdateState();

            Generations = 0;
            ElapsedTime = 0.0;
            if (!Model.IsConverged(Evolution.GetSolution()))
            {
                while (ElapsedTime < MaximumFrameTime && !Model.IsConverged(Evolution.GetSolution()))
                {
                    //	while(Generations < 1) {
                    System.DateTime then = System.DateTime.Now;
                    if (Evolution.Evolve())
                    {
                        Assign(Evolution.GetSolution());
                    }
                    Generations += 1;
                    ElapsedTime += (System.DateTime.Now - then).Duration().TotalSeconds;
                }
            }
        }
예제 #2
0
 private void Initialise()
 {
     if (Evolution == null)
     {
         Evolution = new Evolution(new Model(this), PopulationSize, Elites, UseThreading);
     }
 }
예제 #3
0
 private void DeInitialise()
 {
     if (Evolution != null)
     {
         Evolution.Kill();
         Evolution = null;
     }
 }
예제 #4
0
 public void Initialise(int populationSize, int elites)
 {
     Model         = new Model(transform);
     Evolution     = new Evolution(Model, populationSize, elites, Model.GetTargetConfiguration());
     Generations   = 0;
     ElapsedTime   = 0.0;
     IterationTime = 0.0;
     RequireReset  = false;
 }