Ejemplo n.º 1
0
 def iterar(self, populacao, nGeracoes, pontuacaoSatisfatoria=None):
     if len(populacao) < 1:
         raise Exception('Impossivel iterar populacao de tamanho menor que 1')
     ranking = Ranking.validaInstancias(populacao, self.funcaoObjetivo, maxmin=self.maxmin)
     melhorInstancia = ranking.getPopulacao()[0]
     for i in range(nGeracoes):
         populacao = melhorInstancia.__class__.geraAleatorios(len(populacao)-1) + [melhorInstancia]
         ranking = Ranking.validaInstancias(populacao, self.funcaoObjetivo, maxmin=self.maxmin)
         if pontuacaoSatisfatoria is not None and ranking.isMelhorQue(pontuacaoSatisfatoria):
             logging.info('Número de iterações: %d' % (i+1))
             return ranking
     return ranking
Ejemplo n.º 2
0
 def evoluir(self, populacao, nGeracoes, pontuacaoSatisfatoria=None):
     if len(populacao) < 2:
         raise Exception('Impossivel evoluir populacao de tamanho menor que 2')
     self.tamanhoPopulacaoInicial = len(populacao)
     ranking = Ranking.validaInstancias(populacao, self.funcaoAdaptacao, maxmin=self.maxmin)
     for i in range(nGeracoes):
         populacaoInicial, novaGeracao = self.fazCruzamentoPopulacao(ranking.getPopulacao()[:self.tamanhoPopulacaoInicial], self.probCrossover, self.proporcaoFilhos, self.individuoBuilder, self.tamanhoPopulacaoInicial)
         novaGeracao = self.fazMutacaoPopulacao(novaGeracao, self.probMutacao, self.individuoBuilder)
         populacao = populacaoInicial + novaGeracao if self.manterPais else novaGeracao
         ranking = Ranking.validaInstancias(populacao, self.funcaoAdaptacao, maxmin=self.maxmin)
         logging.info('%s: Ranking: %s' % (i, ranking.getRanking()[0][1]))
         if pontuacaoSatisfatoria is not None and ranking.isMelhorQue(pontuacaoSatisfatoria):
             logging.info('Número de iterações: %d' % (i+1))
             return ranking
     return ranking