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/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 44 of file benderscut_int.c.
Referenced by generateAndApplyBendersIntegerCuts(), 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 45 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ BENDERSCUT_PRIORITY
#define BENDERSCUT_PRIORITY 0 |
Definition at line 46 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ BENDERSCUT_LPCUT
#define BENDERSCUT_LPCUT FALSE |
Definition at line 47 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 49 of file benderscut_int.c.
Referenced by SCIPincludeBenderscutInt().
◆ SCIP_DEFAULT_CUTCONSTANT
#define SCIP_DEFAULT_CUTCONSTANT -10000.0 |
Definition at line 50 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 69 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 86 of file benderscut_int.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, and TRUE.
Referenced by SCIP_DECL_BENDERSCUTINIT().
◆ 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 115 of file benderscut_int.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddVarToRow(), SCIPbendersGetSubproblemObjval(), SCIPbendersSubproblem(), SCIPchgLhsLinear(), SCIPchgRowLhs(), 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 245 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 279 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(), SCIPbendersGetSubproblemLowerbound(), SCIPcheckBendersSubproblemOptimality(), SCIPchgLhsLinear(), SCIPchgRowLhs(), SCIPcreateConsBasicLinear(), SCIPcreateEmptyRowCons(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfindConshdlr(), SCIPgetLhsLinear(), SCIPgetObjsense(), SCIPgetSolOrigObj(), SCIPgetStage(), SCIPinfinity(), SCIPinfoMessage(), SCIPisInfinity(), SCIPisLT(), SCIPprintRow(), SCIPreleaseCons(), SCIPreleaseRow(), SCIProwGetLhs(), SCIPsetConsDynamic(), SCIPsetConsRemovable(), SCIPsnprintf(), and TRUE.
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 474 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 495 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 514 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 533 of file benderscut_int.c.
References FALSE, generateAndApplyBendersIntegerCuts(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_STATUS_OPTIMAL, SCIPbenderscutSetEnabled(), SCIPbendersGetNSubproblems(), SCIPbendersSubproblem(), SCIPgetNBinVars(), SCIPgetNVars(), SCIPgetStatus(), and SCIPinfoMessage().