Exemple #1
0
 public override void CalculateFitness(AbstractPhenotype phenotype)
 {
     var sim = new MinCogSimulator.MinCogSimulator((MinCogPhenotype)phenotype);
     sim.Simulate();
     double score = sim.GoodHits - sim.BadHits;
     phenotype.Fitness = (score > 0) ? score : 0;
 }
Exemple #2
0
        public override void CalculateFitness(AbstractPhenotype phenotype)
        {
            var cbp = (ColonelBlottoPhenotype) phenotype;
            cbp.Fitness = (cbp.Wins*2) + cbp.Ties;

            cbp.Wins = 0;
            cbp.Ties = 0;
        }
Exemple #3
0
        public override List<BitVector> Crossover(AbstractPhenotype parent1, AbstractPhenotype parent2,
                                                  double crossoverRate)
        {
            var par1 = (BitVector) parent1.Genotype;
            var par2 = (BitVector) parent2.Genotype;

            var offspring = new List<BitVector>();

            int randomIndex = _random.Next(1, par1.Vector.Count);
            double randomDouble = _random.NextDouble();
            var child1 = new BitVector();
            var child2 = new BitVector();

            if (randomDouble <= crossoverRate)
            {
                for (int i = 0; i < par1.Vector.Count; i++)
                {
                    //for (int j = i; j < i + 8; j++)
                    //{
                    //    if (_random.NextDouble() > 0.5)
                    //    {
                    //        child1.Vector.Add(par1.Vector[i]);
                    //        child2.Vector.Add(par2.Vector[i]);
                    //    }
                    //    else
                    //    {
                    //        child1.Vector.Add(par2.Vector[i]);
                    //        child2.Vector.Add(par1.Vector[i]);
                    //    }

                    //}

                    if (i <= randomIndex)
                    {
                        child1.Vector.Add(par1.Vector[i]);
                        child2.Vector.Add(par2.Vector[i]);
                    }
                    else
                    {
                        child1.Vector.Add(par2.Vector[i]);
                        child2.Vector.Add(par1.Vector[i]);
                    }
                }
            }
            else
            {
                child1.Vector = par1.Vector;
                child2.Vector = par2.Vector;
            }

            offspring.Add(child1);
            offspring.Add(child2);
            return offspring;
        }
Exemple #4
0
        public override void CalculateFitness(AbstractPhenotype phenotype)
        {
            var bitVector = (BitVector) phenotype.Genotype;
            int count = 0;
            for (int i = 0; i < GoalVector.Count; i++)
            {
                if (bitVector.Vector[i] == GoalVector[i])
                {
                    count++;
                }
            }

            phenotype.Fitness = ((double) count/bitVector.Vector.Count);
        }
Exemple #5
0
 public override void CalculateFitness(AbstractPhenotype phenotype)
 {
     var pheno = (IzhikevichPhenotype) phenotype;
     pheno.Train = new List<double>();
     pheno.SpikeTimes = new List<int>();
     pheno.MakeTrain();
     pheno.SpikeTimes = CalculateSpikeTimes(pheno.Train);
     const int p = 2;
     switch (SDM.ToLower())
     {
         case "time":
             pheno.Fitness = TimeDistanceMetric(SpikeTimesDataSet, pheno.SpikeTimes, p);
             break;
         case "interval":
             pheno.Fitness = IntervalDistanceMetric(SpikeTimesDataSet, pheno.SpikeTimes, p);
             break;
         case "waveform":
             pheno.Fitness = WaveformDistanceMetric(pheno.Train, DataSet, p);
             break;
     }
 }
 public abstract List<BitVector> Crossover(AbstractPhenotype parent1, AbstractPhenotype parent2,
                                           double crossoverRate);
 public abstract void CalculateFitness(AbstractPhenotype phenotype);