// Create a new generation public void Generate() { DNA[] temp = new DNA[DNAs.Length]; // Refill the population with children from the mating pool for (int i = 0; i < DNAs.Length; i++) { //if (matingPool.Count != 0) { DNA partnerA; DNA partnerB; partnerA = PickOne(DNAs); partnerB = PickOne(DNAs); DNA child = partnerA.CrossOver(partnerB); child.Mutate(mutationRate); temp[i] = child; } } DNAs = (DNA[])temp.Clone(); //if (matingPool.Count != 0) { generations++; } }
private void RegenerateTeams() { Utils.Log(LogSeverity.Info, nameof(TeamSelectionScene), $"Genearting teams of size {_teamSize}."); _t1Preview.ClearChildren(); _t2Preview.ClearChildren(); var dna = new DNA(_teamSize, 2); dna.Randomize(); var game = GameSetup.GenerateFromDna(dna, dna.Clone(), _map, false); foreach (var mobId in game.MobManager.Mobs) { var mobInfo = game.MobManager.MobInfos[mobId]; if (mobInfo.Team == TeamColor.Red) { _t1Preview.AddChild(BuildMobPreview(game, () => mobId)); } else { _t2Preview.AddChild(BuildMobPreview(game, () => mobId)); } } _game = game; }