# Info: GAMS has launched a new language (library and API) for python

**URL:** <https://discourse.julialang.org/t/info-gams-has-launched-a-new-language-library-and-api-for-python/106266>\
**Category:** Optimization (Mathematical)\
**Tags:** jump, news\
**Created:** [November 15, 2023, 2:39pm UTC](https://discourse.julialang.org/t/info-gams-has-launched-a-new-language-library-and-api-for-python/106266 "2023-11-15T14:39:53Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [November 15, 2023, 2:39pm UTC](https://discourse.julialang.org/t/info-gams-has-launched-a-new-language-library-and-api-for-python/106266/1 "2023-11-15T14:39:53Z")

</div>

Just to share the news with you, it seems GAMS has reinvented itself today, throwing away its archaic and odd language with the launch of GAMSpy, a library (and API) to write and solve mathematical optimization models directly in Python:  
[https://www.gams.com/sales/gamspy\_facts/](https://www.gams.com/sales/gamspy_facts/)

There is still very little out there, but I wonder how it stands in terms of expressiveness, as one of the mayor advantages of JuMP over Pyomo for me is the more concise syntax available thanks to Julia macros.

Also, at this point, one wonder if there is still space for a new paying optimization library, that need to be learn, when Pyomo and JuMP do already a good job.

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [November 15, 2023, 7:41pm UTC](https://discourse.julialang.org/t/info-gams-has-launched-a-new-language-library-and-api-for-python/106266/2 "2023-11-15T19:41:06Z")

</div>

The source code is available: [GitHub - GAMS-dev/gamspy: Python-based algebraic modeling interface to GAMS](https://github.com/GAMS-dev/gamspy)

The docs (including examples) are available here:  
[https://gamspy.readthedocs.io/en/latest/user/notebooks/blend.html](https://gamspy.readthedocs.io/en/latest/user/notebooks/blend.html)

I haven’t tried it myself, but if anyone does and finds a feature that they think would be useful in JuMP, please let me know 😄

One concrete work item is to make it easier for the JuMP matrix to produce data frames: [Improve support for relational algebra · Issue #3438 · jump-dev/JuMP.jl · GitHub](https://github.com/jump-dev/JuMP.jl/issues/3438).

You have always been able to combine JuMP with DataFrames.jl or a database, but it often requires a different modeling style compared with the ‘nested summation’ syntax you often see in math papers. See these tutorials for examples:

- [The diet problem · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/linear/diet/)
- [The factory schedule example · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/linear/factory_schedule/)
- [The multi-commodity flow problem · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/linear/multi/)
- [The network multi-commodity flow problem · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/linear/multi_commodity_network/)
