Example #1
0
    void SetaDirecaoEvolucao()
    {
        int mediaUltimosScores = 0;
        int maiorElemento      = 0;

        for (int i = 0; i < arquivoGame.lastScores.Length; i++)
        {
            mediaUltimosScores += arquivoGame.lastScores[i];

            if (maiorElemento < arquivoGame.lastScores[i])
            {
                maiorElemento = arquivoGame.lastScores[i];
            }
        }

        mediaUltimosScores = (mediaUltimosScores - maiorElemento) / (arquivoGame.lastScores.Length - 1);

        if (mediaUltimosScores < (maiorElemento / 2))
        {
            arquivoGame.evolutionState = false;
        }
        else
        {
            arquivoGame.evolutionState = true;
        }

        for (int i = 0; i < arquivoGame.lastScores.Length; i++)
        {
            arquivoGame.lastScores[i] = -1;
        }

        SaveControl.AtualizarArquivoJogo(arquivoGame);
    }
Example #2
0
    void ProximaGeracao(Cromossomo primeiro, Cromossomo segundo)
    {
        Cromossomo penultimo = new Cromossomo();
        Cromossomo ultimo    = new Cromossomo();

        if (SaveControl.RetornarEvolutionState())
        {
            int menor = 10;

            for (int i = 0; i < cromossomosUsados.Count; i++)
            {
                if (cromossomosUsados[i].FuncaoAvaliacao() <= menor)
                {
                    menor = cromossomosUsados[i].FuncaoAvaliacao();

                    if (i == 0)
                    {
                        penultimo = cromossomosUsados[i];
                        ultimo    = cromossomosUsados[i];
                    }
                    else
                    {
                        ultimo    = penultimo;
                        penultimo = cromossomosUsados[i];
                    }
                }
            }
        }
        else
        {
            int maior = 0;

            for (int i = 0; i < cromossomosUsados.Count; i++)
            {
                if (cromossomosUsados[i].FuncaoAvaliacao() >= maior)
                {
                    maior = cromossomosUsados[i].FuncaoAvaliacao();

                    if (i == 0)
                    {
                        penultimo = cromossomosUsados[i];
                        ultimo    = cromossomosUsados[i];
                    }
                    else
                    {
                        ultimo    = penultimo;
                        penultimo = cromossomosUsados[i];
                    }
                }
            }
        }

        cromossomosUsados[penultimo.id].cromossomo = primeiro.cromossomo;
        cromossomosUsados[ultimo.id].cromossomo    = segundo.cromossomo;

        arquivoGame.cromossomos = cromossomosUsados;
        SaveControl.AtualizarArquivoJogo(arquivoGame);
    }
Example #3
0
    void GerarPopulacaoInicial()
    {
        for (int i = 0; i < 100; i++)
        {
            Cromossomo c = new Cromossomo();
            c.Inicializar();
            c.id = i;
            cromossomosUsados.Add(c);
        }

        arquivoGame.cromossomos    = cromossomosUsados;
        arquivoGame.evolutionState = true;

        for (int i = 0; i < arquivoGame.lastScores.Length; i++)
        {
            arquivoGame.lastScores[i] = -1;
        }

        SaveControl.AtualizarArquivoJogo(arquivoGame);
    }