Procedure GMP::Coefficient::SetMulti(GMP, binding, row, column, value)

GMP::Coefficient::SetMulti

The procedure GMP::Coefficient::SetMulti sets the value of a range of (linear) coefficients for a group of columns and rows, belonging to a variable and constraint, in a generated mathematical program.

GMP::Coefficient::SetMulti(
     GMP,            ! (input) a generated mathematical program
     binding,        ! (input) an index binding
     row,            ! (input) a constraint expression
     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.

row

A constraint that, combined with the binding domain, specifies the rows.

column

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

value

The new coefficient for each combination of row and column, defined over the binding domain.

Return Value

The procedure returns 1 on success, or 0 otherwise.

Note

  • This procedure cannot be used if the objective variable is passed as column.

  • In case the generated mathematical program is nonlinear, this procedure will fail if one the columns is part of a nonlinear term in one of the rows. However, if the row is pure quadratic, then this procedure can be used to set the linear coefficient value for a quadratic column.

  • GMP procedures operate on a generated mathematical program in which all variables are moved to the left-hand-side of each constraint. This can have an influence on the sign of the coeffients as demonstrated in the example of procedure GMP::Coefficient::Set.

Example

To set the coefficients of variable x(j) in constraint c(i) to coef(i,j) we can use:

for (i,j) do
    GMP::Column::Set( myGMP, c(i), x(j), coef(i,j) );
endfor;

It is more efficient to use:

GMP::Coefficient::SetMulti( myGMP, (i,j), c(i), x(j), coef(i,j) );

If we only want to set the coefficients of those x(j) for which dom(j) is unequal to zero, then we use:

GMP::Coefficient::SetMulti( myGMP, (i,j) | dom(j), c(i), x(j), coef(i,j) );