
| Line: 1 to 1 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
<-- Ready to Review --> | |||||||||||
| Line: 98 to 98 | |||||||||||
Defining 2-Dimensional ParametersIn a similar way to 2-dimensional sets, there are three different ways to define 2-dimensional parameters. | |||||||||||
| Changed: | |||||||||||
| < < |
| ||||||||||
| > > |
model;
param Min {ARCS} integer, default 0;
data;
param Min :=
Youngstown 'Kansas City' 1000
Pittsburgh 'Kansas City' 2000
Cincinnati Albany 1000
param : ... := ... ... ... ;If the element does not exist or the default value is correct then place a . in the table. Otherwise, put the parameter value.
param Cost: Cincinnati 'Kansas City' Chicago Albany Houston Tempe Gary := Youngstown 350 450 375 500 . . . Pittsburgh 350 450 400 . . . 450 Cincinnati . . . 350 550 . . 'Kansas City' . . . . 375 650 . Chicago . . . . . 600 120 ;You can also define parameter data in a transposed table using almost the same syntax, but with the (tr) keyword and reversing the indexing sets
param (tr) : ... := ... ... ... ;
param Cost := [Youngstown, *] Cincinnati 350 'Kansas City' 450 ... ... [Chicago, *] ... Gary 120 ;Note The row indices have [=} and =] around them (as opposed to ( and ) for sets). | ||||||||||
Defining Multi-Dimensional ParametersSince we have multi-dimensional sets, we might need multi-dimensional parameters, e.g.,Cost {TIME_ARCS} has four dimensions. We can define these parameters in a similar way to multi-dimensional sets: | |||||||||||
| Changed: | |||||||||||
| < < |
| ||||||||||
| > > |
[ ] around *, May, *, May as opposed to the ( ) for sets! | ||||||||||
Defining Multiple Parameters | |||||||||||
| Changed: | |||||||||||
| < < | Using the : operator, multiple parameters may be defined at once. Simply state the names of the parameters and the := operator. Then list the set elements and values on the following rows. param: ... : ... ... ;If a parameter is not defined or the default value is sufficient, use the . operator. model; # The lower and upper bounds on the requirements param Min {REQUIREMENTS} default -Infinity; param Max {REQUIREMENTS} default Infinity; data; param: Min Max:= PROTEIN 8.0 . FAT 6.0 . FIBRE . 2.0 SALT . 0.4 ; This approach also works for 2-dimensional parameters and lists, for the American Steel problem this allows us to "cut-and-paste" the list of arc properties | ||||||||||
| > > | Using the : operator, multiple parameters may be defined at once. Simply state the names of the parameters and the := operator. Then list the set elements and values on the following rows.
param: ... : ... ... ;If a parameter is not defined or the default value is sufficient, use the . operator.
model;
# The lower and upper bounds on the requirements
param Min {REQUIREMENTS} default -Infinity;
param Max {REQUIREMENTS} default Infinity;
data;
param: Min Max:=
PROTEIN 8.0 .
FAT 6.0 .
FIBRE . 2.0
SALT . 0.4 ;
This approach also works for 2-dimensional parameters and lists, for the American Steel problem this allows us to "cut-and-paste" the list of arc properties | ||||||||||
| |||||||||||
| Line: 119 to 177 | |||||||||||
| |||||||||||
| Changed: | |||||||||||
| < < | param: Cost Min Max:= Youngstown Cincinnati 350 0 3000 Youngstown 'Kansas City' 450 1000 5000 ... Chicago Gary 120 0 4000 ; | ||||||||||
| > > | param: Cost Min Max:= Youngstown Cincinnati 350 0 3000 Youngstown 'Kansas City' 450 1000 5000 ... Chicago Gary 120 0 4000 ; | ||||||||||
| Return to top | |||||||||||
| Line: 128 to 192 | |||||||||||
Parameter values are accessed by specifying the indices of the parameter you want to access within [ and ].
Examples | |||||||||||
| Changed: | |||||||||||
| < < | See Cost and Contributes below. # Objective: minimise the cost per (100g) can minimize TotalCost: sum {i in INGREDIENTS} Cost[i] * Amount[i]; # Constraints: Meet the nutritional requirements subject to MeetRequirement {r in REQUIREMENTS}: Min[r] <= sum {i in INGREDIENTS} Contributes[i, r] * Amount[i] <= Max[r]; | ||||||||||
| > > | See Cost and Contributes below.
# Objective: minimise the cost per (100g) can
minimize TotalCost: sum {i in INGREDIENTS} Cost[i] * Amount[i];
# Constraints: Meet the nutritional requirements
subject to MeetRequirement {r in REQUIREMENTS}:
Min[r] <= sum {i in INGREDIENTS} Contributes[i, r] * Amount[i] <= Max[r];
| ||||||||||
| Return to top | |||||||||||