CapacityExpansion logo

Build Status

CapacityExpansion is a julia implementation of an input-data-scaling capacity expansion modeling framework.

The primary purpose of the package is providing an extensible, simple-to-use generation and transmission capacity expansion model that allows addressing a diverse set of research questions in the area of energy systems planning. The secondary purposes are:

  1. Providing a simple process to integrate (clustered) time-series input data, geographical input data, cost input data, and technology input data.
  2. Providing a model configuration, a modular model setup and model optimization.
  3. Providing an interface between the optimization result and further analysis.
Model Information
Model classCapacity Expansion Planning
Model typeOptimization, Linear optimization model input-data depending energy system
CarriersElectricity, Hydrogen,...
Technologiesdispatchable and non-dispatchable Generation, Conversion, Storage (seasonal), Transmission, Demand
Decisionsinvestment and dispatch
ObjectiveTotal system cost
VariablesCost, Capacities, Generation, Storage, Lost-Load, Lost-Emissions
Input Data DependingProvided Input Data
RegionsCalifornia, USA (single and multi-node) and Germany, Europe (single and multi-node)
Geographic Resolutionaggregated regions
Time resolutionhourly
Network coveragetransmission, DCOPF load flow

The package uses TimeSeriesClustering as a basis for its time-series aggregation.

This package is developed by Elias Kuepper @YoungFaithful and Holger Teichgraeber @holgerteichgraeber.


This package runs under julia v1.0 and higher. It depends on multiple packages, which are also listed in the Project.toml. The packages are automatically installed by the julia package manager:

  • JuMP.jl - for the modeling environment
  • CSV.jl - for handling of .csv-Files
  • DataFrames.jl - for handling of tables
  • StatsBase.jl - for handling of basic
  • JLD2 - for saving your result data
  • FileIO - for file accessing
  • TimeSeriesClustering.jl - for time-series data

You can install CapacityExpansion using the package mode:

add CapacityExpansion

or using the Pkg.add function:

using Pkg

A solver is required to run an optimization, as explained in section Solver. Install, e.g. Clp using the package mode:

add Clp

or using the Pkg.add function:

using Pkg