Related:
FAQ
A number of common questions are answered. The FAQ is divided into sections.
General questions, system requirements, etc.
How/when was Gekko started?
Gekko was started in 2008, first used for solving the EMMA model. From 2009 and onwards, Gekko has also been used to solve the ADAM model and others, including quarterly models, and Gekko is also being used to analyze GAMS models. In addition, Gekko is being used as a data management system.
Is there a Mac or Linux version?
At the moment: no. But you may use virtualization software like Parallels, Wmware or VirtualBox to run Gekko on Mac or Linux. At one point in the future, Gekko will migrate from .NET Framework to .NET Core, and the latter can run on Linux and Mac. So at that point, offering Gekko on these systems would be a lot easier (but there is still the question of user interface, though…). Read more here.
Is Gekko tied to any country or model?
No. Gekko started out running and solving a particular Danish model ADAM, but everything Gekko-related is written in English, and Gekko is not tied to the ADAM model, and runs other models, too (including being used to analyze GAMS models). Gekko is being used as a general data management system, too.
Is Gekko easy to use?
Yes, the intention was to provide a software package that does not entail a steep learning curve, or a lot of programming skills. You can type Gekko commands line by line in interactive sessions, but if you deal with complicated matters or large systems, Gekko command files can perform such programming tasks for you, too.
Can I use Gekko in a commercial application?
You cannot use Gekko code inside a closed-source commercial application. If you use or modify the Gekko source code, the resulting application must be open-source, too (to comply with the GNU GPL licence). This is the whole idea of open-sourcing. But you may still use Gekko commercially. Say you develop a model and a corresponding databank. In that case, you may distribute the package of Gekko + model + databank commercially, provided that you do not alter the Gekko files against the spirit of open-sourcing (see more about the Gekko organization, forking etc. here). Gekko can of course be used free of charge for teaching purposes, too.
Are both 32- and 64-bit Windows or Excel supported?
Yes, for the time being. In the longer run, Gekko 32-bit and Gekcel 32-bit will be slowly phased out. But as long as there are a non-negligeable number of Windows 32-bit of Excel 32-bit systems used in the wild, Gekko 32-bit will live on.
Does Gekko offer statistics/econometrics?
Gekko has an OLS command for linear regression and also supports linear algebra (matrices), but is not an econometrics software. If you need more advanced econometrics, you would be advised to interface with for instance Python or R (cf. PYTHON_RUN or R_RUN).
Will there be more syntax changes in Gekko?
Probably not any major syntax changes, like the breaking changes introduced in Gekko 2.0 and 3.0. Nowadays there are many lines of Gekko code in existence, and breaking changes are always a pain for the users. It seems that the Gekko 3.0 syntax works well and feels both flexible and consistent, so future syntax changes are expected to be tweaks, not complete overhauls.
Are Gekko and GEKKO Optimization Suite related?
No. GEKKO Optimization Suite is a Python-based optimizer (started around 2018) that has nothing to do with Gekko.
Data management
Which data file formats are supported?
Gekko interfaces directly with Excel (.xls/.xlsx), Python and R. Apart from that, it reads its own databank format (.gbk), .tsd, .csv, .prn, gdx (GAMS), px (PC-Axis) and PCIM files (.bnk). In addition, some interface functionality regarding TSP is available, and similar regarding Apache Arrow files. The Gekcel component can be used to run Gekko from inside an Excel workbook.
What frequencies are supported?
At the moment, annual, quarterly, monthly, weekly, daily or undated. Other frequencies could easily be added, depending on popular demand. You can collapse data ‘points’ from Excel with arbitrary frequencies into a chosen frequency with IMPORT<collapse>). See also the COLLAPSE and INTERPOLATE commands.
What about multidimensional data?
Gekko supports multidimensional data in the form of so-called array-series. So you may for instance represent the population as an array-series, with dimensions like sex, age, origin, education level, etc. The implementation of array-series complies rather tightly with GAMS syntax for the same.
Modeling
How large models can Gekko deal with?
There is no fixed limit: Gekko has run models with around 20.000 equations, but larger models should be feasible, especially when using Gekko in a 64-bit version.
Does Gekko solve models with leads (forward-looking)?
Yes, Gekko has solvers that deal with this.
How many goals/means can Gekko deal with at the same time?
There is no limit to this. Gekko has solved models with hundreds of simultaneous goals/means (cf. the ENDO/EXO commands).
Can I use GAMS together with Gekko?
Yes, Gekko 3.0 and 3.1.x has a lot of interfaces in relation to GAMS. Gekko reads gdx files with data, and can also extract equations from .gms files. In this way, you may use Gekko for viewing and data manipulation, while solving the model itself with your favorite GAMS solver. From Gekko 3.1.14 and on, you may load a GAMS model and decompose its equations (cf. the DECOMP command).
Programming and syntax
Does Gekko handle matrices?
Yes, matrices and quite a lot of matrix operations (linear algebra) is supported in Gekko. (More exotic needs can be handled via the Python or R interfaces). Gekko 3.0 and 3.1.x also offers nested lists, and these can be used to represent multidimensional data (arrays).
What are the main Gekko special characters?
Gekko uses sigils to distinguish between timeseries (no symbol), scalars (‘%’), and lists/maps/matrices (‘#’). The ‘!’ symbol is used to indicate frequencies, and the ‘:’ symbol is used to denote databanks (use ‘@’ to denote the special reference databank). Dollar (‘$’) is used for conditions, similar to GAMS. Wildcards are ‘*’ and ‘?’ as in most computer languages. Commas ‘,’ are generally used to separate items, and a command line must end with ‘;’.
Does Gekko use a parser for command files?
Yes, it uses ANTLR to parse the files, and transform them into C# code that is subsequently run by Gekko.
Can you save Gekko programs in libraries?
Yes, Gekko 3.1.12 and on supports putting Gekko command files in libraries for better encapsulation and reuse, cf. the LIBRARY command. Gekko supports user-defined procedures and functions.