blob: 73553f284679edbb023c54c55fd348951c44a364 [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" rel="stylesheet" type="text/css">
<meta content="DocBook XSL Stylesheets V1.75.1" 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#Agent-Based_Modeling">Agent-Based Modeling</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Other_Uses">Other Uses</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Credits">Credits</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#Getting_Started">Getting Started</a></span>
</dt>
<dd>
<dl>
<dt>
<span class="section"><a href="Introduction.html#Setting_up_Eclipse">Setting up Eclipse</a></span>
</dt>
<dt>
<span class="section"><a href="Introduction.html#Get_the_Example_Projects">Get the Example Projects</a></span>
</dt>
<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>
</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="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 Uses">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Other_Uses"></a>Other Uses</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="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 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. Argonne National Labs supported the initial development in 2007 and agreed to contribute the relevant IP to the Eclipse project in 2009. It wasn't fully utilized within Simphony, and migrated from there to the MetaABM project supported by Metascape. The MetaABM project defined a complete editor, code-generation and model execution suite that formed the initial AMP AMF contribution. Metascape has sponsored the development of AMF from 2007 through the present.
</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> with their kind permission.
</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 extensible frameworks and exemplary tools for representing, editing, generating,
executing and visualizing agent-based models (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="Getting Started">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="Getting_Started"></a>Getting Started</h2>
</div>
</div>
</div>
<p>AMP has many potential facets and use cases.</p>
<div class="section" title="Setting up Eclipse">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Setting_up_Eclipse"></a>Setting up Eclipse</h3>
</div>
</div>
</div>
<p>If you're reading this from the Eclipse help browser, you've already done this! Otherwise, if you aren't using a full download version of AMP, you'll need to
<a class="ulink" href="http://eclipse.org/amp/installing/" target="_new">install it</a>. Once you've done that, select the
<span class="bold"><strong>Help &gt; Help Contents</strong></span> menu, find the Agent Modeling Guide and open this overview page within that guide.
</p>
<p>Some installations will also include a Welcome screen which will guide you through the same set of steps.</p>
</div>
<div class="section" title="Get the Example Projects">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="Get_the_Example_Projects"></a>Get the Example Projects</h3>
</div>
</div>
</div>
<p>You can do that using a cheat sheet. Select
<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span> and then under the "Agent Modeling" category, select "Load Sample Projects".
</p>
<p>Then check out the following sections of the manual for more information about..</p>
</div>
<div class="section" title="ABM Researchers">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="ABM_Researchers"></a>ABM Researchers</h3>
</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>
<h3 class="title">
<a name="ABM_Modelers"></a>ABM Modelers</h3>
</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>
<h3 class="title">
<a name="ABM_Java_Developers"></a>ABM Java Developers</h3>
</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>
<h3 class="title">
<a name="Eclipse_Plugin_Developers"></a>Eclipse Plugin Developers</h3>
</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="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>