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

# GMP::Benders::CreateSubProblem

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

```GMP::Benders::CreateSubProblem(
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
)
```

## Arguments

GMP1

An element in the set `AllGeneratedMathematicalPrograms`.

GMP2

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

name

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

useDual

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

normalizationType

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.

Note

## Example

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 );
```