Procedure GMP::Column::FreezeMulti(GMP, binding, column, value)

GMP::Column::FreezeMulti¶

The procedure GMP::Column::FreezeMulti freezes a group of columns, belonging to a variable, in the matrix of a generated mathematical program.

GMP::Column::FreezeMulti(
GMP,            ! (input) a generated mathematical program
binding,        ! (input) an index binding
column,         ! (input) a variable expression
value           ! (input) a numerical expression
)


Arguments¶

GMP

An element in AllGeneratedMathematicalPrograms.

binding

An index binding that specifies and possibly limits the scope of indices.

column

A variable that, combined with the binding domain, specifies the columns.

value

The new value for each column, defined over the binding domain binding, that should be used to freeze the column value.

Return Value¶

The procedure returns 1 on success, and 0 otherwise.

Note

• The columns remain visible in the constraint listing and math program inspector. In addition, it will be retained in solver maintained copies of the generated math program.

• Use GMP::Column::UnfreezeMulti to undo the freezing.

• During a call to function GMP::Column::FreezeMulti AIMMS stores the upper and lower bound of the column before the function was called. This information is used when function GMP::Column::UnfreezeMulti is called thereafter. This information is not copied by the function GMP::Instance::Copy.

Example¶

To freeze variable x(i) to demand(i) we can use:

for (i) do
GMP::Column::Freeze( myGMP, x(i), demand(i) );
endfor;


It is more efficient to use:

GMP::Column::FreezeMulti( myGMP, i, x(i), demand(i) );


If we only want to freeze those x(i) for which dom(i) is unequal to zero, then we use:

GMP::Column::FreezeMulti( myGMP, i | dom(i), x(i), demand(i) );