A GAMS data type used for storing non-numeric (aka logical or categorical) data. For more details, see section Acronyms.


An alternative name for a set, used to have multiple indices running over a common set. For more information, see section The Alias Statement: Multiple Names for a Set.


A sequence of actions to perform in order to solve a problem. GAMS solvers contain algorithm implementations, so the two terms are sometimes used interchangeably.


The statement used to assign values to an identifier. For a detailed introduction, see section The Assignment Statement.


A column is basic if it is in the basis maintained by the solution method for the problem in question (e.g. by the simplex method for LP). A row is basic if the elementary column associated with its slack variable is basic. For more details, see Mathematical Programming Glossary


An inequality constraint or variable bound is binding when the value of the associated slack is zero, i.e. when it is satisfied as an equality. See also Mathematical Programming Glossary


Upper and lower limits on the possible values that a column may assume in a feasible solution. May be infinite, i.e. no limit is imposed.


An individual decision variable in the model passed to a solver. Also called a single variable in the GAMS listing file. An indexed GAMS variable typically contains many columns.


The initial phase of GAMS processing, when the program is being checked for syntax and consistency.

compile-time constant

A compile-time constant is a string that will be replaced at compile-time with a fixed value. These constants are usually related to a function, model attribute or option and are used for their mnemonic and descriptive value. See section Compile-Time Constants.

compile-time variable

Special variables that are substituted with their values at compile-time. For further information, see section Compile-Time Variables.


A relationship between variables that must hold in a feasible solution. A constraint can refer to a single relationship (i.e. a row) or to a collection of rows, such as an equation. For further details, see Mathematical Programming Glossary


Used to describe functions (in the usual mathematical way) and variables. Roughly speaking, a function is continuous if its graph has no breaks or jumps in it. A continuous variable may assume any value within its bounds, in contrast to binary or integer variables.

controlling sets

See driving sets.

data types

Each symbol or identifier must be declared as one of the available data types, e.g set, parameter, equation, or model. Note that scalars and tables are not separate data types, but convenient input formats for certain parameters. See also section Data Types and Definitions.

decision variable

A decision variable (aka endogenous variable) represents a decision to be made, e.g. the amount to produce or consume or the unit price to charge. Decision variables are the unknowns of a mathematical programming model. In contrast, exogenous variables or parameters are outside of the decision maker's control. See also the Mathematical Programming Glossary.


The introduction of an identifier along with the specification of its data type. A declaration may also include the specification of data or initial values, in which case it also acts as a definition. See also section Classification of GAMS Statements.


The value used, or the action taken, if the user provides no information.


A statement specifying the content or data associated with a GAMS identifier, e.g. the equations in a model, the algebra of an equation, the elements of a set, or the initial values of a parameter. Definitions are processed during compilation. See also section Classification of GAMS Statements.


The direction of optimization, i.e. maximization or minimization.


A function is discontinuous if it is not continuous. Sometimes, we call a function discontinuous if its derivatives are not continuous, i.e. it is nonsmooth.


A discrete variable is any variable that is not continuous. For example, binary and integer variables are discrete. For more details, see section Types of Discrete Variables.

dollar control option

Directives or options used to control input or output details associated with the GAMS compiler. They are introduced in chapter Dollar Control Options.

dollar operator

An operator used to indicate and define conditional expressions in assignment statements and equation definitions. For more information, see section The Dollar Condition.

domain checking

A system of checks that ensures that operations and relationships involving sets and domains are logically consistent. For example, referencing pop(t,city) when we have a declaration of pop(city,t) is a logical error that domain checking will catch. For more information, see section Domain Checking.

domain of definition

The set of tuples (i.e. label combinations) for which an indexed equation is defined. When a solve statement is executed, a row of the equation is generated for each member of the domain of definition.

domain restriction condition

