Esempio n. 1
0
        protected internal override void InitIndividual(GAIndividual inIndividual)
        {
            PushGPIndividual i     = (PushGPIndividual)inIndividual;
            int     randomCodeSize = Rng.Next(_maxRandomCodeSize) + 2;
            Program p = _interpreter.randProgram.RandomCode(randomCodeSize);

            i.SetProgram(p);
        }
Esempio n. 2
0
        /// <summary>Evaluates the current population and updates their fitness values.</summary>
        /// <remarks>
        /// Evaluates the current population and updates their fitness values. This
        /// method may be overridden by subclasses to customize GA behavior.
        /// </remarks>
        protected internal virtual void Evaluate()
        {
            double totalFitness = 0;

            _bestMeanFitness = float.MaxValue;
            for (int n = 0; n < _populations[_currentPopulation].Length; n++)
            {
                GAIndividual i = _populations[_currentPopulation][n];
                EvaluateIndividual(i);
                totalFitness += i.GetFitness();
                if (i.GetFitness() < _bestMeanFitness)
                {
                    _bestMeanFitness = i.GetFitness();
                    _bestIndividual  = n;
                    _bestErrors      = i.GetErrors();
                }
            }
            _populationMeanFitness = totalFitness / _populations[_currentPopulation].Length;
        }
Esempio n. 3
0
        /// <summary>
        /// Sets the population size and resets the GA generation count, as well as
        /// initializing the population with random individuals.
        /// </summary>
        /// <param name="inSize">the size of the new GA population.</param>
        /// <exception cref="System.Exception"/>
        protected internal virtual void ResizeAndInitialize(int inSize)
        {
            _populations       = new GAIndividual[][] { new GAIndividual[inSize], new GAIndividual[inSize] };
            _currentPopulation = 0;
            _generationCount   = 0;
            object iObject = System.Activator.CreateInstance(_individualClass);

            if (!(iObject is GAIndividual))
            {
                throw new Exception("individual-class must inherit from class GAIndividual");
            }
            GAIndividual individual = (GAIndividual)iObject;

            for (int i = 0; i < inSize; i++)
            {
                _populations[0][i] = individual.Clone();
                InitIndividual(_populations[0][i]);
            }
        }
Esempio n. 4
0
        protected internal override void Evaluate()
        {
            float totalFitness = 0;

            _bestMeanFitness = float.MaxValue;
            for (int n = 0; n < _populations[_currentPopulation].Length; n++)
            {
                GAIndividual i = _populations[_currentPopulation][n];
                EvaluateIndividual(i);
                totalFitness += i.GetFitness();
                // fitness is minimized.
                if (i.GetFitness() < _bestMeanFitness)
                {
                    _bestMeanFitness = i.GetFitness();
                    _bestIndividual  = n;
                    _bestSize        = ((PushGPIndividual)i)._program.ProgramSize();
                    _bestErrors      = i.GetErrors();
                }
            }
            _populationMeanFitness = totalFitness / _populations[_currentPopulation].Length;
        }
Esempio n. 5
0
        protected internal virtual void EvaluateIndividual(GAIndividual inIndividual, bool duringSimplify)
        {
            List <float> errors = new List <float>();

            if (!duringSimplify)
            {
                _averageSize += ((PushGPIndividual)inIndividual)._program.ProgramSize();
            }
            var sw = Stopwatch.StartNew();

            for (int n = 0; n < _testCases.Count; n++)
            {
                GATestCase test = _testCases[n];
                float      e    = EvaluateTestCase(inIndividual, test._input, test._output);
                errors.Add(e);
            }
            // XXX We measure the time but don't do anything with it.
            var t = sw.ElapsedMilliseconds;

            sw.Stop();
            inIndividual.SetFitness(AbsoluteAverageOfErrors(errors));
            inIndividual.SetErrors(errors);
        }
Esempio n. 6
0
 protected internal override void EvaluateIndividual(GAIndividual inIndividual)
 {
     EvaluateIndividual(inIndividual, false);
 }
Esempio n. 7
0
 public abstract float EvaluateTestCase(GAIndividual inIndividual, object inInput, object inOutput);
Esempio n. 8
0
 protected internal abstract void EvaluateIndividual(GAIndividual inIndividual);
Esempio n. 9
0
 protected internal abstract void InitIndividual(GAIndividual inIndividual);