public Design Crossover(List <Design> seeds) { Design crossed = (Design)this.DesignClone(); // if no parents are selected, crossover does not occur if (seeds == null || seeds.Count == 0) { return(crossed); // return original design if no seed, then mutate it } // otherwise, return a crossover of all the parent seeds else { for (int i = 0; i < this.DesignVariables.Count; i++) { DesignVar var = crossed.DesignVariables[i]; List <DesignVar> seedvars = new List <DesignVar>(); foreach (Design d in seeds) { Design cd = (Design)d; seedvars.Add(cd.DesignVariables[i]); } var.Crossover(seedvars); } return(crossed); } }
public static Design Crossover(Design d, List<Design> seeds) { Design crossed = d.DesignClone(); // if no parents are selected, crossover does not occur if (seeds == null || seeds.Count == 0) { return crossed; } // otherwise, return a crossover of all the parent seeds else { for (int i = 0; i < d.DesignVariables.Count; i++) { DesignVar var = crossed.DesignVariables[i]; List<DesignVar> seedvars = new List<DesignVar>(); foreach (Design s in seeds) { seedvars.Add(s.DesignVariables[i]); } var.Crossover(seedvars); } return crossed; } }