320 likes | 2.31k Views
The Swarm Simulation System. Je planmäßiger die Menschen vorgehen, desto wirksamer vermag sie der Zufall treffen . Katja Luther, Holger Meyer. Outline. Why is the influence of interventions on complex systems (ecosystems, economic systems, metabolism) usually not predictable?
E N D
The Swarm Simulation System Je planmäßiger die Menschen vorgehen, desto wirksamer vermag sie der Zufall treffen. Katja Luther, Holger Meyer
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
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
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
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
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
Model GUI Swarm kernel Operating System CPU Swarm as a virtual computer • 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
Swarm System Design From Elements to Systems - The Swarm Simulation System
Real World Multi-level Systems • Ecosystem • Ant Colony or Beehive • An Ant or Bee • Organ • Cell • Global Economy • National Economy • Business Company • Employee From Elements to Systems - The Swarm Simulation System
Hierarchical Modeling by Swarm From Elements to Systems - The Swarm Simulation System
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
Example: Heatbugs From Elements to Systems - The Swarm Simulation System
Implementation Heatbugs public 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
Bottom up modeling If <cond> then <action1> else <action2> Inanimate agents Observer Animate agents Data Organizations of agents From Elements to Systems - The Swarm Simulation System
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
RepeatIntervall=1 stepRule step upateLattice count=100 class Heatbug idealTemperature(1700<=uniformRandom<=3500) outputHeat(3000<=uniformRandom<=10000) imgColor(byteConstant=64) heatbug populate HeatbugsModelSwarm ActionGroup agents classes environment heatspace type=heatspace world type=Grid2d From Elements to Systems - The Swarm Simulation System
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
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
Open probe for class Close probe Probe Input value for variable Executes method Probes and GUI • 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
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
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
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 ActionGroup modelSchedule = new ScheduleImpl (getZone (), 1); modelSchedule.at$createAction (0, modelActions); From Elements to Systems - The Swarm Simulation System
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
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
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
And now something completely different ... From Elements to Systems - The Swarm Simulation System
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
The Swarm API • objectbaseBase classes for simulated objects – the "agents“ • activitySchedule execution mechanism – the "process" • spaceSpatial environment library • simtoolsCollected tools (non-GUI) useful for developing Swarm simulations • guiGraphical Interface library • analysisObjects that help with data processing From Elements to Systems - The Swarm Simulation System
Using Swarm API: Museum import 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
Using Swarm API: Agents import 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
Using Swarm API: GUI public 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
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) From Elements to Systems - The Swarm Simulation System