The narrowing of the domain of definition with a dollar operator. When used in this way, the dollar operator occurs on the left of the symbol '..' in an equation definition. For more details, see section Dollar Control over the Domain of Definition.

driving set

The set or list of sets that an indexed operation or domain runs or is defined over. Loops, indexed operations like sum, and domains of definition all make use of driving sets.

dynamic set

A set is dynamic if it has been changed with an assignment statement. Dynamic sets cannot be used with lag operations or in domain declarations. For more information, see chapter Dynamic Sets.

echo print

In the output file, the echo print is a listing of the input with added line numbers. Details are given in section The Echo Print of the Input File.


Endogenous variables are used in economics, statistics, and other disciplines. In the GAMS context, they are synonymous with variables, i.e. values that change when a solve statement is processed. See also the discussion in section Functions in Equation Definitions.


The GAMS data type used to specify required relationships between activity levels of variables. They are introduced and discussed in detail in chapter Equations.


The second phase of GAMS processing, when GAMS is actually carrying out data transformations or generating a model.

execution statements

Instructions to carry out actions such as data transformations, model solves and report generation. Examples include the assignment statement, the loop statement and the solve statement. For a full list, see section Classification of GAMS Statements.


Exogenous variables are used in economics, statistics, and other disciplines. In the GAMS context, they are synonymous with constants, i.e. values that do not change when a solve statement is processed. These are most often parameters but any variable or equation field will be treated exogenously when it appears in an equation. See also the discussion in section Functions in Equation Definitions.

explanatory text

See text.

extended arithmetic

In GAMS, the usual computer arithmetic is extended to include special values (e.g. inf) and the results of operations and functions that use them. For example, 6 + inf is inf and min(6, inf) is 6. See section Extended Range Arithmetic and Error Handling for details.

external equation

An equation defined in an external module. For example, on Windows systems, external equations are defined by a DLL. See section External Equations for details.

extrinsic function

A function that is imported into a GAMS program from an external function library. Once imported, extrinsic functions can be used in the same way as intrinsic functions like cos and exp. See section Extrinsic Functions for details.


A convenient text-based (i.e. unsuperscripted) way to represent numbers in scientific notation in which the exponent of the 10 is prefixed by the letter e. For example, one US mile = 1.609344e+03 meters.


Often used to describe a model (or a subset of constraints within a model) that has at least one feasible solution, but also used to describe a point that satisfies a set of constraints. For more information, see Mathematical Programming Glossary. See also infeasible.

feasible solution

A solution to a model in which all column activity levels are within the bounds and all the constraints are satisfied. For more information, see Mathematical Programming Glossary.


The name given to a data entity in a GAMS program. Also called a symbol. See section Identifiers for further details.

indexed operation

An operation (e.g. sum or max) that is performed over one or more indices. See also section Indexed Operations.

inequality constraint

A constraint in which the imposed relationship between the columns is not specified with an equality but instead with an inequality (e.g. "greater than or equal to", "less than or equal to"). The GAMS syntax =G= and =L= is used in equation definitions to specify these relationships.


Not feasible. Used to describe either a model that has no feasible solution or an intermediate solution or point that is not feasible (although feasible solutions may exist).


Associating or assigning initial values to an identifier as part of the declaration or definition of the identifier. We typically talk about the initialization of only those identifiers (e.g. sets and parameters) that can be assigned different values later. For identifiers like models and equations, we say they are defined, not initialized.

intrinsic function

Functions that are provided by and part of GAMS, including mathematical, string, logical, time/calendar, and utility functions. Contrast to extrinsic functions.


Sets are built up from labels (aka elements). One-dimensional sets are collections of labels, while multi-dimensional sets contain tuples of labels. See section Labels for details.


See list format.

list format

GAMS data may be initialized by data in list format, i.e. a list where each tuple of labels in the data is specified in full. Data may also be displayed in list format, in which case each nondefault value is displayed via a fully-specified tuple of labels.


