/// <summary> /// CRAPL license. /// </summary> /// <param name="args"></param> public static void Main(string[] args) { //initialPopulation(organisms); //while (organisms.Count > 1) //{ // // Take two random organisms // Organism[] parents = getTwoParents(organisms); // // Mate them // Organism[] children = SimpleReco.getInstance().recombine(parents[0], parents[1]); // // Profit // for (var i = 0; i < children.Length; ++i) // { // children[i].Died += OrganismDeath; // organisms.Add(children[i]); // children[i].start(); // } // Console.WriteLine(organisms.Count); //} //foreach (Organism o in organisms.ToArray()) //{ // o.thread.Join(); // Console.WriteLine(o.ToString()); //} //Console.WriteLine("FIN - Deaths:" + death + " - Organisms left:" + organisms.Count); Console.WriteLine("Creating new organisms..."); Mutation blur = new Mutation(); blur.addGeneticModifier(new Blur(new Set(new[] { "rotation", "position" }), Set.ALL, 0.1)); Organism a = new Test(blur); Organism b = new Test(blur); Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine("Their child:"); RecombinationHandler recombination = SimpleReco.getInstance(); Organism child = recombination.recombine(a, b)[0]; Console.WriteLine(child); Console.WriteLine("Wild mutations appeared !"); Mutation m = new Mutation(); m.addGeneticModifier(new Addition(new Set(new[] { "scale" }, Set.Mode.Blacklist), new Set(new[] { "bob" }), 50.50)); m.addGeneticModifier(new Addition(new Set(new[] { "position", "scale" }), new Set(new[] { "bob" }), -50.50)); m.addGeneticModifier(new Addition(Set.ALL, new Set(new[] { "Plate" }), 100)); a.mutate(m); Mutation m2 = new Mutation(); m2.addStructuralModifier(new RemoveExtension(new Set(new[] { "Plate a" }))); b.mutate(m2); Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(child); }
private static void initialPopulation(List<Organism> organisms) { const int initialPopulationNumber = 2; // Specifies the initial blur mutation to apply. Mutation blur = new Mutation(); blur.addGeneticModifier(new Blur(new Set(new[] { "rotation", "position" }), Set.ALL, 0.1)); for (var i = 0; i < initialPopulationNumber; ++i) { Organism o = new Test(blur); organisms.Add(o); o.Died += OrganismDeath; Console.WriteLine(o.ToString()); } foreach (Organism o in organisms.ToArray()) o.start(); }