El Farol агентная модель в Python с использованием Mesa-Master - PullRequest
0 голосов
/ 07 марта 2019

При обучении агентному моделированию. Я столкнулся с проблемой бара "Эль-Фарол". Это кажется очень известным. Для программирования я использую Python, чтобы быть конкретным mesa-master и редактором блокнота jupyter.

`import random
from mesa import Agent, Model
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt 
from mesa.space import MultiGrid
from mesa.time import RandomActivation
from mesa.datacollection import DataCollector . 
class BarCostumer(Agent):
     def __init__(self, unique_id, model):
        super().__init__(unique_id, model)
        self.decision = 1
        self.payoff = 0
    #need to add step method here, to activate make_decision
    #def step(self):
     #   self.move()
    #if self. > 0:
     #   self.()
   # def make_decision(self):
        """Decide whether or not to attend the bar"""
            return self.choose_action()
class ElFarolBar(Model):
"""An environment representing the El Farol Bar"""
    def __init__(self, N=100):
        self.running = True 
        self.num_agents = N
        self.schedule = RandomActivation(self)
        for i in range(self.num_agents):
            a = BarCostumer(i, self) 
            self.schedule.add(a)
            self.datacollector = DataCollector(
            agent_reporters={"Bar": "Bar"}
         )
import numpy as np
model = ElFarolBar(100)
for i in range(10):
    model.step()
    plt.show()` 

Для части кода это то, что я мог сделать. Есть некоторые недостающие части, над которыми мне нужно работать, особенно над степ-функцией. Но я не могу этого сделать. Это должна быть простая линейная функция. Кроме того, я использую меза "Вводный учебник" в качестве руководства, но это не так полезно. Я буду рад любой помощи. Спасибо!

...