Skip to contents

A scenario report documents what came out of a run: solve status and objective, the generation, capacity and new-capacity mixes, a sub-annual dispatch profile, emissions and costs, and the verify_solution() checks. It is the counterpart of vignette("report-model"), which documents the assumptions going in.

The one below is pypsa_eur_41 solved on a sampled calendar — one day per month, 288 of the 8,760 hours — which keeps every region and process while making the solve tractable:

library(energyRt)
library(reneuro)

cal  <- calendars$d365_h24_1dpm
scen <- interpolate_model(pypsa_eur_41, cal, name = "eur41_m12")
scen <- write_script(scen, solver = solver_options$julia_highs_barrier)
scen <- read_solution(solve_scenario(scen, wait = TRUE))

report(scen)

Two notes on running it.

The sample shortens the solve, not the interpolation. Parameters are interpolated and only then filtered to the declared timeslices, so interpolation costs much the same whichever calendar it is given – about 35 seconds here – while the solve drops to about 220 seconds from a calendar thirty times larger.

Use HiGHS. GLPK solves the five-node models in seconds, but at 41 nodes it was still iterating after ten minutes on a problem the barrier closes in under four. open_solvers() reports what this machine has.

Beyond the defaults: run = reports a run other than the active one, verify = FALSE omits the checks section, levcost = TRUE adds an ex-post cost table, and report(compare_scenarios(list(a = ..., b = ...))) puts several runs side by side.

Open the report in its own tab