Repository: Public-Health-Modelling-Cambridge/silo
Description: SILO Model Java Code
Language Composition: Java (85.7%), HTML (14.1%), R (0.2%)
Version: 0.1.0-SNAPSHOT
License: GNU General Public License
SILO stands for Simple Integrated Land-Use Orchestrator. It is a sophisticated Java-based microsimulation model designed to simulate population, housing, and land-use dynamics. The model can simulate behavioral changes in households and individuals over time, making it suitable for public health modeling, urban planning, and transportation analysis.
Official Resources:
- High-level overview: www.silo.zone
- Technical documentation: TUM Wiki
The repository is organized as a Maven multi-module project with the following main components:
Public-Health-Modelling-Cambridge/silo/
├── siloCore/ # Core SILO simulation engine
├── useCases/ # Region-specific implementations (9 use cases)
├── extensions/ # Optional extensions and integrations
├── analysis/ # Analysis tools
├── synthetic-population/ # Synthetic population generation utilities
└── lib/ # External libraries
The main simulation engine implementing:
- Data Structures: Person, Household, Dwelling, Job classes
- Event Model: Microsimulation using event-based programming
- Core Features:
- Person lifecycle (birth, death, aging, birthday)
- Household formation (marriage, divorce)
- Employment and income dynamics
- Dwelling allocation and relocation
- Transportation and land-use interactions
Key Dependencies:
- GeoTools (geospatial data handling)
- JTS (geometry processing)
- MATSim (transportation modeling framework)
- JCommon (charting library)
Pre-configured regional implementations for specific locations:
- munich - Munich region
- maryland - Maryland region (USA)
- perth - Perth region (Australia)
- kagawa - Kagawa region (Japan)
- austin - Austin region (USA)
- capeTown - Cape Town region (South Africa)
- fabiland - FABILand test case
- bangkok - Bangkok region (Thailand)
- manchester - Manchester region (UK)
Each use case inherits from siloCore and provides:
- Customized model configurations
- Regional parameters
- Specific behavioral strategies
Optional extensions that augment the core model:
- matsim2silo - Integration with MATSim transportation models
- mito2silo - Integration with MITO travel demand model
- schools - School location choice modeling
- health - Health impact assessment module
Analysis tools for processing simulation outputs and studying model results across different use cases.
Tools for generating synthetic populations for model initialization:
- Population generation algorithms
- IPU (Iterative Proportional Updating) methods
- Support for multiple regions
Person (interface)
├── Attributes: age, gender, income, occupation, role, driver license
├── Relationships: household, workplace
└── Methods: income adjustment, license management, custom attributes
Household
├── Members: collection of persons
├── Housing: dwelling unit reference
├── Economics: income, car ownership
└── Lifecycle: formation, dissolution, composition changes
Dwelling
├── Location: zone, coordinates
├── Characteristics: size, year built, quality, rent/price
└── Occupants: household reference
Job
├── Location: zone
├── Characteristics: sector, income requirements
└── Holder: person reference
The SiloModel class manages:
- Event Registration - MicroEvent types with corresponding EventModel handlers
- Annual Updates - ModelUpdateListener implementations for yearly operations
- Results Monitoring - ResultsMonitor interfaces for output tracking
- Time Management - TimeTracker for simulation progression
- Data Containers - DataContainer and ModelContainer for centralized data access
Key Simulation Components:
public final class SiloModel {
private Simulator simulator;
private DataContainer dataContainer;
private ModelContainer modelContainer;
private Set<ResultsMonitor> resultsMonitors;
public void runModel() {
// Setup → RunYearByYear → EndSimulation
}
}- Birth Model - Population growth simulation
- Death Model - Mortality dynamics
- Birthday Model - Age progression
- Marriage/Divorce - Household formation changes
- Moves Model - Residential relocation with housing utility choice
- Education Model - Educational attainment progression
- Drivers License Model - Vehicle license ownership
- Employment Model - Job allocation and income dynamics
- Car Ownership Model - Vehicle ownership patterns
- Construction Model - New building development
- Demolition Model - Building removal
- Renovation Model - Building improvements
- Pricing Model - Real estate valuation
- Dwelling Allocation - Housing market matching
- MATSim Integration - Full integration with MATSim framework
- Mode Choice - Travel mode selection utilities
- Commute Matching - Work-to-home location matching (Gale-Shapley algorithm)
- Accessibility - Travel time and impedance calculations
The health extension provides:
- Physical Activity Calculation - Mode-specific activity METs (Metabolic Equivalent of Task)
- Air Quality Exposure - PM2.5 and NO2 modeling
- Health Impact Assessment - Disease risk calculations
- Trip Analysis - Purpose and mode-based trip tracking
- Java: JDK 8+
- Build Tool: Maven 3.6+
- IDE: Eclipse (recommended)
mvn clean install- Clone the repository:
git clone <repo-url> - In Eclipse: File → Import → Maven → Existing Maven Projects
- Browse to the repository location
- Select all modules and import
Key External Libraries:
- MATSim - Open-source multi-agent transport simulation (matsim.org)
- GeoTools - Java GIS toolkit for geospatial data
- JTS (Java Topology Suite) - Geometry operations
- JUnit Jupiter - Testing framework
- Log4j 2 - Logging
Repository Management:
- Artifacts hosted on Cloudsmith (https://cloudsmith.com)
- Multiple Maven repositories configured for dependencies
- CI: GitHub Actions with Java CI workflow
- Deployment: Automated deployment to Cloudsmith package repository
- Versioning: 0.1.0-SNAPSHOT (development version)
SILO can be applied to:
- Urban growth and land-use simulation
- Population projections
- Housing market dynamics
- Transportation demand modeling
- Public health impact assessment
- Environmental exposure analysis
- Policy scenario testing
The repository includes implemented use cases for 9 international regions, providing templates for new applications.
- Official Website: www.silo.zone
- Technical Wiki: https://wiki.tum.de/display/msmmodels/SILO
- Package Repository: Cloudsmith (OSS hosting)
- Code License: GNU General Public License (full LICENSE file included)
For more information on specific components or classes, please refer to the inline code documentation and the technical wiki referenced above.