Cormas: Agent-Based Modeling for Social-Ecological Systems and Common-Pool Resource Management
Overview
Cormas (Common-pool Resources and Multi-Agent Systems) is an open-source agent-based modeling platform developed by CIRAD (the French Agricultural Research Centre for International Development). Built on the Pharo Smalltalk environment, Cormas was designed specifically for simulating social-ecological systems (SES) — the coupled dynamics between human communities and natural resources. Unlike general-purpose ABM frameworks, Cormas provides domain-specific abstractions for spatial resource dynamics, collective action, and institutional rules that govern common-pool resource (CPR) management.
Since its initial release in the late 1990s, Cormas has been applied to fisheries governance, pastoral land management, irrigation systems, forest commons, and watershed management across Africa, Asia, and Latin America. Its participatory modeling capabilities make it a preferred tool for researchers working at the intersection of computational social science and natural resource economics.
Core Architecture: Entities and Spatial Dynamics

Cormas organizes models around three primary entity types:
- Agents — autonomous decision-makers representing individuals, households, or institutions. Agents hold state variables (wealth, strategy, social network links) and execute behavioral rules each time step.
- Spatial Entities — grid cells or vector polygons representing land parcels, water bodies, or forest patches. Each cell carries resource attributes (biomass, water level, soil quality) that evolve according to ecological process equations.
- Social Entities — groups, cooperatives, or governance bodies that aggregate agent behavior and enforce collective rules.
The spatial layer is a first-class citizen in Cormas. Resource dynamics are modeled as cellular automaton processes running in parallel with agent decision cycles. A typical CPR model couples a logistic biomass growth equation on each cell with agent harvesting decisions:
B(t+1) = B(t) + r · B(t) · (1 - B(t)/K) - H(t)
where r is the intrinsic growth rate, K is carrying capacity, and H(t) is total harvest extracted by agents occupying or accessing that cell. This tight coupling between ecological state and agent behavior is what distinguishes Cormas from purely social ABM platforms.
Institutional Rules and the IAD Framework
A distinctive feature of Cormas is its explicit support for Elinor Ostrom's Institutional Analysis and Development (IAD) framework. Modelers can encode:
- Access rules — which agents may enter which spatial zones
- Appropriation rules — how much resource each agent may extract per period
- Provision rules — obligations to invest in resource maintenance (e.g., irrigation canal cleaning)
- Monitoring and sanctioning — detection probability and penalty schedules for rule violations
These institutional rules are implemented as Pharo objects that intercept agent actions before execution, allowing researchers to compare governance regimes (open access vs. community quotas vs. state regulation) within the same model structure by simply swapping rule objects. This design pattern enables controlled experiments on institutional design without rewriting agent logic.
Participatory Modeling with ComMod
Cormas is the primary technical backbone of the ComMod (Companion Modelling) approach, a participatory methodology in which stakeholders co-design and co-run simulations alongside researchers. In ComMod workshops, local farmers, fishers, or pastoralists play the roles of agents in a role-playing game (RPG) that mirrors the Cormas model. Observations from the RPG sessions are used to calibrate agent decision rules, and the validated model is then run computationally to explore scenarios beyond the time horizon of the workshop.
This human-in-the-loop validation cycle addresses a persistent challenge in social simulation: behavioral realism. Rather than assuming utility-maximizing agents, Cormas models can incorporate heuristic rules elicited directly from stakeholders, improving face validity for policy applications.
Practical Workflow: Building a Pastoral Commons Model
A typical Cormas workflow for a pastoral land management study proceeds as follows:
-
Spatial initialization — Import a raster map of vegetation biomass derived from satellite NDVI data. Each cell is assigned an initial biomass value and a growth rate calibrated from field measurements.
-
Agent definition — Define
Herderagents with attributes: herd size, home location, mobility radius, and harvesting strategy (e.g., rotational vs. opportunistic grazing). -
Behavioral rules — Implement a
grazemethod that selects the highest-biomass cell within the agent's mobility radius, extracts a quantity proportional to herd size, and updates the cell's biomass. -
Institutional overlay — Attach a
QuotaRuleobject that caps per-agent extraction at a seasonal limit. AMonitoragent patrols the landscape and applies fines to violators with a configurable detection probability. -
Scenario runs — Execute 100-year simulations under three governance regimes: open access, community quota, and rotational closure. Compare time-series of mean biomass, Gini coefficient of herder wealth, and frequency of resource collapse events.

- Sensitivity analysis — Use Cormas's built-in parameter sweep interface to vary rainfall variability (CV = 0.1 to 0.5) and mobility radius (5 to 20 cells), generating a response surface for collapse probability.

Integration with R and Python for Post-Processing
Cormas stores simulation outputs as CSV files that integrate cleanly with R and Python analysis pipelines. A common pattern exports per-agent wealth trajectories and spatial biomass snapshots at each time step, then uses R's ineq package to compute Gini coefficients and ggplot2 for visualization. Python's pandas and matplotlib handle large ensemble outputs from parameter sweeps.
For geospatial outputs, Cormas can export spatial entity states as GeoTIFF rasters, enabling overlay with GIS layers in QGIS or ArcGIS for stakeholder presentations.
Limitations and Considerations
- Pharo Smalltalk learning curve — Cormas requires familiarity with Pharo's image-based development environment, which differs substantially from mainstream languages. Researchers comfortable with Python or R face an initial productivity dip.
- Performance ceiling — Cormas is single-threaded and not designed for HPC scaling. Models with more than ~10,000 agents and large spatial grids (>500×500 cells) may require optimization or migration to platforms like Repast HPC or FLAME GPU.
- Community size — The active user base is smaller than NetLogo or Mesa, meaning fewer community-contributed model libraries and extensions.
Despite these constraints, Cormas remains the most purpose-built platform for social-ecological systems research, offering institutional modeling capabilities and participatory design support that general ABM frameworks lack.
Further Resources
- Cormas Official Website — Documentation, tutorials, and model library
- Cormas GitHub Repository — Source code and issue tracker
- ComMod Network — Companion Modelling methodology and case studies
- Ostrom, E. (1990). Governing the Commons. Cambridge University Press — foundational theory for CPR modeling
- Bommel, P. et al. (2015). "A further step towards participatory modelling." Journal of Artificial Societies and Social Simulation 18(1)
- Le Page, C. et al. (2012). "CORMAS: An Agent-Based Simulation Platform for Coupling Human Decisions with Computerized Dynamics." Simulation 88(1):13–28