Standard feasibility cuts for Benders' decomposition.
Definition in file benderscut_feas.c.
#include "scip/pub_expr.h"
#include "scip/benderscut_feas.h"
#include "scip/benderscut_opt.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_misc_linear.h"
#include "scip/pub_nlp.h"
#include "scip/pub_var.h"
#include "scip/scip_benders.h"
#include "scip/scip_cons.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nlp.h"
#include "scip/scip_nlpi.h"
#include "scip/scip_numerics.h"
#include "scip/scip_prob.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_var.h"
Go to the source code of this file.
Macros | |
#define | BENDERSCUT_NAME "feas" |
#define | BENDERSCUT_DESC "Standard feasibility cuts for Benders' decomposition" |
#define | BENDERSCUT_PRIORITY 10000 |
#define | BENDERSCUT_LPCUT TRUE |
Functions | |
static SCIP_RETCODE | addVariableToArray (SCIP *masterprob, SCIP_VAR ***vars, SCIP_Real **vals, SCIP_VAR *addvar, SCIP_Real addval, int *nvars, int *varssize) |
static SCIP_RETCODE | computeStandardLPFeasibilityCut (SCIP *masterprob, SCIP *subproblem, SCIP_BENDERS *benders, SCIP_VAR ***vars, SCIP_Real **vals, SCIP_Real *lhs, int *nvars, int *varssize, SCIP_Bool *success) |
static SCIP_RETCODE | computeStandardNLPFeasibilityCut (SCIP *masterprob, SCIP *subproblem, SCIP_BENDERS *benders, SCIP_VAR ***vars, SCIP_Real **vals, SCIP_Real *lhs, int *nvars, int *varssize, SCIP_Bool *success) |
static SCIP_RETCODE | generateAndApplyBendersCuts (SCIP *masterprob, SCIP *subproblem, SCIP_BENDERS *benders, SCIP_BENDERSCUT *benderscut, SCIP_SOL *sol, int probnumber, SCIP_RESULT *result) |
static | SCIP_DECL_BENDERSCUTEXEC (benderscutExecFeas) |
SCIP_RETCODE | SCIPincludeBenderscutFeas (SCIP *scip, SCIP_BENDERS *benders) |
#define BENDERSCUT_NAME "feas" |
Definition at line 58 of file benderscut_feas.c.
Referenced by generateAndApplyBendersIntegerCuts(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXEC(), SCIP_DECL_BENDERSCUTEXIT(), SCIP_DECL_BENDERSCUTEXIT(), SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTINIT(), SCIPincludeBenderscutFeas(), SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().
#define BENDERSCUT_DESC "Standard feasibility cuts for Benders' decomposition" |
Definition at line 59 of file benderscut_feas.c.
Referenced by SCIPincludeBenderscutFeas(), SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().
#define BENDERSCUT_PRIORITY 10000 |
Definition at line 60 of file benderscut_feas.c.
Referenced by SCIPincludeBenderscutFeas(), SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().
#define BENDERSCUT_LPCUT TRUE |
Definition at line 61 of file benderscut_feas.c.
Referenced by SCIPincludeBenderscutFeas(), SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().
|
static |
adds a variable and value to the constraint/row arrays
masterprob | the SCIP instance of the master problem |
vars | pointer to array of variables in the generated cut with non-zero coefficient |
vals | pointer to array of coefficients of the variables in the generated cut |
addvar | the variable that will be added to the array |
addval | the value that will be added to the array |
nvars | the number of variables in the variable array |
varssize | the length of the variable size |
Definition at line 69 of file benderscut_feas.c.
References assert(), NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcMemGrowSize(), SCIPreallocBufferArray, and vars.
Referenced by computeStandardLPFeasibilityCut().
|
static |
computing as standard Benders' feasibility cut from the dual solutions of the LP
masterprob | the SCIP instance of the master problem |
subproblem | the SCIP instance of the pricing problem |
benders | the benders' decomposition structure |
vars | pointer to array of variables in the generated cut with non-zero coefficient |
vals | pointer to array of coefficients of the variables in the generated cut |
lhs | the left hand side of the cut |
nvars | the number of variables in the cut |
varssize | the number of variables in the array |
success | was the cut generation successful? |
Definition at line 105 of file benderscut_feas.c.
References addVariableToArray(), assert(), FALSE, i, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetBendersMasterVar(), SCIPgetLPRows(), SCIPgetLPSolstat(), SCIPgetNLPRows(), SCIPgetNVars(), SCIPgetVarFarkasCoef(), SCIPgetVars(), SCIPisDualfeasZero(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIProwGetDualfarkas(), SCIProwGetLhs(), SCIProwGetRhs(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), TRUE, var, and vars.
Referenced by generateAndApplyBendersCuts().
|
static |
computing as standard Benders' feasibility cut from the dual solutions of the NLP
NOTE: The cut must be created before being passed to this function
masterprob | the SCIP instance of the master problem |
subproblem | the SCIP instance of the pricing problem |
benders | the benders' decomposition structure |
vars | pointer to array of variables in the generated cut with non-zero coefficient |
vals | pointer to array of coefficients of the variables in the generated cut |
lhs | the left hand side of the cut |
nvars | the number of variables in the cut |
varssize | the number of variables in the array |
success | was the cut generation successful? |
Definition at line 226 of file benderscut_feas.c.
References assert(), FALSE, i, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_NLPSOLSTAT_GLOBINFEASIBLE, SCIP_NLPSOLSTAT_LOCINFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPaddNlRowGradientBenderscutOpt(), SCIPdebugMsg, SCIPgetNLPNlRows(), SCIPgetNLPSolstat(), SCIPgetNlRowActivity(), SCIPgetNNLPNlRows(), SCIPisInfinity(), SCIPisNLPConstructed(), SCIPisZero(), SCIPnlrowGetDualsol(), SCIPnlrowGetLhs(), SCIPnlrowGetRhs(), TRUE, and vars.
Referenced by generateAndApplyBendersCuts().
|
static |
generates and applies Benders' cuts
masterprob | the SCIP instance of the master problem |
subproblem | the SCIP instance of the pricing problem |
benders | the benders' decomposition |
benderscut | the benders' decomposition cut method |
sol | primal CIP solution |
probnumber | the number of the pricing problem |
result | the result from solving the subproblems |
Definition at line 305 of file benderscut_feas.c.
References assert(), computeStandardLPFeasibilityCut(), computeStandardNLPFeasibilityCut(), FALSE, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_DIDNOTFIND, SCIP_LONGINT_FORMAT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_FULL, SCIPABORT, SCIPaddCons(), SCIPallocClearBufferArray, SCIPbenderscutGetNFound(), SCIPcreateConsBasicLinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetActivityLinear(), SCIPgetLhsLinear(), SCIPgetNFixedVars(), SCIPgetNLPIterations(), SCIPgetNNlpis(), SCIPgetNVars(), SCIPgetRhsLinear(), SCIPinfinity(), SCIPisGE(), SCIPisInfinity(), SCIPisNLPConstructed(), SCIPreleaseCons(), SCIPsetConsDynamic(), SCIPsetConsRemovable(), SCIPsnprintf(), SCIPverbMessage(), sol, TRUE, and vars.
Referenced by SCIP_DECL_BENDERSCUTEXEC().
|
static |
execution method of Benders' decomposition cuts
Definition at line 421 of file benderscut_feas.c.
References assert(), BENDERSCUT_NAME, generateAndApplyBendersCuts(), NULL, result, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_NLPSOLSTAT_GLOBINFEASIBLE, SCIP_NLPSOLSTAT_LOCINFEASIBLE, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPbendersGetNSubproblems(), SCIPbendersSubproblem(), SCIPdebugMsg, SCIPgetLPSolstat(), SCIPgetNLPSolstat(), SCIPgetNNlpis(), SCIPgetStage(), SCIPisNLPConstructed(), and sol.