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; } }
public DesignVar Copy(DesignVar dvar) { double val = dvar.Value; double min = dvar.Min; double max = dvar.Max; return(new DesignVar(val, min, max)); }
public static Design Mutate(Design d, IContinuousDistribution dist, double rate) { Design copy = d.DesignClone(); List<DesignVar> newdvars = new List<DesignVar>(); // loop over all the design variables foreach (DesignVar var in copy.DesignVariables) { DesignVar varcopy = var.VarClone(); varcopy.Mutate(rate, dist); varcopy.FixConstraint(); newdvars.Add(varcopy); } copy.DesignVariables = newdvars; return copy; }
public Design DesignClone() { List <DesignVar> designvars = new List <DesignVar>(); foreach (DesignVar dvar in this.DesignVariables) { double val = dvar.Value; double min = dvar.Min; double max = dvar.Max; DesignVar newdvar = new DesignVar(val, min, max); designvars.Add(newdvar); Console.WriteLine("SAME OBJECT"); Console.Write(newdvar == dvar); Console.WriteLine(100000); } return(new Design(this.DesignVariables)); }