Skip to content

Baltic power system SpineOpt model from the SignAture project

Notifications You must be signed in to change notification settings

flpp-signature/Baltic-Model

Repository files navigation

Baltic power system SpineOpt models

DOI License: MIT SpineOpt

This repository contains open-source operational optimization models of the Baltic power system (Estonia, Latvia, and Lithuania) developed during the SignAture project (2022–2025) using the SpineOpt modelling framework and Spine Toolbox.

Overview

The repository includes two main Spine Toolbox projects:

Project Description Associated Publication
Baltic_model_validation_run Calibration and validation model using 2020 historical data Baltputnis et al. (2024)
Baltic_model_future_scenarios Future scenarios for 2050 with high renewable penetration Baltputnis & Broka (2023)

Both projects contain complete SpineOpt models with SQLite input databases ready to be executed with Spine Toolbox. Output databases are provided as empty templates due to file size constraints—full results are available on Zenodo.

Associated publications

1. Future scenarios study (2023)

K. Baltputnis and Z. Broka, "Future scenarios of the Baltic power system with large penetration of renewables," 2023 19th International Conference on the European Energy Market (EEM), Lappeenranta, Finland, 2023, pp. 1-7.
DOI: 10.1109/EEM58374.2023.10161795

2. Model calibration study (2024)

K. Baltputnis, D. Žalostība, J. Teremranova, P. Pazāns, and Z. Broka, "Refinement and Calibration of Optimization Models for Baltic Region Energy System Development," 2024 IEEE 65th International Scientific Conference on Power and Electrical Engineering of Riga Technical University (RTUCON), Riga, Latvia, 2024, pp. 1-6.
DOI: 10.1109/RTUCON62997.2024.10830801

Input and output data

The input and output .sqlite databases for both studies are available on Zenodo: https://doi.org/10.5281/zenodo.18442640


Methodology

Model framework

Both models are developed in SpineOpt, a flexible open-source energy system modelling framework that allows building models using basic building blocks:

  • Nodes: Represent geographical/logical locations (each Baltic state is treated as a single node (as an electricity market area), there are seperate nodes also for water reservoirs etc.)
  • Units: Power generation assets (wind, solar, hydro, thermal, storage (conversion) etc)
  • Connections: Links between nodes with one or bidirectional transfer capacities (water movement between upstream-downstream reservoirs, transmission interconncetions, etc.)

The models are solved as linear programming (LP) / mixed-integer linear programming (MILP) problems using the Clp / Cbc solvers, with the objective of minimizing total operational costs including:

  • Power plant operational costs (fuel, O&M, emissions, start-ups)
  • Electricity import costs
  • Revenue from electricity exports (negative cost)

Geographic scope

The market model covers the three Baltic states with the following representation:

                    ┌─────────┐
                    │ FINLAND │
                    └────┬────┘
                         │ EstLink 1&2 (1016 MW)
                    ┌────┴────┐
                    │ ESTONIA │
                    └─────────┘
                         │ EE-LV (1500 MW)
     ┌─────────┐    ┌────┴────┐    ┌─────────┐
     │ SWEDEN  ├────┤  LATVIA ├────┤ RUSSIA**│
     └─────────┘    └────┬────┘    └─────────┘
     NordBalt (700 MW)   │ LV-LT (1500 MW)
                    ┌────┴────┐    ┌─────────┐
                    │LITHUANIA├────┤BELARUS**│
                    └────┬────┘    └─────────┘
                         │ LitPol Link (500 / 1700* MW)
                    ┌────┴────┐
                    │ POLAND  │
                    └─────────┘

*After Harmony Link construction (future scenarios)
**Before desynchronization (i.e., for the 2020 validation scenario)

Generation technologies modeled

Technology Countries Notes
Wind (onshore/offshore) LT, LV, EE Time-variable production profiles
Solar PV LT, LV, EE Time-variable production profiles
Hydropower LV (Daugava cascade), LT
Pumped Storage LT (Kruonis), EE (planned) Cyclic storage constraints applied
Biomass/Biogas LT, LV, EE Includes CHP plants
Natural Gas LT, LV CHP plants with heat demand dependency
Oil Shale EE Estonia's primary fossil fuel source
Peaker Plants LT, LV, EE 500 MW per country (future scenarios)

Special features

Daugava hydropower cascade (Latvia)

The three large HPPs on the Daugava River (Pļaviņas, Ķegums, and Rīga HPP) are modeled with:

  • Individual reservoir storage capabilities
  • Time-delayed hydraulic linkage between cascade plants
  • Water inflow profiles derived from hydrological measurements
  • Cyclic constraints ensuring end-of-horizon storage equals initial storage

Heat-electricity coupling

Latvian natural gas CHPs (Riga CHP-1, CHP-2.1, CHP-2.2) include:

  • Temperature-dependent efficiency during heating season
  • Cogeneration mode when heating demand is sufficient
  • Condensing mode operation during summer

