Debugging EPM Models in GAMS#
If your run didn’t converge, or worse, converged with unrealistic results, this guide provides tools and methods to investigate what went wrong.
1. Understanding the PA.gdx
Output#
The PA.gdx
file (often auto-generated) contains post-solve values for variables and equations. It’s critical for diagnosing model behavior.
Each variable includes:
Field |
Meaning |
---|---|
Level |
The actual solution value (e.g. power output, demand served, etc.) |
Marginal |
Dual value — often shadow price or reduced cost |
Lower |
Lower bound on the variable |
Upper |
Upper bound on the variable |
Scale |
Scaling factor applied (typically 1 unless specified otherwise) |
What to Look for#
Zero levels: If all levels are zero, check if:
The variable was properly connected in constraints.
It had a feasible range (
Lower
,Upper
) that allowed movement.There’s a cost or penalty preventing it from being selected.
Marginals = EPS: GAMS uses
EPS
(epsilon) when dual values are effectively zero, i.e. the bound is not active. This is normal unless you expected that variable to be tightly constrained.Very high or low levels: Could indicate:
Missing unit conversions (e.g. kW vs MW)
Mis-specified bounds or parameters
A cost that unintentionally encourages unrealistic dispatch
2. Reference Outputs for Debugging#
GAMS provides reference files to trace model structure, usage, and execution flow.
.log
File — Execution Log#
Contains runtime logs and time stamps:
File inclusions
Model generation times
Solver startup and memory use
Useful for checking if the solver started, crashed, or timed out
.ref
File — Model Symbol Reference#
Enable it within GAMS Studio using command parameters.
This produces <filename>.ref
which contains:
All declared symbols (sets, parameters, variables, equations)
Where each symbol was:
Declared
Defined
Assigned
Referenced
Warnings for @declared but unused symbols
Why it’s useful: Quickly shows whether a variable like vPwrOut(g,f,q,d,t,y)
is declared but never referenced in a constraint — a common source of “zero everywhere” issues.
.lst
File — Execution Listing#
Automatically generated. Includes:
Compilation diagnostics
Code listing
Full equation listings (left-hand side, right-hand side, status)
Solver messages and summaries
Tips:
Set
option limcol = 0; option limrow = 0;
to limit variable/equation listings.Use the “Variable Listing” and “Equation Listing” sections to examine values in context.