Scippy

SCIP

Solving Constraint Integer Programs

SCIP_Benders Struct Reference

Detailed Description

Benders' decomposition data

Definition at line 38 of file struct_benders.h.

#include <struct_benders.h>

Public Member Functions

 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_BENDERSPRESUBSOLVE ((*benderspresubsolve))
 
 SCIP_DECL_BENDERSCREATESUB ((*benderscreatesub))
 
 SCIP_DECL_BENDERSSOLVESUBCONVEX ((*benderssolvesubconvex))
 
 SCIP_DECL_BENDERSSOLVESUB ((*benderssolvesub))
 
 SCIP_DECL_BENDERSPOSTSOLVE ((*benderspostsolve))
 
 SCIP_DECL_BENDERSFREESUB ((*bendersfreesub))
 

Data Fields

char * name
 
char * desc
 
SCIP_BENDERSDATAbendersdata
 
SCIP_CLOCKsetuptime
 
SCIP_CLOCKbendersclock
 
int priority
 
int ncalls
 
int ncutsfound
 
int ntransferred
 
SCIP_Bool active
 
SCIP_Bool initialized
 
SCIP_Bool cutlp
 
SCIP_Bool cutpseudo
 
SCIP_Bool cutrelax
 
SCIP_Bool shareauxvars
 
SCIP_Bool transfercuts
 
SCIP_Bool lnscheck
 
int lnsmaxdepth
 
SCIP_Bool cutsasconss
 
SCIP_Real subprobfrac
 
SCIP_Bool updateauxvarbound
 
SCIPsourcescip
 
SCIP_Bool iscopy
 
SCIP_HASHMAPmastervarsmap
 
SCIP ** subproblems
 
SCIP_VAR ** auxiliaryvars
 
SCIP_Realsubprobobjval
 
SCIP_Realbestsubprobobjval
 
SCIP_Realsubproblowerbound
 
int naddedsubprobs
 
int nsubproblems
 
SCIP_Boolsubprobisconvex
 
int nconvexsubprobs
 
SCIP_Bool subprobscreated
 
SCIP_Boolmastervarscont
 
SCIP_Boolsubprobsetup
 
SCIP_Boolindepsubprob
 
SCIP_Boolsubprobenabled
 
int nactivesubprobs
 
int firstchecked
 
int lastchecked
 
int npseudosols
 
SCIP_BENDERSCUT ** benderscuts
 
int nbenderscuts
 
int benderscutssize
 
SCIP_Bool benderscutssorted
 
SCIP_Bool benderscutsnamessorted
 

Member Function Documentation

◆ SCIP_DECL_BENDERSCOPY()

SCIP_Benders::SCIP_DECL_BENDERSCOPY ( benderscopy)

copy method of Benders' decomposition or NULL if you don't want to copy your plugin into sub-SCIPs

◆ SCIP_DECL_BENDERSFREE()

SCIP_Benders::SCIP_DECL_BENDERSFREE ( bendersfree)

destructor of Benders' decomposition

◆ SCIP_DECL_BENDERSINIT()

SCIP_Benders::SCIP_DECL_BENDERSINIT ( bendersinit)

initialize Benders' decomposition

◆ SCIP_DECL_BENDERSEXIT()

SCIP_Benders::SCIP_DECL_BENDERSEXIT ( bendersexit)

deinitialize Benders' decomposition

◆ SCIP_DECL_BENDERSINITPRE()

SCIP_Benders::SCIP_DECL_BENDERSINITPRE ( bendersinitpre)

presolving initialization method for Benders' decomposition

◆ SCIP_DECL_BENDERSEXITPRE()

SCIP_Benders::SCIP_DECL_BENDERSEXITPRE ( bendersexitpre)

presolving deinitialization method for Benders' decomposition

◆ SCIP_DECL_BENDERSINITSOL()

SCIP_Benders::SCIP_DECL_BENDERSINITSOL ( bendersinitsol)

solving process initialization method of Benders' decomposition

◆ SCIP_DECL_BENDERSEXITSOL()

SCIP_Benders::SCIP_DECL_BENDERSEXITSOL ( bendersexitsol)

solving process deinitialization method of Benders' decomposition

