Related:

- Features (parent page)

## Modeling

Gekko has powerful capabilities regarding large-scale timeseries-based models. See the list of all features, or read more about modeling below.

##### Short-list of all main Gekko features

- Timeseries-oriented software, with flexible databanks. Array-series (for sparse data) are provided.
- Annual, quarters, months, weekly, daily and undated frequencies supported, more to come. Conversions between these are in-built.
- Values, dates, strings, lists, maps, etc., including many functions dealing with these.
- Matrix calculations, including construction, addition, multiplication, inversion, etc. Also supports nested lists that can represent arrays of data.
- Seasonal correction via X12A.
- Graphics by means of embedded gnuplot.
- User-defined functions and procedures, and libraries can be used to store these.
- Dynamically loaded and compiled models, including failsafe mode.
- Gauss and Newton solvers, with ordering and feedback logic. Fair-Taylor or Newton-Fair-Taylor solver for forward-looking models. Any number of simultaneous goals/means possible.
- In-built equation browser, with integrated labels/explanations.
- Decomposition/tracking of changes in model equations (also supports GAMS models).
- GAMS-style expressions supported, including sums over sets, $-conditionals, etc.
- Tabelling and menu system, outputting in text, html or Excel.
- Read/write from Excel or other spreadsheets. Formats like tsd, prn, csv supported.
- So-called 'Gekcel' add-in for Excel, so that Gekko can be used from within an Excel workbook.
- Interface to open-source Python or R for econometrics, data mining and many other things.
- Strict language syntax (via in-built ANTLR parser), with loops, conditionals etc.
- Free, open source. Easy installation, and used by many Danish organizations.

Models are collections of equations, providing relationships between different timeseries. For instance:

FRML _g dif(z) = dif(x) + 0.5*dif(y[-1]);

This equation states that the time-difference of z (that is, z-z[-1]) equals the time-difference of x plus half of the lagged time-difference of y (the ‘_g’ is a non-relevant equation code). You may use leads (for instance x[+1] in the model — in that case it is called a forward-looking model.

Gekko comes with powerful solving/simulation facilities, some of the solvers being:

- Gauss-Seidel solver
- Newton solver
- Fair-Taylor (forward-looking)
- Newton-Fair-Taylor (forward-looking)

The Gauss-Seidel solver is often sufficient, but for harder problems (or problems with goals and means) you may use the Newton solver instead. For forward-looking models, you may use Fair-Taylor or the more advanced Newton-Fair-Taylor algorithm. The solvers are designed to be fast on large models, for instance models with thousands of equations.

Gekko databanks can easily store different simulation scenarios, and together with Gekko’s timeseries-oriented nature, comparing different scenarios is very easy. After performing some experiment, printing out the differences between the two scenarios is as easy as:

PRT <m> z;

where the <m> option means ‘absolute multiplier differences’, and printing percentage differences etc. is equally simple. This kind of easy comparison of scenarios is possible regarding printing, graphing, exporting data, etc., and provides a very productive environment for model forecasts and analyses. Together with decoposition of effects (the DECOMP command) and equation browsing (the DISP command) Gekko provides easy tracking of effects, and how these propagate inside a model.

Gekko 3.0 can read and analyze GAMS models, too. Gekko does not solve GAMS models, but the equations/effects in these can be displayed (DISP) and decomposed (DECOMP, since Gekko 3.1.14).