22.1 Major release (March 15, 2006)

GAMS System

Relaxation of discrete variables (.prior=Inf)

  • The priority attribute of a discrete variable can be used to relax a specific variable instance. The priority attribute .prior establishes in what order variables are to be fixed to integral values while searching for a solution. Variables with a specific .prior value will remain relaxed until all variables with a lower .prior values have been fixed. Setting the .prior value to +inf will relax this variable permanently. This relaxation is done independent of the model attribute .prioropt.

    This feature is useful in solving difficult discrete models. The Model Library model "Linear Recursive Sequence Optimization Model" (lrs.gms) illustrates the use of this feature that specifies that only the first n variables of k are binary, whereas the remaining ones are fractional. This is simply expressed as follows:

      SET t time horizon /1*350/, f(t) first N steps /1*48/;
      Binary Variable k(t);
      k.prior(t) = inf; k.prior(f) = 1;

Derived Variable and Equation Attributes (.slacklo,.slackup,.slack,.infeas)

  • Calculations involving slacks and infeasibilities have been simplified with four new derived attributes. These attributes are defined on equations and variables as follows:

      x.slacklo = max(x.l-x.lo,0);
      x.slackup = max(x.up-x.l,0);
      x.slack = min(x.slacklo,x.slackup);
      x.infeas = - min(x.l-x.lo,x.lu-x.l,0);

    Note that the slacks or infeasibilities will always be zero or positive.

Enhanced Model List

  • The entries of a model list can now contain previously defined models. For example:
      Model one / e1,e2,e3 /
      two / one, e4 /
      three / two, e5 /;
    The model two will now contain equations e1,e2,e3,e4. The model three will contain all of model two plus equation e5.

New model type

  • RMPEC: The model type MPEC now allows discrete variables. The Relaxed Mathematical Program with Equilibrium Constraints (RMPEC) model relaxes the discrete variables as with RMIP and MIP models.

Enhanced $IF/IFI statement:

  • A check for the existence of a directory has been added to the $if statement.
      $IF DEXIST directory command
      $IFI DEXIST directory command

GDX Utilities


  • When a key value pair exists in one file and not in the other we use Eps to determine if the difference should be reported.


  • All unique elements in the output are now quoted to avoid problems with reserved words etc.


  • New options introduced to merge only specified identifiers, to merge very large data sets, and to read parameters from a file (@filename).


  • Fixed problem with merging when only the top-left corner of the range was specified.


  • Added a viewer for lst files. In contrast to the editor, this viewer does not load the complete file in memory.
  • Added a navigation tree for the lst file.
  • Added the option to generate charts using a gdx file.
  • All viewers, except the process window, are now organized as tabbed windows.
  • The gdxviewer remembers that last symbol viewed for a gdx file and will select the symbol when opening the file.
  • Expanded format for library file to use other entries in the library.

GAMS Model Library

Testlib Library

  • new models
    • Tests for new GAMS intrinsic functions NCPVu***
    • Tests for GDXdiff utility

McCarl GAMS User's Guide

  • Extensive internal changes to allow better distribution formats
  • Now distributed as a single .chm file and a single .pdf file with fully linked topics



  • XA can now be used as an LP solver inside BARON.
  • For the LP solvers Cplex and XA the user can specify the LP algorithm (primal/dual simplex, barrier) using the BARON option lpalg.
  • The user can control BARON's node selection scheme with the option nodesel. Available strategies include best bounds, DFS, minimum infeasibilities, and BARON's own mix.


  • New libraries (version 3.140)
    • The scaling method has been improved to work better with models with small levels and large derivatives (e.g. sqrt(x) for x close to 0).
    • Minor problems with previous versions corrected.


  • New libraries (version 10.0)
    • Dropped Platforms: ILOG dropped support for CPLEX 10.0 on the SGI platforms. Also support for Linux with glibc2.2 was dropped but will hopefully be available when GAMS 22.1 will be released. GAMS 22.1 for dropped platforms ships older versions of CPLEX.
    • Solution Polishing: Solution Polishing is appropriate for finding the best solutions to complex and difficult MIP models within a specified time. Solution Polishing is used to improve the best solution at the end of the branch-and-cut process if optimality has not been proven.
    • MIP Starts: The advanced restart capabilities of CPLEX have been improved to utilize initial solutions, partial solutions and partially correct solutions. If the user specifies values for only a portion of the discrete variables, CPLEX 10.0 will attempt to fill in the missing values or correct the wrong values in a way that leads to an integer-feasible solution, potentially reducing the time to solve the problem.
    • Infeasibility analysis tool: CPLEX provides an automatic approach to find the best feasible alternative to an infeasible model. This approach is turned on by an option called FeasOpt (for feasible optimization). With the FeasOpt option CPLEX accepts an infeasible model and selectively relaxes the bounds and constraints in a way that minimizes a weighted penalty function. In essence, the feasible relaxation tries to suggest the least change that would achieve feasibility. It returns an infeasible solution to GAMS and marks the relaxations of bounds and constraints with the INFES marker in the solution section.
    • For details check the GAMS/CPLEX 10 Release Notes.


  • New option infeasder: It allows for linearization of infeasible NLP subproblems.


  • Default behavior changed: if no action is chosen, Examiner prints a warning message and defaults to "examineInitPoint yes"
  • Adjusted to handle new RMPEC model type. Currently MPEC models are not allowed.
  • Report format for examination of points changed:
    • better labeling of the point being examined - consistent with the naming scheme and options used to choose the examination
    • use GAMS notation (e.g. x.l(seattle,topeka), f.m(supply)) to specify rows/columns
    • add option 'showSlacks' to print slacks/differences explicitly when the difference is small compared to the values themselves


  • New libraries (version 16.10.03)
    • The dual pricing algorithm has been improved. For some difficult LP problems this has resulted in an order of magnitude speed improvement.
    • The speed and stability of the simplex factorization has been improved.
    • The barrier algorithm now requires less memory.
    • The cut generation has been improved.