◆ SCIP_DECL_BENDERSGETVAR()

SCIP_Benders::SCIP_DECL_BENDERSGETVAR ( bendersgetvar)

returns the corresponding variable from the master or subproblem

◆ SCIP_DECL_BENDERSPRESUBSOLVE()

SCIP_Benders::SCIP_DECL_BENDERSPRESUBSOLVE ( benderspresubsolve)

called prior to the subproblem solving loop

◆ SCIP_DECL_BENDERSCREATESUB()

SCIP_Benders::SCIP_DECL_BENDERSCREATESUB ( benderscreatesub)

creates the Benders' decomposition subproblems

◆ SCIP_DECL_BENDERSSOLVESUBCONVEX()

SCIP_Benders::SCIP_DECL_BENDERSSOLVESUBCONVEX ( benderssolvesubconvex)

the solving method for convex Benders' decomposition subproblems

◆ SCIP_DECL_BENDERSSOLVESUB()

SCIP_Benders::SCIP_DECL_BENDERSSOLVESUB ( benderssolvesub)

the solving method for the Benders' decomposition subproblems

◆ SCIP_DECL_BENDERSPOSTSOLVE()

SCIP_Benders::SCIP_DECL_BENDERSPOSTSOLVE ( benderspostsolve)

called after the subproblems are solved.

◆ SCIP_DECL_BENDERSFREESUB()

SCIP_Benders::SCIP_DECL_BENDERSFREESUB ( bendersfreesub)

the freeing method for the Benders' decomposition subproblems

Field Documentation

◆ name

char* SCIP_Benders::name

◆ desc

char* SCIP_Benders::desc

description of Benders' decomposition

Definition at line 41 of file struct_benders.h.

Referenced by SCIPbendersGetDesc().

◆ bendersdata

SCIP_BENDERSDATA* SCIP_Benders::bendersdata

Benders' decomposition local data

Definition at line 57 of file struct_benders.h.

Referenced by SCIPbendersGetData(), and SCIPbendersSetData().

◆ setuptime

SCIP_CLOCK* SCIP_Benders::setuptime

time spend for setting up this Benders' decomposition for the next stages

Definition at line 58 of file struct_benders.h.

Referenced by SCIPbendersEnableOrDisableClocks(), SCIPbendersExit(), SCIPbendersExitpre(), SCIPbendersExitsol(), SCIPbendersGetSetupTime(), SCIPbendersInit(), SCIPbendersInitpre(), and SCIPbendersInitsol().

◆ bendersclock

SCIP_CLOCK* SCIP_Benders::bendersclock

Benders' decomposition execution time

Definition at line 59 of file struct_benders.h.

Referenced by SCIPbendersEnableOrDisableClocks(), SCIPbendersExec(), SCIPbendersGetTime(), and SCIPbendersInit().

◆ priority

int SCIP_Benders::priority

priority of the Benders' decomposition

Definition at line 60 of file struct_benders.h.

Referenced by SCIPbendersGetPriority(), and SCIPbendersSetPriority().

◆ ncalls

int SCIP_Benders::ncalls

number of times, this Benders' decomposition was called

Definition at line 61 of file struct_benders.h.

Referenced by numSubproblemsToCheck(), SCIPbendersExec(), SCIPbendersGetNCalls(), and SCIPbendersInit().

◆ ncutsfound

int SCIP_Benders::ncutsfound

number of cuts found by the Benders' decomposition

Definition at line 62 of file struct_benders.h.

Referenced by generateBendersCuts(), SCIPbendersGetNCutsFound(), and SCIPbendersInit().

◆ ntransferred

int SCIP_Benders::ntransferred

number of cuts transferred from sub SCIP to the master SCIP

Definition at line 63 of file struct_benders.h.

Referenced by createAndAddTransferredCut(), SCIPbendersGetNTransferredCuts(), and SCIPbendersInit().

◆ active

SCIP_Bool SCIP_Benders::active

is the Benders' decomposition active?

Definition at line 64 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), and SCIPbendersIsActive().

◆ initialized

SCIP_Bool SCIP_Benders::initialized

is Benders' decomposition initialized?

Definition at line 65 of file struct_benders.h.

