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.