from ag import AlgoritmoGenetico
personagens = [
{'personagem': 'p1', 'ataque': 10, 'defesa': 3},
{'personagem': 'p2', 'ataque': 2, 'defesa': 4},
{'personagem': 'p3', 'ataque': 4, 'defesa': 8},
{'personagem': 'p4', 'ataque': 6, 'defesa': 5},
{'personagem': 'p5', 'ataque': 2, 'defesa': 6},
{'personagem': 'p6', 'ataque': 7, 'defesa': 4},
{'personagem': 'p7', 'ataque': 5, 'defesa': 5},
{'personagem': 'p8', 'ataque': 3, 'defesa': 8},
{'personagem': 'p9', 'ataque': 5, 'defesa': 7},
{'personagem': 'p10', 'ataque': 12, 'defesa': 1},
{'personagem': 'p11', 'ataque': 8, 'defesa': 5},
{'personagem': 'p12', 'ataque': 6, 'defesa': 4},
{'personagem': 'p13', 'ataque': 3, 'defesa': 11},
{'personagem': 'p14', 'ataque': 4, 'defesa': 6},
{'personagem': 'p15', 'ataque': 5, 'defesa': 8},
]
#Melhores ataque
def funFitnessA(genes, personagens):
selecionados = 0
totalAtaque = 0
for i in range(len(genes)):
if (genes[i] == 1): #Selecionado
selecionados += 1
totalAtaque += personagens[i]['ataque']
if (selecionados != 3):
return 0
return totalAtaque
#Melhores ataque e defesas
advesario = 10
def funFitnessB(genes, personagens):
selecionados = 0
atkGrp = 0
defGrp = 0
atkAdv = 13
defAdv = 21
for i in range(len(genes)):
if (genes[i] == 1): #Selecionado
selecionados += 1
atkGrp += personagens[i]['ataque']
defGrp += personagens[i]['defesa']
if (selecionados != 3):
return 0
danoGrp = atkGrp - defAdv if atkGrp > defAdv else 0
danoAdv = atkAdv - defGrp if atkAdv > defGrp else 0
return danoGrp - danoAdv
ag = AlgoritmoGenetico(personagens, 10, 900, probMutacao=100, funcaoFitness=funFitnessB)
ag.executa()
print(ag.melhorResultado())
Comments
0 B
|👍
/👎