43 Distribution

43.1.0 Major release (April 27, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Pedro Andres Sanchez-Perez, Mogens Bech Laursen, Bruce McCarl, Scott McDonald, and Thomas Rutherford.

Platforms

  • The GAMS distribution is now also available as a native build for macOS 13 on ARM64 CPUs (Apple M1/M2). Compared to the macOS system for x86_64 CPUs, these are the differences:
    • Third-party software for which no native builds are available (so far):
      • BARON and hence no GAMS/BARON
      • FICO XPRESS and hence no GAMS/XPRESS
      • Matlab and hence no GAMS Transfer Matlab
    • Effects from Intel's Math Kernel Library not being available:
    • The clang compiler frontend is Apple's preferred way to build C/C++ programs on macOS. A GCC variant of the high-level C++ API library has therefore not been included for this platform. GCC users can build the library from source.
    • Components marked as deprecated have not been ported:
      • GDXMRW
      • GDXRRW
    • Support for Python 3.7 and macOS versions 11 and 12 are not included.

GAMS System

GAMS

  • The command line parameter logOption will change with the next major release. Currently, logOption=1 sends the log output to the console (i.e. con: or /dev/tty). This feature is planned to be dropped. LogOption=1 will become a synonym for the default logOption=3, which sends the log output to the standard output.
  • Added new command line parameter writeOutput, which allows to suppress the creation of the output file completely.
  • Added new keyword executeTool and put_utility 'execTool' to invoke tools from the GAMS tools library (see below) at execution time.
  • Added new dollar control options $callTool and $hiddenCallTool to invoke tools from the GAMS tools library (see below) at compile time.
  • Added new dollar control options $gdxLoadAll and $declareAndLoad, which allow a convenient import of all (even undeclared) symbols from a GDX file at compile time.
  • Added new dollar control options $on/offImplicitAssign, which allow to suppress compilation error 141 ("Symbol declared but no values have been assigned."). This is useful in situations where the compiler is unaware that symbols are loaded implicitly (e.g. execute_loadpoint "solutionfile.gdx").
  • Added a new section to the end of the reference file that lists all files included.
  • Extended some internal limits to allow generation of huge scalar models.
  • Renamed compile time constants platformCode.DEG and platformCode.LEG to platformCode.DEX and platformCode.LEX, respectively, to be consistent with the system attribute platform.
  • Minor adjustment to the return code of the function readyCollect: In the past, it returned 0 only if it waited until a job is ready to be collected. Now, it also returns 0 when there is a job ready to be collected without the need to wait for it (that case returned 1 in the past; now the meaning of 1 has changed to "There is neither an active job to wait for nor a job ready to be collected").
  • Fixed function platformCode (was not working properly on macOS and Linux).
  • Fixed an issue converting strings of length 255, which could cause problems when creating GDX files.
  • Fixed a bug where scalars where not updated properly when implicitly loaded from embedded code inside a loop.

Documentation

  • The PDF version of the documentation will be dropped in a future release.

Embedded Code Facility

  • React on interrupt signal (e.g., from Ctrl-C) when executing embedded code. If an interrupt signal is received, the execution is interrupted and a compilation or execution error gets issued.
  • Setting gams.debug only affects the debug behavior of the GamsWorkspace since the exception traceback is always enabled now.
  • Fixed exception traceback being written to stdout instead of GAMS log.
  • Fixed wrong line numbers in exception traceback.

GAMS Connect

  • Exception traceback has been enabled for unhandled Python exceptions.
  • The debug option of the Options agent has been deprecated and will be removed in a future version. Use the Options agent with trace > 0 instead to get the exception traceback of Connect errors .
  • Fixed exception traceback being written to stdout instead of GAMS log.
  • Added RawCSVReader agent to Connect.
  • Updated long label renaming logic in RawExcelReader so that the suffix number ~n gets incremented only when necessary.
  • With pandas version 1.5.0, the mad aggregation method is deprecated and, therefore, will not be available for the Projection agent in a future release.
  • The Concatenate agent now supports concatenating the same symbol more than once.
  • The SQLReader and SQLWriter agents (former PandasSQLReader and PandasSQLWriter) have been revised and now support native SQL connections for faster read/write operations. Both agents now connect to MySQL, Postgres, MS-SQL (SQL-Server), SQLite and PyODBC through their respective python package. pandas.DataFrame class' I/O API methods read_sql and to_sql can be used in combination with connectionType sqlalchemy and allows to connect to any other database if the relevant drivers are present on the system.
  • The SQLWriter agent supports writeAll. If True, all symbols (sets and parameters) in the Connect database will be written to the specified database.

GMSPython

  • Added the packages pymssql and pymysql. For macOS on ARM64 CPUs the additional package freetds has been added as a dependency for pymssql.

Solvers

ANTIGONE, CBC, Ipopt, SCIP, SHOT

  • New libraries Intel MKL 2023.1 on Linux and macOS for x86_64.

CBC

  • New libraries Cbc 2.10.10, Cgl 0.60.7, Clp 1.17.8, CoinUtils 2.11.8.
    • Extensions to symmetry handling.
    • New values fastish, lightweight, moreprinting, cuts, and cutslight for option OrbitalBranching.
  • New libraries nauty 2.8.6.
  • As announced, the CBC alias COINCBC has been dropped.

CONOPT

  • As announced, the CONOPT3 alias CONOPTD has been dropped.

CONVERT

  • The AMPL .nl writer can now write equation marginals as well.
  • Added options AmplNlInitDual and AmplNlInitPrimal to specify which equation marginal and variable level values to write to AMPL .nl file.
  • As announced, the CONVERT alias CONVERTD has been dropped.

COPT

CPLEX and OSICPLEX

  • GAMS/CPLEX can now be used to solve LPs and MIPs without a GAMS/CPLEX or GAMS/CPLEX Link license, but with a OSICPLEX license. It is thus similar to the GAMS/CPLEX Link license, but restricted to (mixed-integer) linear problems. To use ranging, conflict analysis, feasopt, tuning, column generation, solution pool, lazy constraints, quadratic constraints, indicator constraints, linear user cuts, multi-objective optimization, priorities, benders decomposition, or user callbacks, a GAMS/CPLEX or GAMS/CPLEX Link license is still required.
  • GAMS/OSICPLEX is now an alias for GAMS/CPLEX. The alias GAMS/OSICPLEX will be dropped with a future major release. Former GAMS/OSICPLEX option files cannot be processed by GAMS/CPLEX.
  • As announced, the CPLEX alias CPLEXD has been dropped.

DE

  • Introduced an experimental and hidden option deDict to produce a text file with dictionary type information of the generated deterministic equivalent.

DECIS

  • As announced, the EMP-SP solver DECIS has been dropped. This does not effect the stochastic LP solvers DECISC and DECISM. They remain in the system.

Examiner

  • Examiner is now solveLink=5 capable. Some cosmetic output changes were made.

GUROBI and OSIGUROBI

  • New libraries 10.0.1.
  • GAMS/GUROBI can now be used to solve LPs and MIPs without a GAMS/GUROBI or GAMS/GUROBI Link license if a separate GUROBI license is installed on the machine. It is thus similar to the GAMS/GUROBI Link license, but restricted to (mixed-integer) linear problems. To use quadratic constraints, indicator constraints, general or nonlinear constraints, lazy constraints, multi-objective optimization, multiple MIP starts, partitions, MIP stop expression, solution pool, feasopt, iis, sensitivity analysis, or tuning, a GAMS/GUROBI or GAMS/GUROBI Link license is still required.
  • GAMS/OSIGUROBI is now an alias for GAMS/GUROBI. The alias GAMS/OSIGUROBI will be dropped with a future major release.

IPOPT

  • As announced, the IPOPT alias COINIPOPT has been dropped.
  • New libraries 3.14.12.
    • Fixed that for a square problem, the dual solution sometimes did not satisfy optimality conditions even though the problem was claimed to be solved to optimality.

KESTREL

  • Removed access to discontinued IBM DOcloud.

LINDO/LINDOGLOBAL

  • New libraries 14.0.255.

MILES

  • As announced, the MILES alias MILESE has been dropped.

MINOS

  • As announced, the MINOS aliases MINOS5 and MINOS55 have been dropped.

MOSEK and OSIMOSEK

  • GAMS/MOSEK can now be used to solve LPs and MIPs without a GAMS/MOSEK or GAMS/MOSEK Link license if a separate MOSEK license is installed on the machine. It is thus similar to the GAMS/MOSEK Link license, but restricted to (mixed-integer) linear problems. To use second-order, semidefinite, power, or exponential cones, a GAMS/MOSEK or GAMS/MOSEK Link license is still required.
  • GAMS/OSIMOSEK is now an alias for GAMS/MOSEK. The alias GAMS/OSIMOSEK will be dropped with a future major release.
  • GAMS/MOSEK should work equivalently to GAMS/OSIMOSEK in most cases. The main differences are:
    • A MIP solve is now followed by an LP solve with all discrete variables fixed by default. Use option SOLVEFINAL to turn this off.
    • Setting GAMS option integer2 does not enable writing the instance to a file anymore. Set option MSK_SPAR_DATA_FILE_NAME instead.

Octeract

  • New libraries 4.7.1.

ODHCPLEX

  • New libraries 7.07.
    • New option addcuts: Indicator for adding cuts from CPLEX master solve.
    • New option firstfeaslpitlim: Limit on number of relaxed re-solves in first feasible heuristic.
    • New option firstfeasrelaxcrit: Smallest sum of infeasibilites/row where relaxed solution used.
    • New option ignoresetslvrparams: Flag to control whether solver parameters can be dynamically altered by ODH.
    • New option keypartition: Use of solver partition information.
    • New option keysminimum: Minimum number of keys that the automatic decomposition method attempts to find.
    • New option localsearch: Indicator for local search heuristic.
    • New option loosefeastol: Loose feasibility tolerance.
    • New option objthreshold: Threshold for absolute value of objective coefficients.
    • New option sosfind: Automatic detection of special ordered sets (SOSs).
    • New option sosinkey: Assign each SOS to its own sub-model component (key).
    • New option sosmember: Automatically detect SOSs whose variable member names match this pattern.
    • New option sosovar: Automatically detect SOSs whose output variable name matches this pattern.
    • New option sosselect: Select sub-set of SOS members.
    • New option sosselect16: Select sub-set of SOS members for sets with 16 or fewer members only.
    • New option soswvar: Automatically detect SOSs whose input(weight) variable name matches this pattern.
    • New option strictdeterministic: Terminate ODH deterministically when improvement heuristic finishes.
    • New option subcheckfreq: Frequency with which sub-model LPs are interrupted for mutual communication.
    • New option tightenprebounds: Level of bound tightening in ODH presolved model.
    • New option trialbound: Trial bound heuristic.
    • New option trialboundfile: Trial bound file.
    • New option trialboundsetsize: Size adjustment to automatically generated trial bound sets.
    • New option usehistory: Use of past sub-model selections in current selection.
    • New option varcleanlpmethod: Method used to solve variable cleaning LPs.
    • Changed lower bound of option interdiv to 1.
    • Removed lower bound of option seed. Changed default value to 12345.
    • Changed lower bound of option feastol to 0 and upper bound to 1.
    • Changed lower bound of option subnodelimit to -2.
    • Changed lower bound of option divisor to 2 and default value to 4.
    • Changed upper bound of option decompdensity to 1.
    • Changed upper bound of option firstfeascontinue to 2. Changed option type to integer.
    • Changed default value of option firstfeasshift to 0.
    • Changed default value of option recurseminiterlim to 10.
    • Changed default value of option variableclean to 1.
    • Removed option newcallback.
    • Removed option odhpresolve.
    • Removed option subpresolve.

PATH

  • The PATH alias PATHC has been dropped.

SCIP

  • New libraries bliss 0.77.
  • As announced, the SCIP alias COINSCIP has been dropped.

SOPLEX

  • As announced, the SOPLEX alias OSISOPLEX has been dropped.

XPRESS and OSIXPRESS

  • New libraries 41.01.03.
  • GAMS/XPRESS can now be used to solve LPs and MIPs without a GAMS/XPRESS or GAMS/XPRESS Link license if a separate XPRESS license is installed on the machine. It is thus similar to the GAMS/XPRESS Link license, but restricted to (mixed-integer) linear problems. To use quadratic constraints, nonlinear constraints, indicator constraints, priorities, MIP trace, solution pool, a GAMS/XPRESS or GAMS/XPRESS Link license is still required.
  • GAMS/OSIXPRESS is now an alias for GAMS/XPRESS. The alias GAMS/OSIXPRESS will be dropped with a future major release.

Tools

$LibInclude files

  • The libinclude files gdxservice, linalg and win32 are deprecated and will be removed in a future release. Please use the corresponding tools of the more flexible and convenient GAMS tools library instead.

CHK4UPD

  • As announced, the command line tool CHK4UPD has been dropped. The functionality of that tool is still available through GAMS Studio.

CSDP

GAMS Studio

  • New version 1.14.2.
    • Improved command line parameter handling for projects:
      • Added editor for parameter file.
      • Added "Add new GAMS Parameter File" to Project Explorer context menu.
      • Added selection of main and parameter file in Project Settings.
    • Added GAMS Engine authorization by token.
    • Added GDX Viewer setting to control decimal separator used when copying data.
    • Added "File Used" section in reference file viewer.

GAMS Tools Library

GDXTROLL

  • As announced, the tool gdxtroll has been dropped.

MPS2GMS

  • MPS2GMS can now be instructed to add up or ignore multiple coefficients for the same term in the objective or a constraint of an LP file. See new option DUPLICATES in the MPS2GMS documentation.

APIs

GAMS Engine API

  • Updated for GAMS Engine version 23.03.31.

GAMS Transfer Matlab

  • Breaking: Symbol.domain_labels now mirrors the column or field names for domains in Symbol.records. Changing Symbol.domain_labels will change Symbol.records and vice versa. Symbol.domain_labels now exists in struct and table format only. Domain fields in records are those fields that are not one of the following:

    • Variables and equations: level, marginal, lower, upper, scale.
    • Parameters: value.
    • Sets: text.

    Furthermore, the default labels changed: If Symbol.domain_names is a unique list of domain names, then those names are used as domain labels. Otherwise, the previous label strategy "<name>_<dim>" is used. For example, a symbol with domain {i, j}, now has domain labels i and j in records and with a domain {i, j, i} it stays i_1, j_2, i_3 (unless the table columns or struct fields are named differently by the user).

  • Added possibility to modify Symbol.domain_labels to any unique list of domain labels. If Symbol.domain is modified, domain labels are reset to default label strategy, described above.
  • Changed Symbol.domain_forwarding to be a vector of length Symbol.dimension to enable/disable domain forwarding for each dimension independently.
  • Removed Symbol.getCardinality, Symbol.getUELLabels, Symbol.initUELs, and Container.getUniverseSet.
  • Fixed possibly incorrect order of UELs of symbols in dense_matrix or sparse_matrix format.
  • Fixed Symbol.setRecords for cell input and symbols of dimension >= 3.

GAMS Transfer Python

  • Breaking: renamed generateRecords argument densities to density.
  • Breaking: removed the getCardinality method.
  • Breaking: renamed * column for UniverseAlias symbols to uni to be more consistent with other symbol formats.
  • Breaking: new dataframe column naming convention. Defaults to domain_names if unique. If not unique, domain_names will be tagged with a dimension index. Can be customized with new domain_labels setter functionality.
  • Container and ConstContainer have been made iterable.
  • Exposed Const* symbol classes to the user in order to enable better tab completion behavior.
  • New symbol method toValue (for scalar symbols) – returns symbol records as float (underlying Pandas DataFrame is not modified).
  • New symbol method toList (for all symbols) – returns symbol records as a python list.
  • New symbol method toDict (for only Parameter, Variable and Equation symbol types) – returns symbol records as a python dict.
  • Allow a list of bool to be passed to domain_forwarding to selectively forward set elements.
  • Following GAMS convention, singleton sets can no longer be used to define a symbol domain.
  • Small adjustments to the object string representation (__repr__) functions.
  • Added an is_scalar symbol property to (Const)Variable and (Const)Equation symbols.
  • Added support for len function to Container and ConstContainer – returns the number of symbols in the container.
  • Added support for PathLike objects in load_from argument.
  • Better handling of str type relative paths in load_from argument.
  • Drop unused categories from columns when using generateRecords.
  • Fixed bug in getUELs when there were unused categories in the domain set and the data were out of order from the category order. Impacted behavior of toDense and toSparseCoo methods.
  • Removed the previously deprecated getUniverseSet method, use <container>.getUELs() instead.
  • Better error message with whereMin, whereMax, whereMaxAbs functions if all symbol values are NaN.

GAMS Transfer R

  • New libraries 1.16.0.
    • Added checks for singleton and multidimensional checks in Symbol method isValid().
    • Changed the default domain labels. User-specified domain labels are preserved if unique.
    • Performance improvement in Container method read.

GDX

  • Added new function gdxDataReadRawFastEx that behaves like gdxDataReadRawFast but works with a callback function that also has the DimFrst and UserMem argument.

GMO

  • Added new function gmoGetObjL to get objective activity level. This is useful when reformulating models.
  • Functions gmoEvalFuncNLCluster and gmoEvalFuncNLCluster_MT are declared deprecated and will be removed with the next major release.

Java

Matlab

  • Added option implicitAssign to GAMSOptions and enumeration class ImplicitAssign.

.Net

  • GAMSModelInstance of this version is not compatible anymore with GAMS 33 or older.

Python

  • Added support for Python 3.11.
  • GamsModelInstance of this version is not compatible anymore with GAMS 33 or older.
  • The Python examples located in <sysdir>/api/python/examples have been updated and revised.
    • The examples xp_example[1|2].py have been renamed to core_example[1|2].py.

Model Libraries

GAMS EMP Library

GAMS Model Library

GAMS Test Library

Solver/Platform availability matrix

x86 64bit
MS Windows
x86 64bit
Linux
x86 64bit
macOS
arm 64bit
macOS
ALPHAECP 2.11
ANTIGONE 1.1
BARON
CBC 2.10
CONOPT 3
CONOPT 4
COPT 6.5
CPLEX 22.1
DECIS
DICOPT 2
GUROBI 10.0
GUSS
IPOPT 3.14
HiGHS 1.5
KESTREL
KNITRO 13.2
LINDO 14.0
LINDOGLOBAL 14.0
MILES
MINOS 5.6
MOSEK 10
NLPEC
OCTERACT 4
ODHCPLEX 7
PATH
QUADMINOS 5.6
SBB
SCIP 8.0
SHOT 1.1
SNOPT 7.7
SOPLEX 6.0
XPRESS 41.01

43.2.0 Minor release (May 04, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Michael Ferris and Mehmet Sert.

GAMS System

GAMS

  • Improved the dollar control options $declareAndLoad to consider domain information and the subtype of a symbol as well (i.e., distinguish between positive and free variables).

Solvers

CPLEX, GUROBI, XPRESS

  • Fixed that the bare-bone mode to solve LPs or MIPs was not accessible.

GUROBI

  • Fixed that models with quadratic equations were rejected when using model type (D/(R)MI)NLP.

Tools

GAMS IDE

  • Fixed that GAMS did not run anymore.

APIs

GAMS Transfer R

  • New version 1.18.
    • Added isScalar property for the symbols of type Variable and Equation.
    • Updated symbol method reorderUELs(). If the argument uels is not passed, UELs are reordered based on the records.
    • Symbol method isValid now checks also for scalars with more than one record entries.
    • Breaking: Symbol method toDense() now requires domain UELs and domain records to be in the same order and unused UELs in the domain (if any) at the end of the UEL list.
    • Breaking: Container method read now preserves the domain type from the source and avoids domain linking by symbol name.
    • Breaking: Symbol method getCardinality is removed.
    • Fixed bug in longer symbol description.
    • Fixed bug in accessing Container symbols in a case-insensitive manner.
    • Fixed bug in the Container method describeAliases.

Jupyter Notebooks

  • New optional argument --system_directory=<path/to/gams> for gams_reset used to explicitly specify a GAMS system directory.

Python

  • The pip extras all and connect now install psycopg2-binary instead of psycopg2 in order to avoid additional dependencies when installing the GAMS Python API.

Model Libraries

GAMS Test Library

43.3.0 Minor release (May 18, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release.

GAMS System

GAMS

  • Fixed a wrong default value of 255 for the command line parameter putPW (the default is actually 32767).

Solvers

COPT

  • New libraries 6.5.3.

HIGHS

  • Fixed that solver link crashed when interrupted.

Tools

GAMS Studio

  • New version 1.14.3 with some bug fixes and minor enhancements, for example:
    • Added abort and abort.noError to highlighter and completer.
    • Fixed connecting to GAMS Engine via HTTPS on macOS.
    • Fixed GAMS Engine failing when using a parameter file.
    • Fixed false detection of parmFile command line parameter.
    • Fixed font not immediately updating after changing it in "Settings > Editor & Log".
    • Fixed crash in Connect Editor when opening a file containing unknown schema name.

APIs

Jupyter Notebooks

  • Fixed a bug where specifying the --system_directory argument of gams_reset had no effect.

Python

  • Fixed a problem with the debug output of Control API destructors.

43.3.1 Maintenance release (June 01, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Gabriel Homsi.

GAMS System

Installer

  • Fixed a problem of the Windows installer that prevented successful installation with a system account that misses a user documents directory.

Solvers

HiGHS

  • Fixed crash when resolving model instance after modification of constraint coefficients.

43.4.0 Minor release (June 15, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Bruce McCarl, Alberto Valsecchi, and Wolfgang Britz.

GAMS System

GAMS

Solvers

COPT

  • New libraries 6.5.4.

Tools

GAMS Studio

  • New version 1.14.4 with some bug fixes and minor enhancements, for example:
    • Delay license dialog to ensure Studio is already visible.
    • Added information to system log with Studio start arguments.
    • Added warning to system log if setting files could not be created.
    • Fixed issues with parameter file on macOS and Linux.
    • Fixed project setting for parameter file lost or reset on Studio restart.
    • Fixed OpenSSL issue for Manjaro, Ubuntu 22.04 LTS, and similar Linux distributions.

43.4.1 Maintenance release (June 22, 2023)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Guido M. Bazzani, Hirotaka Isogai and Bruce McCarl.

Solvers

CONOPT

  • Fixed that when CONOPT reported about variables or equations to the listing file, the wrong variable/equation was refered to (the prior variable/equation was mentioned instead).

CPLEX

  • Fixed that a wrong CPLEX algorithm was called for final solve of a MIQP with fixed discrete variables.
  • Automatically change the optimality target to look only for a locally optimal solution (value 2) of a fixed MIQP solve.

Tools

GAMS Studio

  • New version 1.14.5 with some bug fixes:
    • Fixed error link from lst to code not working.
    • Fixed parameters ignored when no pf-file is assigned to the project.
    • Fixed order of parameters: parameter-box can overrule pf-file.
    • Fixed parameters were cleared when project settings were opened.
    • Fixed pf-file set to -none- hasn't been stored.
    • Fixed project file name contains suffix like ".gms" when automatically created.