**什么是 GAMS ？**

请浏览 show_software.aspx?pName=GAMS

w__w_w._p__o_m__ine.co_m__

需要下载试用，请填写 产品咨询表

w_w_w._p__o__mi__n__e_._c_o_m_

GAMS 22.7 的新特性：

--

Acknowledgements

w__w_w.po__m__ine._co_m

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.

w_w_w__.p_o_m_in__e.c__o__m_

GAMS System

w_w_w__._p_o__mine.co_m_

**GAMS**

w__w_w.__p_o_mi__n_e_._co__m__

**Enhanced Data Statements**

ww__w__.pom_in__e_.c__o__m_

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 /

www.__p_om_i_ne._co_m_

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, `$onmulti, $ondelim`

and `$onempty`

can be used as well.

www_.p_o_m__i_ne._c_o_m

**The Matching Operator**

w_ww_._p_o__mi_n_e_.__c_om__

Mappings between n-tuples can be clumsy to enter via data statements and are often difficult to compute. Similar to the product operator (`.`

) 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 `ijk`

, then apply the matching operators to `i`

and `j`

and finally apply a product operation to the matched `(i,j)`

with `k`

which results in: i1.j1.k1, i1.j1.k2, ..

i2.j2.k1, i2.j2.k2, ..

And `x`

will match `ijk`

with the set `l`

resulting in: i1.j1.k1.l1, i1.j1.k2.l2, ..

**Limit on Memory Use - HeapLimit**

w__w_w._po_mi_ne__.c_o_m

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
`HeapLimit`

sets the limit of memory use at compile and execution time for a GAMS job

- The function/property
`HeapLimit`

can be used to interrogate the current limit and allows it to be rest

- The NLP solver CONOPT also has a
`HeapLimit`

option which ensures that the solver will not use more dynamic memory

**Other enhancements**- 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
`.range`

is 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
`$eval`

and `$ife`

statement can now reference scalar parameters and the function `card(id)`

- 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
`$load setid=parameterid`

**Gams Data Exchange (GDX)**- 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

**GDX Utilities**- GDXDUMP writes now data for variables and equations (no longer surrounded by $ontext / $offtext)

- MDB2GMS allows writing of an empty symbol

- GDXXRW
- 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=*

**GAMSIDE**- 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)

**GAMS Model Library****GAMS Test Library**- 30 new models, including
- Tests for proper handling of domains larger than 10 and UEL names longer than 31 characters

- Testing of gdxmerge with aliased sets

- New tests for DECISC and DECISM

- Several models testing EMP

**Documentation**- Updated McCarl GAMS User's Guide

Solvers

w__w_w__.__p_o__m_i__ne__.__c_o_m_

**BARON:**

w_ww__._p__o_mi_ne_.c_o_m_

New libraries (version 8.1.4)

w_ww.p_om_i_n_e.c_o_m_

**CPLEX**

www._p__o_m_i_n_e_._c_om_

New libraries (version 11.0.1)

www__.p_om__i_n_e__.__c_om__

**COIN-OR**- New MIP solver GAMS/SCIP from Zuse Institute Berlin (ZIB)

- use as
` option mip=coinscip; `

- 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.

**CONOPT****EMP - Extended Mathematical Programming**

w__w_w._po__m__i__n_e__._co_m_

(Experimental) Framework for automated mathematical programming reformulations as- Bilevel Programs

- Disjunctive Programs

- 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.

w__ww_.p_o_mi__n_e.__com__

**LOGMIP**

w_w_w_._p_o_m__i_ne__.__c_o__m__

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**MOSEK**

w_w__w__._p__o_m_i__n_e_._c_o__m_

New libraries (version 5.0.0.79)

w__ww_.p_om_i_n_e._c__om_

**CPLEXD and CONOPTD**

www_.__p_omi_n__e_._c__o_m_

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.

w_w_w_._p_o__m__i__n_e._com__

Solver/Platform Availability Matrix