Example #1
0
    def cruzamentoUniforme(self, pais, txCruzamento):
        #declaração dos pais e filhos
        pai1 = pais[0]
        pai2 = pais[1]
        combinacaoPai1 = pai1.getCombinacao()
        combinacaoPai2 = pai2.getCombinacao()
        tam1 = len(combinacaoPai1)
        tam2 = len(combinacaoPai2)
        filhos = pais
        i = 0
        aux = []
        #sorteio dos genes
        while i < tam1:
            aux.append(random.randint(0, 1))
            i = i + 1
        cruz = random.randint(0, 100)
        if cruz < txCruzamento:
            i = 0
            filho1 = Individuo()
            filho2 = Individuo()
            combinacaoFilho1 = []
            combinacaoFilho2 = []

            while i < tam1:
                if aux[i] == 0:
                    combinacaoFilho1.append(combinacaoPai1[i])
                    combinacaoFilho2.append(combinacaoPai2[i])
                elif aux[i] == 1:
                    combinacaoFilho1.append(combinacaoPai2[i])
                    combinacaoFilho2.append(combinacaoPai1[i])
                i = i + 1
            filho1.setCombinacao(combinacaoFilho1)
            filho2.setCombinacao(combinacaoFilho2)
            filhos = [filho1, filho2]
        return filhos
Example #2
0
 def cruzamentoUmPonto(self, pais, txCruzamento):
     pai1 = pais[0]
     pai2 = pais[1]
     combinacaoPai1 = pai1.getCombinacao()
     combinacaoPai2 = pai2.getCombinacao()
     tam1 = len(combinacaoPai1)
     tam2 = len(combinacaoPai2)
     filhos = pais
     cruz = random.randint(0, 100)
     if cruz < txCruzamento:
         filho1 = Individuo()
         filho2 = Individuo()
         crossOver = random.randint(1, (tam1 - 2))
         combinacaoFilho1 = [
             *combinacaoPai1[:crossOver], *combinacaoPai2[crossOver:tam2]
         ]
         combinacaoFilho2 = [
             *combinacaoPai2[:crossOver], *combinacaoPai1[crossOver:tam1]
         ]
         filho1.setCombinacao(combinacaoFilho1)
         filho2.setCombinacao(combinacaoFilho2)
         filhos = [filho1, filho2]
     return filhos