Exemplo n.º 1
0
        static void Main(string[] args)
        {
            DoubleArrayChromosome weightValues = new DoubleArrayChromosome(new WeightRandomGenerator(), new WeightRandomGenerator(), new WeightRandomGenerator(), 6);
            Population            weightPop    = new Population(40, weightValues, new AriesFF(), new EliteSelection());
            int     counter     = 0;
            bool    stopEvo     = false;
            AriesFF fintessEval = new AriesFF();
            double  error       = 0;

            while (!stopEvo)
            {
                weightPop.RunEpoch();
                counter++;
                IChromosome best = weightPop.BestChromosome;
                error   = fintessEval.Evaluate(best);
                stopEvo = counter > 1000 || error < 0.12;
            }
            Console.WriteLine("Stopped after " + counter.ToString());
            DoubleArrayChromosome solution = (DoubleArrayChromosome)weightPop.BestChromosome;

            Console.WriteLine(solution.ToString());
            Console.ReadKey();
        }
Exemplo n.º 2
0
        public double Evaluate(IChromosome chromosome)
        {
            DoubleArrayChromosome doubleChromosome = (DoubleArrayChromosome)chromosome;

            string[] s_genes = doubleChromosome.ToString().Split();
            double[] d_genes = new double[s_genes.Length];
            double   sum     = 0;

            for (int i = 0; i < d_genes.Length; i++)
            {
                d_genes[i] = Double.Parse(s_genes[i]);
            }

            double error = xorSim.getError(d_genes);

            if (error == 0)
            {
                return(0);
            }
            else
            {
                return(1 / xorSim.getError(d_genes));
            }
        }