What GAMS version supports MIRO?

All GAMS versions >= 30.2 support GAMS MIRO.

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.

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?

The configuration can be done via a graphical configuration interface, with which you can create plots and widgets or change certain settings with a few mouse clicks, visually supported by a live preview. In addition, the configuration can also be done manually via the <modelname>.json file inside the directory: <modeldirecory>/<modelname>.json.

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?

yes. MIRO has an API that allows you to use e.g. charts to produce input data. We call this feature custom input widgets. These are not available in Configuration Mode, but must be implemented manually. You can find more information here.

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 MIRO Desktop version we also develop a MIRO Server version, which will offer features like multi-application management, user access management, load balancing, rolling updates, etc.

How can I start the MIRO Hypercube Mode?

Just like the Base Mode, the Hypercube Mode can be started directly from GAMS Studio or the command line. For the latter, the environment variable MIRO_MODE=hcube needs to be set instead of MIRO_MODE=base. The other steps (see here) remain the same. MIRO automatically processes and adjusts your Base Mode configuration so that it will work in Hypercube Mode.

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 can be 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.
Note: You can write an own report / log and integrate it into MIRO which is then visible in the GAMS interaction section. In such a custom report you can also deal with infeasibilities and unboundness.

GAMS MIRO related files


The <modelname>_io.json file, for example transport_io.json, is located in the <modelname>/conf_<modelname> 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 and should not be changed. If you use the command line, please follow these steps.


The <modelname>.json file, for example transport.json, is located in the <modelname>/conf_<modelname> directory. It contains the configuration of graphics, input widgets, language and all other model-specific configurations for a MIRO app. This file can be filled manually by the user. However, the easiest way for the configuration is the Configuration Mode.
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.

<modelname>_<version_number>.miroconf / <modelname>_<version_number>_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.


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 the command line with the environment variable MIRO_DEV_MODE set to true). Every time you launch MIRO in development mode, your app resources (configuration, README file, data files etc.) are loaded and validated, so your application is always in sync with your current GAMS source. Once you want to share your application with other people you can deploy it. Deployed apps work with a compiled version of your resources, so they tend to launch faster. However, this also means that you can no longer change your app without deploying a new version.


What license is GAMS MIRO released under?

GAMS MIRO is released under version 3 of the GNU General Public License. For a copy of this license, see http://www.gnu.org/licenses/. Full license information, including third-party software included in MIRO, can be found here.


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