public static void ReinstateGenome(ChihuahuaComponent comp, List <decimal> Ngenome) { GH_Document docu = comp.OnPingDocument(); //Change value of sliders IList <IGH_Param> sliders = comp.Params.Input[0].Sources; List <decimal> genome = new List <decimal>(); if (sliders.Count != Ngenome.Count) { throw new System.ArgumentException("Numbers of genes not equal to number of sliders", "Genome"); } for (int i = 0; i < sliders.Count; i++) { Grasshopper.Kernel.Special.GH_NumberSlider slider = sliders[i] as Grasshopper.Kernel.Special.GH_NumberSlider; if (slider != null) { decimal N_gene_value = Ngenome[i]; decimal gene_value = N_gene_value.Remap(0, 1, slider.Slider.Minimum, slider.Slider.Maximum); slider.SetSliderValue(gene_value); genome.Add(gene_value); } } // Get a new solution docu.NewSolution(false); }
public static Individual CreateIndividualFromNGenome(ChihuahuaComponent comp, List <decimal> Ngenome) { GH_Document docu = comp.OnPingDocument(); //Change value of sliders IList <IGH_Param> sliders = comp.Params.Input[0].Sources; List <decimal> genome = new List <decimal>(); if (sliders.Count != Ngenome.Count) { throw new System.ArgumentException("Numbers of genes not equal to number of sliders", "Genome"); } for (int i = 0; i < sliders.Count; i++) { Grasshopper.Kernel.Special.GH_NumberSlider slider = sliders[i] as Grasshopper.Kernel.Special.GH_NumberSlider; if (slider != null) { decimal N_gene_value = Ngenome[i]; decimal gene_value = N_gene_value.Remap(0, 1, slider.Slider.Minimum, slider.Slider.Maximum); slider.SetSliderValue(gene_value); genome.Add(gene_value); } } // Get a new solution docu.NewSolution(false); //Read new fitness value decimal fitness = 0; IGH_Param param = comp.Params.Input[1].Sources[0]; GH_Structure <GH_Number> outcome = comp.Params.Input[1].Sources[0].VolatileData as GH_Structure <GH_Number>; if (outcome == null) { throw new System.ArgumentException("Fitness input is not a number", "Fitness"); } if (outcome != null) { fitness = (decimal)outcome.Branches[0][0].Value; } Individual ind = new Individual(fitness, genome, Ngenome); return(ind); }
public static Individual CreateRandomIndividual(ChihuahuaComponent comp) { GH_Document docu = comp.OnPingDocument(); //Change value of sliders List <decimal> genome = new List <decimal>(); List <decimal> Ngenome = new List <decimal>(); IList <IGH_Param> sliders = comp.Params.Input[0].Sources; foreach (IGH_Param param in sliders) { Grasshopper.Kernel.Special.GH_NumberSlider slider = param as Grasshopper.Kernel.Special.GH_NumberSlider; if (slider != null) { decimal N_gene_value = (decimal)random.NextDouble(); decimal gene_value = N_gene_value.Remap(0, 1, slider.Slider.Minimum, slider.Slider.Maximum); slider.SetSliderValue(gene_value); Ngenome.Add(N_gene_value); genome.Add(gene_value); } else { Rhino.RhinoApp.WriteLine("At least one of the input parameters is not a number slider" + Environment.NewLine); throw new System.ArgumentException("At least one of the input parameters is not a number slider", "Genome"); } } // Get a new solution docu.NewSolution(false); //Read new fitness value decimal fitness = 0; if (comp.Params.Input[1].SourceCount != 1) { Rhino.RhinoApp.Write("Fitness input must be a unique value" + Environment.NewLine); throw new System.ArgumentException("Fitness input must be a unique value", "Fitness"); } else { IGH_Param param = comp.Params.Input[1].Sources[0]; GH_Structure <GH_Number> outcome = comp.Params.Input[1].Sources[0].VolatileData as GH_Structure <GH_Number>; if (outcome == null) { Rhino.RhinoApp.WriteLine("Fitness input is not a number" + Environment.NewLine); throw new System.ArgumentException("Fitness input is not a number", "Fitness"); } if (outcome != null) { fitness = (decimal)outcome.Branches[0][0].Value; } } Individual ind = new Individual(fitness, genome, Ngenome); return(ind); }