Beispiel #1
0
    // 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++;
        }
    }
Beispiel #2
0
        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;
        }