88 Center for Connected Learning and Computer-Based Modeling,
99 Northwestern University, Evanston, IL.
1010"""
11- import math
1211
13- from mesa import Model , Agent
12+ from mesa import Agent , Model
1413from mesa .space import MultiGrid
1514from mesa .time import RandomActivationByType
1615
1716
1817class Animal (Agent ):
19-
2018 def __init__ (self , unique_id , model , moore , energy , p_reproduce , energy_from_food ):
2119 super ().__init__ (unique_id , model )
2220 self .energy = energy
@@ -33,7 +31,12 @@ def random_move(self):
3331 def spawn_offspring (self ):
3432 self .energy /= 2
3533 offspring = self .__class__ (
36- self .model .next_id (), self .model , self .moore , self .energy , self .p_reproduce , self .energy_from_food
34+ self .model .next_id (),
35+ self .model ,
36+ self .moore ,
37+ self .energy ,
38+ self .p_reproduce ,
39+ self .energy_from_food ,
3740 )
3841 self .model .grid .place_agent (offspring , self .pos )
3942 self .model .schedule .add (offspring )
@@ -72,6 +75,7 @@ def feed(self):
7275 self .energy += self .energy_from_food
7376 grass_patch .fully_grown = False
7477
78+
7579class Wolf (Animal ):
7680 """
7781 A wolf that walks around, reproduces (asexually) and eats sheep.
@@ -123,18 +127,18 @@ class WolfSheep(Model):
123127 """
124128
125129 def __init__ (
126- self ,
127- seed ,
128- height ,
129- width ,
130- initial_sheep ,
131- initial_wolves ,
132- sheep_reproduce ,
133- wolf_reproduce ,
134- grass_regrowth_time ,
135- wolf_gain_from_food = 13 ,
136- sheep_gain_from_food = 5 ,
137- moore = False
130+ self ,
131+ seed ,
132+ height ,
133+ width ,
134+ initial_sheep ,
135+ initial_wolves ,
136+ sheep_reproduce ,
137+ wolf_reproduce ,
138+ grass_regrowth_time ,
139+ wolf_gain_from_food = 13 ,
140+ sheep_gain_from_food = 5 ,
141+ moore = False ,
138142 ):
139143 """
140144 Create a new Wolf-Sheep model with the given parameters.
@@ -168,7 +172,14 @@ def __init__(
168172 self .random .randrange (self .height ),
169173 )
170174 energy = self .random .randrange (2 * sheep_gain_from_food )
171- sheep = Sheep (self .next_id (), self , moore , energy , sheep_reproduce , sheep_gain_from_food )
175+ sheep = Sheep (
176+ self .next_id (),
177+ self ,
178+ moore ,
179+ energy ,
180+ sheep_reproduce ,
181+ sheep_gain_from_food ,
182+ )
172183 self .grid .place_agent (sheep , pos )
173184 self .schedule .add (sheep )
174185
@@ -179,7 +190,9 @@ def __init__(
179190 self .random .randrange (self .height ),
180191 )
181192 energy = self .random .randrange (2 * wolf_gain_from_food )
182- wolf = Wolf (self .next_id (), self , moore , energy , wolf_reproduce , wolf_gain_from_food )
193+ wolf = Wolf (
194+ self .next_id (), self , moore , energy , wolf_reproduce , wolf_gain_from_food
195+ )
183196 self .grid .place_agent (wolf , pos )
184197 self .schedule .add (wolf )
185198
@@ -207,4 +220,4 @@ def step(self):
207220 start_time = time .perf_counter ()
208221 for _ in range (100 ):
209222 model .step ()
210- print ("Time:" , time .perf_counter () - start_time )
223+ print ("Time:" , time .perf_counter () - start_time )
0 commit comments