in die linke untere Ecke bewegen.
Dies passiert indes nicht, (wohl) weil die mesa-Agenten-Klasse
kein Attribut für die Koordinaten akzeptiert. Kann mir bitte jemand auf die Sprünge helfen?
Code: Alles auswählen
""" Ein Agent in einem grid des Python-moduls Mesa soll sich
in die linke untere Ecke bewegen.
Dies passiert indes nicht, (wohl) weil die mesa-Agenten-Klasse
kein Attribut für die Koordinaten akzeptiert"""
import mesa
class Model(mesa.Model):
"""A model with one agent"""
def __init__(self, number_of_agents, width, height):
super().__init__(number_of_agents, width, height)
self.num_agents = number_of_agents
self.grid = mesa.space.MultiGrid(width, height, True)
self.schedule = mesa.time.BaseScheduler(self)
# Create agent and add it to a random grid cell
a = Agent(1, self)
self.schedule.add(a)
x = self.random.randrange(self.grid.width)
y = self.random.randrange(self.grid.height)
self.grid.place_agent(a, (x, y))
def step(self):
self.schedule.step()
class Agent(mesa.Agent):
def __init__(self, unique_id, model):
super().__init__(unique_id, model)
self.x, self.y = 0, 0
def move_to_corner(self):
new_x = max(self.x - 1, 0)
new_y = max(self.y - 1, 0)
new_position = (new_x, new_y)
print(new_position)
self.model.grid.move_agent(self, new_position)
self.x, self.y = new_position # Update agent's coordinates
def step(self):
self.move_to_corner()
model = Model(1, 10, 10)
for i in range(20):
model.step()