Procedure GMP::Coefficient::Set(GMP, row, column, value)

GMP::Coefficient::Set

The procedure GMP::Coefficient::Set sets the value of a (linear) coefficient in a generated mathematical program.

GMP::Coefficient::Set(
     GMP,            ! (input) a generated mathematical program
     row,            ! (input) a scalar reference or row number
     column,         ! (input) a scalar reference or column number
     value           ! (input) a scalar numerical value
     )

Arguments

GMP

An element in AllGeneratedMathematicalPrograms.

row

A scalar reference to an existing row in the model or the number of that row in the range \(\{ 0 .. m-1 \}\) where \(m\) is the number of rows in the matrix.

column

A scalar reference to an existing column in the model or the number of that column in the range \(\{ 0 .. n-1 \}\) where \(n\) is the number of columns in the matrix.

value

A scalar numerical value indicating the value for the coefficient.

Return Value

The procedure returns 1 on success, or 0 otherwise.

Note

  • Use GMP::Coefficient::SetMulti or GMP::Coefficient::SetRaw if many coefficients have to be set because that will be more efficient.

  • This procedure cannot be used if the column refers to the objective variable.

  • In case the generated mathematical program is nonlinear, this procedure will fail if the column is part of a nonlinear term in the row. 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 below.

Example

Assume that we have the following variable and constraint declarations (in ams format):.

Variable y;
Variable z;
Variable x1;
Constraint c1 {
    Definition: x1 - 2*y - 3*z = 0;
}
Variable x2 {
    Definition: 2*y + 3*z;
}

To change the coefficient of variable y in constraint c1 to 4 we use:

GMP::Coefficient::Set( myGMP, c1, y, 4 );

This results in the row x1 + 4*y - 3*z = 0.

The definition of variable x2 is generated as the row x2 - 2*y - 3*z = 0 by AIMMS. Therefore, using

GMP::Coefficient::Set( myGMP, x2_definition, y, -4 );

will result in the row x2 - 4*y - 3*z = 0.