A macro is a fragment of code that has been given a name: whenever the name is used, that name is replaced by the contents of the macro (i.e. the fragment of code). This is useful for defining and automating structured text replacement, e.g. to replace the text MYOBJ(x) with [sqr(x) + exp(x-2)/7]. See section Macros in GAMS for details.


Marginal values (aka "dual values", "reduced costs", "shadow prices", or "multipliers") are stored in the ".m" variable attribute or equation attribute. The GAMS sign convention is this: the marginal value represents the amount and direction of change in the objective value given a unit increase in the binding constant (e.g. an active variable bound or right-hand side). For further information, see Mathematical Programming Glossary

matrix element

See nonzero element.

model generation

An initial step in processing a solve statement, where a model instance is generated (based on the equation definitions and the data referenced by those definitions) for the solver.

model list

The list of equations that are part of the model, as specified in the model statement. For further details, see section The Model Statement.

model status

An integer returned by the solver that gives information about the model (e.g. INFEASIBLE), about the point returned by the solver (e.g. LOCALLY INFEASIBLE), or both (UNBOUNDED NO SOLUTION RETURNED). For an overview of all values, see section Model Status.


A column that is not basic and (in nonlinear problems) not superbasic. Typically, nonbasic columns behave or are treated as if they are fixed at a bound. If the solution is feasible, the value of a nonbasic column will equal a finite bound (or zero if there are no finite bounds).

nonlinear nonzero

In a linear programming problem, the nonzero elements of the constraint matrix are constant. In a nonlinear problem, elements of the Jacobian matrix vary where variables appear nonlinearly. These non-constant Jacobian elements are called nonlinear nonzeros.


Not optimal. A solution is nonoptimal if other solutions exist with better objective values. A variable is nonoptimal if its marginal (aka reduced cost) has the wrong sign. For example, in a minimization, a variable at lower bound having a negative marginal is nonoptimal. In the simplex method, a variable is nonoptimal if it is nonbasic and would improve the objective if it entered the basis.


A function is nonsmooth if it is not smooth, i.e. if the function itself or its derivatives are not continuous. For example, the absolute value function is nonsmooth because of the kink at the origin: its derivative is not continuous there.

nonzero element

An element or coefficient of a matrix (e.g. the constraint matrix of an LP or the Jacobian matrix of an NLP) that is not zero. Most mathematical programming problems are sparse, i.e. only a small proportion of the elements in the constraint or Jacobian matrix are nonzero.

objective row (or function)

Solver systems often require the specification of a row or (for nonlinear systems) a function whose value will be optimized. A GAMS model, in contrast, is solved by specifying a scalar objective variable to be optimized.

objective value

The current value of the objective row or of the objective variable.

objective variable

The variable to be optimized, as specified in the solve statement


A feasible solution in which the objective value is the best possible. For more details, see Mathematical Programming Glossary.

optimality gap

The optimality gap is a metric for the distance (or an upper bound on the distance) between the objective value of the current GLOSSARY_feasible_solution "feasible solution" and the optimal objective value. For more information, see Mathematical Programming Glossary. In GAMS, MIP and global solvers terminate when the optimality gap is sufficiently reduced: see the options optCA and optCR for details.


A control that allows users to change or influence the behavior or parameters in many different parts of the system. Options in GAMS may be set in three different ways: with model attributes, command line parameters, and option statements. A full list of all options with detailed descriptions is given in section Detailed Descriptions of All Options.

ordered set

A one-dimensional set is ordered if the definition or initialization of the elements in the set corresponds to the order of the labels in the universe. Only sets that are ordered (and static) can be treated as sequences, i.e. used in lags and leads and with Ord-type operations. For more information, see chapter Sets as Sequences: Ordered Sets.

output file

A file, also called the listing file, produced (by default) by the run of a GAMS program. It contains output that describes or logs the run in question. For details see chapter GAMS Output.


