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 |