Skip to main content

Agent Based Modeling and Computer Languages

  • Reference work entry
Computational Complexity

Article Outline

Glossary

Definition of the Subject

Introduction

Types of Computer Languages

Requirements of Computer Languages for Agent‐Based Modeling

Example Computer Languages Useful for Agent-Based Modeling

Future Directions

Bibliography

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,500.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,399.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

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

  1. Archer T (2001) Inside C#. Microsoft Press,Redmond

    Google Scholar 

  2. 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

    Google Scholar 

  3. 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

  4. Bonabeau E (2001) Agent‐based modeling: methods and techniques forsimulating human systems. Proc Natl Acad Sci 99(3):7280–7287

    Article  Google Scholar 

  5. Casti J (1997) Would‐be worlds: how simulation is changing the world ofscience. Wiley, New York

    Google Scholar 

  6. Coplien J (2001) Software patterns home page. Available ashttp://hillside.net/patterns/

  7. Dahl O-J, Nygaard K (1966) SIMULA – an ALGOL‐based simulationlanguage. Commun ACM 9:671–678

    Article  MATH  Google Scholar 

  8. Dahl O-J, Nygaard K (2001) How object‐oriented programmingstarted. Available at http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html

  9. 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

    Google Scholar 

  10. DijkstraE (1968) Go to statement considered harmful. Commun ACM 11(3):147–148

    Article  MathSciNet  Google Scholar 

  11. Eclipse (2008) Eclipse home page. Available athttp://www.eclipse.org/

  12. Foxwell H (1999) Java 2 software development kit. Linux J

    Google Scholar 

  13. Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements ofreusable object‐oriented software. Addison‐Wesley, Wokingham

    Google Scholar 

  14. Gaylord R, D'Andria L (1998) Simulating society: a mathematica toolkitfor modeling socioeconomic behavior. Springer/TELOS, New York

    MATH  Google Scholar 

  15. Gaylord R, Davis J (1999) Modeling nonspatial social interactions. Math EduRes 8(2):1–4

    Google Scholar 

  16. Gaylord R, Nishidate K (1994) Modeling nature: cellular automata simulationswith Mathematica. Springer, New York

    Google Scholar 

  17. Gaylord R, Wellin P (1995) Computer simulations with Mathematica: explorationsin complex physical and biological systems. Springer/TELOS, New York

    MATH  Google Scholar 

  18. Guetzkow H, Kotler P, Schultz R (eds) (1972) Simulation in social andadministrative science. Prentice Hall, Englewood Cliffs

    Google Scholar 

  19. Harvey B (1997) Computer science logo style. MITPress. Boston

    Google Scholar 

  20. Heath J (2005) Methodological individualism. In: Zalta E (ed) Stanfordencyclopedia of philosophy. Stanford University, Stanford,Aviable at http://plato.stanford.edu

  21. Jennings N (2000) On agent‐based software engineering. Artif Intell117:277–296

    Article  MATH  Google Scholar 

  22. Koenig D, Glover A, King P, Laforge G, Skeet J (2007) Groovy inaction. Manning Publications, Greenwhich

    Google Scholar 

  23. 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

    Google Scholar 

  24. McCarthy J (1960) Recursive functions of symbolic expressions and theircomputation by machine I. J ACM 3:184–195

    Article  MATH  Google Scholar 

  25. 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

    Google Scholar 

  26. 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

    Google Scholar 

  27. 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

  28. 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/~nelson/research/swarm/

  29. North M, Macal C (2007) Managing business complexity: discovering strategicsolutions with agent‐based modeling and simulation. Oxford, New York

    Google Scholar 

  30. 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

    Google Scholar 

  31. 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

    Google Scholar 

  32. 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

    Google Scholar 

  33. 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

    Google Scholar 

  34. 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

  35. ReynoldsJ (1998) Definitional Interpreters for Higher-Order ProgrammingLanguages. In: Higher-Order and Symbolic Computation. Kluwer, Boston,pp 363–397

    Google Scholar 

  36. Sedgewick R (1988) Algorithms, 2nd edn. Addison‐Wesley, Reading,pp 657

    Google Scholar 

  37. Springer G, Freeman D (1989) Scheme and the art ofprogramming. McGraw‐Hill, New York

    Google Scholar 

  38. Stevens W, Meyers G, Constantine L (1974) Structured design. IBM Syst J2

    Google Scholar 

  39. Stroustrup B (2008) Bjarne Stroustrup's FAQ. Available athttp://www.research.att.com/~bs/bs_faq.html#invention

  40. Swarm Development Group (2008) SDG home page. Available athttp://www.swarm.org/

  41. 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

    Google Scholar 

  42. 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

  43. 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

  44. ROAD (2008) Repast home page. Available athttp://repast.sourceforge.net/

  45. van Roy P, Haridi S (2004) Concepts, techniques, and models of computerprogramming. MIT Press, Cambridge

    Google Scholar 

  46. 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

  47. Watson D (1989) High‐level languages and theircompilers. Addison‐Wesley, Wokingham

    MATH  Google Scholar 

  48. Wilensky U (1999) NetLogo. Center for Connected Learning andComputer‐Based Modeling, Northwestern University, Evanston, IL. http://ccl.northwestern.edu/netlogo/

  49. Wolfram Research (2008) Mathematica home page. Available athttp://www.wolfram.com/

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag

About this entry

Cite this entry

North, M.J., Macal, C.M. (2012). Agent Based Modeling and Computer Languages. In: Meyers, R. (eds) Computational Complexity. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-1800-9_4

Download citation

Publish with us

Policies and ethics