Last active
December 9, 2018 15:35
-
-
Save balkian/b9c4f5cec28ba28af9e186194a63c0b4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from soil.agents import FSM, state, default_state | |
from random import randint | |
MAX_WEALTH = 2000 | |
class CoalitionAgent(FSM): | |
defaults = { | |
'wealth': -1, | |
'wealth_threshold': 1000, | |
} | |
def __init__(self, *args, **kwargs): | |
super(CoalitionAgent, self).__init__(*args, **kwargs) | |
if self['wealth'] == -1: | |
self['wealth'] = int(randint(0, self.env.get('max_wealth', MAX_WEALTH))) | |
@default_state | |
@state | |
def looking_for_coalitions(self): | |
for agent in self.get_agents(state_id=self.looking_for_coalitions.id): | |
if agent['wealth'] > self['wealth_threshold']: | |
self.join_coalition(agent) | |
friends = list(friend.id for friend in self.get_neighboring_agents()) | |
self.info('List of friends: {}'.format(friends)) | |
return self.idle | |
@state | |
def idle(self): | |
# Do nothing | |
pass | |
def join_coalition(self, other): | |
# Adill.detect.badobjectsdd your methods here, like adding edges between users... | |
# You'll probably want to check if you've already joined the user first | |
self.info('Joining {}'.format(other.id)) | |
self.env.add_edge(self, other) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CoalitionExample | |
agent_type: coalition.CoalitionAgent | |
network_params: | |
generator: empty_graph | |
n: 100 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment