Moving from GAMS IDE to GAMS Studio

Posted on: 27 Jul, 2022 Roadmap General

GAMS IDE has been part of the GAMS distribution for more than 20 years. The software was originally written in Delphi, and is progressively getting more difficult to maintain: It is getting harder to find seasoned Delphi developers, and the toolchain support is falling behind what is available in other programming languages. Importantly, Delphi support is restricted to Windows, but we want to have a good GAMS development environment in place on all our supported platforms. For these reasons, we decided to start with a blank slate and started development of GAMS Studio in C++ in early 2019, using the cross platform QT framework. GAMS Studio has been the default GAMS development environment since GAMS release 31  and we plan to discontinue GAMS IDE in the near future.

In a recent survey we conducted among a random sample of our users, we learned that a significant proportion of Windows customers still use GAMS IDE and have not made the switch to GAMS Studio. There are a variety of reasons for this, such as lack of time to learn a new tool, or bugs present in earlier Studio versions. We have been busy ironing out those bugs, and addressing specific issues and feature requests from our users, so please give Studio a try soon (or have another look if you have tried earlier versions).

Below is a brief tour of the important features that make Studio a great environment for developing GAMS models.

Project handling

Projects are a way to keep track of the various input files, data files and output that belong together. When starting GAMS Studio for the first time, it starts with an empty Project Explorer . Opening a new file creates a new project per default. For each Studio project you can set a "base directory", which is the  root of the project's directory structure shown in the project explorer. You can also set a "working directory", to tell GAMS where to place the files generated during model runs. The two directories can be identical, or you can choose to set them to different values.

 

In GAMS Studio one can move a file between projects by drag and drop in the project explorer and add multiple .gms files to a project. In this case the concept of the “main file” of projects becomes important: While the classic GAMS IDE always executes the currently active .gms file, GAMS Studio always executes the main file of the currently active project. As an example, you can look at a.lst and press F9 to rerun a.gms (GAMS IDE would not run anything in this case). After adding b.gms to project a, you can also execute a.gms by pressing F9 while looking at b.gms in the editor. If you want to execute b.gms instead, you can make it the main file of the project. For this, right-click in the project explorer on b.gms and select “Set as main file”. Now the green arrow indicating the main file of a project in the project explorer switches from a.gms to b.gms and pressing F9 will execute b.gms in the project working directory.

 

It should be noted that what is shown in the project explorer of GAMS Studio is only a view into the file system: If you remove a file from a project, it is not deleted from the filesystem. Also, if you drag a file from one project to another in the project explorer, the file is not actually moved into the project folder. Instead, the file stays at its original location within the file system.

Support of Engine, MIRO and NEOS server

Model deployment is becoming ever more important. To address this need, we have developed GAMS MIRO for generating graphical user interfaces for GAMS models, and GAMS Engine to support running GAMS models on centralized, powerful servers. Both of these new products make it easy to share models with distributed teams and to make use of compute resources in the cloud.

MIRO Support

GAMS Studio fully supports GAMS MIRO development (if you do not know about MIRO yet, please have a look at our product page  and the example gallery  to learn more). Once you have annotated your GAMS model with MIRO language features, you can launch the MIRO configuration mode  directly from Studio to configure the graphical user interface of your MIRO application. Once you are done, you can start the application, and also use the Assembly and Deploy feature to create a self contained MIRO application that you can share with others or deploy with MIRO server.

 

Engine Support

If you want to run your models on GAMS Engine , it is as simple as selecting the menu item, and then entering the URL, and your username and password for your Engine installation or for your Engine SaaS account. Studio will take care of uploading the model code to Engine, queuing it to be solved, and downloading the results when the job is finished. The whole process is totally transparent and feels the same as solving a model locally on your own computer, but with the benefit of having access to much more powerful compute resources. For our academic users, we also include the option to run your model on NEOS, which is a free service provided by the university of Wisconsin and provides access to a range of different commercial solvers. To learn more about this, have a look at this blog article .

 

GDX viewer

GDX files are the native GAMS data exchange format, which contain sets, variables, equations and all the other bits that make up the input or output of a GAMS model. With the Studio GDX Viewer you can get a quick overview of all these components in a list or in a tabular view. In the case of multi-dimensional data, you can rearrange the tabular view by simply dragging a column to another position. You can also filter and sort, and quickly copy data to Excel or other spreadsheet software by right clicking in the table, and copying data in comma- or tab-separated format. The GDX viewer is fast, which makes analysing bigger datasets a breeze.

 

In addition to the GDX viewer, there also is a GDX Diff utility , available from the project explorer (select two GDX files, right click and select “Open in GDX Diff”), or from the “Tools” menu. This tool  allows you to comcpare the content of two GDX files, e.g. to compare the results of two model runs with different input data.

Reference file viewer

When your models grow in size and you start splitting things up into multiple files, it can become difficult to keep track of where certain elements are defined and referenced. GAMS Studio offers the reference file viewer to help you keep track of where things come from, and where they are used. With the reference file viewer you can drill down into all the sets, parameters, equations and more of your model and get exact line numbers where they are used. Clicking on a location then takes you directly to the correct place in your model code. You can find more information about the reference file viewer in the GAMS documentation .

 

Editor for default GAMS configuration

Default GAMS configuration  options can be set in the file  gamsconfig.yaml. This can be edited by hand, but Studio offers a much more convenient configuration editor, which allows you to set individual defaults and gives a brief explanation for each option and the available values for the different options.

 

Other Modern editor features

GAMS IDE is 20 years old, and you can definitely tell that when looking at all the modern editor features that you get with Studio, but not with the old IDE.

Distraction free mode. Gets rid of all widgets / windows but the main one. Great in combination with the full screen mode, especially on smaller screens.

Code completion, tooltips, help integration. Just start typing a GAMS keyword, and Studio will present you with a list of completions. Hover your mouse over a keyword, and Studio will show a small tooltip with a brief explanation of the keyword. If your model contains errors, the tooltip will help you get to the bottom of the problem. Press F1 on a keyword, and Studio will open the relevant section in the GAMS documentation.

Code folding. Collapse multi-line code sections such as $onText comments, $onEmbeddedCode sections, if statements and more.

Selectable Text Encoding. You can write GAMS modes using your preferred encoding and include emojis if you wish.  GAMS IDE only had support for ISO-8859-1, while Studio defaults to UTF-8.

Dark mode. For the night owls, you can switch Studio to dark mode, or even create your own custom editor themes.

There is also block editing, navigation history, bookmarks, help integration, duplicate editor tabs with synchronised scrolling ('pin view'),  and much more.

Not available in GAMS Studio

At this stage, there are a few things not available in GAMS Studio, which have been available in the GAMS IDE. One of them is the text diff tool, which we plan to integrate at a later stage. Until then, you can use any of the excellent free or paid diff tools available, e.g. WinMerge on Windows, kdiff3 on Linux, Beyond Compare (not free) on Mac, or the cross-platform meld.

Another feature we did not include in Studio is the ability to create graphs directly in the GDX viewer. We feel that other, external tools such as Excel are much better at this, and copying data into Excel to plot them can be done with a couple of clicks.

To find out more about GAMS Studio, have a look at the documentation. And as always, if you have the feeling something is not working as expected or there is an important feature missing, please do not hesitate to let us know at support@gams.com