- Procedure GMP::Column::SetUpperBound(GMP, column, value)
GMP::Column::SetUpperBound
The procedure GMP::Column::SetUpperBound
changes the upper bound of
a column in the generated mathematical program.
GMP::Column::SetUpperBound(
GMP, ! (input) a generated mathematical program
column, ! (input) a scalar reference or column number
value ! (input) a numerical expression
)
Arguments
- GMP
An element in
AllGeneratedMathematicalPrograms
.- column
A scalar reference to an existing column in the matrix or an element in the set
Integers
in the range \(\{ 0 .. n-1 \}\) where \(n\) is the number of columns in the matrix.- value
The new value assigned to the upper bound of the column.
Return Value
The procedure returns 1 on success, and 0 otherwise.
Note
Use
GMP::Column::SetUpperBoundMulti
orGMP::Column::SetUpperBoundRaw
if the upper bounds of many columns have to be set, because that will be more efficient.If the column has a unit then value should have the same unit. If value has no unit then you should multiply it by the column scale, as returned by the function
GMP::Column::GetScale
.
Example
Assume that x1
is a variable in mathematical program MP
with a unit
as defined by:
Quantity SI_Mass {
BaseUnit : kg;
Conversions : ton -> kg : # -> # * 1000;
}
Parameter max_wght {
Unit : ton;
InitialValue : 20;
}
Variable x1 {
Range : [0, max_wght];
Unit : ton;
}
Then if we run the following code
GMP::Column::SetUpperBound( 'MP', x1, 20 [ton] );
ub1 := GMP::Column::GetUpperBound( 'MP', x1 );
display ub1;
GMP::Column::SetUpperBound( 'MP', x1, 30 );
ub2 := GMP::Column::GetUpperBound( 'MP', x1 );
display ub2;
GMP::Column::SetUpperBound( 'MP', x1, 40 * GMP::Column::GetScale( 'MP', x1 ) );
ub3 := GMP::Column::GetUpperBound( 'MP', x1 );
display ub3;
(where ub1
, ub2
and ub3
are parameters without a unit) we get the
following results:
ub1 := 20 ;
ub2 := 0.030 ;
ub3 := 40 ;