1
0
mirror of https://github.com/gsi-upm/soil synced 2025-08-23 19:52:19 +00:00

WIP: removed stats

This commit is contained in:
J. Fernando Sánchez
2022-09-16 18:13:39 +02:00
parent 3dc56892c1
commit 0a9c6d8b19
17 changed files with 224 additions and 589 deletions

View File

@@ -14,7 +14,6 @@ network_agents:
weight: 1
environment_class: social_wealth.MoneyEnv
environment_params:
num_mesa_agents: 5
mesa_agent_type: social_wealth.MoneyAgent
N: 10
width: 50

View File

@@ -71,10 +71,9 @@ class SocialMoneyAgent(NetworkAgent, MoneyAgent):
class MoneyEnv(Environment):
"""A model with some number of agents."""
def __init__(self, N, width, height, *args, network_params, **kwargs):
def __init__(self, width, height, *args, topologies, **kwargs):
network_params['n'] = N
super().__init__(*args, network_params=network_params, **kwargs)
super().__init__(*args, topologies=topologies, **kwargs)
self.grid = MultiGrid(width, height, False)
# Create agents

View File

@@ -1,8 +1,8 @@
from soil.agents import FSM, state, default_state, prob
from soil.agents import FSM, NetworkAgent, state, default_state, prob
import logging
class DumbViewer(FSM):
class DumbViewer(FSM, NetworkAgent):
'''
A viewer that gets infected via TV (if it has one) and tries to infect
its neighbors once it's infected.

View File

@@ -1,4 +1,4 @@
from soil.agents import FSM, state, default_state
from soil.agents import FSM, NetworkAgent, state, default_state
from soil import Environment
from random import random, shuffle
from itertools import islice
@@ -53,7 +53,7 @@ class CityPubs(Environment):
pub['occupancy'] -= 1
class Patron(FSM):
class Patron(FSM, NetworkAgent):
'''Agent that looks for friends to drink with. It will do three things:
1) Look for other patrons to drink with
2) Look for a bar where the agent and other agents in the same group can get in.
@@ -151,7 +151,7 @@ class Patron(FSM):
return befriended
class Police(FSM):
class Police(FSM, NetworkAgent):
'''Simple agent to take drunk people out of pubs.'''
level = logging.INFO

View File

@@ -10,7 +10,7 @@ class Genders(Enum):
female = 'female'
class RabbitModel(FSM):
class RabbitModel(FSM, NetworkAgent):
defaults = {
'age': 0,
@@ -110,12 +110,12 @@ class Female(RabbitModel):
self.info('A mother has died carrying a baby!!')
class RandomAccident(NetworkAgent):
class RandomAccident(BaseAgent):
level = logging.DEBUG
def step(self):
rabbits_total = self.topology.number_of_nodes()
rabbits_total = self.env.topology.number_of_nodes()
if 'rabbits_alive' not in self.env:
self.env['rabbits_alive'] = 0
rabbits_alive = self.env.get('rabbits_alive', rabbits_total)
@@ -131,5 +131,5 @@ class RandomAccident(NetworkAgent):
self.log('Rabbits alive: {}'.format(self.env['rabbits_alive']))
i.set_state(i.dead)
self.log('Rabbits alive: {}/{}'.format(rabbits_alive, rabbits_total))
if self.count_agents(state_id=RabbitModel.dead.id) == self.topology.number_of_nodes():
if self.env.count_agents(state_id=RabbitModel.dead.id) == self.env.topology.number_of_nodes():
self.die()