CarlosWGama

AG - Questão 1

Jan 16th, 2020
128
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from ag import AlgoritmoGenetico
  2.  
  3. personagens = [
  4.     {'personagem': 'p1', 'ataque': 10, 'defesa': 3},
  5.     {'personagem': 'p2', 'ataque': 2, 'defesa': 4},
  6.     {'personagem': 'p3', 'ataque': 4, 'defesa': 8},
  7.     {'personagem': 'p4', 'ataque': 6, 'defesa': 5},
  8.     {'personagem': 'p5', 'ataque': 2, 'defesa': 6},
  9.     {'personagem': 'p6', 'ataque': 7, 'defesa': 4},
  10.     {'personagem': 'p7', 'ataque': 5, 'defesa': 5},
  11.     {'personagem': 'p8', 'ataque': 3, 'defesa': 8},
  12.     {'personagem': 'p9', 'ataque': 5, 'defesa': 7},
  13.     {'personagem': 'p10', 'ataque': 12, 'defesa': 1},
  14.     {'personagem': 'p11', 'ataque': 8, 'defesa': 5},
  15.     {'personagem': 'p12', 'ataque': 6, 'defesa': 4},
  16.     {'personagem': 'p13', 'ataque': 3, 'defesa': 11},
  17.     {'personagem': 'p14', 'ataque': 4, 'defesa': 6},
  18.     {'personagem': 'p15', 'ataque': 5, 'defesa': 8},
  19. ]
  20.  
  21. #Melhores ataque
  22. def funFitnessA(genes, personagens):
  23.     selecionados = 0
  24.     totalAtaque = 0
  25.     for i in range(len(genes)):
  26.         if (genes[i] == 1): #Selecionado
  27.             selecionados += 1
  28.             totalAtaque += personagens[i]['ataque']
  29.  
  30.     if (selecionados != 3):
  31.         return 0
  32.     return totalAtaque
  33.  
  34. #Melhores ataque e defesas
  35. advesario = 10
  36. def funFitnessB(genes, personagens):
  37.     selecionados = 0
  38.     atkGrp = 0
  39.     defGrp = 0
  40.     atkAdv = 13
  41.     defAdv = 21
  42.     for i in range(len(genes)):
  43.         if (genes[i] == 1): #Selecionado
  44.             selecionados += 1
  45.             atkGrp += personagens[i]['ataque']
  46.             defGrp += personagens[i]['defesa']
  47.  
  48.     if (selecionados != 3):
  49.         return 0
  50.  
  51.     danoGrp = atkGrp - defAdv if atkGrp > defAdv else 0
  52.     danoAdv = atkAdv - defGrp if atkAdv > defGrp else 0
  53.  
  54.     return danoGrp - danoAdv
  55.  
  56. ag = AlgoritmoGenetico(personagens, 10, 900, probMutacao=100, funcaoFitness=funFitnessB)
  57. ag.executa()
  58. print(ag.melhorResultado())
RAW Paste Data