Function GMP::Benders::CreateSubProblem(GMP1, GMP2, name, useDual, normalizationType)


The function GMP::Benders::CreateSubProblem creates a Benders’ subproblem for a generated mathematical program. This subproblem is typically used in a Benders’ decomposition algorithm.

     GMP1,               ! (input) a generated mathematical program
     GMP2,               ! (input) a generated mathematical program
     name,               ! (input) a string expression
     [useDual],          ! (optional, default 0) a scalar value
     [normalizationType] ! (optional, default 0) a scalar value



An element in the set AllGeneratedMathematicalPrograms.


An element in the set AllGeneratedMathematicalPrograms representing a Benders’ master problem.


A string that holds the name for the Benders’ subproblem.


A scalar binary value to indicate whether this function should create the primal (value 0) or dual (value 1) of the subproblem.


A scalar value to indicate which kind of normalization this function should use. Value 0 implies that the standard normalization is used. Value 1 implies that the normalization condition introduced by Fischetti, Salvagnin and Zanette (2010) is used. The normalization condition is added as a constraint to the subproblem.

Return Value

A new element in the set AllGeneratedMathematicalPrograms with the name as specified by the name argument.



If the math program has type MIP then often the set of master problem variables equals the set AllIntegerVariables. All other variables automatically become part of the subproblem.

myGMP := GMP::Instance::Generated( MP );

gmpM := GMP::Benders::CreateMasterProblem( myGMP, AllIntegerVariables,
                                           'BendersMasterProblem', 0, 0 );

gmpS := GMP::Benders::CreateSubProblem( myGMP, masterGMP, 'BendersSubProblem',
                                        0, 0 );