Looping in AMPL

  1. for Loops
  2. let 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]);

Conditional Loops AMPL allows us to repeat a loop depending on a condition. Syntax: We can loop subject to a condition using the repeat keyword, the while or until keyword and the { and } operators. repeat while { }; repeat until { }; 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. repeat { } while ; repeat { } until ; These statements check the expression after executing the loop statements. The first one continues while the expression is true, the second terminates when the expression is true.

???Using symbolic parameters to do conditional loops over sets (see symbolic parameters)??? -- TWikiAdminGroup - 18 Mar 2008


This topic: OpsRes > WebHome > AMPLGuide > AMPLSyntax > LoopingInAMPL
Topic revision: r4 - 2008-03-18 - TWikiAdminUser
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback