blob: a4cb610a64abeefe4f9d7d60abba6a5f0e36182c [file] [log] [blame]
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter&nbsp;1.&nbsp;Introduction</title>
<link href="book.css" type="text/css" rel="stylesheet">
<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
<link rel="home" href="index.html" title="Agent Modeling Guide">
<link rel="up" href="index.html" title="Agent Modeling Guide">
<link rel="prev" href="index.html" title="Agent Modeling Guide">
<link rel="next" href="Modeler_Guide.html" title="Chapter&nbsp;2.&nbsp;Modeler Guide">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table summary="Navigation header" width="100%">
<tr>
<th align="center" colspan="3">Chapter&nbsp;1.&nbsp;Introduction</th>
</tr>
<tr>
<td align="left" width="20%"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Modeler_Guide.html">Next</a></td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter&nbsp;1.&nbsp;Introduction">
<div class="titlepage">
<div>
<div>
<h2 class="title">
<a name="Introduction"></a>Chapter&nbsp;1.&nbsp;Introduction</h2>
</div>
</div>
</div>
<div class="toc">
<dl>
<dt>
<span class="section"><a href="Introduction.html#Quick_Start">Quick Start</a></span>
</dt>
<dd>
<dl>
<dt>
<span class="section"><a href="Introduction.html#Install">Install</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Welcome.21">Welcome!</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Cheat.21">Cheat!</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Follow_the_Tutorial">Follow the Tutorial</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Follow_your_Interest">Follow your Interest</a></span>
</dt>
<dd>
<dl>
<dt>
<span class="section"><a href="Introduction.html#ABM_Researchers">ABM Researchers</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#ABM_Modelers">ABM Modelers</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#ABM_Java_Developers">ABM Java Developers</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Eclipse_Plugin_Developers">Eclipse Plugin Developers</a></span>
</dt>
</dl>
</dd>
</dl>
</dd>
<dt>
<span class="section"><a href="Introduction.html#Agent-Based_Modeling">Agent-Based Modeling</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Other_Domains">Other Domains</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#The_Agent_Modeling_Platform_.28AMP.29">The Agent Modeling Platform (AMP)</a></span>
</dt>
<dd>
<dl>
<dt>
<span class="section"><a href="Introduction.html#Agent_Modeling_Framework_.28AMF.29">Agent Modeling Framework (AMF)</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Agent_Execution_Framework_.28AXF.29">Agent Execution Framework (AXF)</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Agent_Graphics_Framework_.28AGF.29">Agent Graphics Framework (AGF)</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Escape">Escape</a></span>
</dt>
</dl>
</dd>
<dt>
<span class="section"><a href="Introduction.html#Credits">Credits</a></span>
</dt>
</dl>
</div>
<p>In this manual we provide an in-depth understanding of what goes into an Agent Model, how you can use the Agent Modeling Framework and related tools to design one and present tutorials to get you started. But before going into details, let's take a quick overview at what agent-based modeling is is and how the Agent Modeling Framework can help you to develop models for ABM or other problem domains.</p>
<p>We hope you enjoy using the tool, and we look forward to your comments and feedback and most of all participation!</p>
<div class="section" title="Quick Start">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Quick_Start"></a>Quick Start</h2>
</div>
</div>
</div>
<p>If you're the kind of person who likes to jump right in, here are the basics.</p>
<div class="section" title="Install">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Install"></a>Install</h3>
</div>
</div>
</div>
<p>If you've already installed a complete Agent Modeling IDE, such as one offered by the project contributors, or you have already installed AMP from the Eclipse update sites, you can obviously ignore this step. Otherwise, refer to the Installation Guide at the end of this manual.</p>
</div>
<div class="section" title="Welcome!">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Welcome.21"></a>Welcome!</h3>
</div>
</div>
</div>
<p>When you first open the IDE (or you first install the tools form an update site), you will see a welcome screen. If the screen isn't showing, select the
<span class="bold"><strong>Help &gt; Welcome</strong></span> menu. Click on the "Overview", "Samples" or "Tutorials" buttons to begin your exploration.
</p>
</div>
<div class="section" title="Cheat!">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Cheat.21"></a>Cheat!</h3>
</div>
</div>
</div>
<p>The Agent Modeling tools come with a number of "Cheat Sheets" to help get you started. You can access them by selecting
<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span>. Then under the "Agent Modeling" category, select a cheat sheet, such as "Load Sample Projects".
</p>
</div>
<div class="section" title="Follow the Tutorial">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Follow_the_Tutorial"></a>Follow the Tutorial</h3>
</div>
</div>
</div>
<p>The tools also come with extensive tutorials. See the "Tutorials" section for more help on that.</p>
</div>
<div class="section" title="Follow your Interest">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Follow_your_Interest"></a>Follow your Interest</h3>
</div>
</div>
</div>
<p>AMP has many potential facets and use cases. Check out the following sections of the manual for more information about..</p>
<div class="section" title="ABM Researchers">
<div class="titlepage">
<div>
<div>
<h4 class="title">
<a name="ABM_Researchers"></a>ABM Researchers</h4>
</div>
</div>
</div>
<p>Run an example model using the "Run an Example Model" cheat sheet.</p>
</div>
<div class="section" title="ABM Modelers">
<div class="titlepage">
<div>
<div>
<h4 class="title">
<a name="ABM_Modelers"></a>ABM Modelers</h4>
</div>
</div>
</div>
<p>Create Agent-Based models using simple visual tools and deploy them to a number of popular ABM platforms, including Escape. Follow the tutorial section of the Modeler's guide.</p>
</div>
<div class="section" title="ABM Java Developers">
<div class="titlepage">
<div>
<div>
<h4 class="title">
<a name="ABM_Java_Developers"></a>ABM Java Developers</h4>
</div>
</div>
</div>
<p>Write "Plain Old Java" models within a full-featured agent-based modeling framework. Read Programmers Guide and then try the "Create an Escape Java Model" cheat sheet.</p>
</div>
<div class="section" title="Eclipse Plugin Developers">
<div class="titlepage">
<div>
<div>
<h4 class="title">
<a name="Eclipse_Plugin_Developers"></a>Eclipse Plugin Developers</h4>
</div>
</div>
</div>
<p>AXF and AGF provide a number of features based around Eclipse technologies such as GEF, GEF3D, BIRT Charts and Zest. For example, AGF supports dynamic visualization of objects in space, and AXF supports managed UI and headless execution for models of any kind. There isn't currently any general documentation for these features, but we encourage you to look at the APIs and at Escape's implementation of them. They're straightforward and can be useful for a variety of general science platform needs.</p>
</div>
</div>
</div>
<div class="section" title="Agent-Based Modeling">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Agent-Based_Modeling"></a>Agent-Based Modeling</h2>
</div>
</div>
</div>
<p>The primary focus of the Agent Modeling Platform tools is "Agent-Based Modeling" (ABM). ABM is an innovative technique used to explore complex phenomenon in many domains, including economics, social sciences, biomedicine, ecology and business operations. ABMs share characteristics with object models, but are:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">Spatial</span>
</dt>
<dd>
<p>Models have explicit environment(s) in which agents interact. (An environment need not be a physical landscape; other examples of spatial relationships include social networks or positions within a logic system.)</p>
</dd>
<dt>
<span class="term">Temporal</span>
</dt>
<dd>
<p>Models change over discrete units of time.</p>
</dd>
<dt>
<span class="term">Autonomous</span>
</dt>
<dd>
<p>Agent behaviors are activated independently from other object requests.</p>
</dd>
<dt>
<span class="term">Heterogeneous</span>
</dt>
<dd>
<p>Agents may share behavior definitions but have apparent and distinct states and behaviors.</p>
</dd>
<dt>
<span class="term">Collective</span>
</dt>
<dd>
<p>Models contain large communities of agents which exhibit collaborative and competitive behaviors.</p>
</dd>
<dt>
<span class="term">Emergent</span>
</dt>
<dd>
<p>Agents have collective macro-behaviors that are non-obvious from agent micro-specifications.</p>
</dd>
</dl>
</div>
<p>Existing scientific models are very good at representing relatively simple systems, but generally speaking aren't very good at representing complex systems. The world is full of complex systems, and our misunderstanding of these systems has prevented us from addressing many of the key challenges facing the world, including the global financial crisis and climate change -- in fact once could argue that our misunderstanding of these systems has strongly contributed to these crises.</p>
<p>Agent-Based Models (ABMs) seek to represent important real-world dynamics by designing communities of software agents that mimic real entities. Rather than make simplifying assumptions about such systems and then representing them in equation form or as off the shelf algorithmic constructs, the ABM researcher aims to identify key agent state, interaction spaces, and behaviors. Agents are then "let loose" on our computers and we explore what happens next. The computational horsepower exists today to simulate large numbers (e.g. &gt;&gt;10) of interacting, adaptive and autonomous agents but often desktop computers are all we need to explore significant domains. ABMs have been designed to represent all kinds of important natural systems, at scales reaching from cellular mechanics to international trade and are being used to solve truly hard problems in government, business, and academia. ABMs are not a solution to every problem, but they can help us to appreciate and gain unique insight into many systems, and often they can help us to come up with better practical decisions than we might using classic approaches.</p>
</div>
<div class="section" title="Other Domains">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Other_Domains"></a>Other Domains</h2>
</div>
</div>
</div>
<p>Many kinds of objects share characteristics of ABM agents -- after all, software agents are used in many other contexts. The Agent Modeling Framework meta-modeling support is potentially suitable (or extendible) for a number of approaches outside of ABM; for example business rules, object interactions, systems dynamics models and traditional discrete event models. Similarly, AMP execution and graphic support can be used for modeling natural systems but could also be used to manage other software agents -- for example independent reasoning tasks or dynamic visualization support.</p>
</div>
<div class="section" title="The Agent Modeling Platform (AMP)">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="The_Agent_Modeling_Platform_.28AMP.29"></a>The Agent Modeling Platform (AMP)</h2>
</div>
</div>
</div>
<p>The Eclipse Agent Modeling Project (Incubation) or "AMP" provides the core support for both open source and commercial modeling tools. AMP in turn is built upon Elipse, the most powerful, well-supported and popular Integrated Development Platform (IDE) available anywhere.</p>
<p>AMP provides extensible frameworks and exemplary tools for representing, editing, generating, executing and visualizing ABMs and any other domain requiring spatial, behavioral and functional features. AMP has two main themes that complement but don't depend on one another, modeling of agent systems (AMF) and execution and exploration of those systems (AXF, AGF and Escape).</p>
<p>The overall AMP architecture and project dependencies are summarized in the architectural diagram below:</p>
<p>
</p>
<div class="mediaobject">
<img src="images/AMPArchitectureDiagram.jpg"></div>
<p>
</p>
<div class="section" title="Agent Modeling Framework (AMF)">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Agent_Modeling_Framework_.28AMF.29"></a>Agent Modeling Framework (AMF)</h3>
</div>
</div>
</div>
<p>AMF provides an ABM meta-model representation, editor, generator and development environment. The AMF Acore meta-model is similar to EMF Ecore and defined in Ecore, but provides high-level support for complex agents.AMF generates complete executable models for Escape, Ascape and Repast Simphony, as well as Java Skeletons and Interfaces, JUnit test cases and documentation and is easily extensible to support additional targets. For more on AMF, see the Modeler Guide.</p>
</div>
<div class="section" title="Agent Execution Framework (AXF)">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Agent_Execution_Framework_.28AXF.29"></a>Agent Execution Framework (AXF)</h3>
</div>
</div>
</div>
<p>The execution framework provides services and UI for model management, execution, and views. Arbitrary toolkits can easily integrate with Eclipse and AXF by implementing pluggable providers like engines, agents and view parts. AXF is not just for ABM -- anyone who needs support for executing, managing and visualizing collections of objects may find it useful. AXF user tools are covered extensively in the User Guide, and the forthcoming Platform Developers Guide will provide information about integrating AXF in your own tools.</p>
</div>
<div class="section" title="Agent Graphics Framework (AGF)">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Agent_Graphics_Framework_.28AGF.29"></a>Agent Graphics Framework (AGF)</h3>
</div>
</div>
</div>
<p>The graphics framework extends GEF, GEF3D, Zest, and the BIRT charting engine to support real-time visualization of and interaction with agent models. AGF currently provides support for 2D, 2 1/2 D. and graph structures, and will be extended to 3-D, GIS and others. As with other AMP components, the AGF design focus is to provide an extensible infrastructure so that platform adopters can easily create their own view and editor parts. AGF user tools are covered extensively in the User Guide, and the forthcoming Platform Developers Guide will provide information about integrating and extending AGF in your own tools.</p>
</div>
<div class="section" title="Escape">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Escape"></a>Escape</h3>
</div>
</div>
</div>
<p>Escape is an exemplar ABM toolset. It's based on Ascape, which has been in use for more than 10 years. The core API is very stable, and that should give users a way to explore the features of AMP without concerns about keeping in synch with the rapidly evolving AXF /AGF API. It allows modelers to code in Java and/or generate models with AMF and then execute those models within the same development environment. Escape is the primary target for most of the models in this guide. Those users interested in writing code directly to the Escape API can refer to the Programmer Guide.</p>
</div>
</div>
<div class="section" title="Credits">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Credits"></a>Credits</h2>
</div>
</div>
</div>
<p>Miles Parker is a consultant and software developer with over ten years of experience in the agent-based modeling field and twenty years developing object-oriented tools and frameworks and is the architect and project lead for the Eclipse Agent Modeling Platform (Incubation).</p>
<p>Metascape, LLC is the primary contributor to AMP and provides Agent-Based Modeling tools, including sophisticated tools based on the AMF platform, and comprehensive consulting services. For more information on Metascape products and services visit
<a class="ulink" href="http://metascapeabm.com" target="_new">http://metascapeabm.com</a>.
</p>
<p>The AMF meta-model started life in 2007 as
<a class="ulink" href="/wiki/http://www.agent2005.anl.gov/2006procpdf/Parker_Agent_2006.pdf" target="_new">"score"</a>, a component of the Repast Simphony environment and was contributed under the EPL by Argonne National Labs. AMF was further developed by Metascape starting in 2007 as the MetaABM project, and it along with what becase AMP where was contributed by Metascape to Eclipse in 2009. Metascape continues to be the primary sponsor and contributor to the project.
</p>
<p>The AMP logo was inspired by the
<a class="ulink" href="/wiki/http://swarm.org_Swarm_logo" target="_new">http://swarm.org Swarm logo</a> and is used with their kind permission.
</p>
</div>
</div>
<div class="navfooter">
<hr>
<table summary="Navigation footer" width="100%">
<tr>
<td align="left" width="40%"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Modeler_Guide.html">Next</a></td>
</tr>
<tr>
<td valign="top" align="left" width="40%">Agent Modeling Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;2.&nbsp;Modeler Guide</td>
</tr>
</table>
</div>
</body>
</html>