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;
            }
        }
Esempio n. 3
0
        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));
        }