A translator writing system for algebraic modeling languages

Sergio Maturana, Arthur M. Geoffrion, John W. Mamer · 1990

Modeling languages that resemble algebraic notation, yet can be processed by a computer program, have improved both the efficiency and reliability of the application of mathematical programming technology. The computer program that translates the model from a representation that is familiar to the modeler to the representation required by the solver is called a modeling language translator. Implementing such a program is not an easy task because of the complexity of the mapping between the modeling language representation and the solver representation. Since a different translator is required for each combination of solver representation and modeling language, and there is a significant number of both, there is a need for a large number of such translators. A translator writing system that automatically generates a translator from formal specifications of the modeling language and solver representation would greatly facilitate the task of implementing modeling languages translators. Even though achieving this goal in complete generality may not be practical, by restricting ourselves to the class of algebraic modeling languages, we were able to design and partially implement a relatively complete modeling language translator writing system. Since no formal definition for algebraic modeling languages existed, we developed a simple formalism to describe this class of modeling languages. The prototype translator writing system was designed to produce a translator composed of three main parts: a front-end that depends on the modeling language, an invariant part, and a back-end that depends on the solver. Both the front-end and the back-end are themselves translators. The front-end translates from the modeling language to a high level intermediate representation (HIRAM) and the back-end translates from a low level intermediate representation (LORAM) to the representation required by the solver. The invariant part, the HI2LO translator, translates from HIRAM to LORAM. As an example of using this system, we developed two modeling language translators, one with an AMPL front-end and the other with an SML front-end. We also designed and partially implemented two back-ends for each translator, one for the MINOS 5.3 solver and the other for the LINDO solver.

Read the paper · More papers on PaperTik