the swarm simulation system je planmäßiger die menschen vorgehen, desto wirksamer vermag sie der...
TRANSCRIPT
The Swarm The Swarm Simulation SystemSimulation System
Je planmäßiger die Menschen vorgehen,
desto wirksamer vermag sie der Zufall treffen.
Katja Luther, Holger Meyer
From Elements to Systems - The Swarm Simulation System 2
Outline
Why is the influence of interventions on complex systems (ecosystems, economic systems, metabolism) usually not predictable?
Criteria for simulation systems - Representation of complex interactions- Agentbased model- Building of hierarchical structures (recursion)
From Elements to Systems - The Swarm Simulation System 3
Why Simulation?
John Briggs, F. David Peat: "Komplexe Systeme sind letzen Endes nicht analysierbar, nicht auf Teile reduzierbar, weil die Teile durch Annäherung und Rückkopplung ständig aufeinander einwirken".
From Elements to Systems - The Swarm Simulation System 4
Scenarios
Simulation of ecosystems „Superorganisms“ (e.g. ants, bees,
etc.) Processes in business companies
(micro) and national economy (macro) Load balancing in telecommunication
networks
From Elements to Systems - The Swarm Simulation System 5
The Swarm Simulations System
Basic principle: groups of simple interacting agents creating a complex system behavior
Swarm provides a general for writing computer simulations
The Swarm system supports implementation of multi-level systems by composing hierarchical swarms of agents
From Elements to Systems - The Swarm Simulation System 6
What is Swarm?
A virtual machine / a discrete event simulator
Virtual machine: an abstract instruction processor. Example: the Java virtual machine
But instead of Java instructions, Swarm interprets instructions describing temporal events and constraints via Schedules, Swarms, and their associated parameterizations
From Elements to Systems - The Swarm Simulation System 7
Swarm as a virtual computer
Operating System
Swarm kernel
GUI Model
CPU
A computer’s CPU executes program instructions
Swarm kernel is virtual CPU running model and GUI events
Nested Swarms merge activity schedules into one
From Elements to Systems - The Swarm Simulation System 8
Swarm System Design
From Elements to Systems - The Swarm Simulation System 9
Real World Multi-level Systems
Global Economy National Economy Business Company Employee
Ecosystem Ant Colony or
Beehive An Ant or Bee Organ Cell
From Elements to Systems - The Swarm Simulation System 10
Hierarchical Modeling by Swarm
From Elements to Systems - The Swarm Simulation System 11
Interactions of Nested Swarms
Swarm allows swarms to be agents creating a new swarm in the next level of the hierarchical model (nested swarms)
Time hierarchy:Top-down synchronized time-management across the simulation
From Elements to Systems - The Swarm Simulation System 12
Example: Heatbugs
From Elements to Systems - The Swarm Simulation System 13
Implementation Heatbugspublic class Heatbug {
/** my current unhappiness */
public double unhappiness;
/** my spatial coordinates */
public int x, y;
/** my ideal temperature and how much heat I put out */
public int idealTemperature, outputHeat;
/** chance of moving randomly */
public double randomMoveProbability;
/** my colour (display) */
public byte bugColor;
...
From Elements to Systems - The Swarm Simulation System 14
Bottom up modeling
Organizations of agents
Animate agents
Data
Observer
Inanimate agents
If <cond>
then <action1>
else <action2>
If <cond>
then <action1>
else <action2>
From Elements to Systems - The Swarm Simulation System 15
Implementation ObserverSwarm
public class HeatbugObserverSwarm extends GUISwarmImpl { /** one parameter: update freq */ public int displayFrequency; /** ActionGroup for sequence of GUI events */ public ActionGroup displayActions;
/** the single Schedule instance */ public Schedule displaySchedule;
/** the Swarm we're observing */ public HeatbugModelSwarm heatbugModelSwarm;
From Elements to Systems - The Swarm Simulation System 16
HeatbugsModelSwarm
RepeatIntervall=1stepRule step upateLattice
ActionGroup
heatspacetype=heatspace
worldtype=Grid2denvironment
count=100 class
heatbug
populate
agents
HeatbugidealTemperature(1700<=uniformRandom<=3500)
outputHeat(3000<=uniformRandom<=10000)imgColor(byteConstant=64)
classes
From Elements to Systems - The Swarm Simulation System 17
Implementation Modelswarm
public class HeatbugModelSwarm extends SwarmImpl{ // simulation parameters public int numBugs;
public int maxOutputHeat, minOutputHeat;public double evaporationRate;public double diffuseConstant;public int worldXSize,worldYSize;public int minIdealTemp, maxIdealTemp;
public double randomMoveProbability;
From Elements to Systems - The Swarm Simulation System 18
Implementation Modelswarm-2
public class HeatbugModelSwarm extends SwarmImpl{ ... /** ActionGroup for holding an ordered sequence of action
*/ public ActionGroup modelActions; /** the single Schedule */ public Schedule modelSchedule; /** list of all the heatbugs and the world the bugs live in
*/ public List heatbugList; public Grid2d world;
public HeatSpace heat;
From Elements to Systems - The Swarm Simulation System 19
Probes and GUI
Executes methodInput value for variable
Open probe for class Close probe
Probe
A probe can be used to communicate with the objects in real time
Default probe map shows all variables
From Elements to Systems - The Swarm Simulation System 20
Implementation ProbeMap//in contructor of HeatbugModelSwarm class HeatbugModelProbeMap extends EmptyProbeMapImpl {… //definition of addVar() and addMessage()
public HeatbugModelProbeMap (Zone _aZone, Class aClass) { super (_aZone, aClass); addVar ("numBugs");… addMessage ("toggleRandomizedOrder"); addMessage ("addHeatbug:");
}} /*Now, install our custom probeMap class directly into the
probeLibrary */ ...
From Elements to Systems - The Swarm Simulation System 21
Method buildObjects()public Object buildObjects (){
super.buildObjects();heat = new HeatSpace(getZone(),worldXSize, worldYSize,diffuseConst, evapoRate);
world = new Grid2dImpl (getZone(), worldXSize, worldYSize);heatbugList = new LinkedList();
for (i = 0; i < numBugs; i++) {idealTemp = getRandBetween(minIdealTemp, maxIdealTemp);outputHeat = getRandBetween(minOutputHeat, maxOutputHeat);
Heatbug hbug = new Heatbug (world, heat); heatbugList.add (hbug);
...
From Elements to Systems - The Swarm Simulation System 22
Implementation buildActions()public Object buildActions () { super.buildActions();
modelActions = new ActionGroupImpl (getZone());
//erzeugen der Actionsund zufügen zu ActionGroup
modelActions.createActionTo$message
(heat, new Selector (heat.getClass (), “updateLattice", false));
//erzeugen von modelSchedule und zufügen der ActionGroupmodelSchedule = new ScheduleImpl (getZone (), 1);
modelSchedule.at$createAction (0, modelActions);
From Elements to Systems - The Swarm Simulation System 23
Arborgames Model of forest dynamics
Examine the role of fire on species diversity
Discrete cells with one (two) individual per cell
Local interaction of trees in a neighborhood generates landscape dynamics
From Elements to Systems - The Swarm Simulation System 24
Arborgames Response to disturbance
Landscape dynamics allow recursive response to disturbance
Expansion of fire is governed by the contagion of local forest structure
From Elements to Systems - The Swarm Simulation System 25
Simulation of population dynamics
Development of population diversity in a forest with medium strength of disturbance
Development of population diversity with strong disturbance
From Elements to Systems - The Swarm Simulation System 26
And now something completely different ...
From Elements to Systems - The Swarm Simulation System 27
Computational-Fields
Movement of the agents is driven by these Co-Fields
Co-Fields are established by the infrastructure and by the agents
Agent movements induces changes of Co-Field – composing a feedback cycle
From Elements to Systems - The Swarm Simulation System 28
The Swarm API
objectbase Base classes for simulated objects – the "agents“
activity Schedule execution mechanism – the "process"
space Spatial environment library simtools Collected tools (non-GUI) useful for
developing Swarm simulations gui Graphical Interface library analysis Objects that help with data processing
From Elements to Systems - The Swarm Simulation System 29
Using Swarm API: Museumimport swarm.Globals;
import swarm.space.Discrete2dImpl;
public class Museum extends Discrete2dImpl {
public ListImpl rooms;
...
// In Constructor:
rooms = new ListImpl(Globals.env.globalZone);
...
public void draw(){
((Room)rooms.atOffset(0)).draw(startX,startY);
...
From Elements to Systems - The Swarm Simulation System 30
Using Swarm API: Agentsimport swarm.objectbase.Swarm;
import swarm.objectbase.SwarmImpl;
import swarm.activity.ActionGroupImpl;
import swarm.activity.ScheduleImpl;
import swarm.activity.Activity;
public class PeopleSwarm extends SwarmImpl{
...
public Activity activateIn(Swarm swarmContext) {
super.activateIn(swarmContext);
peopleSchedule.activateIn(this);
return getActivity();
}
From Elements to Systems - The Swarm Simulation System 31
Using Swarm API: GUIpublic void createFieldRasters() {
ZoomRasterImpl fieldRaster;
int numFields = modelSwarm.museumSwarm.museum.rooms.getCount();
fieldRasters = new ListImpl(getZone());
for(int i=0; i<numFields;i++) {
fieldRaster = new ZoomRasterImpl(getZone(),"room "+i+“fieldRaster");
fieldRaster.setWidth$Height(museum.getSizeX(),museum.getSizeY());
fieldRaster.setWindowTitle("room ;"+i+" field");
fieldRasters.addLast(fieldRaster);
...
From Elements to Systems - The Swarm Simulation System 32
Resources
www.swarm.org Chris Langton et. al.: The Swarm Simulation System A
tool for studying complex systems, Santa Fe Institute 1999 www.ctsgroup.ch The Co-Fields Project – Agent Group (Franco Zamonelli)
Università di Modena e Reggio Emilia polaris.ing.unimo.it/didattica/curriculum/marco/Web-Co-Fields/cofields.html
Swarm User Guide, Swarm Development Group, University of Kansas Department of Political Science, Paul Johnson, 2000
Benedikt Stefansson: Swarmfest ’99 Tutorial Session One: Introduction (www.swarm.org)