Detailed Description
Generates a Laporte and Louveaux Benders' decomposition integer cut.
Definition in file benderscut_int.c.
#include "scip/benderscut_int.h"
#include "scip/cons_linear.h"
#include "scip/pub_benderscut.h"
#include "scip/pub_benders.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_paramset.h"
#include "scip/pub_var.h"
#include "scip/scip_benders.h"
#include "scip/scip_cons.h"
#include "scip/scip_cut.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | BENDERSCUT_NAME "integer" |
#define | BENDERSCUT_DESC "Laporte and Louveaux Benders' decomposition integer cut" |
#define | BENDERSCUT_PRIORITY 0 |
#define | BENDERSCUT_LPCUT FALSE |
#define | SCIP_DEFAULT_ADDCUTS FALSE /** Should cuts be generated, instead of constraints */ |
#define | SCIP_DEFAULT_CUTCONSTANT -10000.0 |
Macro Definition Documentation
◆ BENDERSCUT_NAME
#define BENDERSCUT_NAME "integer" |
Definition at line 46 of file benderscut_int.c.
Referenced by generateAndApplyBendersIntegerCuts(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXIT(), SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTINIT(), and SCIPincludeBenderscutInt().
◆ BENDERSCUT_DESC
#define BENDERSCUT_DESC "Laporte and Louveaux Benders' decomposition integer cut" |
Definition at line 47 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ BENDERSCUT_PRIORITY
#define BENDERSCUT_PRIORITY 0 |
Definition at line 48 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ BENDERSCUT_LPCUT
#define BENDERSCUT_LPCUT FALSE |
Definition at line 49 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ SCIP_DEFAULT_ADDCUTS
#define SCIP_DEFAULT_ADDCUTS FALSE /** Should cuts be generated, instead of constraints */ |
Definition at line 51 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ SCIP_DEFAULT_CUTCONSTANT
#define SCIP_DEFAULT_CUTCONSTANT -10000.0 |
Definition at line 52 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
Function Documentation
◆ SCIP_DECL_PARAMCHGD()
|
static |
method to call, when the priority of a Benders' decomposition was changed
Definition at line 71 of file benderscut_int.c.
References NULL, SCIP_OKAY, and SCIPparamGetData().
◆ createBenderscutData()
|
static |
creates the Benders' decomposition cut data
- Parameters
-
scip the SCIP data structure benderscutdata the Benders' cut data
Definition at line 88 of file benderscut_int.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, and TRUE.
Referenced by SCIP_DECL_BENDERSCUTINIT().
◆ updateSubproblemCutConstant()
|
static |
updates the cut constant for the given subproblem based upon the global bounds of the associated auxiliary variable
- Parameters
-
masterprob the SCIP instance of the master problem benders the benders' decomposition structure benderscutdata the Benders' decomposition cut data probnumber the index for the subproblem
Definition at line 117 of file benderscut_int.c.
References NULL, SCIPbendersGetAuxiliaryVar(), SCIPbendersGetSubproblemLowerbound(), SCIPisGT(), SCIPvarGetLbGlobal(), and TRUE.
Referenced by generateAndApplyBendersIntegerCuts().
◆ computeStandardIntegerOptCut()
|
static |
computes a standard Benders' optimality cut from the dual solutions of the LP
- Parameters
-
masterprob the SCIP instance of the master problem benders the benders' decomposition structure sol primal CIP solution cons the constraint for the generated cut, can be NULL row the row for the generated cut, can be NULL cutconstant the constant value in the integer optimality cut probnumber the number of the pricing problem addcut indicates whether a cut is created instead of a constraint success was the cut generation successful?
Definition at line 149 of file benderscut_int.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddVarToRow(), SCIPbendersGetSubproblemObjval(), SCIPbendersSubproblem(), SCIPchgLhsLinear(), SCIPchgRowLhs(), SCIPdebug, SCIPdebugMsg, SCIPgetActivityLinear(), SCIPgetBendersSubproblemVar(), SCIPgetBestSol(), SCIPgetLhsLinear(), SCIPgetNVars(), SCIPgetObjsense(), SCIPgetRowSolActivity(), SCIPgetSolOrigObj(), SCIPgetSolVal(), SCIPgetVars(), SCIPisFeasEQ(), SCIPisInfinity(), SCIProwGetLhs(), and TRUE.
Referenced by generateAndApplyBendersIntegerCuts().
◆ addAuxiliaryVariableToCut()
|
static |
adds the auxiliary variable to the generated cut. If this is the first optimality cut for the subproblem, then the auxiliary variable is first created and added to the master problem.
- Parameters
-
masterprob the SCIP instance of the master problem benders the benders' decomposition structure cons the constraint for the generated cut, can be NULL row the row for the generated cut, can be NULL probnumber the number of the pricing problem addcut indicates whether a cut is created instead of a constraint
Definition at line 274 of file benderscut_int.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPaddCoefLinear(), SCIPaddVarToRow(), and SCIPbendersGetAuxiliaryVar().
Referenced by generateAndApplyBendersIntegerCuts().
◆ generateAndApplyBendersIntegerCuts()
|
static |
generates and applies Benders' cuts
- Parameters
-
masterprob the SCIP instance of the master problem benders the benders' decomposition benderscut the benders' decomposition cut method sol primal CIP solution probnumber the number of the pricing problem type the enforcement type calling this function result the result from solving the subproblems initcons is this function called to generate the initial constraint
Definition at line 308 of file benderscut_int.c.
References addAuxiliaryVariableToCut(), BENDERSCUT_NAME, computeStandardIntegerOptCut(), FALSE, NULL, SCIP_BENDERSENFOTYPE_CHECK, SCIP_BENDERSENFOTYPE_LP, SCIP_BENDERSENFOTYPE_PSEUDO, SCIP_BENDERSENFOTYPE_RELAX, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_DIDNOTFIND, SCIP_FEASIBLE, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_STAGE_INITSOLVE, SCIPaddCons(), SCIPaddPoolCut(), SCIPaddRow(), SCIPbenderscutGetData(), SCIPbenderscutGetNFound(), SCIPbendersGetAuxiliaryVar(), SCIPcheckBendersSubproblemOptimality(), SCIPchgLhsLinear(), SCIPchgRowLhs(), SCIPcreateConsBasicLinear(), SCIPcreateEmptyRowConshdlr(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfindConshdlr(), SCIPgetLhsLinear(), SCIPgetObjsense(), SCIPgetSolOrigObj(), SCIPgetStage(), SCIPinfinity(), SCIPinfoMessage(), SCIPisInfinity(), SCIPprintRow(), SCIPreleaseCons(), SCIPreleaseRow(), SCIProwGetLhs(), SCIPsetConsDynamic(), SCIPsetConsRemovable(), SCIPsnprintf(), SCIPvarGetLbGlobal(), TRUE, and updateSubproblemCutConstant().
Referenced by SCIP_DECL_BENDERSCUTEXEC().
◆ SCIP_DECL_BENDERSCUTFREE()
|
static |
destructor of Benders' decomposition cuts to free user data (called when SCIP is exiting)
Definition at line 499 of file benderscut_int.c.
References BENDERSCUT_NAME, NULL, SCIP_OKAY, SCIPbenderscutGetData(), SCIPbenderscutGetName(), SCIPbenderscutSetData(), and SCIPfreeBlockMemory.
◆ SCIP_DECL_BENDERSCUTINIT()
|
static |
initialization method of Benders' decomposition cuts (called after problem was transformed)
Definition at line 520 of file benderscut_int.c.
References BENDERSCUT_NAME, createBenderscutData(), NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutGetData(), SCIPbenderscutGetName(), and SCIPbendersGetNSubproblems().
◆ SCIP_DECL_BENDERSCUTEXIT()
|
static |
deinitialization method of Benders' decomposition cuts (called before transformed problem is freed)
Definition at line 539 of file benderscut_int.c.
References BENDERSCUT_NAME, NULL, SCIP_OKAY, SCIPbenderscutGetData(), SCIPbenderscutGetName(), and SCIPfreeBlockMemoryArray.
◆ SCIP_DECL_BENDERSCUTEXEC()
|
static |
execution method of Benders' decomposition cuts
Definition at line 558 of file benderscut_int.c.
References BENDERSCUT_NAME, FALSE, generateAndApplyBendersIntegerCuts(), NULL, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_STATUS_OPTIMAL, SCIPbenderscutSetEnabled(), SCIPbendersGetNSubproblems(), SCIPbendersMasterIsNonlinear(), SCIPbendersSubproblem(), SCIPdebugMsg, SCIPgetNBinVars(), SCIPgetNVars(), SCIPgetStatus(), and SCIPinfoMessage().