CarlosWGama icon

AG - Questão 2

CarlosWGama | PRO | 01/16/20 06:07:19 PM UTC | 0 ⭐ | 755 👁️ | Never ⏰ | []
Python |

1.38 KB

|

None

|

0 👍

/

0 👎

from ag import AlgoritmoGenetico
import random
adversario = ['PEDRA', 'PAPEL', 'TESOURA', 'PAPEL', 'PAPEL', 'TESOURA']
 
 
def funFitness(cromossomo, adversario):
    pontos = 0
    for i in range(len(cromossomo)):
        if (cromossomo[i] == 'PEDRA'):
            pontos +=  1 if adversario[i] == 'TESOURA' else -1 if adversario[i] == 'PAPEL' else 0
        if (cromossomo[i] == 'TESOURA'):
            pontos +=  1 if adversario[i] == 'PAPEL' else -1 if adversario[i] == 'PEDRA' else 0
        if (cromossomo[i] == 'PAPEL'):
            pontos +=  1 if adversario[i] == 'PEDRA' else -1 if adversario[i] == 'TESOURA' else 0
    return pontos
 
def criaIndividuo(adversario):
    #           0         1          2
    opcoes = ['PEDRA', 'PAPEL', 'TESOURA']
    genes = []
    for _ in range(len(adversario)):
        indiceSorteado = random.randint(0, 2)
        genes.append(opcoes[indiceSorteado])
    return genes
 
def mutacao(genes):
    opcoes = ['PEDRA', 'PAPEL', 'TESOURA']
    
    #Seleciona os indices aleatorios
    indiceAleatorio = random.randint(0, len(genes)-1)
    indiceOpcoes = random.randint(0, 2)
    
    #Realiza mutação
    genes[indiceAleatorio] = opcoes[indiceOpcoes]
    return genes
 
ag = AlgoritmoGenetico(adversario, funcaoFitness=funFitness)
ag.funCriaIndividuo  = criaIndividuo
ag.funMutacao = mutacao
ag.executa()
print(ag.melhorResultado())

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