What GAMS version is required to run MIRO?

During the beta phase a special GAMS distribution will be available which contains GAMS MIRO. The regular GAMS distributions are completely independent of this.

Which operating systems are supported?

The local version of MIRO runs on Windows, MacOS as well as Linux.

Does all the data for my model need to come from MIRO?

No. You can read external data from any data source supported by GAMS just as you did before. For example, you can place an Excel file in your model folder and import the data from this file into GAMS using the GDXXRW utility.
Note however, that MIRO is running your GAMS model from a temporary working directory. This means that any $call or execute commands need to be executed with absolute paths instead of relative ones. GAMS MIRO is providing you the path to your model via idir1. This means, in order to import e.g. an Excel file test.xlsx, GDXXRW needs to be called like this: $call gdxxrw i=%gams.idir1%test.xlsx. Alternatively, you can also use absolute paths (e.g. via $setNames "%gams.input%" fp fn fe (see here).

What languages are supported?

Currently GAMS MIRO ships with language files for English and German. If you would like to add another language, we are more than happy to add more languages to this list. For more information about how to generate language files see the section on Language Files

Can I contribute to improve GAMS MIRO?

Yes, absolutely! If you find bugs or have ideas about how to improve MIRO, you are more than welcome to share those with us! Additionally, you can contribute by supplying new language files or custom renderers! We also welcome any prototypes/PoCs which you think that can help others to get started, to improve and/or to come up with new ideas of what can be done with GAMS MIRO and optimization in general. In any case, please contact miro@gams.com!

Can I use all solvers which I have a license for with MIRO?

Yes, all solvers with a valid license can be used with MIRO.

Will there be limits to the run time or the model size?

No, as long as a valid GAMS license exists, there are no limitations regarding the run time or size of a model.

Can I use MIRO without a GAMS model but work with data only?

Yes, but it should be noted that GAMS MIRO is very closely interwoven with GAMS. In order to be able to use MIRO without GAMS, adaptations to the code of GAMS MIRO are necessary.

Can I use Unicode characters in MIRO?

Yes. Unicode characters are supported throughout MIRO. However, in case you use Unicode characters in your GAMS model (e.g. in the explanatory text), make sure that your source file is UTF-8 encoded. You can change your file encoding in GAMS Studio via Edit->Encoding->convert to...->UTF-8.


How can I customize my MIRO app?

Graphics, tables as well as other customization options are specified via the <modelname>.json file inside the directory: <modeldirecory>/<modelname>.json. In order to generate the <modelname>.json file you can use our Configuration Generator.

Do I have visualization options other than those shipping with GAMS MIRO?

Yes. You can write your own Custom Renderers in R using MIRO's R API.

Can I also write my own custom functions to generate input data?

No. This is currently not supported, but might be added in later development stages depending on the demand for this feature.

Can I use an Excel spreadsheet to import data?

Of course! You only have to make sure that you it is properly formatted. This means that you have to create a new sheet for every dataset and the data has to start in the cell A1 (upper left hand corner). Note further that the column headers are specified in the first row.

Can I set up GAMS MIRO on a server where multiple users can solve GAMS models?

Yes. Besides the presented desktop version we also develop an enterprise version, which will run on a server and will offer features like multi-application management, user access management, load balancing, rolling updates, etc.

How can I start the MIRO Hypercube mode?

How to get to the Hyperube mode:
  • When you are in the base mode, you can simply click the “Switch to Hypercube mode” button in the header bar and you will automatically be redirected.
  • Alternatively, you can start the Hypercube mode directly via the switch: miromode=1 (in addition to miro=launch) from within GAMS Studio or the command line.
See also: here

What happens when using input data which results in infeasible or unbounded results?

In GAMS MIRO both the log and the lst file of the current GAMS model run are displayed. Any information about infeasibilities and unboundness is also visible here. Further checks on infeasibilities and unboundness are not performed. If a model is infeasible (or unbounded) this still leads to a normal completion of the GAMS job (unless you check the model status and trigger an abort based on an unexpected model status). A normal completion of GAMS is interpreted by GAMS MIRO as an error-free run. The view switches to the output section and will show the content of your output symbols (even if they are empty or show the infeasible solution provided by some first phase algorithm). If the GAMS model is aborted for any reason, this will also result in an abort in GAMS MIRO. A corresponding message is displayed in GAMS MIRO and no output is displayed.

GAMS MIRO related files


The <modelname>_io.json file, for example transport_io.json, is located in the <modelname>/conf directory. It contains the metadata of all input and output symbols defined between the $onExternalInput / $offExternalInput and $onExternalOutput / $offExternalOutput tags in the corresponding GAMS model. The <modelname>_io.json file is created each time a MIRO app ist started via GAMS Studio or the command line and should not be changed.


The <modelname>.json file, for example transport.json, is located in the <modelname>/conf directory. It contains the configuration of graphics, input widgets, language and all other model-specific configurations for a MIRO app. This file has to be filled manually by the user.
Like the <modelname>_io.json file, the structure of this file is based on a schema with which the file is validated when a MIRO app is started.


Every time you start a MIRO app via GAMS Studio or the command line (i.e. in development mode), a gdx container is created in the directory data_<modelname>. This file contains data extracted from the GAMS model and will be stored in the MIRO database under the scenario name: default at the next start of your app.


This file is generated when starting a MIRO app in development mode. It contains configuration data and should not be changed.


This file is also generated when starting a MIRO app in development mode. It contains information for the startup of a MIRO app and should not be changed.

<modelname>.miroconf / <modelname>_hcube.miroconf

These files are generated when starting a MIRO app in development mode. They contain the configuration and initialization steps of an app and can by used by an executable for a fast startup of MIRO. Learn more here.

<modelname>.cmd / <modelname>.app

An app of a GAMS model can be started via command line or via GAMS Studio (e.g. gams transport.gms miro=launch). However, there is the possibility to create an executable file for a GAMS MIRO app. By adding the double-dash parameter --mkapp=1 to the GAMS call, a cmd file (Windows) / app file (MacOS) is created which can execute the app. Learn more here.


What is a model in the context of GAMS MIRO?

We call any .gms file that you run with the command line option miro a model. Inside this .gms file you may include or call other files or applications, just as you would do with any GAMS program.

What is a scenario in the context of GAMS MIRO?

We call the collection of input and output datasets that result from a particular model run and which are communicated with MIRO a scenario.

What does Job mean in the context of GAMS MIRO?

A Job describes the submission of one or more GAMS runs.

What does Hypercube mean in the context of GAMS MIRO?

Hypercube mode is a mode in GAMS MIRO that automatically generates scenarios. Input widgets you defined for your scalars in the base mode are automatically expanded in the Hypercube mode (e.g. a slider is expanded to a slider range and a single-dropdown menu is expanded to a multi-dropdown menu etc.). This now lets you configure multiple scenarios at once. MIRO will now automatically compute the cartesian product (or, as we call it, the Hypercube) over scalars you expanded. The results can then be filtered, analyzed, downloaded etc. For more information see the section about the MIRO Hypercube mode.

What does Hypercube Job mean in the context of GAMS MIRO?

A Hypercube Job describes a set of scenarios for a particular model which MIRO generated automatically by expanding the cartesian product over all selected scalars. For more information see the section about the MIRO Hypercube mode.

What is a (Hypercube) job tag?

A Hypercube job tag is an identifier attached to all scenarios of a Hypercube job. Job tags can help you find scenarios of a particular Hypercube job. They can also be useful for scenario analysis. In case a model run is characterized by data that is not part of the input data specified via MIRO, job tags are important to distinguish different runs with the same input data. Suppose you are interested in finding out how sensitive your model is with regard to computing power. Thus, you run the same set of scenarios once on a high performance computing cluster and once on your local machine. As both times you used the exact same set of scenarios, MIRO can't distinguish both runs. However, you can attach different tags to the two jobs. This lets you discriminate a scenario that ran on the cluster from one that ran on your local machine. The same can be applied in case you use different solver option files.

What is meant by development mode?

You are in development mode when you start a MIRO app from GAMS Studio or via command line. In both cases current model-specific configuration files are written in binary format at startup. An app executable created with --mkapp=1 can access these files, so that the start up of this (non-development mode) approach is much faster.


What license is GAMS MIRO released under?

GAMS MIRO is released under the GNU General Public License, either version 3 of the License, or (at your option) any later version. For a copy of this license, see http://www.gnu.org/licenses/


Who should I contact in case I have problems or remarks?

You can use any of the channels you also have if you face problems with the core GAMS system. However, the best way is via our forum. This way, other users who might have similar questions can profit as well from the answers you receive. Alternatively you can also contact us by mail at miro@gams.com