public Genome(Chromosome ali, Chromosome coh, Chromosome rep, Chromosome obs, Chromosome bou, Chromosome rew, PathChrom pf) { Align = ali; Cohesion = coh; Repulse = rep; Obstacle = obs; Boundary = bou; Reward = rew; Pathfind = pf; }
public Genome() { Align = new Chromosome(); Cohesion = new Chromosome(); Repulse = new Chromosome(); Obstacle = new Chromosome(); Boundary = new Chromosome(); Reward = new Chromosome(); Pathfind = new PathChrom(); }
public Genome Crossover(Genome g1, Genome g2) { Chromosome ali = Crossover(g1.Align, g2.Align); Chromosome coh = Crossover(g1.Cohesion, g2.Cohesion); Chromosome rep = Crossover(g1.Repulse, g2.Repulse); Chromosome obs = Crossover(g1.Obstacle, g2.Obstacle); Chromosome bou = Crossover(g1.Boundary, g2.Boundary); Chromosome rew = Crossover(g1.Reward, g2.Reward); PathChrom pf = Crossover(g1.Pathfind, g2.Pathfind); return(new Genome(ali, coh, rep, obs, bou, rew, pf)); }
public ForceTrained(int numBirds, FlockControl.RandomDelegate rp) { randomizePositions = rp; Chromosome ali = new Chromosome(17.845380783081056f, 4.233492851257324f, 125.07916259765625f); Chromosome coh = new Chromosome(18.35961151123047f, 6.671069145202637f, 240.59176635742188f); Chromosome rep = new Chromosome(71.6546401977539f, 8.883309364318848f, 152.1246337890625f); Chromosome obs = new Chromosome(100.060951232910159f, 7.151443481445313f, 167.235451232f); Chromosome bou = new Chromosome(0.0f, 6.893937110900879f, 159.00930786132813f); Chromosome rew = new Chromosome(66.051513671875f, 1.0f, 354.618896484375f); PathChrom pf = new PathChrom(); // Not using pathfinding trainedGenome = new Genome(ali, coh, rep, obs, bou, rew, pf); }
public PathChrom Crossover(PathChrom p1, PathChrom p2) { float sm = Random.Range(-STEP_MUT, STEP_MUT) * mutationRate; float s = (Random.value > .5f ? p1.Steps : p2.Steps) + sm; float cm = Random.Range(-CARRY_MUT, CARRY_MUT) * mutationRate; float c = (Random.value > .5f ? p1.Carryover : p2.Carryover) + cm; float vm = Random.Range(-VIEW_MUT, VIEW_MUT) * mutationRate; float v = (Random.value > .5f ? p1.View : p2.View) + vm; Chromosome cr = Crossover(p1.Chrom, p2.Chrom); return(new PathChrom(cr, s, c, v)); }