mirror of
https://github.com/gsi-upm/soil
synced 2025-08-24 03:52:20 +00:00
WIP
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from soil.agents import FSM, state, default_state, BaseAgent, NetworkAgent
|
||||
from enum import Enum
|
||||
from random import random, choice
|
||||
import logging
|
||||
import math
|
||||
|
||||
@@ -57,10 +56,10 @@ class Male(RabbitModel):
|
||||
|
||||
# Males try to mate
|
||||
for f in self.get_agents(state_id=Female.fertile.id,
|
||||
agent_type=Female,
|
||||
agent_class=Female,
|
||||
limit_neighbors=False,
|
||||
limit=self.max_females):
|
||||
r = random()
|
||||
r = self.random.random()
|
||||
if r < self['mating_prob']:
|
||||
self.impregnate(f)
|
||||
break # Take a break
|
||||
@@ -85,11 +84,11 @@ class Female(RabbitModel):
|
||||
self['pregnancy'] += 1
|
||||
self.debug('Pregnancy: {}'.format(self['pregnancy']))
|
||||
if self['pregnancy'] >= self.gestation:
|
||||
number_of_babies = int(8+4*random())
|
||||
number_of_babies = int(8+4*self.random.random())
|
||||
self.info('Having {} babies'.format(number_of_babies))
|
||||
for i in range(number_of_babies):
|
||||
state = {}
|
||||
state['gender'] = choice(list(Genders)).value
|
||||
state['gender'] = self.random.choice(list(Genders)).value
|
||||
child = self.env.add_node(self.__class__, state)
|
||||
self.env.add_edge(self.id, child.id)
|
||||
self.env.add_edge(self['mate'], child.id)
|
||||
@@ -124,8 +123,7 @@ class RandomAccident(BaseAgent):
|
||||
for i in self.env.network_agents:
|
||||
if i.state['id'] == i.dead.id:
|
||||
continue
|
||||
r = random()
|
||||
if r < prob_death:
|
||||
if self.prob(prob_death):
|
||||
self.debug('I killed a rabbit: {}'.format(i.id))
|
||||
rabbits_alive = self.env['rabbits_alive'] = rabbits_alive -1
|
||||
self.log('Rabbits alive: {}'.format(self.env['rabbits_alive']))
|
||||
|
@@ -3,9 +3,9 @@ name: rabbits_example
|
||||
max_time: 100
|
||||
interval: 1
|
||||
seed: MySeed
|
||||
agent_type: rabbit_agents.RabbitModel
|
||||
agent_class: rabbit_agents.RabbitModel
|
||||
environment_agents:
|
||||
- agent_type: rabbit_agents.RandomAccident
|
||||
- agent_class: rabbit_agents.RandomAccident
|
||||
environment_params:
|
||||
prob_death: 0.001
|
||||
default_state:
|
||||
@@ -13,8 +13,8 @@ default_state:
|
||||
topology:
|
||||
nodes:
|
||||
- id: 1
|
||||
agent_type: rabbit_agents.Male
|
||||
agent_class: rabbit_agents.Male
|
||||
- id: 0
|
||||
agent_type: rabbit_agents.Female
|
||||
agent_class: rabbit_agents.Female
|
||||
directed: true
|
||||
links: []
|
||||
|
Reference in New Issue
Block a user