ADAM: Agent-based Demand and Assignment Model


Model Details


    Choose network

    Map editing

    Property inspection

    Set global variables

    Save network

    Evolve and result display



A simulation tool, the Agent-based Demand and Assignment Model (ADAM), is written using Java technology. The core algorithm is an agent-based model, which simulates travel patterns on a network based on microscopic decision-making by each traveler. The network performance is evaluated according to its macroscopic characteristics, including trip origins and destinations, traffic flow, and cost.


ADAM program is available online at You will need a Java applet viewer (recommended) or IE 6.0, Firefox, or Safari browser with Java plug-in to run the program. Each time you change the network, you should save a copy of the network. Follow the instructions to prevent unanticipated problem.


Please note any bugs and report them to the developer Shanjiang Zhu at

Model Details:

Agent-based model describes the decision making of individual traveler by setting interaction rules among different agents on the traffic network. ADAM defines three types of agents: nodes, links and travelers.

Nodes represent traffic zones and intersection of links. Nodes provide information of network nearby with turning matrix and help travelers decide their destinations. Each line of the turning matrix represents the probability of travelers from node i to choose different destinations, which is decides both by the number of jobs at potential destination and travel time to this destination node.

Travelers will store the shortest path information from their origin to current node and exchange this information with current node once it arrives at a new node. Travelers will pool their shortest path knowledge at nodes, which can help travelers arriving later update their shortest path knowledge. If we have enough travelers on the network, the shortest path information will be spread very fast and permeate the network.

Once all travelers have found their destination, network will update their link travel time according to current link flows. Then all travelers will reenter the network and choose their destinations according to new link travel time. Model converges when this link travel time change is small enough. And we will get a trip distribution pattern and traffic assignment result at the same time. The following figure illustrates the mechanism of the ADAM.


1.      Choose network

Choose one network listed in the choice menu or load your own network file saved on the local disk. The file to be loaded should either have been saved by the program or written as a predefined input file. 

The input file is in txt format where the first three numbers specify the number of Nodes, number of Workers and the beta (discussed in global parameters) for the network. The next sets of rows include information on each node and define the node id, the number of workers, number of jobs, x coordinate, y coordinate, and number of demand nodes, the demand node id and length to each demand node. The final sets of rows define the number of links and contain information for each link including the link id, origin node, destination node, number of lanes, capacity and free flow travel time for each link.

2.      Map editing

Click the button ¡®edit network¡¯ to enable the editing option panel.  After entering the map-editing mode, the button edit network will become red. You can choose a node or link by clicking them on the map. The links and nodes chosen will become red. After you choose a link or a node, you can either change the property or delete them by clicking the edit property button or the delete button.  You can quit map-editing mode by clicking the button again, which resets the button to black.


Adding a Node: To add a node in the network, click on the add node button. After this button changes to cyan, you have entered the add node mode.  Click wherever you want on the map to add a new node.  A new node in cyan will indicate the location you chose. This node will not be added in the database unless you click on the edit property button to assign its properties. When this process is completed, the node will become black as other nodes. Click on the add node button again to quit the add node mode before entering any other mode.

Adding a Link: An unconnected node (without any link attached) will cause problems to the program (just as it would cause problems to any residents living there).  Click on the add link button after quitting the add node mode. When the add link button changes to cyan, click the starting node first, which will turn it to magenta, and then holding the shift key click on the ending node.  After both nodes become magenta, click the edit property button to complete the link adding process. A new link will appear on the map after appropriate values are assigned to each property.  Click the add link button again to quit the add link mode.

Editing an Existing Node or Link: To edit an existing node or link click on the ¡®edit network¡¯ button. Once the button becomes active (turns red), you can select the node or link you wish to edit and click on edit property.  To exit this mode, click on the ¡®edit network¡¯ button again.  When the button changes color back to black, you have exited the network editing mode.

Before you quit the map editing mode, make sure that all nodes and links have been correctly added and that you have quit the corresponding mode, which will return the add node and add link buttons to black and white. Click the edit network button again. When it becomes black and white, you have successfully quit the map-editing mode.


3.      Property inspection

To inspect the property of an existing node or link, right click on the link or node on screen. The pop up menu will list the current property of the link or node chosen. Besides the normal property listed in the edit property option panel, additional properties such as traffic production and attraction for nodes or actual travel time and traffic flow for links will also be listed if you right click on the chosen link or node after model evolving. Use this tool correctly will give you more straight-forward idea of performance of individual link or node, which is one record in a large table.

4.      Set global variables

Use the scrollbars to set the global variables which determine the travel demand, attraction and travel behavior pattern.


Trip production rate: the ratio of the number of daily trips to the number of workers in a traffic analysis zone (TAZ).

Trip attraction rate: the ratio of the number of daily trips to the total number of jobs in the region.

Travel length coefficient (s): the coefficient, which helps to determine the propensity to travel of each traveler. The small the coefficient is, the more likely a traveler will go further in order to find a job.

Theta: parameter for decision-making mechanism.


Peak hour rate: the proportion of daily trips occurring during the peak hour.

Auto mode share: the proportion of travelers using personal vehicles as travel mode.

Auto occupancy: number of travelers in each vehicle.

Alpha for link performance function: this parameter for the link performance function establishes the relationship between traffic flow and travel time on each link.

Beta for link performance function: exponential parameter in link performance function.

Link Performance Function:           


Construction rate: construction cost of highway, with the unit $/ (lane-Km).

5.      Save network

Save your work by clicking on save network in the menu.  The file saved on a local disk can be reloaded by clicking the load option in the network choice menu and choosing the corresponding file.


6.      Evolve and Result Display

Click on the Evolve button in the legend to run the model.  Once Evolve is clicked, travelers will determine their destination as well as travel route according to ADAM. The results will be illustrated on the map.  The color of links represents the volume to capacity ratio on each link and the width represents the number of lanes, or capacity of each link.  This should take less than a minute, but result times depend on your computer and the parameters you choose.

The trace worker button enables you to show the trajectory of each traveler after you choose the starting node and ID of the traveler. You can remove it by clicking the remove trace worker button.


7.      Statistics

The statistics button enables you to summarize all important characteristics of the traffic network including all global variables, OD table and flow pattern on each link, as well as measures of effectiveness.


You can save the statistics output by highlighting the text, pasting it in a notepad or word pad document and saving it as a text file.