mirror of https://github.com/gsi-upm/soil
parent
8593ac999d
commit
09e14c6e84
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
name: custom-generator
|
||||||
|
description: Using a custom generator for the network
|
||||||
|
num_trials: 3
|
||||||
|
dry_run: True
|
||||||
|
max_time: 100
|
||||||
|
interval: 1
|
||||||
|
network_params:
|
||||||
|
generator: mymodule.mygenerator
|
||||||
|
# These are custom parameters
|
||||||
|
n: 10
|
||||||
|
n_edges: 5
|
||||||
|
network_agents:
|
||||||
|
- agent_type: CounterModel
|
||||||
|
weight: 1
|
||||||
|
state:
|
||||||
|
id: 0
|
@ -0,0 +1,27 @@
|
|||||||
|
from networkx import Graph
|
||||||
|
import networkx as nx
|
||||||
|
from random import choice
|
||||||
|
|
||||||
|
def mygenerator(n=5, n_edges=5):
|
||||||
|
'''
|
||||||
|
Just a simple generator that creates a network with n nodes and
|
||||||
|
n_edges edges. Edges are assigned randomly, only avoiding self loops.
|
||||||
|
'''
|
||||||
|
G = nx.Graph()
|
||||||
|
|
||||||
|
for i in range(n):
|
||||||
|
G.add_node(i)
|
||||||
|
|
||||||
|
for i in range(n_edges):
|
||||||
|
nodes = list(G.nodes)
|
||||||
|
n_in = choice(nodes)
|
||||||
|
nodes.remove(n_in) # Avoid loops
|
||||||
|
n_out = choice(nodes)
|
||||||
|
G.add_edge(n_in, n_out)
|
||||||
|
return G
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
Programmatic*
|
@ -0,0 +1,38 @@
|
|||||||
|
'''
|
||||||
|
Example of a fully programmatic simulation, without definition files.
|
||||||
|
'''
|
||||||
|
from soil import Simulation, agents
|
||||||
|
from networkx import Graph
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
def mygenerator():
|
||||||
|
# Add only a node
|
||||||
|
G = Graph()
|
||||||
|
G.add_node(1)
|
||||||
|
return G
|
||||||
|
|
||||||
|
|
||||||
|
class MyAgent(agents.FSM):
|
||||||
|
|
||||||
|
@agents.default_state
|
||||||
|
@agents.state
|
||||||
|
def neutral(self):
|
||||||
|
self.info('I am running')
|
||||||
|
|
||||||
|
|
||||||
|
s = Simulation(name='Programmatic',
|
||||||
|
network_params={'generator': mygenerator},
|
||||||
|
num_trials=1,
|
||||||
|
max_time=100,
|
||||||
|
agent_type=MyAgent,
|
||||||
|
dry_run=True)
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
envs = s.run()
|
||||||
|
|
||||||
|
s.dump_yaml()
|
||||||
|
|
||||||
|
for env in envs:
|
||||||
|
env.dump_csv()
|
@ -1 +1 @@
|
|||||||
0.13.4
|
0.13.6
|
||||||
|
Loading…
Reference in New Issue