Skip to contents

Write a GMPL/MathProg model file from a multimod object

Usage

write_gmpl(
  model,
  file = NULL,
  model_dir = model$base_dir,
  format_expr = FALSE,
  include_solve = TRUE,
  export_vars = NULL,
  use_table_output = FALSE,
  use_folded = NULL,
  objective = "cost",
  export_data = FALSE,
  drop_default_values = FALSE,
  INF = 1e+20,
  check = TRUE,
  resolve_aliases = TRUE,
  verbose = FALSE,
  export_mps = FALSE,
  stop_on_error = TRUE,
  ...
)

# S3 method for class 'mm_model'
write_gmpl(
  model,
  file = NULL,
  model_dir = NULL,
  format_expr = FALSE,
  include_solve = TRUE,
  export_vars = NULL,
  use_table_output = FALSE,
  use_folded = NULL,
  objective = "cost",
  export_data = FALSE,
  drop_default_values = FALSE,
  INF = 1e+20,
  check = TRUE,
  resolve_aliases = TRUE,
  verbose = FALSE,
  export_mps = FALSE,
  stop_on_error = TRUE,
  ...
)

Arguments

model

A multimod model object

file

Output file path (optional, ignored if model_dir is provided)

model_dir

Optional directory path for organized model structure (creates solvers/gmpl/)

format_expr

logical; whether to format expressions with line breaks

include_solve

logical; whether to include solve and end statements

export_vars

character vector of variable names to export to CSV; if NULL (default), all variables are exported; if FALSE or character(0), no custom export

use_table_output

logical; whether to add GMPL table statement for output (CSV format); default FALSE

use_folded

logical; whether to use folded equations/data if available (default: NULL = auto-detect)

objective

character; name of the objective variable (default: "cost")

export_data

logical; whether to insert data export code after parameters (default: FALSE)

drop_default_values

logical; if TRUE with export_data, exclude values that match defaults (default: FALSE)

INF

numeric; value to use for Inf in parameter defaults (default: 1e20)

check

logical; if TRUE, run validation checks before writing (default: TRUE)

resolve_aliases

logical; if TRUE, resolve set aliases to base sets in generated GMPL (default: TRUE)

verbose

logical; if TRUE, print detailed validation progress (default: FALSE)

export_mps

logical; if TRUE, also export MPS format file (default: FALSE)

stop_on_error

logical; if TRUE, stop on validation errors; if FALSE, issue warnings (default: TRUE)

...

Additional arguments passed to formatting functions

Value

Character vector or writes file if file or model_dir is given

Examples

code <- write_gmpl(example_models$toy)
cat(head(code, 20), sep = "\n")
#> # Model: toy
#> # two-region capacity expansion toy model
#> 
#> set tech;  # generation technologies
#> set region;  # model regions
#> 
#> 
#> set _IF_;  # Singleton set for GAMS $ operator emulation
#> 
#> set mTR dimen 2;  # technology x region pairs
#> set mR dimen 1;  # regions
#> 
#> param pCapCost{tech};  # annualized capacity cost, EUR/kW
#> param pVarCost{tech};  # variable cost, EUR/MWh
#> param pAvail{tech,region};  # availability factor
#> param pDemand{region};  # annual demand, MWh
#> 
#> var vCap{t in tech, r in region} >= 0;  # installed capacity, kW
#> var vGen{t in tech, r in region} >= 0;  # generation, MWh
#>