Skip to content

Releases: GAMS-dev/gamspy

v1.23.0

27 Apr 12:40

Choose a tag to compare

GAMSPy 1.23.0 (2026-04-27)

New features

  • #795: Add support for RNN for TorchSequential.
  • #796: Add Gated Recurrent Units (GRU) formulation.
    Add support for GRU for TorchSequential.
  • #797: Support GAMS for statements via a context manager. The syntax is as follows: with gp.For(index, start, end, step, direction): ...
  • #799: Implement projection and aggregation functions in gamspy.math module.

Improvements in existing functionality

  • #722: Reset symbol records to its default values in case symbol.setRecords(None) is called.
  • #796: Add dunder str method for all Neural network formulations.

Improved documentation

  • #798: Add a note in the documentation about the requirement of CMU serif font to generate a pdf file with model.toLatex function.

CI/CD changes

  • #791: Replace pip-audit with uv audit.
  • #801: Use uv trixie slim images to avoid pulling bigger images than necessary.

Miscellaneous internal changes

  • #795: Add tests for RNN in TorchSequential formulations.
  • #796: Add new tests for GRU.
    Add tests for GRU in TorchSequential formulations.

v1.22.0

09 Apr 19:21

Choose a tag to compare

GAMSPy 1.22.0 (2026-04-09)

New features

  • #770: Add Recurrent Neural Networks (RNN) formulations.
  • #787: Support "if" control structure of GAMS via gp.If context manager. Support "Break" and "Continue" via functions in gp.Loop.

Improvements in existing functionality

  • #782: Import pandas and numpy lazily.

Bug fixes

  • #792: UniverseAlias.records call now returns all previously registered elements in the universe instead of the labels of all the data in the container.

Improved documentation

  • #789: Update the installation page for on-prem license server license installation.

Miscellaneous internal changes

  • #770: Restructured neural network tests.

v1.21.0

06 Mar 10:55

Choose a tag to compare

GAMSPy 1.21.0 (2026-03-06)

New features

  • #778: Support len operation on all symbols, and operations.
  • #786: Support "loop" control structure of GAMS via gp.Loop context manager.

Improvements in existing functionality

  • #773: Allow renaming the output of model.convert function.
  • #775: Provide load_symbols explicitly when it's known in synch_with_gams calls.
  • #779: Only unload the GDX library when the GAMS system directory changes.
  • #783: Get rid of all suffixes if the input file to 'gamspy mps2gms' is a zip file (e.g. indus89.mps.gz). The output python file will be named indus89.py instead of indus89.mps.py.
  • #785: Use model attributes to return the summary of the solve instead of parsing the trace file.

Bug fixes

  • #784: Mitigate the issue of one environment affecting another on the same machine with package managers that keep a global cache (e.g. pixi).

v1.20.0

18 Feb 17:45

Choose a tag to compare

GAMSPy 1.20.0 (2026-02-18)

Improvements in existing functionality

  • #765: Return FormulationResult instance for Neural Network formulations (pooling, convolution, and linear layers).
  • #772: Allow specifying gdx and python files as an option in 'gamspy mps2gms' command. Add '--compress' option to 'gamspy mps2gms'.

Bug fixes

  • #777: Fix model attribute updates for frozen models.

Improved documentation

  • #764: Sync tabs in embed neural networks docs.
  • #771: Add a FAQ entry about running model instances in MPS or LP format.

Dependencies

  • #774: Upgrade gamspy_base and gamsapi dependency ranges.

Miscellaneous internal changes

  • #768: Use pytest's tmp_path for tests instead of creating temp directories manually.

v1.19.3

06 Feb 14:19

Choose a tag to compare

GAMSPy 1.19.3 (2026-02-06)

Bug fixes

  • #769: Revert the commit that causes a breaking change in the behaviour of container.loadRecordsFromGdx. If a symbol in the gdx file does not already exist in the container, create it automatically.

v1.19.2

29 Jan 12:26

Choose a tag to compare

GAMSPy 1.19.2 (2026-01-29)

Bug fixes

  • #766: Fix the bug in literal validation where the domain set does not have any records.

v1.19.1

28 Jan 14:12

Choose a tag to compare

GAMSPy 1.19.1 (2026-01-28)

Bug fixes

  • #763: Reverts breaking change in loadRecordsFromGdx that was released in 1.19.0.

v1.19.0

28 Jan 09:36

Choose a tag to compare

GAMSPy 1.19.0 (2026-01-27)

Improvements in existing functionality

  • #763: Accept Path-like load_from argument in container.loadRecordsFromGdx function.

Bug fixes

  • #763: Make loadRecordsFromGdx respect .synchronize attribute of symbols.

Improved documentation

  • #752: Add more examples in API reference.

CI/CD changes

  • #757: Replace pre-commit with prek.

Miscellaneous internal changes

  • #725: Add a new example showing the usage of solution pools.
  • #751: Add AGENTS.md file to guide coding agents.
  • #756: Move dev, test and doc dependencies to depedency groups instead of optional dependencies.
  • #758: Update the validation error message that is raised in case debugging_level is not set.

v1.18.4

10 Jan 10:22

Choose a tag to compare

GAMSPy 1.18.4 (2026-01-10)

Improvements in existing functionality

  • #747: Remove DE, GAMSCHK, LOGMIP, and ODHCPLEX from the list of licensed solvers when running gamspy show license.

Improved documentation

  • #755: Rewrite model and container user guides and improve api reference files across the board.

CI/CD changes

  • #748: Automate releases on Github using GitHub Actions.
  • #754: Cache uv and python downloads in the setup phase for subsequent jobs.

Miscellaneous internal changes

  • #750: Add mcp12.py to the test models.

1.18.3

19 Dec 13:03

Choose a tag to compare

GAMSPy 1.18.3 (2025-12-19)

New features

  • #712: Integrate mps2gms to gamspy cli.

Improvements in existing functionality

  • #730: Read the values of most model attributes from the trace file. Lazily read others if requested.
  • #740: Improve the alignment of constraints in the result of model.toLatex call.

Bug fixes

  • #742: Do not perform definition valiation on MPSGE equations since they are generated on the GAMS side.
  • #743: Use gp.Number instead of a Python variable in nonbinding equations of MCP models.
  • #745: Retrieve universe alias name from stack in case it's not provided instead of autogenerating a name.