42 Distribution

42.1.0 Major release (February 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 Wolfgang Britz and Brian Sergi.

Platforms

  • As announced, dropped support for macOS 10.15 (Catalina).
  • As announced, dropped support for Windows 8.
  • Added support for macOS 13 (Ventura).

GAMS System

  • The End User License Agreement (eula.pdf in the GAMS system directory) has been updated to version 01/2023.

GAMS

  • Change for the profile option: Entry Solve Alg was renamed to Solver. The value reported with it matches now the value from model attribute etSolver. In previous versions, Solve Alg was reported to be zero when running with solveLink=0. This has been fixed.
  • Improved speed in GAMS and GDX for models with many labels.
  • In case the overall GAMS program uses some extrinsic functions but the particular model instance does not, then the extrinsic functions are not loaded any longer into the solver link.
  • Added dollar control option $save[.keepCode] to create a work file during compilation.

Connect

  • Added new Filter agent to reduce symbol data by applying filters on labels and numerical values.
  • The PandasExcelReader now enforces sufficient ranges. A range must cover the complete dimension of a symbol including its value (parameter) or text (set). Reading set element text is mandatory and can no longer be skipped. Dropping unwanted text can be achieved using the Projection agent.
  • The PandasExcelWriter supports .xlsx and .xlsm files. .xls files are not supported. For other file formats, such as .ods files, it might be required to install additional Python packages.
  • The PandasExcelReader supports .xlsx and .xlsm files. For other file formats, such as .xls or .ods files, it might be required to install additional Python packages.
  • Improved exception messages for various Connect agents.
  • Fixed bug where writer agents would fail if a symbol was read empty by one of the reader agents.
  • Fixed a bug in the PythonCode agent that prevented local variables to be accessible in a subsequent enclosing namespace.

Embedded GAMS Code Facility

  • Added GAMS to the family of supported embedded code languages.

Embedded Python Code Facility

  • Fixed a crash when using gams.printLog() with LogOption being set to 0 (no log output).

GMSPython

  • The Python version of GMSPython has been updated to 3.8.16.

Solvers

BARON

  • New libraries 23.1.5.
    • Significant improvements for quadratic programs, tree management strategies, and integer presolve.

CBC

  • The time reported back to GAMS (e.g., resUsd attribute) is now measured by the clock that is specified by the clocktype option.
  • We plan to drop the CBC alias COINCBC with the next major release.

CONOPT

  • We plan to drop the CONOPT3 alias CONOPTD with the next major release.

CONVERT

  • Added concurrent mode (value 3) to option qextractalg.
  • We plan to drop the CONVERT alias CONVERTD with the next major release.

COPT

CPLEX

  • New libraries 22.1.1.0.
    • Added option cardls: decides how often to apply the cardinality local search heuristic (CLSH).
  • Added concurrent mode (value 3) to option qextractalg.
  • Changed default of rerun to nono. With this change the solver may not be able to distinguish between unbounded and infeasible models anymore and may just report the model to be infeasible. In order to check for unbounded models, set rerun to yes to rerun the optimization with presolve turned off.
  • We plan to drop the CPLEX alias CPLEXD with the next major release.

DE

DECIS

  • We plan to drop the EMP-SP solver DECIS with the next major release. This does not effect the stochastic LP solvers DECISC and DECISM. They will remain in the system.

GUROBI

  • New libraries 10.0.0.
    • Added option softmemlimit: Soft memory limit.
    • Added option obbt: Controls aggressiveness of optimality-based bound tightening.
    • Added option networkalg: Network simplex algorithm.
    • Added support of nonlinear constraint r =e= sigmoid(x) (or r =e= 1 / (1 + exp(-x))), see Gurobi: Nonlinear Programming.
  • Added concurrent mode (value 3) to option qextractalg.
  • Changed default of rerun to -1 (no). With this change the solver may not be able to distinguish between unbounded and infeasible models anymore and may just report the model to be infeasible. In order to check for unbounded models, set rerun to 1 to rerun the optimization with presolve turned off.
  • Fixed multimipstart: Initial guess could have been sent to Gurobi in a wrong order and thus be rejected by Gurobi, e.g., as infeasible.
  • Removed requirement of being a MIP to use mipstart, multimipstart, or varhint because Gurobi may switch to "MIP mode" (branch-and-bound) during solve (e.g. for nonconvex QCPs).

HiGHS

IPOPT

  • We plan to drop the IPOPT alias COINIPOPT with the next major release.

KNITRO

  • New libraries 13.2.0.
    • New option presolveop_redundant: Determine whether or not to enable the Knitro presolve operation to detect and remove redundant constraints.
    • New option mip_gomory: Specifies rules for adding Gomory mixed-integer cuts.
    • New value for option presolveop_tighten: 2 and 3.
    • New value for option mip_clique: -1 (new default). Removed value 3.
    • New value for option mip_knapsack: -1 (new default). Removed value 3.
    • New value for option mip_zerohalf: -1 (new default). Removed value 3.
    • New value for option mip_liftproject: -1 (new default). Changed option type to integer.
    • Changed default value of option mip_cutting_plane: 1.
  • Added concurrent mode (value 3) to option qextractalg.

LINDO/LINDOGLOBAL

  • New libraries 14.0.204.
  • Added option empInfoFile to LINDO.

MILES

  • We plan to drop the MILES alias MILESE with the next major release.

MINOS

  • We plan to drop the MINOS aliases MINOS5 and MINOS55 with the next major release.

MOSEK

OCTERACT

  • New libraries 4.6.0.
    • Removed the possibility to use Gurobi or Xpress as MIP solver. Removed GUROBI and XPRESS from possible values for options MILP_SOLVER and MIP_SOLVER.

ODHCPLEX

  • Added concurrent mode (value 3) to option qextractalg.
  • Changed default of rerun to nono. With this change the solver may not be able to distinguish between unbounded and infeasible models anymore and may just report the model to be infeasible. In order to check for unbounded models, set rerun to yes to rerun the optimization with presolve turned off.

SCIP

  • We plan to drop the SCIP alias COINSCIP with the next major release.

SELKIE

  • We plan to drop the research solver SELKIE with the next major release.

SHOT

SOPLEX

  • We plan to drop the SOPLEX alias OSISOPLEX with the next major release.

XPRESS

  • New libraries 41.01.01.
    • Dynamic adjustment of the reliability threshold for pseudo cost updates.
    • Improved branching strategies on MIP models with highly degenerate objective function.
    • Extended the effect of numericalEmphasis to some bound tightening reductions. This can help to avoid wrong answers in case of numerically challenging problems.
    • New option globalBoundingBox: If a nonlinear problem cannot be solved due to appearing unbounded, it can automatically be regularized by the application of a bounding box on the variables.
    • New option timeLimit: Maximum time in seconds that the Optimizer will run before it terminates, including the problem setup time and solution time.
    • New option solTimeLimit: Maximum time in seconds that the Optimizer will run a MIP solve before it terminates, given that a solution has been found.
    • New option preConfiguration: Determines whether binary rows with only few repeating coefficients should be reformulated.
    • New option primalOps: Allows fine tuning the variable selection in the primal simplex solver.
    • New options cutSelect_gomory and treeCutSelect_gomory: Strong Chvatal-Gomory cuts.
    • New options cutSelect_farkas and treeCutSelect_farkas: Farkas cuts.
    • New option feasibilityJump: Decides if the Feasibility Jump heuristic should be run.
    • New bits in cutSelect, treeCutSelect and barRegularize.
    • New option value (2) for xslp_solver: Use Xpress-Optimizer if possible (convex quadratic problems only).
    • New default for option xslp_iterLimit: 1000.
    • New default for option xslp_mipDefaultAlgorithm: 3.
    • Option xslp_postsolve has been changed from boolean to integer with new default -1: Postsolve if the problem could be solved to optimality/infeasibility.
    • Options maxStallTime and maxCutTime have been changed from integer to double options.
    • Deprecated options maxTime (use timeLimit or solTimeLimit instead), cacheSize, l1Cache and sleepOnThreadWait.
    • Removed options extraPresolve and lpThreads.
  • Added concurrent mode (value 3) to option qextractalg.
  • New bit options barPresolveOps_standard, barPresolveOps_extra, barPresolveOps_full.

Tools

$LibInclude gdxservice

  • Added tool GDXEncoding to convert labels in a GDX file from one encoding to another one.

CHK4UPD

  • We plan to drop the command line tool CHK4UPD with the next major release. The functionality of that tool will still be available through GAMS Studio.

CSDP

  • We will remove the tool/solver csdp in a future GAMS release. GAMS/MOSEK should be used instead.

GAMS Studio

  • New version 1.13.1.
    • New feature: GAMS Connect editor.
    • Project handling / Project Explorer improvements:
      • Projects get now saved to separate files automatically (GSP - GAMS Studio Project).
        • Each project is stored in a separate file, the Project Settings show a representation of that.
        • File menu and context menu now provide Open Project, New project, Move Project File, and Copy Project.
        • Import project and Export project have been removed.
        • A project name is tied to the name of the project file.
        • Projects in different paths with the same name get a number added. This number is assigned in the "name and path" order, so changing the path of a project may change the assigned number.
      • Fixed that projects were not always saved properly.
    • GDX Viewer improvements:
      • Improved numerical formatting of the GDX Viewer when using g-format with Full precision.
      • State of GDX files is now persistent even after restarting Studio.
      • Added symbol filter to GDX state and persist it.
      • Added support for label and value filters in GDX Viewer export functionality.
    • Improved Check for Update dialog, including HTML output and text updates.
    • Studio checks now online for a new available GAMS version when started (can be changed in the settings).
    • Stability improvements, bug fixes, and minor enhancements, e.g.:
      • Improved request behavior of GAMS Engine server communication.
      • Adjusted Replace All to show search term in clear text instead of internal representation.

GDXCOPY

  • Fixed a problem with missing relaxed domain information in the copied GDX file.

GDXTROLL

  • We will remove the tool gdxtroll in a future GAMS release.

GDX2XLS

  • We will remove the tool gdx2xls in a future GAMS release. GAMS Connect agent PandasExcelWriter should be used instead.

MPS2GMS

  • New libraries HiGHS 1.4.1 for LP/MPS reading.

XLS2GMS

  • We will remove the tool xls2gms in a future GAMS release. GAMS Connect agent PandasExcelReader should be used instead.

XLSDUMP

  • We will remove the tool xlsdump in a future GAMS release. GAMS Connect agent RawExcelReader should be used instead.

APIs

.Net

  • Changed the TargetFramework of the GAMS .Net API from 4.0 to 4.5.
  • Added method RunEngine to GAMSJob class to run jobs on GAMS Engine, rather than locally.

Matlab

  • Added option SuffixAlgebraVars.
  • Added option values RoundedFloatingDec (3) and ForEFloatingDec (4) to option PutNR.

GAMS Transfer Matlab

  • Improved performance of Container.hasSymbols. Among others, this has a significant effect when adding many symbols.
  • Added support of partial write.
  • Added parameter symbols to Container.write, Container.getDomainViolations, Container.resolveDomainViolations and Container.isValid.
  • Added parameter allow_merge to Container.renameUELs and Symbol.renameUELs in order support merging UELs while renaming (renaming a UEL to an already existing UEL).

GAMS Transfer Python

  • New generateRecords method to automatically generate records from domain information.
  • New pivot convenience method to pivot symbol records into various shapes.
  • Removed possible dict type for rtol and atol in equals method.

GAMS Transfer R

  • removeSymbols removes symbol links in other symbols.
  • Added symbols argument to Container methods renameUELs and removeUELs.
  • findDuplicateRecords now returns a data frame instead of row indices.
  • Breaking: Container data field is now an ordered dictionary from collections package instead of named list. Instead of m$data$<symbolname>, use m[<symbolname>].
  • Performance improvement to Container method hasSymbols. This results in significant speed-ups when adding multiple symbols to the container.
  • Added symbols argument to Container methods getDomainViolations, hasDomainViolations, countDomainViolations, dropDomainViolations, hasDuplicateRecords, countDuplicateRecords, dropDuplicateRecords, isValid, and write for partial operation.
  • Container method getSymbols now always returns a list.
  • Added equals method to Symbols to check if symbols are equal.
  • Bugfix in SpecialValues$isNA.
  • Bugfix in getUELs for scalar symbols.
  • Bugfix in Symbol method isValid for symbols containing only NA.
  • Bugfix in Variable and Equation set records for numeric inputs.
  • Added equals method for Container and ConstContainer.

Jupyter Notebooks

  • Removed methods gams.pivot and gams.pivot2d. This functionality is now available from GAMS Transfer Python via the pivot method.
  • As announced, the package gams_magic_legacy has been removed, use gams.magic instead.

Python

  • The GAMS Python API structure has been revised. Detailed information about the new structure can be found in the Python API documentation:
    • Attention
      Due to the changed structure of the API, import statements in existing code might not work anymore - please refer to Migrate import statements for details on how to migrate.
    • Replaced the use of distutils by setuptools. Installation/uninstallation of the Python API is now done using pip.
    • All examples have been moved to <sysdir>/api/python/examples and are organized by sub packages.
    • Documentation has been restructured and contains information on the GAMS numpy API (previously gams2numpy) now.

Model Libraries

GAMS Model Library

GAMS Test Library

API Library

Solver/Platform availability matrix

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

42.2.0 Minor release (February 16, 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 Lorena Reyes-Rubiano.

GAMS System

GAMS

Solvers

CONOPT

  • New libraries 4.30.
    • Fixes an error (stop without termination message) for models with dummy objective function.

Tools

MPS2GMS

  • Fixed that parameter COLUMNINTVARSAREBINARY could not be set.
  • Fixed that objective function was lost if MPS reading falled back to the reader for the fixed MPS format.

APIs

GAMS Transfer R

  • Significant performance improvement when reading from a GDX file.
  • Partial domain forwarding is now allowed by passing a logical vector as the domainForwarding argument.
  • Added generateRecords method for Symbols to automatically generate records.

42.3.0 Minor release (March 02, 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 Yuzar Aryadi, Wolfgang Britz, Geoffroy Duparc-Portier, Scott McDonald, and Tom Rutherford.

GAMS System

GAMS

  • Fixed a bug which could have caused a crash when option clear/kill was used inside a loop on symbol attributes.
  • Fixed a bug which caused a potentially wrong dump file when Singleton Sets are loaded.
  • Fixed a bug that could have caused an unwanted error in rare cases when relaxed punctuation was used to declare a list of symbols without separating them by comma.

GAMS Connect

  • Fixed a problem with labels containing non-printable characters as well as wrong sheet size calculations in RawExcelReader.
  • Fixed a problem in RawExcelReader with workbooks that did not have any cells with numerical data.
  • Fixed bug in the CSVReader agent where indexSubstitutions in a stacked dimension would lead to NaN.
  • Fixed bug in the CSVReader agent where indexSubstitutions would also substitute in the value column of parameters.
  • Fixed bug in the CSVReader agent where index and text columns were read as numeric.
  • Fixed bug where the CSVWriter agent converts the text column of a set to numeric.
  • Fixed bug where the Concatenate agent converts GAMS NA into GAMS UNDF for a symbol that solely has GAMS NA und UNDF records.

Solvers

CPLEX

  • Fix for the case that solvefinal failed: GAMS/CPLEX will now return the solution from the preceeding full solve.

MOSEK

  • Added workaround for crash when GAMS/Mosek link terminates after running Mosek with multiple threads.

Tools

GAMS Studio

  • New version 1.13.3 with some bug fixes and minor enhancements, for example:
    • Added a special group -GAMS-System- on project level to bundle files like Changelog and gamsconfig.yaml.
    • Added support for macro symbol in Reference File Viewer.
    • Enabled controls for empty symbols in GDX Viewer as well.
    • Fixed crash when reloading an empty GDX symbol in table view mode.
    • Fixed several memory leaks.

42.4.0 Minor release (March 16, 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 Erwin Kalvelagen and Pedro Andres Sanchez-Perez.

GAMS System

GAMS

GAMS Connect

  • Fixed bug where the Projection agent unintentionally alters source symbols in the Connect database.

Solvers

BARON

  • New libraries 23.3.11.
    • Fixed that a wrong dual bound was reported for a maximization problem when interrupted by the user (SIGINT).

CONOPT

  • Worked around some library symbol mix-ups when using both CONOPT 3 and CONOPT 4 in the same GAMS process with solvelink 5 or higher on Linux.

COPT

  • New libraries 6.0.5.

CPLEX

  • Fixed hanging program after fulfilled or ignored mipstopexpr.

HiGHS

MOSEK

  • New libraries 10.0.38.

SCIP Optimization Suite

  • New libraries SCIP 8.0 (1870b6ada8).
  • New libraries PaPILO 2.1 (cf0c6277).

SHOT

  • New libraries 1.1 (3ba57397).

Tools

GAMS Studio

  • New version 1.13.4 with some bug fixes and minor enhancements, for example:
    • Added support for Connect filter agent to Studio connect editor.
    • Fixed crash on creating an .opt file via context menu in the Project Explorer.
    • Fixed wrong .opt file extension which prevented saving.
    • Fixed value edit in GAMS Configuration Editor and allowed to delete minVersion and maxVersion values.
    • Fixed GdxDiffDialog crash after opening an input file on macOS.

APIs

GAMS Transfer Python

  • Fixed a bug associated with long symbol descriptions

Python

42.5.0 Minor release (March 30, 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 Jason Hayes and Scott McDonald.

GAMS System

GAMS Connect

  • Fixed the Projection agent failing on empty symbols.

Installer

  • Fixed a problem of the Windows installer that prevented successful installation with a system account (e.g. when using SCCM).

Solvers

PATH and PATHNLP

  • New libraries 5.0.07.

CONVERT

  • Fixed writing eps instead of 0 for linear coefficients in GAMS format.

Tools

subsubsection g4250_STUDIO GAMS Studio

  • New version 1.13.5 with some bug fixes and minor enhancements, for example:
    • Added automatic opening of project editor after creating a new project.
    • Fixed duplicated tab in reference file viewer when reloading a reference file.
    • Fixed crash on macOS when a GAMS related file is opened via double-click in Finder.
    • Fixed broken compilation error link to .gms file in .lst file.

APIs

GAMS Transfer R

  • Significant performance improvements when writing a GDX file from a Container.
  • Fixed bug in Container read when reading a Symbol with unused UELs.
  • Fixed bug in todense method for Symbol.
  • Fixed bug in writing empty container.
  • Added Symbol method copy to copy symbol from one Container or ConstContainer to another Container.
  • Added Container and ConstContainer method copy to copy symbols to another Container.
  • Fixed bug in using ConstContainer Alias methods when the aliased parent set is absent.