adicionados atributos à class Agente(), assim como metodo para definir esses atributos com base na estratégia
This commit is contained in:
@ -5,25 +5,61 @@ class Estrategia(Enum):
|
||||
Neutro = 0
|
||||
Tit4Tat = 1
|
||||
Vingativo = 2
|
||||
Lunatico = 3
|
||||
|
||||
|
||||
class Agente():
|
||||
def __init__(self):
|
||||
# definir estrategia aleatoriamente
|
||||
self.estrategia = Estrategia(random.randint(0,Estrategia.__len__()-1))
|
||||
#self.estrategia = random.choice(Estrategia._member_names_)
|
||||
# factores da estrategia (probabilidade): -1...0...1
|
||||
# amabilidade -> não desertar a menos que o adversário deserte (-1 -> desertar sempre; 1 -> nunca desertar)
|
||||
self.definir_fatores_estrategia()
|
||||
# identificador de agente
|
||||
self.id_agente = id(self)
|
||||
|
||||
# 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
|
||||
def definir_fatores_estrategia(self):
|
||||
match self.estrategia:
|
||||
case Estrategia.Neutro:
|
||||
self.amabilidade = 0.5
|
||||
self.retaliação = 0.5
|
||||
self.perdao = 0.5
|
||||
self.coerencia = 1
|
||||
case Estrategia.Tit4Tat:
|
||||
self.amabilidade = 1
|
||||
self.retaliação = 1
|
||||
self.perdao = 1
|
||||
self.coerencia = 1
|
||||
case Estrategia.Vingativo:
|
||||
self.amabilidade = 0
|
||||
# retaliação -> retaliar quando um adversário deserta (-1 -> nunca retaliar; 1 -> retaliar sempre)
|
||||
self.retaliação = 0
|
||||
# perdao -> perdoar um adversário desertor, assim que este deixa de desertar (-1 -> nunca perdoar; 1 -> perdoar sempre)
|
||||
self.retaliação = 1
|
||||
self.perdao = 0
|
||||
# coerencia -> ser coerente na estrategia, evitar aleatoriedade (-1 -> aletório negativo; 0 -> não aleatorio; 1 -> aleatorio positivo)
|
||||
self.coerencia = 0
|
||||
self.coerencia = 1
|
||||
case Estrategia.Lunatico:
|
||||
self.amabilidade = 0.5
|
||||
self.retaliação = 0.5
|
||||
self.perdao = 0.5
|
||||
self.coerencia = 0.5
|
||||
|
||||
|
||||
|
||||
agente = Agente()
|
||||
|
||||
print(agente.estrategia)
|
||||
print(f'ID: {agente.id_agente}')
|
||||
print(f'Estratégia: {agente.estrategia}')
|
||||
print(f'\tAmabilidade: {agente.amabilidade}')
|
||||
print(f'\tRetalização: {agente.retaliação}')
|
||||
print(f'\tPerdão: {agente.perdao}')
|
||||
print(f'\tCOerência: {agente.coerencia}')
|
||||
|
||||
|
||||
# lista_estrategias = Estrategia._member_map_
|
||||
|
||||
Reference in New Issue
Block a user