Esempio n. 1
0
        private double RateOrganism(IGEPOrganism o, IRegistry inputRegistry)
        {
            var behavior = o.Behave(new GEPSurroundings(inputRegistry));

            const double worstFitness = 15000;
            if (behavior.Success)
            {
                var resultsRegistry = o.ResultsRegistry;
                resultsRegistry.MoveToZero();
                var resultValue = resultsRegistry.Read().Value;

                if (double.IsNaN(resultValue) || double.IsInfinity(resultValue))
                    return worstFitness;

                var desiredOutput = this.Function(inputRegistry.ReadAt(0).Value);

                var fitness = Math.Abs(resultValue - desiredOutput);

                if(double.IsNaN(fitness) || double.IsInfinity(fitness))
                    return worstFitness;

                return fitness;

            }
            else
                return worstFitness;
        }