These are some of the terms used in Helipad.


The basic unit of an agent-based model. In Helipad, an agent is a relatively self-contained object that contains code and functions for interacting with other agents and with the model.


An agent type that allows heterogeneity within a primitive. Agents of different breeds share code, but conditional statements can make them behave differently. For example, the model might be split between agents playing a 'hawk' strategy and those playing a 'dove' strategy.

Control panel

The window opened immediately when a model is run, where model settings can be adjusted.


Something which agents can hold stocks of and receive utility from. Helipad registers goods and provides functions allowing them to be traded, bought, and so on.


A connection between two agents. An edge may have a weight, and may have a direction or no direction. The structure of edges in a model constitutes a network. Edges are generated using agent.newEdge().


A user-defined condition used to mark phases of a model. For example, an event might be “population stabilizes” or “death rate increases to over 5%”. The event is triggered when the criterion first returns True, records the model time and marks it on the plot area, and records all the data from that period. Events can be registered with the @model.event decorator, or with model.addEvent().


A predetermined place in the model’s runtime where user code can be inserted. This is the main way users will interact with Helipad. See the hooks guide for more details.

Matching Model

A model where a period consists in agents being matched in groups, rather than being stepped sequentially. A matching model can be set with model.order.


A good serving as a medium of exchange, registered as such with model.addGood() and whose name is stored in model.moneyGood. Allows the use of monetary functions such as,, and so on.


A structure of connections (edges) among agents. There are dedicated Python tools for analyzing networks, which can interface with Helipad.


A variable whose value can be adjusted from the control panel. Parameters can be global, or split out on a per-breed or per-good basis (e.g. if the productivity of each good were to be set separately).


An agent-based model repeatedly runs the step functions of all the agents. Each time this happens is one period. The current period is stored in model.t.


An area in the Graph window where series can be drawn. Registered using model.addPlot().


A fundamental agent type. By default all agents are registered with the 'agent' primitive, but other agent types who do not need to share code with basic agents can be assigned a different primitive. For example, a model might be divided between 'agent' agents and 'store' agents who perform different logical functions in the model.


a function that gathers model data and outputs a numerical value. Registered reporters are run each period to collect data. Reporters can be generated using data.agentReporter() and registered with data.addReporter().


A line on a plot, drawing model data from a reporter. Registered using Plot.addSeries().


An exogenous shift in a parameter value. Shocks may be timed automatically with a timer function, or initiated by the user in the control panel. Shocks are managed with the Shocks class.


The division of a period into multiple parts, for example if agents must all run some code before any of them run other code. Can be set with model.stages.


A function attaching to agents that specifies the code they should run each model period.


The two agents connected by an edge.