📊 Project details

Baltic_model_validation_run

Purpose: Calibrate and validate the model against 2020 historical data

Key characteristics:

  • Reference Year: 2020
  • Temporal Resolution: Hourly (8760 hours)
  • Optimization Horizon: 2-week rolling windows

Input data sources:

  • ENTSO-E Transparency Platform (generation, cross-border flows)
  • Eurostat (energy statistics)
  • Latvian Environment, Geology and Meteorology Centre (hydrology data)
  • EEX (ETS emission prices)

Validation metrics:

  • Electricity production by source type
  • Cross-border trade flows
  • Net import/export positions

Key results:

  • Overall Baltic net position deviation: ~1.17% of total annual demand
  • Successful reproduction of seasonal HPP operation patterns
  • Accurate cross-border flow directions and magnitudes

Baltic_model_future_scenarios

Purpose: Explore hypothetical 2050 scenarios with high renewable penetration

Key characteristics:

  • Target year: 2050
  • Temporal resolution: Hourly
  • Optimization horizon: 2-week rolling windows (~30 min solve time)

Base scenario assumptions:

Parameter Value
Total Wind Capacity 6 GW (50% onshore, 50% offshore)
Total Solar Capacity 2 GW
Peaker Capacity 1.5 GW (500 MW per country)
New Estonian PSHPP 480/500 MW, 6 GWh storage
Kruonis 5th Unit +225 MW

Electricity demand projections (2050):

Country Annual consumption (TWh) Peak demand (GW)
Lithuania 11.25 3.48
Latvia 9.60 1.58
Estonia 21.32 1.99

Scenarios analyzed:

Scenario Description
Base Reference 2050 scenario
Perfect Interconnections No outages/capacity reductions
Demand Response (DR) 50% reduction in demand std. deviation
Extra Storage Doubled new PSHPP capacity
No New Storage No new PSHPP
Dry Year 50% reduction in Daugava inflow
Wet Year 50% increase in Daugava inflow

Key findings:

  • Only 0.02% RES curtailment in Base scenario
  • Average electricity price: €145/MWh (highly volatile)
  • Interconnections crucial for system adequacy (–44.9% price with perfect availability)

Getting started

Prerequisites

  1. Spine Toolbox (latest version preferable, last tested on 0.10.5)

  2. Julia (version 1.8 or later)

  3. SpineOpt.jl

    • Installation: In Julia REPL:
    using Pkg
    Pkg.add("SpineOpt")
  4. Solvers

    • Installation: In Julia REPL (in the relevant environment):
    using Pkg
    Pkg.add("Clp")
    using Pkg
    Pkg.add("Cbc")

    In principle, you can use any solver (by editing the solver properties in the input database through Spine DB Editor), however, the papers where produced using these solvers, and they are currently selected in the DB.

Installation

  1. Clone this repository:

    git clone https://github.com/flpp-signature/Baltic-Model.git
    cd baltic-model
  2. Open Spine Toolbox

  3. Open a project:

    • File → Open Project
    • Navigate to either Baltic_model_validation_run or Baltic_model_future_scenarios
    • Select the .spinetoolbox folder

Running the models

  1. Open the project in Spine Toolbox

  2. Review the workflow:

    • The DAG (Directed Acyclic Graph) shows the data flow
    • Input databases → Run SpineOpt → Output databases
  3. Execute the workflow:

    • Click "Execute" (▶️) or press F5
    • Monitor progress in the Event Log
  4. Analyze results:

    • Results are written to the output SQLite database
    • Use Spine DB Editor to explore outputs
    • Export to CSV/Excel for further analysis

Reproducing the studies

Validation study (2020)

  1. Open Baltic_model_validation_run project
  2. Execute the workflow
  3. Compare outputs with:
    • ENTSO-E Transparency Platform data
    • Eurostat energy statistics for 2020

Future scenarios (2050)

  1. Open Baltic_model_future_scenarios project
  2. For the Base (MAIN) scenario: Execute as-is
  3. For sensitivity analyses: Use the Scenario filter to run the scenarios of interest:
    • Demand: [#]_DEM_m[x] or [#]_DEM_p[x], denoting respectively the reduction or increase in demand compared to base (–50..+50%)
    • Wind capacity: [#]_VES denoting modified wind unit capacity scenarios (50%–200%)
    • Solar capacity: [#]_SES denoting modified solar unit capacity scenarios (50%–200%)
  4. For alternative scenarios: Select the scenarios of interest:
    • Perf_int: Remove outage profiles
    • Dry/Wet_year: Scale inflow parameter (±50%)
    • No_store: No new storage
    • Extra_store: doubled new storage
    • Isol: operation in island mode for the Baltic States

Acknowledgments

Logo This research is funded by the Latvian Council of Science, project "Multi-functional modelling tool for the significantly altering future electricity markets and their development (SignAture)", project No. lzp-2021/1-0227.

About

Baltic power system SpineOpt model from the SignAture project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published