спасибо, что нашли время. (Python 3.7.0)
Я начинающий в Python и занимаюсь обучением Mesa, так как хочу создать агентную модель для исследования.
У меня возникает следующая проблема: когда я запускаю следующий код, каждый раз должен появляться случайный график, показывающий богатство 10 агентов в модели. Все агенты начинают с богатства 1 и случайным образом обмениваются (= дают богатство) друг с другом. Тем не менее, график всегда один и тот же и показывает стопку со значением 10! Я думаю, что в определении agent_wealth что-то не так, но я взял это прямо из учебника.
from mesa_tutorial import * #import all definitions from mesa_tutorial
import matplotlib.pyplot as plt
model = MoneyModel(10)
for i in range(10):
model.step()
agent_wealth = [a.wealth for a in model.schedule.agents]
plt.hist(agent_wealth)
plt.show()
В результате на следующем участке:
неслучайный сюжет со стеком 10
Вот определение модели
class MoneyModel(Model): # define MoneyModel as a Subclass of Model
'''A model with some number (N) of agents'''
def __init__(self, N):
#Create N agents
self.num_agents = N
self.schedule = RandomActivation(self) #Executes the step of all agents, one at a time, in random order.
for i in range(self.num_agents): #loop with a range of N = number of agents
a = MoneyAgent(i, self) # no idea what happens here, a = agent?
self.schedule.add(a) #adds a to the schedule of the model
def step(self):
'''Advance the model by one step'''
self.schedule.step()