AIMMS
Advanced Interactive Multidimensional Modeling Software
Authors:  Paragon Decision Technology B.V.
Prof. Johannes J. Bisschop Robert Entriken Paragon Decision Technology B.V.

Description
AIMMS offers a stateoftheart algebraic modeling language using sets and indexed multidimensional identifiers. The AIMMS language can be used to describe data, data transformations, mathematical programming constraints and output reports.
AIMMS models consist of one or more statements that define data structures, initial values,data modification,and symbolic relationships .
Important AIMMS language constructs are:
Compilation and execution
The AIMMS system handles model text in two steps: compilation and execution.During compilation it checks the syntax and usage of the language, and sets the initial values of all model entities. The result of compilation is an executable structure in memory, to which the user does not have access. During execution, all statements that are not declarations are executed. This includes output, complex calculations, generating model information for solvers, and solving a model.
AIMMS is a procedural language in the sense that the execution statements are executed in the order they appear.
Statements
AIMMS statements define and initialize data structures, modify data, and define symbolic relationships. Thei are separated by semicolons. You may enter multiple statements on a single line, or a single statement over several lines.
The statements in an AIMMS model text can be divided into three groups:
The declaration and execution statements together constitute a mathematical model. The data initialization statements should not be a part of the model description, but can be mixed with declaration and execution statements in almost any order.
In the execution of an AIMMS model, the following statements can be used:
Model entities
All model entities in an AIMMS model must be declared before they are used. The following model entities are a part of AIMMS:
Separation of model and data
In general, it is a good strategy to separate the specification of your model and the initialization of the data used in your model. This is particularly true when you build large models. Not only does the aim of the model become much clearer, but more importantly, you can use the same model with various data sets. In AIMMS there are three methods of separating model structure and data initialization, and they are all associated with the use of files. These methods are as follows:
Sets definitions
In AIMMS we distinguish between two major types of sets, nominal and ordinal sets. Nominal sets reflect the ordinary mathematical notion of a set  an unordered collection of items. An ordinal set is a nominal set with an ordering principle imposed on its elements. There are set operations : union, intersection, , difference, cartesian product.
Domains
A multidimensional parameter or variable is declared by specifying a domain in its declaration. A domain specification consists of the following two parts:
All the sets pointed to by the indices in the domain are marked as domain sets. Specifying a domain condition in the declaration is equivalent to appending the condition to every reference of the parameter or variable in the rest of the model text.
Unlike subset domains, parameter and variable domains are dynamic in the sense that the domain condition is evaluated during execution at the point where a reference is made, and that it can be defined in terms of others dynamic information such as subsets and parameters.
Composite Tables
A composite table is a bulk form of assignment. With it, it is possible to initialize simple sets, compound sets, parameters, variable atributes and constraint atributes. Its format is tailored to facilitate data input from data bases, because of the ability to define sets and their elements on the fly. There is no extension facility as there is for regular tables. This implies that a composite table must be defined as a simple block.
Iterative Operators
AIMMS suports several iterative operations such as summation, product, maximum, and minimum.
Expressions
AIMMS suports setexpressions, numericalexpressions, and logicalexpressions.
Functions
AIMMS provides the most commonly used standard arithmetic functions such as the trigonometric function, logarithms and exponentiations.
Networks
For linear single commodity network flow problems AIMMS offer two special constructions: ARCS and NODES. Although network problems can be described as linear programs, the use of ARCS and NODES enables the representation of networks in a more natural way. In addition, it enables AIMMS to use a special network flow algorithm which solves network problems much quicker then the simplex algorithm would solve the equivalent linear program.
Reference