CarlosWGama

AG - Questão 2

Jan 16th, 2020
104
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from ag import AlgoritmoGenetico
  2. import random
  3. adversario = ['PEDRA', 'PAPEL', 'TESOURA', 'PAPEL', 'PAPEL', 'TESOURA']
  4.  
  5.  
  6. def funFitness(cromossomo, adversario):
  7.     pontos = 0
  8.     for i in range(len(cromossomo)):
  9.         if (cromossomo[i] == 'PEDRA'):
  10.             pontos +=  1 if adversario[i] == 'TESOURA' else -1 if adversario[i] == 'PAPEL' else 0
  11.         if (cromossomo[i] == 'TESOURA'):
  12.             pontos +=  1 if adversario[i] == 'PAPEL' else -1 if adversario[i] == 'PEDRA' else 0
  13.         if (cromossomo[i] == 'PAPEL'):
  14.             pontos +=  1 if adversario[i] == 'PEDRA' else -1 if adversario[i] == 'TESOURA' else 0
  15.     return pontos
  16.  
  17. def criaIndividuo(adversario):
  18.     #           0         1          2
  19.     opcoes = ['PEDRA', 'PAPEL', 'TESOURA']
  20.     genes = []
  21.     for _ in range(len(adversario)):
  22.         indiceSorteado = random.randint(0, 2)
  23.         genes.append(opcoes[indiceSorteado])
  24.     return genes
  25.  
  26. def mutacao(genes):
  27.     opcoes = ['PEDRA', 'PAPEL', 'TESOURA']
  28.    
  29.     #Seleciona os indices aleatorios
  30.     indiceAleatorio = random.randint(0, len(genes)-1)
  31.     indiceOpcoes = random.randint(0, 2)
  32.    
  33.     #Realiza mutação
  34.     genes[indiceAleatorio] = opcoes[indiceOpcoes]
  35.     return genes
  36.  
  37. ag = AlgoritmoGenetico(adversario, funcaoFitness=funFitness)
  38. ag.funCriaIndividuo  = criaIndividuo
  39. ag.funMutacao = mutacao
  40. ag.executa()
  41. print(ag.melhorResultado())
RAW Paste Data