Exemple #1
0
        public float RunNetworkFeedbackEvaluation(ICPPNetwork inetwork)
        {
            var    network = (CPPNetwork)inetwork;
            double Fitness = 0.0;

            foreach (Rule rule in ruleSet)
            {
                network.ActivateOutputNodes(rule);
                var actives     = network.outputNodes;
                var wantedState = rule.Result;
                foreach (var inode in actives.Values)
                {
                    var node = (OutputNetworkNode)inode;
                    if (node.representedState == wantedState)
                    {
                        Fitness += Math.Pow(Math.Abs(0 - node.Activation), 2.0);
                    }
                    else
                    {
                        Fitness -= Math.Pow(Math.Abs(0 - node.Activation), 2.0);
                    }
                }


                /*bool same = network.GetNextState(rule) == wantedState;
                 * if(same) Fitness += 1;
                 * else Fitness -= 2;*/
                network.ResetNetwork();
            }
            return((float)Fitness);
        }
Exemple #2
0
 public override void Evaluate(int speciesCount)
 {
     network = new CPPNetwork(genome, Neat.parameters.CPPN);
     //Fitness = Neat.evaluator.RunEvaluation(network.GetNextState);
     Fitness = ((LambdaExperiment)(Neat.evaluator)).RunNetworkFeedbackEvaluation(network);             //trial thing. might have it Inside the RunEvaluation call
     if (Fitness >= Neat.parameters.CA.MaxFitnessPossible)
     {
         Fitness = Fitness / speciesCount;
     }
     else
     {
         Fitness = Fitness;
     }
 }