The effect of homophily on co-offending outcomes (1.0.0)
This Agent-Based Model is designed to simulate how similarity-based partner selection (homophily) shapes the formation of co-offending networks and the diffusion of skills within those networks. Its purpose is to isolate and test the effects of offenders’ preference for similar partners on network structure and information flow, under controlled conditions.
In the model, offenders are represented as agents with an individual attribute and a set of skills. At each time step, agents attempt to select partners based on similarity preference. When two agents mutually select each other, they commit a co-offense, forming a tie and exchanging a skill. The model tracks the evolution of network properties (e.g., density, clustering, and tie strength) as well as the spread of skills over time.
This simple and theoretical model does not aim to produce precise empirical predictions but rather to generate insights and test hypotheses about the trade-off between network stability and information diffusion. It provides a flexible framework for exploring how changes in partner selection preferences may lead to differences in criminal network dynamics. Although the model was developed to simulate offenders’ interactions, in principle, it could be applied to other social processes involving social learning and skills exchange.
More information about the model can be found in the associated publication.
Release Notes
Code Structure
├── src/ # Source files for the model
│ ├── agent.py # Agents’ behavior setup
│ ├── description.txt # Description file for interactive mode
│ ├── model.py # Environment setup and model logic
│ └── server.py # Server view for interactive mode
├── requirements.txt # List of required Python packages
├── run.py # Launches the model in interactive mode
├── simulation_run.py # Runs the model in batch mode with parameter sweeps
Instructions to Set Up and Run the Model
-
Create a new Python environment
python -m venv homophily_abm -
Activate the environment
- Unix/macOS
source homophily_abm/bin/activate - Windows
homophily_abm\Scripts\activate
- Unix/macOS
-
Install required packages
pip install -r requirements.txt -
Run the model in interactive mode
python run.py -
Run the model in batch mode
First, adjust the input parameters in
simulation_run.py(lines 9–15), then run:python simulation_run.py
Interactive Mode
- Set the desired parameters in the left panel.
- Click “Start” to run the model continuously, or “Step” to advance it one step at a time.
- Click “Reset” to reinitialize the model with the selected parameters.
Note: Interactive mode is not intended to produce output files. It is mainly used to observe how the network evolves over time and to track the cumulative number of co-offenses. Additional metrics can be added by modifying
src/server.py.
Batch Mode
- Set input parameters in
simulation_run.py(lines 9–15). - To explore a single value:
n_agents = 50 # or n_agents = [50] - To explore multiple values:
n_agents = [2, 50, 100] - The model will run for each combination of input parameters.
Please refer to the official documentation for more details about the Mesa package: https://mesa.readthedocs.io/stable/.
Associated Publications
Ruslan Klymentiev, Luis E. C. Rocha, Christophe Vandeviver (2025). Homophily promotes stable connections in co-offending networks but limits information diffusion: insights from a simulation study. Crime Science, 14(1). https://doi.org/10.1186/s40163-025-00254-w
This is a companion discussion topic for the original entry at https://www.comses.net/codebases/d388b160-e179-4c3c-b61d-25f2f2ed68a4/releases/1.0.0
