Beispiel #1
0
        public List <string> Resolver(double taxaMutacao, int numeroGeracoes, List <double> espacos, List <double> valores, double limiteEspacos)
        {
            InicializarPopulacao(espacos, valores, limiteEspacos);

            for (int geracao = 0; geracao < numeroGeracoes; geracao++)
            {
                var somaAvaliacao = SomaAvaliacoes();
                List <Individuo> novaPopulacao = new List <Individuo>();

                for (int i = 0; i < TamanhoPopulacao; i += 2)
                {
                    var pai1 = SelecionaIndicePai(somaAvaliacao);
                    var pai2 = SelecionaIndicePai(somaAvaliacao);

                    var filhos = Populacao[pai1].Crossover(Populacao[pai2]);

                    novaPopulacao.Add(filhos[0].Mutacao(taxaMutacao));
                    novaPopulacao.Add(filhos[1].Mutacao(taxaMutacao));
                }

                Populacao = novaPopulacao;

                Populacao.ForEach(x => x.Avaliacao());
                OrdenarPopulacao();
                MelhorSolucao = Populacao.First();
                ListaSolucoes.Add(MelhorSolucao.NotaAvaliacao);
                MelhorIndividuo(MelhorSolucao);
            }

            return(MelhorSolucao.Cromossomo);
        }
Beispiel #2
0
        public void InicializarPopulacao(List <double> espacos, List <double> valores, double limiteEspacos)
        {
            for (int i = 0; i < TamanhoPopulacao; i++)
            {
                Populacao.Add(new Individuo(espacos, valores, limiteEspacos));
            }

            Populacao.ForEach(x => x.Avaliacao());
            this.OrdenarPopulacao();
            MelhorSolucao = Populacao.First();
            ListaSolucoes.Add(MelhorSolucao.NotaAvaliacao);
        }