restruturar propriedades 'tracos_personalidade' e 'estrategia'
na classe 'Agente' a propriedade 'tracos_personalidade' passa a ser um dicionario com os diversos traços e valores.
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
from enum import Enum
|
||||
import random
|
||||
|
||||
|
||||
class Estrategia(Enum):
|
||||
@ -10,54 +9,55 @@ class Estrategia(Enum):
|
||||
|
||||
|
||||
class Agente():
|
||||
# factores da estrategia (probabilidade): 0...1
|
||||
# amabilidade -> não desertar a menos que o adversário deserte
|
||||
# (0 -> desertar sempre; 1 -> nunca desertar)
|
||||
amabilidade = 0
|
||||
# retaliação -> retaliar quando um adversário deserta
|
||||
# (0 -> nunca retaliar; 1 -> retaliar sempre)
|
||||
retaliação = 0
|
||||
# perdao -> perdoar um adversário desertor, assim que este deixa de
|
||||
# desertar
|
||||
# (0 -> nunca perdoar; 1 -> perdoar sempre)
|
||||
perdao = 0
|
||||
# coerencia -> ser coerente na estrategia, evitar aleatoriedade
|
||||
# (0 -> nunca coerente; 1 -> sempre coerente)
|
||||
coerencia = 0
|
||||
# definir factores de estrategia com base na estrategia
|
||||
# traços de personalidade
|
||||
tracos_personalidade: dict[str, float] = {
|
||||
'amabilidade': 0.0,
|
||||
'retaliacao': 0.0,
|
||||
'perdao': 0.0,
|
||||
'coerencia': 0.0,
|
||||
'memoria': 0.0,
|
||||
}
|
||||
pontuacao: int = 0
|
||||
estrategia: Estrategia | None = None
|
||||
id_agente: int = 0
|
||||
|
||||
pontuacao: int
|
||||
|
||||
def __init__(self, aleatorio: bool = False):
|
||||
def __init__(self, estrategia: Estrategia):
|
||||
# definir estrategia aleatoriamente
|
||||
self.estrategia = Estrategia(random.randint(0, Estrategia.__len__()-1))
|
||||
self.estrategia = Estrategia(estrategia)
|
||||
self.definirEstrategia()
|
||||
# identificador de agente
|
||||
self.id_agente = id(self)
|
||||
self.pontuacao = 0 if not aleatorio else random.randint(1, 99)
|
||||
self.pontuacao = 0
|
||||
|
||||
def __str__(self):
|
||||
return f'Dados Agente ({self.id_agente})\n\testrategia: {self.estrategia}\n\tpontução: {self.pontuacao}'
|
||||
return f'Dados Agente ({self.id_agente})\n \
|
||||
\testrategia: {self.estrategia}\n \
|
||||
\t\tpersonalidade: {self.tracos_personalidade}\n \
|
||||
\tpontução: {self.pontuacao}'
|
||||
|
||||
def definirEstrategia(self):
|
||||
match self.estrategia:
|
||||
case Estrategia.Neutro:
|
||||
self.amabilidade = 0.5
|
||||
self.retaliação = 0.5
|
||||
self.perdao = 0.5
|
||||
self.coerencia = 1
|
||||
self.tracos_personalidade['amabilidade'] = 0.5
|
||||
self.tracos_personalidade['retalicao'] = 0.5
|
||||
self.tracos_personalidade['perdao'] = 0.5
|
||||
self.tracos_personalidade['coerencia'] = 1.0
|
||||
self.tracos_personalidade['memoria'] = 0.5
|
||||
case Estrategia.Tit4Tat:
|
||||
self.amabilidade = 1
|
||||
self.retaliação = 1
|
||||
self.perdao = 1
|
||||
self.coerencia = 1
|
||||
self.tracos_personalidade['amabilidade'] = 1.0
|
||||
self.tracos_personalidade['retalicao'] = 1.0
|
||||
self.tracos_personalidade['perdao'] = 1.0
|
||||
self.tracos_personalidade['coerencia'] = 1.0
|
||||
self.tracos_personalidade['memoria'] = 0.5
|
||||
case Estrategia.Vingativo:
|
||||
self.amabilidade = 0
|
||||
self.retaliação = 1
|
||||
self.perdao = 0
|
||||
self.coerencia = 1
|
||||
self.tracos_personalidade['amabilidade'] = 0.0
|
||||
self.tracos_personalidade['retalicao'] = 1.0
|
||||
self.tracos_personalidade['perdao'] = 0.0
|
||||
self.tracos_personalidade['coerencia'] = 1.0
|
||||
self.tracos_personalidade['memoria'] = 0.5
|
||||
case Estrategia.Lunatico:
|
||||
self.amabilidade = 0.5
|
||||
self.retaliação = 0.5
|
||||
self.perdao = 0.5
|
||||
self.coerencia = 0.5
|
||||
self.tracos_personalidade['amabilidade'] = 0.5
|
||||
self.tracos_personalidade['retalicao'] = 0.5
|
||||
self.tracos_personalidade['perdao'] = 0.5
|
||||
self.tracos_personalidade['coerencia'] = 0.5
|
||||
self.tracos_personalidade['memoria'] = 0.5
|
||||
|
||||
Reference in New Issue
Block a user