Source code for examples.el_farol_bar_model.agents.agents
# -*- coding: utf-8 -*-
""" Agents for the el farol bar problem """
from basicAgents import DiscreteEventAgent
from .el_farol_bar_action_set import Strategy, RandomPlay, LikeCrowded, LikeSixtyPercent
import random
[docs]class Player(DiscreteEventAgent):
""" A basic player in the El Farol Bar Problem """
def __init__(self, simulation, model, agent_number, agent_def):
super().__init__(simulation, model, agent_number, agent_def)
self.payoff = 0
self.my_play = ""
self.other_play = ""
self.memory = [0]
self.memory_recall = 10
self.strategy = Strategy(self, self.memory_recall)
self.selected_predictor = ""
self.predictor_fitness = 0.0
self.predictor_prediction = 0
[docs] def step(self):
""" agent step """
self.select_game()
[docs] def select_game(self):
""" The agent select a play from a strategy """
self.game_payoff()
selected_predictor = self.strategy.selected_predictor()
self.selected_predictor = selected_predictor[0]
self.predictor_fitness = selected_predictor[1][self.my_step]
self.predictor_prediction = selected_predictor[2][self.my_step]
self.my_play = self.strategy.select_game()
[docs] def play(self):
""" The agent plays a strategy """
return self.my_play
[docs] def game_payoff(self):
""" Get the game payoff """
self.payoff = self.strategy.payoff(self.my_play)
[docs] def get_frequency(self, frequency):
""""Get the frequency in the bar """
self.memory.append(frequency)
self.strategy.get_frequency(frequency)
[docs]class RandomPlayer(Player):
""" A player that always defect """
def __init__(self, simulation, model, agent_number, agent_def):
super().__init__(simulation, model, agent_number, agent_def)
self.strategy = RandomPlay(self)
[docs] def select_game(self):
"""Random selection of the game"""
if random.random() > .5:
self.my_play = "GOING"
else:
self.my_play = "NOT GOING"
[docs]class LikeCrowdedPlayer(Player):
""" A player that always defect """
def __init__(self, simulation, model, agent_number, agent_def):
super().__init__(simulation, model, agent_number, agent_def)
self.strategy = LikeCrowded(self, self.memory_recall)
[docs] def select_game(self):
""" The agent select a play from a strategy """
selected_predictor = self.strategy.selected_predictor()
self.selected_predictor = selected_predictor[0]
self.predictor_fitness = selected_predictor[1][self.my_step]
self.predictor_prediction = selected_predictor[2][self.my_step]
self.my_play = self.strategy.select_game()
[docs]class LikeSixtyPercentPlayer(Player):
""" A player that always defect """
def __init__(self, simulation, model, agent_number, agent_def):
super().__init__(simulation, model, agent_number, agent_def)
self.strategy = LikeSixtyPercent(self, self.memory_recall)