Relational operators are used to compare two expressions. They are most commonly used in constraints, but not exclusively. The relational operators are:
Expression  Meaning 

<  Less than 
<=  Less than or equal to 
>  Greater than 
>=  Greater than or equal to 
==  Equal to 
<>  Not equal to 
Logical operators are used to combine logical expressions. They are most commonly used in conditional statements, conditional structures and conditional loops. The logical operators are not
, and
and or
. They are used as shown in the table below:
Expression  Result 

not 
True if 

True if 

True if either 
Logical expressions are expressions that will evaluate to either true or false. Logical expressions are usually defined in terms of the relational operators:
Lower[r] <= sum {i in INGREDIENTS} Contributes[r, i] * Amount[i]
sum {s in SURFBOARDS} Recipe[m, s] * Production[s] <= Supply[m];
However, there are some special logical expressions in AMPL for use with sets:
Logical expressions can be built up from other logical expressions, binary parameters and logical operators.
A conditional expression is very much like the IF
function in Microsoft Excel:
param ifvalue := ifthen [else ];
If the logical expression is true then ifvalue
will be set to , otherwise it is set to 0 (by default) or, if the else part of the expression is present, else
keyword is present, then no ;
needs to be included after .
A conditional structure is the same as the classical if__then__else statement in programming languages like MATLAB, Fortran, Visual Basic and C++:
ifthen ; [else ;]
Note here that even if the else
keyword is present you need to end with ;
. If you want to include more than one statement within the conditional structures you can use {
and }
to enclose your statements:
ifthen { } [else { }]
In AMPL we can create binary parameters by using the binary
keyword in the parameter declaration:
param stillSearching binary;
Binary parameters are used in a similar way to boolean variables (in Matlab, C, etc) and logical variables (Fortran). If a binary parameter has the value 0 this is equivalent to false, and 1 is equivalent to true. Binary parameters can be used with conditional expressions to hold a true/false result from a logical expression:
param isGreater binary; let isGreater := if 4 > 5 then 1 else 0; # isGreater = 0 (false) let isGreater := if 6 > 5 then 1; # else 0 is the default, isGreater = 1 (true)so the syntax is
let:= if then 1;
You can also set binary parameters within conditional structures
binary; if then let := 1; else let := 0;
Binary parameters may be used in logical expressions or as the condition in a conditional statement or conditional structure. They are very useful for building complex conditional statements or structures:
Some example from depth first searching or column generationComing soon! and controlling conditional loops:
Some example from depth first searching or column generationComing soon!
 TWikiAdminGroup  18 Mar 2008