8
8
Center for Connected Learning and Computer-Based Modeling,
9
9
Northwestern University, Evanston, IL.
10
10
"""
11
- import math
12
11
13
- from mesa import Model , Agent
12
+ from mesa import Agent , Model
14
13
from mesa .space import MultiGrid
15
14
from mesa .time import RandomActivationByType
16
15
17
16
18
17
class Animal (Agent ):
19
-
20
18
def __init__ (self , unique_id , model , moore , energy , p_reproduce , energy_from_food ):
21
19
super ().__init__ (unique_id , model )
22
20
self .energy = energy
@@ -33,7 +31,12 @@ def random_move(self):
33
31
def spawn_offspring (self ):
34
32
self .energy /= 2
35
33
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 ,
37
40
)
38
41
self .model .grid .place_agent (offspring , self .pos )
39
42
self .model .schedule .add (offspring )
@@ -72,6 +75,7 @@ def feed(self):
72
75
self .energy += self .energy_from_food
73
76
grass_patch .fully_grown = False
74
77
78
+
75
79
class Wolf (Animal ):
76
80
"""
77
81
A wolf that walks around, reproduces (asexually) and eats sheep.
@@ -123,18 +127,18 @@ class WolfSheep(Model):
123
127
"""
124
128
125
129
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 ,
138
142
):
139
143
"""
140
144
Create a new Wolf-Sheep model with the given parameters.
@@ -168,7 +172,14 @@ def __init__(
168
172
self .random .randrange (self .height ),
169
173
)
170
174
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
+ )
172
183
self .grid .place_agent (sheep , pos )
173
184
self .schedule .add (sheep )
174
185
@@ -179,7 +190,9 @@ def __init__(
179
190
self .random .randrange (self .height ),
180
191
)
181
192
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
+ )
183
196
self .grid .place_agent (wolf , pos )
184
197
self .schedule .add (wolf )
185
198
@@ -207,4 +220,4 @@ def step(self):
207
220
start_time = time .perf_counter ()
208
221
for _ in range (100 ):
209
222
model .step ()
210
- print ("Time:" , time .perf_counter () - start_time )
223
+ print ("Time:" , time .perf_counter () - start_time )
0 commit comments