- Procedure GMP::Instance::CalculateSubGradient(GMP, variableSet, constraintSet, session)
GMP::Instance::CalculateSubGradient
The procedure GMP::Instance::CalculateSubGradient
can be used to
solve By = x for a given vector x, where B is the basis matrix
of a linear program. This procedure can only be called after the linear
program has been solved to optimality.
GMP::Instance::CalculateSubGradient(
GMP, ! (input) a generated mathematical program
variableSet, ! (input) a set of variables
constraintSet, ! (input) a set of constraints
[session] ! (input, optional) a solver session
)
Arguments
- GMP
An element in
AllGeneratedMathematicalPrograms
. The mathematical program should have model type LP or RMIP.- variableSet
A subset of
AllVariables
.- constraintSet
A subset of
AllConstraints
.- session
An element in the set
AllSolverSessions
.
Return Value
The procedure returns 1 on success, or 0 otherwise.
Note
Use the
.ExtendedConstraint('RhsChange',*)
suffix of the constraints in constraintSet to assign values to the vector x.The suffix
.ExtendedVariable('RhsChange',*)
of the variables in variableSet will be used to store the subgradient y.The suffixes
.ExtendedConstraint
and.ExtendedVariable
have no unit and are not scaled.This procedure should be called after a normal solve statement or after a successful call to procedure
GMP::Instance::Solve
.This procedure can also be called after a successful call to the procedure
GMP::SolverSession::Execute
or the procedureGMP::SolverSession::AsynchronousExecute
. In that case the solver session should be passed using the session argument.A column corresponding to a variable in variableSet that is not part of GMP will be ignored. A row corresponding to a constraint in constraintSet that is not part of GMP will also be ignored.
This procedure is only supported by CPLEX and Gurobi.
This procedure cannot be used if the GMP is created by
GMP::Instance::CreateDual
.
Example
Assume that ‘MP’ is a linear mathematical program and
c(i)
is a constraint andv(j)
is a variable in this mathematical program. The following example shows how to calculate a subgradient after a normal solve statement.solve MP; ! The next statement needs to be called once. AllGMPExtensions += { 'RhsChange' }; c.ExtendedConstraint('RhsChange',i) := 1.0; GMP::Instance::CalculateSubGradient('MP',AllVariables,AllConstraints); display v.ExtendedVariable('RhsChange',j);
See also
The functions GMP::Instance::Generate
, GMP::Instance::Solve
, GMP::SolverSession::Execute
and GMP::SolverSession::AsynchronousExecute
. See
Modifying an Extended Math Program Instance of the Language Reference for more details on extended suffixes.