public ZeldaGenome(ZeldaConfiguration configuration) { this.configuration = configuration; // add some more genes int count = configuration.CalcNumInitialGenes(); this.genes = GeneUtils.Generate(count, factory, configuration); }
public Genome Mutate(RandomNumberGenerator random) { // mutate genes var newGenes = new List <ZeldaGene>(genes); GeneUtils.Mutate(newGenes, factory, configuration); // assemble offspring return(new ZeldaGenome(configuration, newGenes)); }
public Pair <Genome> Crossover(Genome o, RandomNumberGenerator random) { ZeldaGenome other = (ZeldaGenome)o; // randomly distribute genes var newGenesA = new List <ZeldaGene>(genes); var newGenesB = new List <ZeldaGene>(other.genes); GeneUtils.Crossover(genes, other.genes, random); // assemble offsprings var a = new ZeldaGenome(configuration, newGenesA); var b = new ZeldaGenome(configuration, newGenesB); return(new Pair <Genome>(a, b)); }