Download Understanding Agents and Models in Nonlinear Physics: A Programming Perspective and more Lab Reports Physics in PDF only on Docsity! Adam Getchell Nonlinear Physics: Modeling Chaos and Complexity What is an Agent? Historically related to the Von Neumann machine, as later improved by Stanislaw Ulam into the first agent- based device – the cellular automata Agents have: Activity Autonomy Heterogeneity Tools and Languages in 2008 Program Language(s) Description Swarm Objective-C, Java Agent modeling library, dated, last release version 2.2 February 2005 RepastJ Java Based on Swarm, written specifically in Java RepastPy Python Friendly GUI, uses Python for scripting, limited Repast.NET C#, VB.NET Leverages .NET framework, doesn’t work with Visual Studio 2008 Repast Simphony Java Full-featured, uses Eclipse IDE, can be difficult to setup MetaABM Java Full-featured, uses Eclipse IDE plus own GUI, designed to use standard model file that can work with other tools (Repast, Weka, VisAD, MatLAB), can be difficult to setup Breve Steve, Python, Push Fast, easy to use 3d simulation environment targeted towards physics and artificial life EEE
RepastPy -- Model
e Simple GUI which generates Java classes
La) Tetra! 3(Cicecs\RepastttoaBsbpl Repost ym
File Model Help
Boe S @lg/8/Oe Bllms viv
Property walue
IClass Path
Description
Errors To Console true
[Output To Console true
(Compiled Package Name default_package'
Compiled Model Qutput Di... (C:\Program Files\Repast 3\Repast Py\output
Properties | XML
RepastPy — Agent
Simple Python scripting for behaviors
‘
Return Type: None
if (self. getMumoutEdges ()):
otheragent = (TutorialThreeAgent) self. getRandomNodedut ()
otherWealth = otheragent. getilealth()
if (otherWealth > self.wealth and otherWealth > 2):
self.wealth = self.wealth + 2
otherAgent. setWealth(otherWealth - 2)
else:
self. removeEdgesTo (otherAgent)
otherdgent. removeEdgesFrom(sel£)
self. makeRandomOutEdge (self.model. getAgentList(), DefaultDrawableEdge(), false)
else:
gelf.makeRandomlutEdge (self.model.getAgentList(), DefaultDrawableEdge(), false)
self. setNodeLabel (String. value0£ (self. wealth) )
(nan) (ecole)
A Simphony of Boids
8
Bie
breve – basic Controller/Agent structure (Python) import breve class HelloWorld( breve.Control ): def __init__( self ): breve.Control.__init__( self ) def iterate( self ): print '''Hello, world!''' breve.Control.iterate( self ) breve.HelloWorld = HelloWorld # Create an instance of our controller object to initialize the simulation HelloWorld() breve – basic Controller/Agent structure (steve) @include "Control.tz" Controller HelloWorld. Control : HelloWorld { + to iterate: print "Hello, world!". super iterate. }
- i ee
breve — Capture the Flag
File Window Demos Speed Help Simulation
[Rotate Zoom|Move| Select | m| | [Tourament (CAbrevelDE_27 2\demos\Capture TheFlag\Toumamentiz) >
EEE
breve — boids to evolving swarms
breve "
Evolving swarms In addition to the behaviors of boids, swarm agents: Seek out food, which randomly teleports around Feed their friends with excess food Reproduce when energy (food) hits certain threshold Die when they run out of energy, or reach maximum age Land on the ground, rest, fly around again Mutate in such a way as to improve/reduce reproduction So how to you mutate code that must be pre-defined? Sample Push program and execution ( 2 3 INTEGER. * 4.1 5.2 FLOAT.+ TRUE FALSE BOOLEAN.OR ) Pushing onto the stack from left to right, we then pop the stack right to left : First run is: BOOLEAN.OR FALSE TRUE = (TRUE) (BOOLEAN stack) Next we have: FLOAT.+ 5.2 4.1 = (9.3) (FLOAT stack) Finally we have INTEGER.* 2 3 = (6) (INTEGER stack) Note that each stack has its own type, the stack-based typing system puts each instruction on its own type of stack, so that any combination remains semantically valid. We could re-order all of these stacks without issue. The main trick is to devise programs that actually produce changeable behaviors in the agents, so they can be selected for or against References “Agent-based model,” Wikipedia, the free encyclopedia, http://en.wikipedia.org/wiki/Agent_based_modeling. Christian Castle and Andrew Crooks, Principles and Concepts of Agent-Based Modelling for Developing Geospatial Simulations, UCL Working Papers Series (UCL Centre for Advanced Spatial Analysis, September 2006), http://www.casa.ucl.ac.uk/working_papers/paper110.pdf. “Main Page - SwarmWiki,” http://www.swarm.org/index.php?title=Main_Page. Repast Agent Simulation Toolkit, http://repast.sourceforge.net/. Miles Parker, metaABM, http://metaabm.org/docs/index.html. Jon Klein, breve: a 3d Simulation Environment for Multi-Agent Simulations and Artificial Life (Hampshire College), http://www.spiderland.org/. Craig Reynolds, “Boids (Flocks, Herds, and Schools: a Distributed Behavioral Model),” Boids, Backround and Update, http://www.red3d.com/cwr/boids/. Abelson et al., “Gray Scott Home Page,” Gray Scott Model of Reaction Diffusion, http://www.swiss.ai.mit.edu/projects/amorphous/GrayScott/. Jon Klein, “"Push": a Language for Evolutionary Computation Integrated With breve | breve,” http://www.spiderland.org/node/2759. Lee Spector, Push, PushGP, and Pushpop (School of Cognitive Science: Hampshire College), http://hampshire.edu/lspector/push.html.