Referenced by SCIPbendersExit(), SCIPbendersInit(), and SCIPbendersIsInitialized().

◆ cutlp

SCIP_Bool SCIP_Benders::cutlp

should Benders' cuts be generated for LP solutions?

Definition at line 66 of file struct_benders.h.

Referenced by SCIPbendersCutLP().

◆ cutpseudo

SCIP_Bool SCIP_Benders::cutpseudo

should Benders' cuts be generated for pseudo solutions?

Definition at line 67 of file struct_benders.h.

Referenced by SCIPbendersCutPseudo().

◆ cutrelax

SCIP_Bool SCIP_Benders::cutrelax

should Benders' cuts be generated for relaxation solutions?

Definition at line 68 of file struct_benders.h.

Referenced by SCIPbendersCutRelaxation().

◆ shareauxvars

SCIP_Bool SCIP_Benders::shareauxvars

should this Benders' share the highest priority Benders' auxiliary vars

Definition at line 69 of file struct_benders.h.

Referenced by SCIPbendersShareAuxVars().

◆ transfercuts

SCIP_Bool SCIP_Benders::transfercuts

should Benders' cuts generated in LNS heuristics be transferred to the main SCIP instance?

Definition at line 72 of file struct_benders.h.

Referenced by transferBendersCuts().

◆ lnscheck

SCIP_Bool SCIP_Benders::lnscheck

should Benders' decomposition be used in LNS heuristics?

Definition at line 73 of file struct_benders.h.

Referenced by SCIPbendersCopyInclude(), SCIPbendersExec(), and SCIPbendersOnlyCheckConvexRelax().

◆ lnsmaxdepth

int SCIP_Benders::lnsmaxdepth

maximum depth at which the LNS check is performed

Definition at line 74 of file struct_benders.h.

Referenced by SCIPbendersExec().

◆ cutsasconss

SCIP_Bool SCIP_Benders::cutsasconss

should the transferred cuts be added as constraints?

Definition at line 75 of file struct_benders.h.

Referenced by createAndAddTransferredCut().

◆ subprobfrac

SCIP_Real SCIP_Benders::subprobfrac

fraction of subproblems that are solved in each iteration

Definition at line 76 of file struct_benders.h.

Referenced by numSubproblemsToCheck().

◆ updateauxvarbound

SCIP_Bool SCIP_Benders::updateauxvarbound

should the auxiliary variable lower bound be updated by solving the subproblem?

Definition at line 77 of file struct_benders.h.

Referenced by SCIPbendersExec().

◆ sourcescip

SCIP* SCIP_Benders::sourcescip

the source scip from when the Benders' was copied

Definition at line 80 of file struct_benders.h.

Referenced by SCIPbendersExec(), and SCIPbendersExit().

◆ iscopy

SCIP_Bool SCIP_Benders::iscopy

is the Benders' decomposition struct a copy

Definition at line 81 of file struct_benders.h.

Referenced by createMasterVarMapping(), createSubproblems(), SCIPbendersExec(), SCIPbendersExit(), SCIPbendersInitpre(), and SCIPbendersOnlyCheckConvexRelax().

◆ mastervarsmap

SCIP_HASHMAP* SCIP_Benders::mastervarsmap

hash map for the master variables from the subscip to the master

Definition at line 82 of file struct_benders.h.

Referenced by createAndAddTransferredCut(), createMasterVarMapping(), and releaseVarMappingHashmapVars().

◆ subproblems

SCIP** SCIP_Benders::subproblems

the Benders' decomposition subproblems

Definition at line 85 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersAddSubproblem(), SCIPbendersDeactivate(), SCIPbendersRemoveSubproblems(), and SCIPbendersSubproblem().

◆ auxiliaryvars

SCIP_VAR** SCIP_Benders::auxiliaryvars

◆ subprobobjval

SCIP_Real* SCIP_Benders::subprobobjval

the objective value of the subproblem in the current iteration

Definition at line 87 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersGetSubproblemObjval(), and SCIPbendersSetSubproblemObjval().

◆ bestsubprobobjval

SCIP_Real* SCIP_Benders::bestsubprobobjval

the best objective value of the subproblem

Definition at line 88 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), and SCIPbendersSetSubproblemObjval().

