Major releases contain substantial changes to the GAMS system. The License Check date is set to the release date of the major release.
Minor releases are mainly issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries. Additionally, they can provide a few new features that do not change existing behavior. The License Check Date remains the same as for the prior major release. This means that any license file that worked with the prior major release will also work with this minor release.
Maintenance releases do not provide any new features. They are issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries. The License Check Date remains the same as for the prior major release. This means that any license file that worked with the prior major release will also work with this maintenance release.
GAMS Distribution 22.7
|22.7.2||(Maintenance release)||May 13, 2008|
|22.7.1||(Major release)||May 01, 2008|
GAMS Maintenance Release 22.7.2 - May 13, 2008
- DICOPT/ALPHAECP/LOGMIPLBOA: Fixed Cplex scaling bug
- GAMS/CPLEX: Small cosmetic Cplex bug fix. We got "CPLEX Error 3003: Not a mixed-integer problem." In case we cannot solve the fixed problem. This was due to some query calls about nodes and iteration.
- GAMSIDE: Fixed a bug that could cause an out of memory error when moving a row or column to the plane index in the gdx data viewer
- GAMS/DEA: Avoid writing zeros to GDX files
- GAMS/LGOLIB: Fixed a memory leak
- Minor documentation updates
- Note: AIX and Mac OS X PPC were not updated.
GAMS Major Release 22.7.1 - May 01, 2008
We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Jens Baudach, Michael Ferris, Josef Kallrath, Aldo Vecchietti and Stefan Vigerske.
The data statements have been enhanced to allow initial values for equations and variables in addition to set and parameter data. Those new data statements follow the syntax for list and table data statement for parameters by adding an additional dimension to specify the specific data attribute. The variable and equation suffixes can be used in this additional dimension. For example, the solution values for the transport example could be written as:
variable x(i,j) / (seattle.(new-york 50, chicago 300) san-diego.(new-york,topeka) 275 ).l seattle.topeka.m 0.36 san-diego.chicago.m 0.009 / variable z / l 153.6750 / equation demand(j) / (new-york 0.2250 chicago 0.1530 topeka 0.1260).m /;
Only the non default values need to be specified. The following attributes can be used according to the variable type:
.l level .m marginal .lo lower bound .up upper bound .scale scale value .prior priority for discrete variables .fx shorthand for setting .l,.lo and .up to the same value
With table style input all index positions have to appear in the row definition. For example we could write the above list oriented statement in table form as:
variable table x(i,j) initial values l m seattle. new-york 50 seattle. chicago 300 seattle. topeka 0.36 san-diego.new-york 275 san-diego.topeka 275 san-diego.chicago 0.009
As with other data statements,
$onempty can be used as well.
Mappings between n-tuples can be clumsy to enter via data
statements and are often difficult to compute. Similar to the product
.) we introduced a match operator (
For example, the two set data statements give the same result:
Set I / t1*t6:s3*s5 /
Set j / t1.s3,t2.s4,t3.s5 /
In another example we may want to count "tuples" in some fashion:
sets h /h1*h24/, d /d1*d365/, dh(d,h) /#d.#h/
sets t /t1*t8760/, tdh(t,d,h) /#t:#dh/
The resulting set tdh will then have the values:
t1.d1.h1, t2.d1.h2, t3.d1.h3 ..
Currently there is no general matching operator for assignment statement. To facilitate some otherwise very clumsy and expensive calculations, one can use the following option statement:
Set ijk(I,j,k), x(I,j,k,l) ..
Option ijk(i:j,k), x(ijk:l);
This statement will first clear the set
then apply the matching operators to
and finally apply a product operation to the matched
k which results in:
i1.j1.k1, i1.j1.k2, ..
i2.j2.k1, i2.j2.k2, ..
x will match
with the set
l resulting in:
i1.j1.k1.l1, i1.j1.k2.l2, ..
In some applications it may be desirable to limit the amount of memory a GAMS job can use. HeapLimit (MB) is a new GAMS parameter and function/property that limits memory used to store dynamic data. If the dynamic data storage exceeds this limit, the job will be terminate with return code 10, out of memory. These features are especially useful in a server environment.
The GAMS parameter
HeapLimitsets the limit of memory use at compile and execution time for a GAMS job
HeapLimitcan be used to interrogate the current limit and allows it to be rest
The NLP solver CONOPT also has a
HeapLimitoption which ensures that the solver will not use more dynamic memory
A symbol can have up to 20 dimensions and identifiers and labels can have up to 63 characters
The GAMS executable understands the ‘Keep’ and ‘CurDir’ parameters
New derived variable/equation attribute
.rangeis defined as
x.range=x.up−x.lo. This provides a convenient way to see if a variable is fixed
Additional references in compile time constant expression in
$ifestatement can now reference scalar parameters and the function
Added the tuple text if we display with the format x:0:0:1 which puts single items on one line
In table statements under
$ondelim, we can drop the dummy element in the column definition
As in execution time GDX loads, we can extract the domain information with a load statement like
A symbol in a GDX file can have up to 20 dimensions and identifiers and labels can have up to 63 characters
A GDX file can store domain information for a symbol
A GDX file can save an aliased set
GDXDUMP writes now data for variables and equations (no longer surrounded by $ontext / $offtext)
MDB2GMS allows writing of an empty symbol
No longer interprets a text field as a numeric value (because of international notation issues); the value returned for such a cell is NA
Fixed a problem with the default value for a field for a VAR and EQU
GDXMERGE did not merge an aliased set correctly
GDXVIEWER can export all symbols to Excel in command-line mode by specifying ID=*
Supports an optional file, ‘idecfg.ini’, to display additional items like:
Option to open a html document
Multiple model libraries
Display of an image in the process window
Fixed a problem matching parenthesis on an empty line
Fixed a problem deleting a 225 directory (when this was the last directory used for opening a file)
Updated McCarl GAMS User's Guide
New libraries (version 8.1.4)
New libraries (version 11.0.1)
New MIP solver GAMS/SCIP from Zuse Institute Berlin (ZIB)
uses COIN-OR LP solver CLP
free for academic users.
Support of Windows 64-bit platform
CoinCbc supports user-defined cut generators and heuristics via BCH (Branch and Cut Heuristic)
CoinIpopt and CoinBonmin support dynamic load of linear solvers MA27, MA57 (HSL), and Pardiso.
Minor updates in the libraries and interfaces of CoinCbc, CoinGlpk, CoinIpopt, and CoinBonmin.
new option Heaplimit (see also gams option)
(Experimental) Framework for automated mathematical programming reformulations as
Extended Nonlinear Programs
Embedded Optimization Complementarity Programs
Thereby new upcoming model types are reformulated into established math programming classes in order to use mature solver technology. EMP comes free of charge with any licensed GAMS system but needs a subsolver to solve the generated models.
LogMIP 1.0 is a program for solving linear and nonlinear disjunctive programming problems involving binary variables and disjunction definitions for modeling discrete choices. While the modeling and solution of these disjunctive optimization problems has not yet reached the stage of maturity and reliability as LP, MIP and NLP modeling, these problems have a rich area of applications. LogMIP 1.0 has been developed by A. Vecchietti, J.J. Gil and L. Catania at INGAR (Santa Fe-Argentina) and Ignacio E. Grossmann at Carnegie Mellon University (Pittsburgh-USA) and is composed of:
a language compiler for the declaration and definition of disjunctions and logic constraints
solvers for linear and non-linear disjunctive models (lmbigm, lmchull, lmlboa)
LogMIP comes free of charge with any licensed Windows GAMS system but needs a subsolver to solve the generated MIP/MINLP models. For more information see
New libraries (version 18.104.22.168)
GAMS 22.7 introduces two experimental solvers: CPLEXD and
CONOPTD. They are very similar compared to their professional brothers
CPLEX and CONOPT. They lack some functionality (e.g. CPLEXD does not
solve QCP models) but offer in-core communication between GAMS and the
solver. No large model scratch files need to be written to disk which
can save time if you solve many models in your GAMS program. This
in-core execution is activated by setting
modelname.solvelink=5; before the solve statement.
|Solver/Platform availability - 22.7: May 1, 2008|
Digital Unix 4.0
|1)GAMS distribution for HP 9000/HP-UX is 22.1.|
|2)GAMS distribution for SGI
IRIX is 22.3.