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.
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
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 926 of file benders.c.
References assert(), SCIP_Set::benders_copybenders, SCIP_Benders::benderscuts, createMasterVarMapping(), FALSE, i, SCIP_Benders::iscopy, SCIP_Benders::lnscheck, SCIP_Benders::lnsmaxcalls, SCIP_Benders::lnsmaxcallsroot, SCIP_Benders::lnsmaxdepth, SCIP_Benders::mastervarsmap, SCIP_Benders::nbenderscuts, NULL, SCIP_Set::scip, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbenderscutCopyInclude(), SCIPbendersGetName(), SCIPbendersIsActive(), SCIPbendersSortBenderscuts(), SCIPsetDebugMsg, SCIPsetFindBenders(), SCIP_Benders::sourcescip, SCIP_Benders::threadsafe, TRUE, and valid.
Referenced by SCIPcopyBenders().
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().
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 1206 of file benders.c.
References assert(), doBendersCreate(), NULL, SCIP_Bool, SCIP_CALL_FINALLY, SCIP_DECL_BENDERSCOPY, SCIP_DECL_BENDERSEXIT, SCIP_DECL_BENDERSFREE, SCIP_DECL_BENDERSINIT, SCIP_OKAY, and SCIPbendersFree().
Referenced by SCIPincludeBenders(), and SCIPincludeBendersBasic().
SCIP_RETCODE SCIPbendersFree | ( | SCIP_BENDERS ** | benders, |
SCIP_SET * | set ) |
calls destructor and frees memory of Benders' decomposition
benders | pointer to Benders' decomposition data structure |
set | global SCIP settings |
Definition at line 1285 of file benders.c.
References assert(), BMSfreeMemory, BMSfreeMemoryArray, BMSfreeMemoryArrayNull, i, NULL, releaseVarMappingHashmapVars(), SCIP_CALL, SCIP_OKAY, SCIPbenderscutFree(), SCIPclockFree(), and SCIPhashmapFree().
Referenced by SCIPbendersCreate().
SCIP_RETCODE SCIPbendersInit | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
initializes Benders' decomposition
benders | Benders' decomposition |
set | global SCIP settings |
Definition at line 1993 of file benders.c.
References assert(), assignAuxiliaryVariables(), BENDERS_ARRAYSIZE, SCIP_Benders::bendersclock, SCIP_Benders::benderscuts, BMSallocBlockMemoryArray, createSubproblems(), i, 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.
SCIP_RETCODE SCIPbendersExit | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
calls exit method of Benders' decomposition
benders | Benders' decomposition |
set | global SCIP settings |
Definition at line 2237 of file benders.c.
References assert(), SCIP_Benders::auxiliaryvars, SCIP_Benders::benderscuts, BMSfreeBlockMemoryArray, SCIP_Benders::corepoint, FALSE, i, 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.
SCIP_RETCODE SCIPbendersInitpre | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat ) |
informs the Benders' decomposition that the presolving process is being started
benders | Benders' decomposition |
set | global SCIP settings |
stat | dynamic problem statistics |
Definition at line 2380 of file benders.c.
References addAuxiliaryVariablesToMaster(), assert(), checkSubproblemIndependence(), SCIP_Benders::iscopy, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
SCIP_RETCODE SCIPbendersExitpre | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat ) |
informs the Benders' decomposition that the presolving process has completed
benders | Benders' decomposition |
set | global SCIP settings |
stat | dynamic problem statistics |
Definition at line 2423 of file benders.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
SCIP_RETCODE SCIPbendersInitsol | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
informs Benders' decomposition that the branch and bound process is being started
benders | Benders' decomposition |
set | global SCIP settings |
Definition at line 2449 of file benders.c.
References assert(), SCIP_Benders::benderscuts, i, SCIP_Benders::nbenderscuts, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutInitsol(), SCIPbendersSortBenderscuts(), SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
SCIP_RETCODE SCIPbendersExitsol | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
informs Benders' decomposition that the branch and bound process data is being freed
benders | Benders' decomposition |
set | global SCIP settings |
Definition at line 2482 of file benders.c.
References assert(), SCIP_Benders::benderscuts, FALSE, i, SCIP_Benders::nbenderscuts, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutExitsol(), SCIPbendersFreeSubproblem(), SCIPbendersGetNSubproblems(), SCIPbendersSetSubproblemIsIndependent(), SCIPbendersSortBenderscuts(), SCIPbendersSubproblemIsIndependent(), SCIPclockStart(), SCIPclockStop(), and SCIP_Benders::setuptime.
SCIP_RETCODE SCIPbendersActivate | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | nsubproblems ) |
activates Benders' decomposition such that it is called in LP solving loop
benders | the Benders' decomposition structure |
set | global SCIP settings |
nsubproblems | the number subproblems used in this decomposition |
Definition at line 2538 of file benders.c.
References SCIP_Benders::active, assert(), SCIP_Benders::auxiliaryvars, SCIP_SubproblemSolveStat::avgiter, SCIP_Benders::bestsubprobobjval, BMSallocMemory, BMSallocMemoryArray, FALSE, i, 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().
SCIP_RETCODE SCIPbendersDeactivate | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
deactivates Benders' decomposition such that it is no longer called in LP solving loop
benders | the Benders' decomposition structure |
set | global SCIP settings |
Definition at line 2624 of file benders.c.
References SCIP_Benders::active, assert(), SCIP_Benders::auxiliaryvars, SCIP_Benders::bestsubprobobjval, BMSfreeMemory, BMSfreeMemoryArray, FALSE, SCIP_Benders::freesubprobs, i, 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().
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
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 6082 of file benders.c.
References assert(), SCIP_Benders::bendersclock, NULL, SCIP_Bool, SCIPclockEnableOrDisable(), and SCIP_Benders::setuptime.
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.
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 3594 of file benders.c.
References assert(), BENDERS_MAXPSEUDOSOLS, SCIP_Benders::bendersclock, createSolveSubproblemIndexList(), FALSE, SCIP_Benders::feasibilityphase, generateBendersCuts(), i, SCIP_Benders::iscopy, SCIP_Benders::lnscheck, SCIP_Benders::lnsmaxcalls, SCIP_Benders::lnsmaxcallsroot, SCIP_Benders::lnsmaxdepth, SCIP_Benders::maxslackvarcoef, SCIP_Benders::name, SCIP_Benders::ncalls, SCIP_Benders::npseudosols, NULL, performInteriorSolCutStrengthening(), resetSubproblemObjectiveValue(), result, 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(), SCIPgetMessagehdlr(), SCIPgetObjsense(), SCIPgetPrimalbound(), SCIPgetSolOrigObj(), SCIPgetStage(), SCIPinProbing(), SCIPmessagePrintVerbInfo(), SCIPprintSol(), SCIPsetDebugMsg, SCIPsetGetSubscipsOff(), SCIPsetIsLE(), SCIPsolveBendersSubproblems(), SCIPverbMessage(), SCIP_Benders::slackvarcoef, sol, solveBendersSubproblems(), SCIP_Benders::sourcescip, SCIP_Benders::strengthenenabled, SCIP_Benders::strengthenround, subproblemIsActive(), TRUE, updateAuxiliaryVarLowerbound(), SCIP_Benders::updateauxvarbound, and updateSubproblemStatQueue().
Referenced by SCIPsolveBendersSubproblems().
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
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 4202 of file benders.c.
References assert(), executeUserDefinedSolvesub(), FALSE, SCIP_Benders::name, NULL, result, SCIP_BENDERSSOLVELOOP_CIP, SCIP_BENDERSSOLVELOOP_CONVEX, SCIP_BENDERSSOLVELOOP_USERCIP, SCIP_BENDERSSOLVELOOP_USERCONVEX, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, 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(), sol, TRUE, and updateEventhdlrUpperbound().
Referenced by solveBendersSubproblems().
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
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 4371 of file benders.c.
References assert(), FALSE, SCIP_Benders::feasibilityphase, i, initialiseSubproblem(), SCIP_Benders::maxslackvarcoef, SCIP_Benders::name, NULL, nvars, SCIP_BENDERSENFOTYPE_CHECK, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIPbendersChgMastervarsToCont(), SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersGetVar(), SCIPbendersSetSubproblemIsSetup(), SCIPbendersSetSubproblemsAreInfeasible(), SCIPbendersSubproblem(), SCIPchgVarLb(), SCIPchgVarObjProbing(), SCIPchgVarUb(), SCIPchgVarUbProbing(), SCIPerrorMessage, SCIPgetDepth(), SCIPgetNVars(), SCIPgetSolVal(), SCIPgetVars(), SCIPinProbing(), SCIPisEQ(), SCIPisGT(), SCIPisLT(), SCIPisZero(), SCIPstartProbing(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SLACKVAR_NAME, SCIP_Benders::slackvarcoef, sol, TRUE, and vars.
Referenced by SCIPbendersExecSubproblemSolve(), and SCIPsetupBendersSubproblem().
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.
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 4531 of file benders.c.
References assert(), executeUserDefinedSolvesub(), FALSE, initialiseSubproblem(), NULL, result, 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(), sol, and TRUE.
Referenced by SCIPsolveBendersSubproblem().
SCIP_RETCODE SCIPbendersFreeSubproblem | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | probnumber ) |
frees the subproblems
benders | Benders' decomposition |
set | global SCIP settings |
probnumber | the subproblem number |
Definition at line 5051 of file benders.c.
References assert(), 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().
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
benders | the benders' decomposition structure |
set | global SCIP settings |
sol | primal CIP solution |
probnumber | the subproblem number |
Definition at line 5101 of file benders.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPbendersGetAuxiliaryVarVal(), SCIPbendersGetSubproblemObjval(), SCIPrelDiff(), SCIPsetDebugMsg, sol, SCIP_Benders::solutiontol, and TRUE.
Referenced by SCIPcheckBendersSubproblemOptimality(), and solveBendersSubproblems().
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
benders | the benders' decomposition structure |
set | global SCIP settings |
sol | primal CIP solution |
probnumber | the subproblem number |
Definition at line 5130 of file benders.c.
References assert(), NULL, SCIP_Real, SCIPbendersGetAuxiliaryVar(), SCIPgetSolVal(), and sol.
Referenced by SCIPbendersExecSubproblemSolve(), SCIPbendersSubproblemIsOptimal(), SCIPgetBendersAuxiliaryVarVal(), and solveBendersSubproblems().
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.
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 5151 of file benders.c.
References assert(), copyMemoryAndTimeLimits(), cutoff, FALSE, lperror, MIPNODEFOCUS_EVENTHDLR_NAME, SCIP_Benders::nlpparam, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_BENDERSSUBTYPE_CONVEXDIS, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_OPTIMAL, 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(), SCIPsetRealParam(), SCIPsolve(), SCIPsolveNLPParam(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPvarGetLbGlobal(), SCIPverbMessage(), and TRUE.
Referenced by SCIPcomputeBendersSubproblemLowerbound(), and updateAuxiliaryVarLowerbound().
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.
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 5313 of file benders.c.
References assert(), FALSE, i, NULL, nvars, 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(), TRUE, valid, and vars.
Referenced by SCIPmergeBendersSubproblemIntoMaster().
|
extern |
Applies a Benders' decomposition to the problem based upon the decomposition selected from the storage
benders | Benders' decomposition |
set | global SCIP settings |
decomp | the decomposition to apply to the problem |
Definition at line 5625 of file benders.c.
References addConstraintToBendersSubproblem(), assert(), SCIP_Benders::freesubprobs, i, NULL, nvars, 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(), TRUE, valid, and vars.
Referenced by SCIPapplyBendersDecomposition().
void SCIPbendersSetPriority | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set, | ||
int | priority ) |
sets priority of Benders' decomposition
benders | Benders' decomposition |
set | global SCIP settings |
priority | new priority of the Benders' decomposition |
Definition at line 5976 of file benders.c.
References assert(), FALSE, NULL, and SCIP_Benders::priority.
Referenced by SCIPsetBendersPriority().
void SCIPbendersSetCopy | ( | SCIP_BENDERS * | benders | ) |
sets copy callback of Benders' decomposition
benders | Benders' decomposition copy callback of Benders' decomposition |
Definition at line 5792 of file benders.c.
References assert(), NULL, and SCIP_DECL_BENDERSCOPY.
Referenced by SCIPsetBendersCopy().
void SCIPbendersSetFree | ( | SCIP_BENDERS * | benders | ) |
sets destructor callback of Benders' decomposition
benders | Benders' decomposition destructor of Benders' decomposition |
Definition at line 5803 of file benders.c.
References assert(), NULL, and SCIP_DECL_BENDERSFREE.
Referenced by SCIPsetBendersFree().
void SCIPbendersSetInit | ( | SCIP_BENDERS * | benders | ) |
sets initialization callback of Benders' decomposition
benders | Benders' decomposition initialize the Benders' decomposition |
Definition at line 5814 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersInit().
void SCIPbendersSetExit | ( | SCIP_BENDERS * | benders | ) |
sets deinitialization callback of Benders' decomposition
benders | Benders' decomposition deinitialize the Benders' decomposition |
Definition at line 5825 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersExit().
void SCIPbendersSetInitpre | ( | SCIP_BENDERS * | benders | ) |
sets presolving initialization callback of Benders' decomposition
benders | Benders' decomposition initialize presolving for Benders' decomposition |
Definition at line 5836 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersInitpre().
void SCIPbendersSetExitpre | ( | SCIP_BENDERS * | benders | ) |
sets presolving deinitialization callback of Benders' decomposition
benders | Benders' decomposition deinitialize presolving for Benders' decomposition |
Definition at line 5847 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersExitpre().
void SCIPbendersSetInitsol | ( | SCIP_BENDERS * | benders | ) |
sets solving process initialization callback of Benders' decomposition
benders | Benders' decomposition solving process initialization callback of Benders' decomposition |
Definition at line 5858 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersInitsol().
void SCIPbendersSetExitsol | ( | SCIP_BENDERS * | benders | ) |
sets solving process deinitialization callback of Benders' decomposition
benders | Benders' decomposition solving process deinitialization callback of Benders' decomposition |
Definition at line 5869 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersExitsol().
void SCIPbendersSetPresubsolve | ( | SCIP_BENDERS * | benders | ) |
sets the pre subproblem solve callback of Benders' decomposition
benders | Benders' decomposition called prior to the subproblem solving loop |
Definition at line 5880 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersPresubsolve().
void SCIPbendersSetSolvesubconvex | ( | SCIP_BENDERS * | benders | ) |
sets convex solve callback of Benders' decomposition
benders | Benders' decomposition solving method for the convex Benders' decomposition subproblem |
Definition at line 5891 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
void SCIPbendersSetSolvesub | ( | SCIP_BENDERS * | benders | ) |
sets solve callback of Benders' decomposition
benders | Benders' decomposition solving method for a Benders' decomposition subproblem |
Definition at line 5902 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
void SCIPbendersSetPostsolve | ( | SCIP_BENDERS * | benders | ) |
sets post-solve callback of Benders' decomposition
benders | Benders' decomposition solving process deinitialization callback of Benders' decomposition |
Definition at line 5913 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersPostsolve().
void SCIPbendersSetSubproblemComp | ( | SCIP_BENDERS * | benders | ) |
sets post-solve callback of Benders' decomposition
benders | Benders' decomposition a comparator for defining the solving order of the subproblems |
Definition at line 5924 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersSubproblemComp().
void SCIPbendersSetFreesub | ( | SCIP_BENDERS * | benders | ) |
sets free subproblem callback of Benders' decomposition
benders | Benders' decomposition the freeing callback for the subproblem |
Definition at line 5935 of file benders.c.
References assert(), and NULL.
Referenced by SCIPsetBendersSolveAndFreesub().
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.
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 5745 of file benders.c.
References assert(), AUXILIARYVAR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPvarGetName(), and var.
Referenced by checkSubproblemConvexity(), createSubproblems(), SCIPbendersChgMastervarsToCont(), SCIPbendersSetupSubproblem(), SCIPgetBendersMasterVar(), and SCIPgetBendersSubproblemVar().
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
benders | Benders' decomposition |
subproblem | subproblem to be added to the data storage, can be NULL |
Definition at line 6146 of file benders.c.
References assert(), SCIP_Benders::naddedsubprobs, SCIP_Benders::name, SCIP_Benders::nsubproblems, NULL, SCIP_ERROR, SCIP_OKAY, SCIPerrorMessage, and SCIP_Benders::subproblems.
Referenced by SCIPaddBendersSubproblem().
void SCIPbendersRemoveSubproblems | ( | SCIP_BENDERS * | benders | ) |
removes the subproblems from the Benders' decomposition data
benders | Benders' decomposition |
Definition at line 6170 of file benders.c.
References assert(), BMSclearMemoryArray, SCIP_Benders::naddedsubprobs, NULL, and SCIP_Benders::subproblems.
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.
benders | Benders' decomposition |
probnumber | the subproblem number |
enabled | flag to indicate whether the subproblem is enabled |
Definition at line 6672 of file benders.c.
References assert(), SCIP_Benders::nactivesubprobs, NULL, SCIP_Bool, SCIPbendersGetNSubproblems(), SCIP_Benders::subprobenabled, and subproblemIsActive().
Referenced by SCIPbendersMergeSubproblemIntoMaster().
void SCIPbendersSetSubproblemsAreInfeasible | ( | SCIP_BENDERS * | benders, |
SCIP_SET * | set ) |
sets the flag to indicate that at least one subproblem is always infeasible NOTE: this is without any variable fixing being performed
benders | Benders' decomposition |
set | global SCIP settings |
Definition at line 6481 of file benders.c.
References assert(), NULL, SCIPgetDepth(), SCIP_Benders::subprobsinfeasible, and TRUE.
Referenced by createSubproblems(), SCIPbendersChgMastervarsToCont(), and SCIPbendersSetupSubproblem().
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.
benders | Benders' decomposition |
set | global SCIP settings |
probnumber | the subproblem number |
Definition at line 6506 of file benders.c.
References assert(), checkSubproblemConvexity(), i, initialiseLPSubproblem(), nbinvars, nintvars, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPbendersGetMastervarsCont(), SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersGetVar(), SCIPbendersSetMastervarsCont(), SCIPbendersSetSubproblemsAreInfeasible(), SCIPbendersSubproblem(), SCIPchgVarType(), SCIPgetVarsData(), SCIPvarGetType(), TRUE, and vars.
Referenced by createSubproblems(), and SCIPbendersSetupSubproblem().
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
benders | Benders' decomposition |
probnumber | the subproblem number |
arecont | flag to indicate whether the master problem variables are continuous |
Definition at line 6710 of file benders.c.
References assert(), SCIP_Benders::mastervarscont, NULL, SCIP_BENDERSSUBTYPE_CONVEXCONT, SCIP_BENDERSSUBTYPE_CONVEXDIS, SCIP_BENDERSSUBTYPE_NONCONVEXCONT, SCIP_BENDERSSUBTYPE_NONCONVEXDIS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbendersGetNSubproblems(), SCIPbendersGetSubproblemType(), SCIPbendersSetSubproblemType(), SCIPbendersSubproblem(), SCIPendProbing(), and SCIPinProbing().
Referenced by SCIPbendersChgMastervarsToCont().
SCIP_Bool SCIPbendersGetMastervarsCont | ( | SCIP_BENDERS * | benders, |
int | probnumber ) |
returns whether the master variables are all set to continuous
benders | Benders' decomposition |
probnumber | the subproblem number |
Definition at line 6745 of file benders.c.
References assert(), SCIP_Benders::mastervarscont, NULL, SCIP_Bool, and SCIPbendersGetNSubproblems().
Referenced by SCIPbendersChgMastervarsToCont().
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
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 6889 of file benders.c.
References assert(), BMSreallocBlockMemoryArray, SCIP_BenderscutCut::lhs, SCIP_Benders::nstoredcuts, NULL, nvars, SCIP_BenderscutCut::nvars, SCIP_BenderscutCut::rhs, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemory, SCIPblkmem(), SCIPduplicateBlockMemoryArray, SCIPsetCalcMemGrowSize(), SCIP_Benders::storedcuts, SCIP_Benders::storedcutssize, SCIP_BenderscutCut::vals, SCIP_BenderscutCut::vars, and vars.
Referenced by SCIPstoreBendersCut().
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
benders | Benders' decomposition structure |
set | global SCIP settings |
benderscut | Benders' cut |
Definition at line 6949 of file benders.c.
References assert(), 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().
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
benders | Benders' decomposition structure |
sorted | the value to set the sorted flag to |
Definition at line 6937 of file benders.c.
References assert(), SCIP_Benders::benderscutsnamessorted, SCIP_Benders::benderscutssorted, NULL, and SCIP_Bool.
Referenced by SCIPsetBenderscutPriority().
void SCIPbendersSortBenderscuts | ( | SCIP_BENDERS * | benders | ) |
sorts Benders' decomposition cuts by priorities
benders | Benders' decomposition |
Definition at line 7038 of file benders.c.
References assert(), 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().
void SCIPbendersSortBenderscutsName | ( | SCIP_BENDERS * | benders | ) |
sorts Benders' decomposition cuts by name
benders | Benders' decomposition |
Definition at line 7053 of file benders.c.
References assert(), SCIP_Benders::benderscuts, SCIP_Benders::benderscutsnamessorted, SCIP_Benders::benderscutssorted, FALSE, SCIP_Benders::nbenderscuts, NULL, SCIPsortPtr(), and TRUE.