Definition of the Subject
Agent‐based modeling is a bottom‐up approach to representing and investigating complex systems. Agent‐based models can beimplemented either computationally (e. g., through computer simulation) or non‐computationally (e. g., with participatorysimulation). The close match between the capabilities of computational platforms and the requirements of agent‐based modeling make these platformsa natural choice for many agent‐based models. Of course, realizing the potential benefits of this natural match necessitates the use ofcomputer languages to express the designs of agent‐based models. A wide range of computer programming languages can play this role includingboth domain‐specific and general purpose languages. The domain‐specific languages include business‐oriented languages (e. g.,spreadsheet programming tools); science and engineering languages (e. g., Mathematica); and dedicated agent‐based modeling languages(e. g., NetLogo). The general purpose languages can be...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Abbreviations
- Agent:
-
An agent is a self‐directed component in an agent‐based model.
- Agent‐based model:
-
An agent‐based model is a simulation made up of a set of agents and an agent interaction environment.
- Annotations:
-
Annotations are a Java feature for including metadata in compiled code.
- Attributes:
-
Attributes are a C# feature for including metadata in compiled code.
- Aspects:
-
Aspects are a way to implement dispersed but recurrent tasks in one location.
- Bytecode:
-
Bytecode is compiled Java binary code.
- Common intermediate language:
-
Common Intermediate Language (CIL) is compiled binary code for the Microsoft .NET Framework. CIL was originally called Microsoft Intermediate Language (MSIL).
- Computational algebra systems:
-
Computational algebra systems (CAS) are computational mathematics systems that calculate using symbolic expressions.
- Computational mathematics systems:
-
Computational Mathematics Systems (CMS) are software programs that allow users to apply powerful mathematical algorithms to solve problems through a convenient and interactive user interface. CMS typically supply a wide range of built‐in functions and algorithms.
- Class:
-
A class is the object‐oriented inheritable binding of procedures and data that provides the basis for creating objects.
- Computer language:
-
A computer language is a method of noting directives for computers. Computer programming languages, or more simply programming languages, are an important category of computer languages.
- Computer programming language:
-
Please see glossary entry for “Programming language”.
- C#:
-
C# (Archer [1]) is an object‐oriented programming language that was developed and is maintained by Microsoft. C# is one of many languages that can be used to generate Microsoft .NET Framework code. This code is run using a ‘virtual machine’ that potentially gives it a consistent execution environment on different computer platforms.
- C++:
-
C++ is a widely used object‐oriented programming language that was created by Bjarne Stroustrup (Stroustrup [39]) at AT&T. C++ is widely noted for both its object‐oriented structure and its ability to be easily compiled into native machine code.
- Design pattern:
-
Design patterns form a “common vocabulary” describing tried and true solutions for commonly faced software design problems (Coplien [6]).
- Domain‐specific language:
-
Domain‐specific languages (DSL's) are computer languages that are highly customized to support a well defined application area or ‘domain’. DSL's commonly include a substantial number of keywords that are nouns and verbs in the area of application as well as overall structures and execution patterns that correspond closely with the application area.
- Declarative language:
-
According to Watson [47] a “declarative language (or non‐procedural language) involves the specification of a set of rules defining the solution to the problem; it is then up to the computer to determine how to reach a solution consistent with the given rules”.
- Dynamic method invocation:
-
Dynamic method invocation, combined with reflection, is a Java and C# approach to higher‐order programming.
- Encapsulation:
-
Encapsulation is the containment of details inside a module.
- Field:
-
A field is a piece of object‐oriented data.
- Functional language:
-
According to Watson [47] “in functional languages (sometimes called applicative languages) the fundamental operation is function application”.
- Function pointers:
-
Function pointers are part of C++'s approach to higher‐order programming. Runtime Type Identification is another component of this approach.
- Generics:
-
Generics are a Java and C# feature for generalizing classes.
- Goto statement:
-
A goto statement is an unconditional jump in a code execution flow.
- Headless:
-
A headless program executes without the use of a video monitor. This is generally done to rapidly execute models while logging results to files or databases.
- Higher‐order programming:
-
According to Reynolds [35], higher‐order programming involves the use of “procedures or labels … as data” such that they “can be used as arguments to procedures, as results of functions, or as values of assignable variables”.
- Imperative language:
-
According to Watson [47] in imperative languages “there is a fundamental underlying dependence on the assignment operation and on variables implemented as computer memory locations, whose contents can be read and altered”.
- Inheritance:
-
Inheritance is the ability of an object‐oriented class to assume the methods and data of another class called the parent class.
- Java:
-
Java (Foxwell [12]) is a widely used object‐oriented programming language that was developed and is maintained by Sun Microsystems. Java is known for its widespread cross‐platform availability on many different types of hardware and operating systems. This capability comes from Java's use of a ‘virtual machine’ that allows code to have a consistent execution environment on many different computer platforms.
- Logic programming language:
-
According to Watson [47] “in a logic programming language, the programmer needs only to supply the problem specification in some formal form, as it is the responsibility of the language system to infer a method of solution”.
- Macro language:
-
Macro languages are simple domain‐specific languages that are used to write script for tools such as spreadsheets.
- Mathematica:
-
Mathematica is a commercial software program for computational mathematics. Information on Mathematica can be found at http://www.wolfram.com/.
- Method:
-
A method is an object‐oriented procedure.
- Methodological individualism:
-
A reductionist approach to social science originally developed by Max Weber that focuses on the interaction of well defined and separate individuals (Heath [20]). Alternatives theories usually focus on more holistic views of interaction (Heath [20]).
- MATLAB:
-
The MATrix Laboratory (MATLAB) is a commercial software program for computational mathematics. Information on MATLAB can be found at http://www.mathworks.com/.
- Mobile agents:
-
Mobile agents are light‐weight software proxies that roam the world‐wide web and perform various functions programmed by their owners such as gathering information from web sites.
- Module:
-
According to Stevens et al. [38], “the term module is used to refer to a set of one or more contiguous program statements having a name by which other parts of the system can invoke it and preferably having its own distinct set of variable names”.
- NetLogo:
-
NetLogo (Wilensky [48]) is an agent‐based modeling and simulation platform that uses a domain‐specific language to define models. NetLogo models are built using a metaphor of turtles as agents and patches as environmental components (Wilensky [48]). NetLogo itself is Java‐based. NetLogo is free for use in education and research. More information on NetLogo and downloads can be found at http://ccl.northwestern.edu/netlogo/.
- Non‐procedural language:
-
Please see glossary entry for “Declarative language”.
- Object:
-
An object is the instantiation of a class to produce executable instances.
- Object‐oriented language:
-
Object‐oriented languages are structured languages that have special features for binding data with procedures; inheritance; encapsulation; and polymorphism. Careful abstraction that omits unimportant details is an important design principle associated with the use of object‐oriented languages.
- Objective-C:
-
Objective-C is an object‐oriented language that extends the C language.
- Observer:
-
The observer is a NetLogo agent that has a view of an entire model. There is exactly one observer in every NetLogo model.
- Patch:
-
A patch is a NetLogo agent with a fixed location on a master grid.
- Polymorphism:
-
Polymorphism is the ability of an object‐oriented class to respond to multiple related messages, often method calls with the same name but different parameters.
- Procedural language:
-
According to Watson [47] “procedural languages … are those in which the action of the program is defined by a series of operations defined by the programmer”.
- Programming language:
-
A programming language is a computer language that allows any computable activity to be expressed.
- Record:
-
A record is an independently addressable collection of data items.
- Reflection:
-
Reflection, combined with dynamic method invocation, is a Java and C# approach to higher‐order programming.
- Repast:
-
The Recursive Porous Agent Simulation Toolkit (Repast) is a free and open source family of agent‐based modeling and simulation platforms (ROAD [44]). Information on Repast and free downloads can be found at http://repast.sourceforge.net/.
- Repast simphony:
-
Repast Simphony (Repast S) is the newest member of the Repast family of free and open source agent‐based modeling and simulation platforms (North et al. [32], North et al. [30]). The Java‐based Repast S system includes advanced features for specifying, executing, and analyzing agent‐based simulations.
- Repast simphony score:
-
Repast Simphony Score is an XML metadata file format that describes the components (e. g., agents and spaces) allowed in a Repast Simphony simulation.
- Runtime type identification:
-
Runtime Type Identification (RTTI) is part of C++'s approach to higher‐order programming. Function pointers are another component of this approach.
- Structured language:
-
Structured languages are languages that divide programs into separate modules each of which has one controlled entry point, a limited number of exit points, and no internal jumps (Dijkstra [10]).
- Swarm:
-
Swarm (Swarm Development Group [40]) is a free and open source agent‐based modeling and simulation platform maintained by the Swarm Development Group. The core Swarm system uses Objective-C. A Java‐based “Java Swarm” wrapper for the Objective-C core is also available. Information on Swarm and free downloads can be found at http://www.swarm.org/.
- Templates:
-
Templates are a C++ feature for generalizing classes.
- Turtle:
-
A turtle is a mobile NetLogo agent.
- Virtual machine:
-
A virtual machine is a software environment that allows user code to have a consistent execution environment on many different computer platforms.
- Unstructured language:
-
Unstructured languages are languages that rely on step‐by‐step solutions such that the solutions can contain arbitrary jumps between steps.
Bibliography
Archer T (2001) Inside C#. Microsoft Press,Redmond
Backus J, Bauer F, Green J, Katz C, McCarthy J, Naur P, Perlis A, Rutishauser H,Samuelson K, Vauquois B, Wegstein J, van Wijngaarden A, Woodger M (1963) Revised Report on the Algorithmic Language ALGOL 60. In: Naur P (ed)Communications of the ACM, vol 6. ACM, New York, pp 1–17
Bhavnani R (2003) Adaptive agents, political institutions and civic traditionsin modern italy. J Artif Soc Soc Simul 6(4). Available at http://jasss.soc.surrey.ac.uk/6/4/1.html
Bonabeau E (2001) Agent‐based modeling: methods and techniques forsimulating human systems. Proc Natl Acad Sci 99(3):7280–7287
Casti J (1997) Would‐be worlds: how simulation is changing the world ofscience. Wiley, New York
Coplien J (2001) Software patterns home page. Available ashttp://hillside.net/patterns/
Dahl O-J, Nygaard K (1966) SIMULA – an ALGOL‐based simulationlanguage. Commun ACM 9:671–678
Dahl O-J, Nygaard K (2001) How object‐oriented programmingstarted. Available at http://heim.ifi.uio.no/%7Ekristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
Daniels M (1999) Integrating simulation technologies with swarm. In: Proc of theagent 1999 workshop on agent simulation: applications, models, and tools. Argonne National Laboratory, Argonne
DijkstraE (1968) Go to statement considered harmful. Commun ACM 11(3):147–148
Eclipse (2008) Eclipse home page. Available athttp://www.eclipse.org/
Foxwell H (1999) Java 2 software development kit. Linux J
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements ofreusable object‐oriented software. Addison‐Wesley, Wokingham
Gaylord R, D'Andria L (1998) Simulating society: a mathematica toolkitfor modeling socioeconomic behavior. Springer/TELOS, New York
Gaylord R, Davis J (1999) Modeling nonspatial social interactions. Math EduRes 8(2):1–4
Gaylord R, Nishidate K (1994) Modeling nature: cellular automata simulationswith Mathematica. Springer, New York
Gaylord R, Wellin P (1995) Computer simulations with Mathematica: explorationsin complex physical and biological systems. Springer/TELOS, New York
Guetzkow H, Kotler P, Schultz R (eds) (1972) Simulation in social andadministrative science. Prentice Hall, Englewood Cliffs
Harvey B (1997) Computer science logo style. MITPress. Boston
Heath J (2005) Methodological individualism. In: Zalta E (ed) Stanfordencyclopedia of philosophy. Stanford University, Stanford,Aviable at http://plato.stanford.edu
Jennings N (2000) On agent‐based software engineering. Artif Intell117:277–296
Koenig D, Glover A, King P, Laforge G, Skeet J (2007) Groovy inaction. Manning Publications, Greenwhich
Lahtinen E, Ala-Mutka K, Jarvinen H-M (2005) A study of the difficultiesof novice programmers. In: Proc of the 10th annual SIGCSE conference on innovation and technology in computer science education. Caparica,Portugal. ACM
McCarthy J (1960) Recursive functions of symbolic expressions and theircomputation by machine I. J ACM 3:184–195
Macal C (2004) Agent‐based modeling and social simulation withMathematica and MATLAB. In: Macal C, Sallach D, North M (eds) Proc of the agent 2004 conference on social dynamics: interaction, reflexivity andemergence. Argonne National Laboratory, Argonne
Macal C, Howe T (2005) Linking repast to computational mathematics systems:Mathematica and MATLAB. In: Macal C, Sallach D, North M (eds) Proc of the agent 2005 conference on generative social processes, models, andmechanisms. Argonne National Laboratory, Argonne
MacalC, North M (2007) Tutorial on Agent-based Modeling and Simulation:Desktop ABMS. In: Henderson SG, Biller B, Hsieh MH, Shortle J, Tew JD,Barton RR (eds) Proceedings of the 2007 Winter Simulation Conference,December 9-12, 2007, pp 95–106, http://www.informs-sim.org/wsc07papers/011.pdf
Minar N, Burkhart R, Langton C, Askenazi M (1996) The swarm simulation system:a toolkit for building multi‐agent simulations. Available athttp://alumni.media.mit.edu/%7Enelson/research/swarm/
North M, Macal C (2007) Managing business complexity: discovering strategicsolutions with agent‐based modeling and simulation. Oxford, New York
North M, Howe T, Collier N, Vos J (2005) Repast simphony runtime system. In:Macal C, North M, Sallach D (eds) Proc of the agent 2005 conference on generative social processes, models, and mechanisms. Argonne National Laboratory,Argonne
North M, Collier N, Vos R (2006) Experiences creating three implementations ofthe repast agent modeling toolkit. ACM Trans Model Comput Simul 16(1):1–25. ACM. New York
North M, Tatara E, Collier N, Ozik J (2007) Visual agent‐based modeldevelopment with repast simphony. In: Macal C, North M, Sallach D (eds) Proc of the agent 2007 conference on complex interaction and socialemergence. Argonne National Laboratory, Argonne
NorthM, Howe T, Collier N, Tatara E, Ozik J, Macal C (2008) Search and emergence inagent‐based models. In: Agent‐based societies: Societal and cultural interactions. IGI Global Publishing, NewYork
Pearson D, Boudarel M-R (2001) Pair interactions: real and perceivedattitudes. J Artif Soc Soc Simul 4(4). Available at http://www.soc.surrey.ac.uk/JASSS/4/4/4.html
ReynoldsJ (1998) Definitional Interpreters for Higher-Order ProgrammingLanguages. In: Higher-Order and Symbolic Computation. Kluwer, Boston,pp 363–397
Sedgewick R (1988) Algorithms, 2nd edn. Addison‐Wesley, Reading,pp 657
Springer G, Freeman D (1989) Scheme and the art ofprogramming. McGraw‐Hill, New York
Stevens W, Meyers G, Constantine L (1974) Structured design. IBM Syst J2
Stroustrup B (2008) Bjarne Stroustrup's FAQ. Available athttp://www.research.att.com/%7Ebs/bs_faq.html#invention
Swarm Development Group (2008) SDG home page. Available athttp://www.swarm.org/
TataraE, North M, Howe T, Collier N, Vos J (2006) An Introduction to RepastSimphony Modeling using a simple Predator-Prey Example. In:Proceedings of the Agent 2006 Conference on Social Agents: Results andProspects. Argonne National Laboratory, Argonne
Thorngate W (2000) Teaching social simulation with MATLAB. J Artif Soc SocSimul 3(1). Available at http://www.soc.surrey.ac.uk/JASSS/3/1/forum/1.html
Thoyer S,Morardet S, Rio P, Simon L, Goodhue R, Rausser G (2001)A bargaining model to simulate negotiations between water users. J Artif Soc Soc Simul 4(2). Available athttp://www.soc.surrey.ac.uk/JASSS/4/2/6.html
ROAD (2008) Repast home page. Available athttp://repast.sourceforge.net/
van Roy P, Haridi S (2004) Concepts, techniques, and models of computerprogramming. MIT Press, Cambridge
Wang Z, Thorngate W (2003) Sentiment and social mitosis: implications ofHeider's balance theory. J Artif Soc Soc Simul 6(3). Available at http://jasss.soc.surrey.ac.uk/6/3/2.html
Watson D (1989) High‐level languages and theircompilers. Addison‐Wesley, Wokingham
Wilensky U (1999) NetLogo. Center for Connected Learning andComputer‐Based Modeling, Northwestern University, Evanston, IL. http://ccl.northwestern.edu/netlogo/
Wolfram Research (2008) Mathematica home page. Available athttp://www.wolfram.com/
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag
About this entry
Cite this entry
North, M.J., Macal, C.M. (2009). Agent Based Modeling and Computer Languages. In: Meyers, R. (eds) Encyclopedia of Complexity and Systems Science. Springer, New York, NY. https://doi.org/10.1007/978-0-387-30440-3_8
Download citation
DOI: https://doi.org/10.1007/978-0-387-30440-3_8
Publisher Name: Springer, New York, NY
Print ISBN: 978-0-387-75888-6
Online ISBN: 978-0-387-30440-3
eBook Packages: Physics and AstronomyReference Module Physical and Materials ScienceReference Module Chemistry, Materials and Physics