Looping in AMPL
- for Loops
- let Loops
- Conditional Loops
for Loops
In AMPL you can create basic
for loops by
creating a set automatically and looping over elements in the set. To loop over a set you use the
for
keyword and the
in
keyword.
for {<element> in <SET>} <a statement>;
Now
<a statement>
is repeated for each element in
<SET>
. If you need to do more than one statement you can use
{
and
}
:
for {<element> in <SET>}
{
<some statements>
}
Examples coming soon!
Return to top
let Loops
In AMPL you can
display and/or print over specified subsets and you can also "loop" over a
let
statement. To assign values for an entire set you use the
let
keyword, the set and the
:= operator:
let {e in SET} <parameter, usually involving e> := <expression, often involving e>;
Consider the following possibility for the American Steel problems (
the American Steel transshipment problem and
the American Steel planning problem respectively). American Steel can get a 5\% discount with their transportation provider out of Chicago as long as they commit to at least 1000 tonnes along each route. This change can be easily incorporated using two looping
let
statements:
let {n in NODES : ('Chicago', n) in ARCS} Cost['Chicago', n] := 0.95 * Cost['Chicago', n];
let {n in NODES : ('Chicago', n) in ARCS} Min['Chicago', n] := max(1000, Min['Chicago', n]);
Return to top
Conditional Loops
AMPL also provides syntax for repeating a loop depending on a
condition (often known as
while loops). These loops use a condition, the
repeat
keyword, the
while
or
until
keyword and the
{
and
}
operators:
repeat while <expression> {
<loop statements;>
};
repeat until <expression> {
<loop statements;>
};
These statements check the expression
before executing the loop statements. The first one continues while the expression is true, the second terminates when the expression is true. AMPL provides loops that check the expression after the loop completes:
repeat {
<loop statements;>
} while <expression>;
repeat {
<loop statements;>
} until <expression>;
As before, the first loop continues while the expression is true, the second terminates when the expression is true.
Examples coming soon!
Return to top
--
TWikiAdminGroup - 18 Mar 2008