This repository contains the desktop application for our energy-system design-optimization framework SecMOD 4Decide.
Developed at the Institute of Technical Thermodynamics (LTT), RWTH Aachen University.
SecMOD 4Decide is used to design site-scale multi-energy systems under uncertainty. It covers three steps: generating component models from measured operating data, running stochastic multi-objective design optimization, and deriving compromise solutions from stochastic goal programming (SGP).
The provided example reproduces the case study used in our study. The only exception is the proprietary ecoinvent data, which has been replaced with dummy data.
Tab 1 - Model Generation: Fit (piecewise-)linear component models to measured operating data and export them into a SecMOD working directory.
Tab 2 - Design Optimization: Configure objectives, constraints, and key performance indicators (KPIs), then run single- or multi-objective design optimization.
Tab 3 - Results: Analyze the Pareto front and generate compromise solutions, choosing the objective weights and the compromise metric.
- Python 3.14 or newer
- A supported LP/MILP solver:
- Gurobi (license-restricted)
- HiGHS (open-source, included via
highspy)
- The ecoinvent database or ecoinvent-derived impact data if LCA impact
categories are used. Place
ecoinvent.csvat:example/SecMOD/00-INPUT/00-RAW-INPUT/04-ECOINVENT/ecoinvent.csvA placeholder file is included so the directory structure is visible, but the licensed ecoinvent data itself is not included. See ecoinvent.org for access.
git clone https://github.com/RWTH-LTT/SecMOD-4Decide.git
cd secmod-4decide
python -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python main.pyOr on Windows, after installing the requirements in your environment, double-click run.bat.
The example/ folder contains a complete SecMOD working directory for a
multi-energy system case study (industrial site, ONENODE grid).
Pre-computed demonstration results are at
example/SecMOD/01-MODEL-RESULTS/MULTI_OBJECTIVE_CUSTOM_OPTIMIZATION/default_results/:
a 4-objective lexicographic Pareto front (Total Annualized Costs, Invest Costs,
Peak Load Electricity, Peak Load Gas) with two compromise
points (L₁ and L∞ norm). Load these from Tab 3 without running any optimization.
To open the example in the GUI:
- Launch
python main.py - Go to Tab 2 → Design Optimization
- Click Open working directory and select the
example/folder - Click Load to read the configuration
To load the pre-computed results directly:
- Go to Tab 3 → Results
- Click Select results folder and navigate to
example/SecMOD/01-MODEL-RESULTS/MULTI_OBJECTIVE_CUSTOM_OPTIMIZATION/default_results/
To generate new results, run an optimization from Tab 2. Results are written below
example/SecMOD/01-MODEL-RESULTS/.
The repository includes all inputs needed to reproduce the results from our study: operational data, techno-economic parameters, time series, scenario assumptions, and solver configuration.
Due to ecoinvent license terms, proprietary ecoinvent data are not included. LCA-based impact results therefore require users to provide their own licensed ecoinvent export or compatible derived impact data.
secmod-4decide/
├── main.py Entry point
├── requirements.txt
├── run.bat Windows launcher
├── secmod_4decide_qt/ PyQt6 GUI package
│ ├── tabs/ GUI Tabs
│ ├── widgets/ GUI widgets
│ ├── dialogs/ GUI dialogs
│ └── core/ GUI utiltites
├── secmod_4decide/ Backend library
│ ├── modeling/ Compent modeling
│ └── secmod/
│ ├── core/ SecMOD optimization core
│ └── converters/ CSV <-> Excel converters
└── example/ Example SecMOD working directory
└── SecMOD/
├── 00-INPUT/
│ └── 00-RAW-INPUT/ Model input data
└── 01-MODEL-RESULTS/ Model results
If you use this software in academic work, please cite:
Schricker, H., Kuperjans, F., Kämper, A., Reinert, C., & von der Assen, N. Improving Decision Quality for Energy System Design via Stochastic Goal Programming with Data-Driven MILPs. Computers & Chemical Engineering (2026). DOI: https://doi.org/10.1016/j.compchemeng.2026.109773
See LICENSE.