A data type in GAMS used to store (indexed) constant data. For details on parameters, see chapter Data Entry: Parameters, Scalars and Tables.

problem type

A class of models that is characterized or defined by the type of algebra accepted (e.g. linear or nonlinear), the GLOSSARY_variable_type "variable types" allowed (e.g. continuous vs. discrete), and the definition of what it means to solve the model or problem (e.g. optimization vs. MCP). A list of all problem types in GAMS is given in section Classification of Models.


A GAMS input file. Typically a program defines a model and solves it, but programs can also work only with data or act as scripts that call other programs.

relational operator

This term may be used in two ways. First, in an equation definition, it describes the type of relationship that the equation specifies. An example is equality, as specified with the symbol =e=. For more information, see Table Equation Types. Second, in a logical expression, a relational operator compares two numerical expressions and returns a logical value. For details see section Logical Conditions: Numerical Relational Operators.

right-hand side

The value of the constant term in a constraint.


An individual constraint in the model passed to a solver. Also called a single equation in the GAMS listing file. An indexed GAMS equation typically contains many rows.


An un-indexed parameter, or the statement used to declare or define this parameter. See also section Scalars.


A collection of elements (aka labels) or element tuples. The set statement is used to declare and define a set. Sets are introduced and discussed in detail in chapter Set Definition.

simplex method

An algorithm often used to solve linear programming problems. For more details, see Mathematical Programming Glossary

singleton set

A special set that has at most one element (zero elements are allowed as well). For more information, see section Singleton Sets.


The amount by which an inequality constraint or variable bound is not binding.

slack variable

A non-negative variable introduced to represent the slack in an inequality constraint and to convert the inequality into an equality. For further information, see Mathematical Programming Glossary


A function that is continuous and whose derivatives are all continuous is smooth. Sometime we consider a function smooth if enough of its derivatives are continuous.


An implementation of an algorithm or algorithms for solving models of a given problem type or types. An example is MINOS and QUADMINOS, which is used to solve both linear and nonlinear programming problems.

solver status

An integer returned by the solver that indicates the solver termination condition, i.e. why the solver stopped. For details, see section Solver Status.


Statements (aka units or sentences) are the fundamental building blocks of GAMS programs: each program is a sequence of statements. Statements are used to declare identifiers, define equations, create loops, and solve models. A full list of GAMS statements is given in section Classification of GAMS Statements.

static set

Used in two slightly different ways: a set is static if it has not changed (i.e. it is not dynamic) or if it cannot change, i.e. it is immutable. Usually, sets are either used in ways that make them immutable (e.g. as domains or with lags and leads) or in ways that make them dynamic (i.e. by assigning to them): in such cases, static is synonymous with immutable.


Some algorithms for nonlinear programming make use of superbasic variables that are neither basic (i.e. in the basis) nor nonbasic (i.e. temporarily fixed at a bound). These algorithms often search in the space defined by these superbasic variables. For further information, see Mathematical Programming Glossary


An identifier.


A table statement is often a convenient way to define a parameter having two or more dimensions. For details see section Tables.


An optional description associated with an identifier or with an element of a set. For details see section Text.

unique element

A label used to define set membership.


Also called the universal set, it is denoted by the symbol '*' and contains all the labels that have been declared in the program plus any labels used as if they were declared (e.g. link('sink',j) = NO;). If an identifier is declared using the universe, that effectively turns off or limits domain checking for that identifier. For more details, see section The Universal Set: * as Set Identifier.

variable type

Variables are classified or typed based on their default bounds and the values they are allowed to take. This latter classification partitions variables into continuous or discrete. For example, free variables have no default bounds and can take any value between their bounds: they are continuous. In contrast, binary variables can take only the values zero and one. See section Variable Types for details.

zero default

Some GAMS data (e.g. parameters, lower bounds for positive variables) have a default value of zero. These default zero values are not stored. However, unless other values are provided via initialization or assignment, zero will be used when the data value is taken.