Skip to content

YoungFaithful/CapacityExpansion.jl

Repository files navigation

CapacityExpansion logo

Build Status

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

The main purpose of the package is providing an extensible, simple-to-use generation and transmission capacity extension model that allows to address 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 class Capacity Expansion Problem
Model type Optimization, Linear optimization model input-data depending energy system
Carriers Electricity, Hydrogen, ...
Technologies dispathable and non-dispathable Generation, Conversion, Storage (seasonal), Transmission
Decisions investment and dispatch
Objective Total system cost
Variables Cost, Capacities, Generation, Storage, Lost-Load, Lost-Emissions
Input Data Depending Provided Input Data
Regions California, USA (single and multi-node) and Germany, Europe (single and multi-node)
Geographic Resolution aggregated regions
Time resolution hourly
Network coverage transmission, 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.

Installation

This package runs under julia v1.0 and higher. It depends on:

  • 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
using Pkg
Pkg.add("CapacityExpansion")

A solver is required to run an optimization as explained in section Solver. Install e.g.:

using Pkg
Pkg.add("Clp")

Example Workflow

using CapacityExpansion
using Clp
optimizer=Clp.Optimizer # select optimizer

## LOAD DATA ##
# laod ts-data
ts_input_data = load_timeseries_data_provided("GER_1"; T=24, years=[2016])
# load cep-data
cep_data = load_cep_data_provided("GER_1")

## OPTIMIZATION ##
# run a simple
run_opt(ts_input_data,cep_data,optimizer)