Builds an interpolated scenario from a model via the mapping pipeline:
collects sets from the model objects, builds the membership / calendar /
lifespan / value / constraint / cost mappings, extracts and interpolates the
numeric parameters over the milestone years, and (optionally) folds, prunes
and validates the result. The returned scenario is ready for solve_model() /
solve_scenario().
Usage
interpolate_model(
mod,
name = NULL,
...,
desc = NULL,
ondisk = FALSE,
overwrite = FALSE,
fold = FALSE,
sparse = TRUE,
prune = TRUE,
validate = TRUE,
code = NULL,
kvl = FALSE,
boundary_prices = NULL,
.prefilter = FALSE,
verbose = isVerbose()
)Arguments
- mod
a model object, or a scenario (its
@modelis re-interpolated).- name
character scenario name. If
NULL, a defaultscen_<model>is used (with a warning).- ...
additional energyRt objects folded into the model BEFORE the pipeline runs:
settings,config,calendar,horizon, a wholerepository, or individual model "bricks" (technology,commodity,storage, ...). This is how a scenario overrides or extends the model (e.g. pass a sampledcalendarto interpolate on a reduced time resolution).- desc
character scenario description.
- ondisk
logical; store each parameter's data in the on-disk parameter store rather than the in-memory
@dataslot.FALSE(default) keeps data in memory, which the solver writers read directly;TRUEsuits very large models (data is materialised back to memory at solve time).- overwrite
logical; overwrite an existing on-disk scenario of the same name.
- fold
logical or character; whole-column "fold" of trimmable dimensions to NA wildcards to shrink the data.
TRUEfoldsregion+timeslice;FALSE(default) folds nothing; a character vector selects dims amongregion,timeslice,year,comm,tech,stg,trade. A folded scenario is expanded to solver-ready form at solve time.- sparse
logical; the storage knob.
TRUEdropsvalue == defValrows (and folds);FALSEmaterialises the default over each parameter's full domain (and unfolds).- prune
logical; drop interpolated rows that fall outside the equation-domain maps (no effect on the solution, smaller data).
- validate
logical; run post-interpolation consistency checks (schema, duplicate keys, map/parameter coverage).
- code
optional named list overriding solver source-code blocks (
GLPK,GAMS,JuMP,PYOMOConcrete, ...), each either a script-file path or a character vector of lines. Lets a model-script version be supplied at interpolation time without rebuildingsysdata(handy to A/B templates).- boundary_prices
optional
data.framepricing import/export stubs for trade routes dropped by a SPATIAL SAMPLE (ageoscales::filter_geoscale()subset passed via...); seesubset_model_regions()for the columns. Ignored (with a warning) when no sampled geoscale is supplied.- .prefilter
EXPERIMENTAL, default
FALSE. Restrict each model object's data to the timeslices and regions the SCENARIO declares before interpolating it, rather than interpolating everything and discarding the excess afterwards.On the sampled-calendar recipe – a full-year model with a subset calendar handed to this function – the default order expands all 8,760 timeslices in
ob2miand then keeps 96. The parameter filters that follow are cheap (0.05s on a 5-node model); the cost is the interpolation they cannot undo.Off by default because it is not obviously safe: anything deriving a relation from the full declared grid rather than from the calendar would see a narrower input. Compare objectives before relying on it.
- verbose
logical; print per-step progress. This also governs the variant-expansion report – how many process objects were expanded and how many constraints were generated for them. The generated constraints themselves are retrievable with
getObject(scen, class = "constraint"); each carries a readabledescand, inmisc$.variant_source, the object it was derived from.
Value
an interpolated scenario object.
See also
solve_model(), solve_scenario(), the interpolate S4 method.
Other interpolation:
subset_model_regions(),
with_solver_log()
