This project implements a small electricity system planning model using Pyomo. The goal is to understand how optimization models can be used to plan electricity generation over time and determine the least-cost mix of technologies required to meet demand.
The model represents a simplified power system and solves a linear optimization problem to decide how much electricity should be generated by each technology each year.
Technologies included in the model:
- Coal
- Gas
- Wind
- Solar
- Hydro
Planning horizon:
- 2025–2034
The optimization minimizes total system cost while satisfying electricity demand and respecting system constraints such as capacity limits, emissions caps, and renewable generation requirements.
The repository is organized in a modular way so each part of the optimization model is easier to understand and modify.
data/
model/
scenarios/
utils/
run_model.py
requirements.txt
Contains the input datasets used by the model.
technology_params.json— technology characteristics such as capital cost, variable cost, capacity factor, and emissions.demand_projection.csv— projected electricity demand for each year in the planning horizon.
Contains the core Pyomo model components:
- sets (technologies and years)
- parameters
- decision variables
- constraints
- objective function
These pieces together define the optimization problem.
Reserved for running alternative policy or planning scenarios such as different emissions limits or renewable targets.
Helper functions for loading input data and extracting model results.
- Create and activate a virtual environment
python -m venv venv
venv\\Scripts\\activate
- Install dependencies
pip install -r requirements.txt
- Run the optimization model
python run_model.py
The script loads the input data, builds the Pyomo model, runs the solver (GLPK), and prints the optimized generation results.