Detailed Description
internal methods for Benders' decomposition
Definition in file benders.h.
#include "blockmemshell/memory.h"
#include "scip/def.h"
#include "scip/type_benders.h"
#include "scip/type_benderscut.h"
#include "scip/type_dcmp.h"
#include "scip/type_message.h"
#include "scip/type_misc.h"
#include "scip/type_result.h"
#include "scip/type_retcode.h"
#include "scip/type_scip.h"
#include "scip/type_set.h"
#include "scip/type_sol.h"
#include "scip/type_stat.h"
#include "scip/type_var.h"
Go to the source code of this file.
Function Documentation
◆ SCIPbendersCopyInclude()
SCIP_RETCODE SCIPbendersCopyInclude | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | sourceset, | ||
SCIP_SET * | targetset, | ||
SCIP_HASHMAP * | varmap, | ||
SCIP_Bool | threadsafe, | ||
SCIP_Bool * | valid | ||
) |
copies the given Benders' decomposition to a new scip
copies the given Benders' decomposition to a new SCIP
- Parameters
-
benders Benders' decomposition sourceset SCIP_SET of SCIP to copy from targetset SCIP_SET of SCIP to copy to varmap a hashmap to store the mapping of source variables corresponding target variables; if NULL, then the transfer of cuts is not possible threadsafe must the Benders' decomposition copy be thread safe valid was the copying process valid?
Definition at line 921 of file benders.c.
References SCIP_Set::benders_copybenders, SCIP_Benders::benderscuts, createMasterVarMapping(), FALSE, SCIP_Benders::lnscheck, SCIP_Benders::lnsmaxcalls, SCIP_Benders::lnsmaxcallsroot, SCIP_Benders::lnsmaxdepth, SCIP_Benders::nbenderscuts, NULL, SCIP_Set::scip, SCIP_CALL, SCIP_OKAY, SCIPbenderscutCopyInclude(), SCIPbendersGetName(), SCIPbendersIsActive(), SCIPbendersSortBenderscuts(), SCIPsetDebugMsg, SCIPsetFindBenders(), and TRUE.
Referenced by SCIPcopyBenders().
◆ SCIPbendersCreate()
SCIP_RETCODE SCIPbendersCreate | ( | SCIP_BENDERS ** | benders, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
const char * | name, | ||
const char * | desc, | ||
int | priority, | ||
SCIP_Bool | cutlp, | ||
SCIP_Bool | cutpseudo, | ||
SCIP_Bool | cutrelax, | ||
SCIP_Bool | shareauxvars, | ||
SCIP_DECL_BENDERSCOPY((*benderscopy)) | , | ||
SCIP_DECL_BENDERSFREE((*bendersfree)) | , | ||
SCIP_DECL_BENDERSINIT((*bendersinit)) | , | ||
SCIP_DECL_BENDERSEXIT((*bendersexit)) | , | ||
SCIP_DECL_BENDERSINITPRE((*bendersinitpre)) | , | ||
SCIP_DECL_BENDERSEXITPRE((*bendersexitpre)) | , | ||
SCIP_DECL_BENDERSINITSOL((*bendersinitsol)) | , | ||
SCIP_DECL_BENDERSEXITSOL((*bendersexitsol)) | , | ||
SCIP_DECL_BENDERSGETVAR((*bendersgetvar)) | , | ||
SCIP_DECL_BENDERSCREATESUB((*benderscreatesub)) | , | ||
SCIP_DECL_BENDERSPRESUBSOLVE((*benderspresubsolve)) | , | ||
SCIP_DECL_BENDERSSOLVESUBCONVEX((*benderssolvesubconvex)) | , | ||
SCIP_DECL_BENDERSSOLVESUB((*benderssolvesub)) | , | ||
SCIP_DECL_BENDERSPOSTSOLVE((*benderspostsolve)) | , | ||
SCIP_DECL_BENDERSFREESUB((*bendersfreesub)) | , | ||
SCIP_BENDERSDATA * | bendersdata | ||
) |
creates a Benders' decomposition
creates a Benders' decomposition structure
To use the Benders' decomposition for solving a problem, it first has to be activated with a call to SCIPactivateBenders().
- Parameters
-
benders pointer to Benders' decomposition data structure set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of Benders' decomposition desc description of Benders' decomposition priority priority of the Benders' decomposition cutlp should Benders' cuts be generated for LP solutions cutpseudo should Benders' cuts be generated for pseudo solutions cutrelax should Benders' cuts be generated for relaxation solutions shareauxvars should this Benders' use the highest priority Benders aux vars bendersdata Benders' decomposition data
Definition at line 1190 of file benders.c.
References doBendersCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPbendersFree().
Referenced by SCIPincludeBenders(), and SCIPincludeBendersBasic().
◆ SCIPbendersFree()
SCIP_RETCODE SCIPbendersFree | ( | SCIP_BENDERS ** | benders, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of Benders' decomposition
- Parameters
-
benders pointer to Benders' decomposition data structure set global SCIP settings
Definition at line 1269 of file benders.c.
References BMSfreeMemory, BMSfreeMemoryArray, BMSfreeMemoryArrayNull, NULL, releaseVarMappingHashmapVars(), SCIP_CALL, SCIP_OKAY, SCIPbenderscutFree(), SCIPclockFree(), and SCIPhashmapFree().
Referenced by SCIPbendersCreate().
◆ SCIPbendersInit()
SCIP_RETCODE SCIPbendersInit | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set | ||
) |
initializes Benders' decomposition
- Parameters
-
benders Benders' decomposition set global SCIP settings
Definition at line 1989 of file benders.c.
References assignAuxiliaryVariables(), BENDERS_ARRAYSIZE, SCIP_Benders::bendersclock, SCIP_Benders::benderscuts, BMSallocBlockMemoryArray, createSubproblems(), SCIP_Benders::initialized, SCIP_Benders::iscopy, SCIP_Benders::name, SCIP_Benders::nbenderscuts, SCIP_Benders::ncalls, SCIP_Benders::ncutsfound, SCIP_Benders::nstoredcuts, SCIP_Benders::ntransferred, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPbenderscutInit(), SCIPbendersSortBenderscuts(), SCIPblkmem(), SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPsetGetRealParam(), SCIP_Benders::setuptime, SCIP_Benders::solutiontol, SCIP_Benders::storedcuts, SCIP_Benders::storedcutssize, and TRUE.
◆ SCIPbendersExit()
SCIP_RETCODE SCIPbendersExit | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set | ||
) |
calls exit method of Benders' decomposition
- Parameters
-
benders Benders' decomposition set global SCIP settings
Definition at line 2233 of file benders.c.
References SCIP_Benders::auxiliaryvars, SCIP_Benders::benderscuts, BMSfreeBlockMemoryArray, SCIP_Benders::corepoint, FALSE, SCIP_Benders::initialized, SCIP_Benders::iscopy, SCIP_Benders::mastervarsmap, SCIP_Benders::name, SCIP_Benders::nbenderscuts, SCIP_Benders::nstoredcuts, NULL, SCIP_BenderscutCut::nvars, SCIP_CALL, SCIP_INVALIDCALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPbenderscutExit(), SCIPbendersGetNSubproblems(), SCIPbendersSortBenderscuts(), SCIPblkmem(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeSol(), SCIPreleaseVar(), SCIPvarGetNLocksDown(), SCIP_Benders::setuptime, SCIP_Benders::sourcescip, SCIP_Benders::storedcuts, SCIP_Benders::storedcutssize, transferBendersCuts(), SCIP_BenderscutCut::vals, and SCIP_BenderscutCut::vars.
Referenced by SCIPsetInitPlugins().
◆ SCIPbendersInitpre()
SCIP_RETCODE SCIPbendersInitpre | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat | ||
) |
informs the Benders' decomposition that the presolving process is being started
- Parameters
-
benders Benders' decomposition set global SCIP settings stat dynamic problem statistics
Definition at line 2376 of file benders.c.
References addAuxiliaryVariablesToMaster(), checkSubproblemIndependence(), SCIP_Benders::iscopy, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
Referenced by SCIPsetExitPlugins().
◆ SCIPbendersExitpre()
SCIP_RETCODE SCIPbendersExitpre | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat | ||
) |
informs the Benders' decomposition that the presolving process has completed
- Parameters
-
benders Benders' decomposition set global SCIP settings stat dynamic problem statistics
Definition at line 2419 of file benders.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
Referenced by SCIPsetExitPlugins().
◆ SCIPbendersInitsol()
SCIP_RETCODE SCIPbendersInitsol | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set | ||
) |
informs Benders' decomposition that the branch and bound process is being started
- Parameters
-
benders Benders' decomposition set global SCIP settings
Definition at line 2445 of file benders.c.
References SCIP_Benders::benderscuts, SCIP_Benders::nbenderscuts, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutInitsol(), SCIPbendersSortBenderscuts(), SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
Referenced by SCIPsetInitprePlugins().
◆ SCIPbendersExitsol()
SCIP_RETCODE SCIPbendersExitsol | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set | ||
) |
informs Benders' decomposition that the branch and bound process data is being freed
- Parameters
-
benders Benders' decomposition set global SCIP settings
Definition at line 2478 of file benders.c.
References SCIP_Benders::benderscuts, FALSE, SCIP_Benders::nbenderscuts, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutExitsol(), SCIPbendersFreeSubproblem(), SCIPbendersGetNSubproblems(), SCIPbendersSetSubproblemIsIndependent(), SCIPbendersSortBenderscuts(), SCIPbendersSubproblemIsIndependent(), SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPbendersActivate()
SCIP_RETCODE SCIPbendersActivate | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | nsubproblems | ||
) |
activates Benders' decomposition such that it is called in LP solving loop
- Parameters
-
benders the Benders' decomposition structure set global SCIP settings nsubproblems the number subproblems used in this decomposition
Definition at line 2534 of file benders.c.
References SCIP_Benders::active, SCIP_Benders::auxiliaryvars, SCIP_SubproblemSolveStat::avgiter, SCIP_Benders::bestsubprobobjval, BMSallocMemory, BMSallocMemoryArray, FALSE, SCIP_SubproblemSolveStat::idx, SCIP_Benders::indepsubprob, SCIP_Benders::mastervarscont, SCIP_Benders::nactivesubprobs, SCIP_SubproblemSolveStat::ncalls, NODESOLVED_EVENTHDLR_DESC, NODESOLVED_EVENTHDLR_NAME, SCIP_Benders::nsubproblems, NULL, SCIP_Benders::prevlowerbound, SCIP_ALLOC, SCIP_BENDERSSUBTYPE_UNKNOWN, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PROBLEM, SCIPincludeEventhdlrBasic(), SCIPpqueueCreate(), SCIPpqueueInsert(), SCIPsetEventhdlrInitsol(), SCIPsetInfinity(), SCIP_Benders::solvestat, SCIP_Benders::strengthenround, SCIP_Benders::subprobenabled, SCIP_Benders::subprobisconvex, SCIP_Benders::subprobisnonlinear, SCIP_Benders::subproblems, SCIP_Benders::subproblowerbound, SCIP_Benders::subprobobjval, SCIP_Benders::subprobqueue, SCIP_Benders::subprobsetup, SCIP_Benders::subprobtype, and TRUE.
Referenced by SCIPactivateBenders().
◆ SCIPbendersDeactivate()
SCIP_RETCODE SCIPbendersDeactivate | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set | ||
) |
deactivates Benders' decomposition such that it is no longer called in LP solving loop
- Parameters
-
benders the Benders' decomposition structure set global SCIP settings
Definition at line 2620 of file benders.c.
References SCIP_Benders::active, SCIP_Benders::auxiliaryvars, SCIP_Benders::bestsubprobobjval, BMSfreeMemory, BMSfreeMemoryArray, FALSE, SCIP_Benders::freesubprobs, SCIP_Benders::indepsubprob, SCIP_Benders::mastervarscont, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PROBLEM, SCIPbendersGetNSubproblems(), SCIPbendersSubproblem(), SCIPfree(), SCIPpqueueFree(), SCIP_Benders::solvestat, SCIP_Benders::subprobenabled, SCIP_Benders::subprobisconvex, SCIP_Benders::subprobisnonlinear, SCIP_Benders::subproblems, SCIP_Benders::subproblowerbound, SCIP_Benders::subprobobjval, SCIP_Benders::subprobqueue, SCIP_Benders::subprobsetup, and SCIP_Benders::subprobtype.
Referenced by SCIPdeactivateBenders(), and SCIPfreeProb().
◆ SCIPbendersEnableOrDisableClocks()
void SCIPbendersEnableOrDisableClocks | ( | SCIP_BENDERS * | benders, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of Benders' decomposition depending on the value of the flag
enables or disables all clocks of the Benders' decomposition, depending on the value of the flag
- Parameters
-
benders the Benders' decomposition for which all clocks should be enabled or disabled enable should the clocks of the Benders' decomposition be enabled?
Definition at line 6041 of file benders.c.
References SCIP_Benders::bendersclock, NULL, SCIPclockEnableOrDisable(), and SCIP_Benders::setuptime.
◆ SCIPbendersExec()
SCIP_RETCODE SCIPbendersExec | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
SCIP_RESULT * | result, | ||
SCIP_Bool * | infeasible, | ||
SCIP_Bool * | auxviol, | ||
SCIP_BENDERSENFOTYPE | type, | ||
SCIP_Bool | checkint | ||
) |
solves the subproblem using the current master problem solution.
The checkint flag indicates whether integer feasibility can be assumed. If it is not assumed, i.e. checkint == FALSE, then only the convex relaxations of the subproblems are solved. If integer feasibility is assumed, i.e. checkint == TRUE, then the convex relaxations and the full CIP are solved to generate Benders' cuts and check solution feasibility.
Solves the subproblem using the current master problem solution.
The checkint flag indicates whether integer feasibility can be assumed. If it is not assumed, i.e. checkint == FALSE, then only the convex relaxations of the subproblems are solved. If integer feasibility is assumed, i.e. checkint == TRUE, then the convex relaxations and the full CIP are solved to generate Benders' cuts and check solution feasibility.
TODO: consider allowing the possibility to pass solution information back from the subproblems instead of the scip instance. This would allow the use of different solvers for the subproblems, more importantly allowing the use of an LP solver for LP subproblems.
- Parameters
-
benders Benders' decomposition set global SCIP settings sol primal CIP solution result result of the pricing process infeasible is the master problem infeasible with respect to the Benders' cuts? auxviol set to TRUE only if the solution is feasible but the aux vars are violated type the type of solution being enforced checkint should the integer solution be checked by the subproblems
Definition at line 3589 of file benders.c.
References BENDERS_MAXPSEUDOSOLS, SCIP_Benders::bendersclock, createSolveSubproblemIndexList(), FALSE, SCIP_Benders::feasibilityphase, generateBendersCuts(), SCIP_Benders::iscopy, SCIP_Benders::lnscheck, SCIP_Benders::lnsmaxcalls, SCIP_Benders::lnsmaxcallsroot, SCIP_Benders::lnsmaxdepth, SCIP_Benders::name, SCIP_Benders::ncalls, SCIP_Benders::npseudosols, NULL, performInteriorSolCutStrengthening(), resetSubproblemObjectiveValue(), SCIP_BENDERSENFOTYPE_CHECK, SCIP_BENDERSENFOTYPE_LP, SCIP_BENDERSENFOTYPE_PSEUDO, SCIP_BENDERSSOLVELOOP_USERCIP, SCIP_BENDERSSOLVELOOP_USERCONVEX, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_ERROR, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_INVALIDRESULT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_SEPARATED, SCIP_SOLVELP, SCIP_STAGE_TRANSFORMED, SCIP_VERBLEVEL_HIGH, SCIPallocClearBlockMemoryArray, SCIPbendersFreeSubproblem(), SCIPbendersGetName(), SCIPbendersGetNCalls(), SCIPbendersGetNConvexSubproblems(), SCIPbendersGetNSubproblems(), SCIPbendersOnlyCheckConvexRelax(), SCIPbendersSolSlackVarsActive(), SCIPbendersSubproblem(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPfreeBlockMemoryArray, SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetObjsense(), SCIPgetPrimalbound(), SCIPgetSolOrigObj(), SCIPgetStage(), SCIPinProbing(), SCIPprintSol(), SCIPsetDebugMsg, SCIPsetGetSubscipsOff(), SCIPsetIsLE(), SCIPsolveBendersSubproblems(), SCIPverbMessage(), SCIP_Benders::slackvarcoef, solveBendersSubproblems(), SCIP_Benders::sourcescip, SCIP_Benders::strengthenenabled, SCIP_Benders::strengthenround, subproblemIsActive(), TRUE, updateAuxiliaryVarLowerbound(), SCIP_Benders::updateauxvarbound, and updateSubproblemStatQueue().
Referenced by SCIPsolveBendersSubproblems().
◆ SCIPbendersExecSubproblemSolve()
SCIP_RETCODE SCIPbendersExecSubproblemSolve | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
int | probnumber, | ||
SCIP_BENDERSSOLVELOOP | solveloop, | ||
SCIP_Bool | enhancement, | ||
SCIP_Bool * | solved, | ||
SCIP_Bool * | infeasible, | ||
SCIP_BENDERSENFOTYPE | type | ||
) |
Executes the subproblem solving process.
executes the subproblem solving process
- Parameters
-
benders Benders' decomposition set global SCIP settings sol primal CIP solution probnumber the subproblem number solveloop the solve loop iteration. The first iter is for LP, the second for IP enhancement is the solve performed as part of and enhancement? solved flag to indicate whether the subproblem was solved infeasible returns whether the current subproblem is infeasible type the enforcement type calling this function
Definition at line 4190 of file benders.c.
References executeUserDefinedSolvesub(), FALSE, SCIP_Benders::name, NULL, SCIP_BENDERSSOLVELOOP_CIP, SCIP_BENDERSSOLVELOOP_CONVEX, SCIP_BENDERSSOLVELOOP_USERCIP, SCIP_BENDERSSOLVELOOP_USERCONVEX, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_ERROR, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_STATUS_BESTSOLLIMIT, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_MEMLIMIT, SCIP_STATUS_OPTIMAL, SCIP_STATUS_TIMELIMIT, SCIP_STATUS_UNBOUNDED, SCIP_STATUS_UNKNOWN, SCIP_STATUS_USERINTERRUPT, SCIP_UNBOUNDED, SCIP_VERBLEVEL_FULL, SCIPABORT, SCIPbendersGetAuxiliaryVarVal(), SCIPbendersGetSubproblemType(), SCIPbendersSetSubproblemObjval(), SCIPbendersSetupSubproblem(), SCIPbendersSolveSubproblemCIP(), SCIPbendersSolveSubproblemLP(), SCIPbendersSubproblem(), SCIPbendersSubproblemIsSetup(), SCIPerrorMessage, SCIPgetBestSol(), SCIPgetObjsense(), SCIPgetSolOrigObj(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPverbMessage(), TRUE, and updateEventhdlrUpperbound().
Referenced by solveBendersSubproblems().
◆ SCIPbendersSetupSubproblem()
SCIP_RETCODE SCIPbendersSetupSubproblem | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
int | probnumber, | ||
SCIP_BENDERSENFOTYPE | type | ||
) |
sets up the subproblem using the solution to the master problem
- Parameters
-
benders Benders' decomposition set global SCIP settings sol primal CIP solution probnumber the subproblem number type the enforcement type calling this function
Definition at line 4359 of file benders.c.
References FALSE, SCIP_Benders::feasibilityphase, initialiseSubproblem(), SCIP_Benders::name, NULL, SCIP_BENDERSENFOTYPE_CHECK, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIPbendersChgMastervarsToCont(), SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersGetVar(), SCIPbendersSetSubproblemIsSetup(), SCIPbendersSubproblem(), SCIPchgVarLb(), SCIPchgVarObjProbing(), SCIPchgVarUb(), SCIPerrorMessage, SCIPgetDepth(), SCIPgetNVars(), SCIPgetSolVal(), SCIPgetVars(), SCIPinProbing(), SCIPisEQ(), SCIPisGT(), SCIPisLT(), SCIPisZero(), SCIPstartProbing(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SLACKVAR_NAME, SCIP_Benders::slackvarcoef, and TRUE.
Referenced by SCIPbendersExecSubproblemSolve(), and SCIPsetupBendersSubproblem().
◆ SCIPbendersSolveSubproblem()
SCIP_RETCODE SCIPbendersSolveSubproblem | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
int | probnumber, | ||
SCIP_Bool * | infeasible, | ||
SCIP_Bool | solvecip, | ||
SCIP_Real * | objective | ||
) |
Solve a Benders' decomposition subproblems. This will either call the user defined method or the generic solving methods. If the generic method is called, then the subproblem must be set up before calling this method.
- Parameters
-
benders Benders' decomposition set global SCIP settings sol primal CIP solution, can be NULL probnumber the subproblem number infeasible returns whether the current subproblem is infeasible solvecip directly solve the CIP subproblem objective the objective function value of the subproblem, can be NULL
Definition at line 4503 of file benders.c.
References executeUserDefinedSolvesub(), FALSE, initialiseSubproblem(), NULL, SCIP_BENDERSSOLVELOOP_USERCIP, SCIP_BENDERSSOLVELOOP_USERCONVEX, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIP_STATUS_INFEASIBLE, SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersSolveSubproblemCIP(), SCIPbendersSolveSubproblemLP(), SCIPbendersSubproblem(), SCIPbendersSubproblemIsIndependent(), SCIPbendersSubproblemIsSetup(), SCIPerrorMessage, SCIPgetBestSol(), SCIPgetObjsense(), SCIPgetSolOrigObj(), SCIPinfinity(), SCIPinProbing(), SCIPstartProbing(), and TRUE.
Referenced by SCIPsolveBendersSubproblem().
◆ SCIPbendersFreeSubproblem()
SCIP_RETCODE SCIPbendersFreeSubproblem | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | probnumber | ||
) |
frees the subproblems
- Parameters
-
benders Benders' decomposition set global SCIP settings probnumber the subproblem number
Definition at line 5004 of file benders.c.
References FALSE, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_TRANSFORMED, SCIPbendersGetSubproblemType(), SCIPbendersSetSubproblemIsSetup(), SCIPbendersSubproblem(), SCIPendProbing(), SCIPfreeTransform(), SCIPgetStage(), SCIPinProbing(), and subproblemIsActive().
Referenced by SCIPbendersComputeSubproblemLowerbound(), SCIPbendersExec(), SCIPbendersExitsol(), SCIPbendersMergeSubproblemIntoMaster(), and SCIPfreeBendersSubproblem().
◆ SCIPbendersSubproblemIsOptimal()
SCIP_Bool SCIPbendersSubproblemIsOptimal | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
int | probnumber | ||
) |
compares the subproblem objective value with the auxiliary variable value for optimality
- Parameters
-
benders the benders' decomposition structure set global SCIP settings sol primal CIP solution probnumber the subproblem number
Definition at line 5054 of file benders.c.
References FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPbendersGetAuxiliaryVarVal(), SCIPbendersGetSubproblemObjval(), SCIPrelDiff(), SCIPsetDebugMsg, SCIP_Benders::solutiontol, and TRUE.
Referenced by SCIPcheckBendersSubproblemOptimality(), and solveBendersSubproblems().
◆ SCIPbendersGetAuxiliaryVarVal()
SCIP_Real SCIPbendersGetAuxiliaryVarVal | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_SOL * | sol, | ||
int | probnumber | ||
) |
returns the value of the auxiliary variable value in a master problem solution
- Parameters
-
benders the benders' decomposition structure set global SCIP settings sol primal CIP solution probnumber the subproblem number
Definition at line 5083 of file benders.c.
References NULL, SCIPbendersGetAuxiliaryVar(), and SCIPgetSolVal().
Referenced by SCIPbendersExecSubproblemSolve(), SCIPbendersSubproblemIsOptimal(), SCIPgetBendersAuxiliaryVarVal(), and solveBendersSubproblems().
◆ SCIPbendersComputeSubproblemLowerbound()
SCIP_RETCODE SCIPbendersComputeSubproblemLowerbound | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | probnumber, | ||
SCIP_Real * | lowerbound, | ||
SCIP_Bool * | infeasible | ||
) |
Solves an independent subproblem to identify its lower bound. The lower bound is then used to update the bound on the auxiliary variable.
- Parameters
-
benders Benders' decomposition set global SCIP settings probnumber the subproblem to be evaluated lowerbound the lowerbound for the subproblem infeasible was the subproblem found to be infeasible?
Definition at line 5104 of file benders.c.
References copyMemoryAndTimeLimits(), FALSE, MIPNODEFOCUS_EVENTHDLR_NAME, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_BENDERSSUBTYPE_CONVEXDIS, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_OPTIMAL, SCIP_NLPPAR_ITLIM, SCIP_NLPPAR_VERBLEVEL, SCIP_NLPSOLSTAT_FEASIBLE, SCIP_NLPSOLSTAT_GLOBINFEASIBLE, SCIP_NLPSOLSTAT_GLOBOPT, SCIP_NLPSOLSTAT_LOCINFEASIBLE, SCIP_NLPSOLSTAT_LOCOPT, SCIP_NLPTERMSTAT_OKAY, SCIP_OKAY, SCIP_Real, SCIP_STATUS_INFEASIBLE, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NONE, SCIPbendersFreeSubproblem(), SCIPbendersGetAuxiliaryVar(), SCIPbendersGetSubproblemType(), SCIPbendersSubproblem(), SCIPbendersSubproblemIsIndependent(), SCIPdebugMsg, SCIPeventhdlrGetData(), SCIPfindEventhdlr(), SCIPgetDualbound(), SCIPgetIntParam(), SCIPgetLongintParam(), SCIPgetLPSolstat(), SCIPgetNLPObjval(), SCIPgetNLPSolstat(), SCIPgetNLPTermstat(), SCIPgetNNlpis(), SCIPgetObjsense(), SCIPgetRealParam(), SCIPgetSolOrigObj(), SCIPgetStatus(), SCIPinfinity(), SCIPinfoMessage(), SCIPisLPConstructed(), SCIPisNLPConstructed(), SCIPretransformObj(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetNLPIntPar(), SCIPsetRealParam(), SCIPsolve(), SCIPsolveNLP(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPvarGetLbGlobal(), SCIPverbMessage(), and TRUE.
Referenced by SCIPcomputeBendersSubproblemLowerbound(), and updateAuxiliaryVarLowerbound().
◆ SCIPbendersMergeSubproblemIntoMaster()
SCIP_RETCODE SCIPbendersMergeSubproblemIntoMaster | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_HASHMAP * | varmap, | ||
SCIP_HASHMAP * | consmap, | ||
int | probnumber | ||
) |
merges a subproblem into the master problem. This process just adds a copy of the subproblem variables and constraints to the master problem, but keeps the subproblem stored in the Benders' decomposition data structure. The reason for keeping the subproblem available is for when it is queried for solutions after the problem is solved.
Once the subproblem is merged into the master problem, then the subproblem is flagged as disabled. This means that it will not be solved in the subsequent subproblem solving loops.
The associated auxiliary variables are kept in the master problem. The objective function of the merged subproblem is added as an underestimator constraint.
Merges a subproblem into the master problem. This process just adds a copy of the subproblem variables and constraints to the master problem, but keeps the subproblem stored in the Benders' decomposition data structure. The reason for keeping the subproblem available is for when it is queried for solutions after the problem is solved.
Once the subproblem is merged into the master problem, then the subproblem is flagged as disabled. This means that it will not be solved in the subsequent subproblem solving loops.
The associated auxiliary variables are kept in the master problem. The objective function of the merged subproblem is added as an underestimator constraint.
- Parameters
-
benders Benders' decomposition set global SCIP settings varmap a hashmap to store the mapping of subproblem variables corresponding to the newly created master variables, or NULL consmap a hashmap to store the mapping of subproblem constraints to the corresponding newly created constraints, or NULL probnumber the number of the subproblem that will be merged into the master problem
Definition at line 5272 of file benders.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_HIGH, SCIPaddCoefLinear(), SCIPaddCons(), SCIPaddVar(), SCIPbendersFreeSubproblem(), SCIPbendersGetAuxiliaryVar(), SCIPbendersSetSubproblemEnabled(), SCIPbendersSubproblem(), SCIPblkmem(), SCIPconsGetHdlr(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcreateConsBasicLinear(), SCIPcreateVarBasic(), SCIPgetBendersMasterVar(), SCIPgetConsCopy(), SCIPgetConss(), SCIPgetNConss(), SCIPgetNVars(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapInsert(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsetConsRemovable(), SCIPsetInfinity(), SCIPsnprintf(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetOrigvarSum(), SCIPvarGetType(), SCIPvarGetUbOriginal(), SCIPverbMessage(), and TRUE.
Referenced by SCIPmergeBendersSubproblemIntoMaster().
◆ SCIPbendersApplyDecomposition()
SCIP_RETCODE SCIPbendersApplyDecomposition | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_DECOMP * | decomp | ||
) |
Applies a Benders' decomposition to the problem based upon the decomposition selected from the storage
- Parameters
-
benders Benders' decomposition set global SCIP settings decomp the decomposition to apply to the problem
Definition at line 5584 of file benders.c.
References addConstraintToBendersSubproblem(), SCIP_Benders::freesubprobs, NULL, removeVariablesAndConstraintsFromMaster(), SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PARAMSETTING_OFF, SCIPallocBufferArray, SCIPblkmem(), SCIPcopyPlugins(), SCIPcreate(), SCIPcreateBendersDefault(), SCIPcreateProbBasic(), SCIPdebugMessage, SCIPdecompGetConsLabels(), SCIPdecompGetNBlocks(), SCIPdecompGetVarsLabels(), SCIPfreeBufferArray, SCIPgetConss(), SCIPgetNConss(), SCIPgetProbName(), SCIPgetVarsData(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetPresolving(), SCIPsnprintf(), and TRUE.
Referenced by SCIPapplyBendersDecomposition().
◆ SCIPbendersSetPriority()
void SCIPbendersSetPriority | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of Benders' decomposition
- Parameters
-
benders Benders' decomposition set global SCIP settings priority new priority of the Benders' decomposition
Definition at line 5935 of file benders.c.
References FALSE, NULL, and SCIP_Benders::priority.
Referenced by SCIPsetBendersPriority().
◆ SCIPbendersSetCopy()
void SCIPbendersSetCopy | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSCOPY((*benderscopy)) | |||
) |
sets copy callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5751 of file benders.c.
References NULL.
Referenced by SCIPsetBendersCopy().
◆ SCIPbendersSetFree()
void SCIPbendersSetFree | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSFREE((*bendersfree)) | |||
) |
sets destructor callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5762 of file benders.c.
References NULL.
Referenced by SCIPsetBendersFree().
◆ SCIPbendersSetInit()
void SCIPbendersSetInit | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSINIT((*bendersinit)) | |||
) |
sets initialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5773 of file benders.c.
References NULL.
Referenced by SCIPsetBendersInit().
◆ SCIPbendersSetExit()
void SCIPbendersSetExit | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSEXIT((*bendersexit)) | |||
) |
sets deinitialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5784 of file benders.c.
References NULL.
Referenced by SCIPsetBendersExit().
◆ SCIPbendersSetInitpre()
void SCIPbendersSetInitpre | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSINITPRE((*bendersinitpre)) | |||
) |
sets presolving initialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5795 of file benders.c.
References NULL.
Referenced by SCIPsetBendersInitpre().
◆ SCIPbendersSetExitpre()
void SCIPbendersSetExitpre | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSEXITPRE((*bendersexitpre)) | |||
) |
sets presolving deinitialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5806 of file benders.c.
References NULL.
Referenced by SCIPsetBendersExitpre().
◆ SCIPbendersSetInitsol()
void SCIPbendersSetInitsol | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSINITSOL((*bendersinitsol)) | |||
) |
sets solving process initialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5817 of file benders.c.
References NULL.
Referenced by SCIPsetBendersInitsol().
◆ SCIPbendersSetExitsol()
void SCIPbendersSetExitsol | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSEXITSOL((*bendersexitsol)) | |||
) |
sets solving process deinitialization callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5828 of file benders.c.
References NULL.
Referenced by SCIPsetBendersExitsol().
◆ SCIPbendersSetPresubsolve()
void SCIPbendersSetPresubsolve | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSPRESUBSOLVE((*benderspresubsolve)) | |||
) |
sets the pre subproblem solve callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5839 of file benders.c.
References NULL.
Referenced by SCIPsetBendersPresubsolve().
◆ SCIPbendersSetSolvesubconvex()
void SCIPbendersSetSolvesubconvex | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSSOLVESUBCONVEX((*benderssolvesubconvex)) | |||
) |
sets convex solve callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5850 of file benders.c.
References NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
◆ SCIPbendersSetSolvesub()
void SCIPbendersSetSolvesub | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSSOLVESUB((*benderssolvesub)) | |||
) |
sets solve callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5861 of file benders.c.
References NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
◆ SCIPbendersSetPostsolve()
void SCIPbendersSetPostsolve | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSPOSTSOLVE((*benderspostsolve)) | |||
) |
sets post-solve callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5872 of file benders.c.
References NULL.
Referenced by SCIPsetBendersPostsolve().
◆ SCIPbendersSetSubproblemComp()
void SCIPbendersSetSubproblemComp | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_SORTPTRCOMP((*benderssubcomp)) | |||
) |
sets post-solve callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5883 of file benders.c.
References NULL.
Referenced by SCIPsetBendersSubproblemComp().
◆ SCIPbendersSetFreesub()
void SCIPbendersSetFreesub | ( | SCIP_BENDERS * | benders, |
SCIP_DECL_BENDERSFREESUB((*bendersfreesub)) | |||
) |
sets free subproblem callback of Benders' decomposition
- Parameters
-
benders Benders' decomposition
Definition at line 5894 of file benders.c.
References NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
◆ SCIPbendersGetVar()
SCIP_RETCODE SCIPbendersGetVar | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_VAR ** | mappedvar, | ||
int | probnumber | ||
) |
Returns the corresponding master or subproblem variable for the given variable. This provides a call back for the variable mapping between the master and subproblems.
- Parameters
-
benders Benders' decomposition set global SCIP settings var the variable for which the corresponding variable is desired mappedvar the variable that is mapped to var probnumber the problem number for the desired variable, -1 for the master problem
Definition at line 5704 of file benders.c.
References AUXILIARYVAR_NAME, NULL, SCIP_CALL, SCIP_OKAY, and SCIPvarGetName().
Referenced by checkSubproblemConvexity(), createSubproblems(), SCIPbendersChgMastervarsToCont(), SCIPbendersSetupSubproblem(), SCIPgetBendersMasterVar(), and SCIPgetBendersSubproblemVar().
◆ SCIPbendersAddSubproblem()
SCIP_RETCODE SCIPbendersAddSubproblem | ( | SCIP_BENDERS * | benders, |
SCIP * | subproblem | ||
) |
adds a subproblem to the Benders' decomposition data
adds a subproblem to the Benders' decomposition data. If a custom subproblem solving method is used, then the subproblem pointer can be set to NULL
- Parameters
-
benders Benders' decomposition subproblem subproblem to be added to the data storage, can be NULL
Definition at line 6105 of file benders.c.
References SCIP_Benders::naddedsubprobs, SCIP_Benders::name, SCIP_Benders::nsubproblems, NULL, SCIP_ERROR, SCIP_OKAY, SCIPerrorMessage, and SCIP_Benders::subproblems.
Referenced by SCIPaddBendersSubproblem().
◆ SCIPbendersRemoveSubproblems()
void SCIPbendersRemoveSubproblems | ( | SCIP_BENDERS * | benders | ) |
removes the subproblems from the Benders' decomposition data
- Parameters
-
benders Benders' decomposition
Definition at line 6129 of file benders.c.
References BMSclearMemoryArray, SCIP_Benders::naddedsubprobs, NULL, and SCIP_Benders::subproblems.
◆ SCIPbendersSetSubproblemEnabled()
void SCIPbendersSetSubproblemEnabled | ( | SCIP_BENDERS * | benders, |
int | probnumber, | ||
SCIP_Bool | enabled | ||
) |
Sets whether the subproblem is enabled or disabled. A subproblem is disabled if it has been merged into the master problem.
- Parameters
-
benders Benders' decomposition probnumber the subproblem number enabled flag to indicate whether the subproblem is enabled
Definition at line 6597 of file benders.c.
References SCIP_Benders::nactivesubprobs, NULL, SCIP_Bool, SCIPbendersGetNSubproblems(), SCIP_Benders::subprobenabled, and subproblemIsActive().
Referenced by SCIPbendersMergeSubproblemIntoMaster().
◆ SCIPbendersChgMastervarsToCont()
SCIP_RETCODE SCIPbendersChgMastervarsToCont | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | probnumber | ||
) |
changes all of the master problem variables in the given subproblem to continuous
changes all of the master problem variables in the given subproblem to continuous.
- Parameters
-
benders Benders' decomposition set global SCIP settings probnumber the subproblem number
Definition at line 6438 of file benders.c.
References checkSubproblemConvexity(), initialiseLPSubproblem(), NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPbendersGetMastervarsCont(), SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersGetVar(), SCIPbendersSetMastervarsCont(), SCIPbendersSubproblem(), SCIPchgVarType(), SCIPgetVarsData(), SCIPvarGetType(), and TRUE.
Referenced by SCIPbendersSetupSubproblem().
◆ SCIPbendersSetMastervarsCont()
SCIP_RETCODE SCIPbendersSetMastervarsCont | ( | SCIP_BENDERS * | benders, |
int | probnumber, | ||
SCIP_Bool | arecont | ||
) |
sets a flag to indicate whether the master variables are all set to continuous
- Parameters
-
benders Benders' decomposition probnumber the subproblem number arecont flag to indicate whether the master problem variables are continuous
Definition at line 6635 of file benders.c.
References SCIP_Benders::mastervarscont, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_BENDERSSUBTYPE_CONVEXDIS, SCIP_BENDERSSUBTYPE_NONCONVEXCONT, SCIP_BENDERSSUBTYPE_NONCONVEXDIS, SCIP_CALL, SCIP_OKAY, SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersSetSubproblemType(), SCIPbendersSubproblem(), SCIPendProbing(), and SCIPinProbing().
Referenced by SCIPbendersChgMastervarsToCont().
◆ SCIPbendersGetMastervarsCont()
SCIP_Bool SCIPbendersGetMastervarsCont | ( | SCIP_BENDERS * | benders, |
int | probnumber | ||
) |
returns whether the master variables are all set to continuous
- Parameters
-
benders Benders' decomposition probnumber the subproblem number
Definition at line 6670 of file benders.c.
References SCIP_Benders::mastervarscont, NULL, and SCIPbendersGetNSubproblems().
Referenced by SCIPbendersChgMastervarsToCont().
◆ SCIPbendersStoreCut()
SCIP_RETCODE SCIPbendersStoreCut | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_VAR ** | vars, | ||
SCIP_Real * | vals, | ||
SCIP_Real | lhs, | ||
SCIP_Real | rhs, | ||
int | nvars | ||
) |
adds the data for the generated cuts to the Benders' cut storage
- Parameters
-
benders Benders' decomposition cut set global SCIP settings vars the variables that have non-zero coefficients in the cut vals the coefficients of the variables in the cut lhs the left hand side of the cut rhs the right hand side of the cut nvars the number of variables with non-zero coefficients in the cut
Definition at line 6814 of file benders.c.
References BMSreallocBlockMemoryArray, SCIP_BenderscutCut::lhs, SCIP_Benders::nstoredcuts, NULL, SCIP_BenderscutCut::nvars, SCIP_BenderscutCut::rhs, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPblkmem(), SCIPduplicateBlockMemoryArray, SCIPsetCalcMemGrowSize(), SCIP_Benders::storedcuts, SCIP_Benders::storedcutssize, SCIP_BenderscutCut::vals, and SCIP_BenderscutCut::vars.
Referenced by SCIPstoreBendersCut().
◆ SCIPbendersIncludeBenderscut()
SCIP_RETCODE SCIPbendersIncludeBenderscut | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_BENDERSCUT * | benderscut | ||
) |
inserts a Benders' cut algorithm plugin into the Benders' cuts plugin list
inserts a Benders' cut into the Benders' cuts list
- Parameters
-
benders Benders' decomposition structure set global SCIP settings benderscut Benders' cut
Definition at line 6874 of file benders.c.
References SCIP_Benders::benderscuts, SCIP_Benders::benderscutssize, SCIP_Benders::benderscutssorted, BMSreallocMemoryArray, FALSE, SCIP_Benders::nbenderscuts, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPincludeBenderscut(), and SCIPincludeBenderscutBasic().
◆ SCIPbendersSetBenderscutsSorted()
void SCIPbendersSetBenderscutsSorted | ( | SCIP_BENDERS * | benders, |
SCIP_Bool | sorted | ||
) |
sets the Benders' cuts sorted flags in the Benders' decomposition
sets the sorted flags in the Benders' decomposition
- Parameters
-
benders Benders' decomposition structure sorted the value to set the sorted flag to
Definition at line 6862 of file benders.c.
References SCIP_Benders::benderscutsnamessorted, SCIP_Benders::benderscutssorted, and NULL.
Referenced by SCIPsetBenderscutPriority().
◆ SCIPbendersSortBenderscuts()
void SCIPbendersSortBenderscuts | ( | SCIP_BENDERS * | benders | ) |
sorts Benders' decomposition cuts by priorities
- Parameters
-
benders Benders' decomposition
Definition at line 6963 of file benders.c.
References SCIP_Benders::benderscuts, SCIP_Benders::benderscutsnamessorted, SCIP_Benders::benderscutssorted, FALSE, SCIP_Benders::nbenderscuts, NULL, SCIPsortPtr(), and TRUE.
Referenced by SCIPbendersCopyInclude(), SCIPbendersExit(), SCIPbendersExitsol(), SCIPbendersInit(), and SCIPbendersInitsol().
◆ SCIPbendersSortBenderscutsName()
void SCIPbendersSortBenderscutsName | ( | SCIP_BENDERS * | benders | ) |
sorts Benders' decomposition cuts by name
- Parameters
-
benders Benders' decomposition
Definition at line 6978 of file benders.c.
References SCIP_Benders::benderscuts, SCIP_Benders::benderscutsnamessorted, SCIP_Benders::benderscutssorted, FALSE, SCIP_Benders::nbenderscuts, NULL, SCIPsortPtr(), and TRUE.