- Procedure GMP::Row::GenerateMulti(GMP, binding, row, autoAddColumn)
GMP::Row::GenerateMulti generates a group of rows, belonging to a constraint,
and adds them to the matrix of a generated mathematical program. The rows are generated according
to the definition of the associated symbolic constraint, or to the definition of the associated
symbolic variable in case the rows refer to the definition of a variable.
GMP::Row::GenerateMulti( GMP, ! (input) a generated mathematical program binding, ! (input) an index binding row, ! (input) a constraint expression [autoAddColumn] ! (optional) a binary scalar )
An element in
An index binding that specifies and possibly limits the scope of indices.
A constraint that, combined with the binding domain, specifies the rows.
A binary scalar indicating whether this procedure should automatically add columns that are not in the GMP. The default is 0 meaning that no columns are added.
The procedure returns 1 on success, or 0 otherwise.
Before generating the rows all existing matrix coefficients for this group of rows are removed.
The row types and the right-hand-side values (and, if the row type is
'ranged', the left-hand-side values) are set according to the constraint definition.
This procedure cannot be used if one of the rows contains the objective variable, and the row was added or generated before using a different coefficient for the objective variable.
If the value of autoAddColumn equals 0, then this procedure will generate an error if it encounters a column that is not in the GMP. You then have to add that column before calling this procedure by using the procedure
Setting the value of autoAddColumn to 1 should only be done if you know exactly which columns are automatically added by this procedure. Otherwise you might end up with a model in which some columns only appear in one of these rows, possibly making this row redundant.
This procedure will never add columns that were deleted before with the procedure
To generate the rows corresponding to constraint
c(i)we can use:GMP::Row::GenerateMulti( myGMP, i, c(i) );
If the row refers to the definition of a variable then we have to place ‘_definition’ behind the name of the variable. For example, if
v(j)is a variable with a definition and we want to generate all corresponding rows according to its definition then we have to use:GMP::Row::GenerateMulti( myGMP, j, v_definition(j) );