Gekko blog

This is the Gekko blog. Read about the development of Gekko, software- and architectural considerations, parsing & the development Gekko command language, and much more. The Gekko blog is maintained and written by Thomas Thomsen, current editor of the Gekko project.


Array-series have not been described in this blog until now. The concept of array-series arose as a consequence of database integration on the one side, and GAMS integration on the other side. When interfacing with a particular Danish online database... read more

Use of {}-curlies

In Gekko, {}-curlies have been used for quite a long time now. The idea is that variable names can be composed by means of the {}-curlies, creating a means of composing names dynamically, in a sense forwarding from a string to a variable name corresponding to that... read more

Lists and naked lists

As mentioned in the overview post regarding Gekko 3.0, lists were generalized in Gekko 3.0, using primarily Python as the inspiration. In Gekko 2.x, lists could only contain strings, so in that sense, they were quite simple. Gekko 3.0 allows any variable to be an... read more

The dynamic problem

In Gekko 2.0/2.2/2.4, and also in some other software packages, series expressions are run in an outer loop. Consider a series expression like y = x1 + x2 + x3. In AREMOS, such an expression is run n times in an outer loop, where n is the number of periods. Imagine... read more

Gekko 3.0

The official Gekko 3.0 is now released. This is a long post, but the intent is to try to explain what Gekko 3.0 really is about. Which is actually not so easy to boil down exactly: it is perhaps best to think of it as a long-term vision, borne out of the realization... read more

The lag problem

One of the main reasons for the modernization of the parser for Gekko 3.0 was that it was deemed important to handle timeseries as objects in Gekko. Timeseries are already objects in Gekko 2.0/2.2, but they are not always handled as such during calculations. To... read more

How to think about sigils?

Gekko uses the ‘funny symbols’ (sigils) % and # to indicate scalars and collections (for instance lists), respectively. More about these in the previous post. But how to think about them? For instance, in Gekko 2.0, a scalar value is written like “VAL v = 100;”, not... read more

Funny % and # symbols (sigils)

What is a sigil? In Gekko, sigils are used to denote general variable types, for instance %x if it is a scalar (string/value/date), #x if it is a collection (list, matrix or map), and plain x if it is a timeseries. The use of # was inherited from AREMOS, but AREMOS... read more