コード例 #1
0
        public override double calculateFitness(Individual individual, double fitness)
        {
            string individualString = individual.ToString();

            if (!checkEnds(individual) || !checkOperatorPair(individual) || checkZeroDivision(individual))
            {
                fitness = Double.NegativeInfinity;
            }
            else
            {
                int sum        = evalExpression(individualString);
                int difference = Math.Abs(finalTarget - sum);
                if (sum <= 0)
                {
                    fitness = Double.NegativeInfinity;
                }
                else if (difference > 0)
                {
                    fitness = -difference;
                }
                else if (difference == 0)
                {
                    fitness = sum;
                }
            }
            return(fitness);
        }
コード例 #2
0
        private bool checkZeroDivision(Individual values)
        {
            string valuesString = values.ToString();

            if (valuesString.Contains("/0") == true)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }