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; }
public override void CalculateFitness(AbstractPhenotype phenotype) { var cbp = (ColonelBlottoPhenotype) phenotype; cbp.Fitness = (cbp.Wins*2) + cbp.Ties; cbp.Wins = 0; cbp.Ties = 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; }
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); }
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);