How to Model Retrofitting

This how-to introduces how we can model retrofitting in SpineOpt. The meaning of retrofitting may vary depending on the context and so does the modelling approach. Here we focus on the very fundamental case where one wants to retrofit an existing unit for the continuation of current supply generation. The introduced approach can also model retrofitting an existing unit for producing for a different demand. Same retrofitting processes for connection and node storage can be modelled likewise.

Model Setup

This section briefs the model instance setup with illustrating the key system specification. The file retrofittingexample1.json provides a complete database of this example model instance.

Basic System Instance Setup

The base system consists of

  • a node "demand_A" with a fixed energy demand of 100 over the entire modelling horizon
  • an existing unit "generatorA" to supply "demandA" with capacity_per_unit="100" and vom_cost="2". This unit, however, will retire as of hour 5, specified by the 'Time series' value of parameter investment_count_fix_cumulative.
  • an investable unit "generatorAnew" of the same techno-economic characteristics as "generatorA", with [unit\investment_cost](@ref)="1000" and a 15-year lifetime_technical. This unit represents the as-usual replacement of "generator_A" when it gets retired.

Basic system setup.

Retrofitting Setup

For retrofitting, we introduce a new unit "generatorAretro" as an alternative investment option of "generatorAnew", with the same vom_cost and lifetime_technical, and different capacity_per_unit="80" and unit_investment_cost="400". In this configuration, we would model the case where 80% of "generator_A"'s capacity can be retrofitted in a cheaper investment cost than building a new one.

Particularly, the last and key steps to make "generatorAretro" a retrofitting option for "generator_A" include:

  1. create an investment_group entity "retrofitting", and connect it to "generatorA" and "generatorA_retro",
  2. define the parameter investment_count_total_max_cumulative="1".

Configuration of retrofitting unit

This way, "generatorAretro" can only be invested in if "generator_A" is retired.

Model Structure

For simplicity, the example model spans 20 hour with an hourly resolution for both operations and investment. Investment decisions are modelled as continuous value by defining the parameter investment_variable_type = linear.

The complete model configuration is provided below: Complete model specification

Model Results

As expected, as of hour 5 when "generatorA" retires, the model invests in all capacity=80 of "generatorAretro" to continue supplying "demandA", and in capacity=20 new installation "generatorAnew" for the residue demand. The results are illustrated below:

Plot for units_invested Plot for units_invested_available

Plot for unit_flow