◆ subproblowerbound

SCIP_Real* SCIP_Benders::subproblowerbound

a lower bound on the subproblem - used for the integer cuts

Definition at line 89 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersGetSubproblemLowerbound(), and SCIPbendersUpdateSubproblemLowerbound().

◆ naddedsubprobs

int SCIP_Benders::naddedsubprobs

subproblems added to the Benders' decomposition data

Definition at line 90 of file struct_benders.h.

Referenced by SCIPbendersAddSubproblem(), and SCIPbendersRemoveSubproblems().

◆ nsubproblems

int SCIP_Benders::nsubproblems

◆ subprobisconvex

SCIP_Bool* SCIP_Benders::subprobisconvex

is the subproblem convex? This implies that the dual sol can be used for cuts

Definition at line 92 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersSetSubproblemIsConvex(), and SCIPbendersSubproblemIsConvex().

◆ nconvexsubprobs

int SCIP_Benders::nconvexsubprobs

the number of subproblems that are convex

Definition at line 93 of file struct_benders.h.

Referenced by SCIPbendersGetNConvexSubproblems(), and SCIPbendersSetSubproblemIsConvex().

◆ subprobscreated

SCIP_Bool SCIP_Benders::subprobscreated

have the subproblems been created for this Benders' decomposition. This flag is used when retransforming the problem.

Definition at line 94 of file struct_benders.h.

Referenced by createSubproblems().

◆ mastervarscont

SCIP_Bool* SCIP_Benders::mastervarscont

flag to indicate that the master problem variable have been converted to continuous variables.

Definition at line 96 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersGetMastervarsCont(), and SCIPbendersSetMastervarsCont().

◆ subprobsetup

SCIP_Bool* SCIP_Benders::subprobsetup

flag to indicate whether the subproblem has been set up.

Definition at line 98 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersSetSubproblemIsSetup(), and SCIPbendersSubproblemIsSetup().

◆ indepsubprob

SCIP_Bool* SCIP_Benders::indepsubprob

flag to indicate if a subproblem is independent of the master prob

Definition at line 99 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersSetSubproblemIsIndependent(), and SCIPbendersSubproblemIsIndependent().

◆ subprobenabled

SCIP_Bool* SCIP_Benders::subprobenabled

flag to indicate whether the subproblem is enabled

Definition at line 100 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersDeactivate(), SCIPbendersSetSubproblemEnabled(), and SCIPbendersSubproblemIsEnabled().

◆ nactivesubprobs

int SCIP_Benders::nactivesubprobs

the number of active subproblems

Definition at line 101 of file struct_benders.h.

Referenced by SCIPbendersActivate(), SCIPbendersSetSubproblemEnabled(), and SCIPbendersSetSubproblemIsIndependent().

◆ firstchecked

int SCIP_Benders::firstchecked

the subproblem index first checked in the current iteration

Definition at line 102 of file struct_benders.h.

Referenced by generateBendersCuts(), SCIPbendersExec(), and solveBendersSubproblems().

◆ lastchecked

int SCIP_Benders::lastchecked

the subproblem index last checked in the current iteration

Definition at line 103 of file struct_benders.h.

Referenced by SCIPbendersExec(), and solveBendersSubproblems().

◆ npseudosols

int SCIP_Benders::npseudosols

the number of pseudo solutions checked since the last generated cut

Definition at line 106 of file struct_benders.h.

Referenced by SCIPbendersExec().

◆ benderscuts

◆ nbenderscuts

◆ benderscutssize

int SCIP_Benders::benderscutssize

the size of the Benders' cuts algorithms array

Definition at line 111 of file struct_benders.h.

Referenced by SCIPbendersIncludeBenderscut().

◆ benderscutssorted

SCIP_Bool SCIP_Benders::benderscutssorted

◆ benderscutsnamessorted

SCIP_Bool SCIP_Benders::benderscutsnamessorted

are the Benders' cuts algorithms sorted by name

Definition at line 113 of file struct_benders.h.

Referenced by SCIPbendersGetBenderscuts(), SCIPbendersSetBenderscutsSorted(), SCIPbendersSortBenderscuts(), and SCIPbendersSortBenderscutsName().