SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches

Detailed Description

methods for Benders' decomposition cuts plugins

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPbenderscutComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPbenderscutCompName)
 
SCIP_BENDERSCUTDATASCIPbenderscutGetData (SCIP_BENDERSCUT *benderscut)
 
void SCIPbenderscutSetData (SCIP_BENDERSCUT *benderscut, SCIP_BENDERSCUTDATA *benderscutdata)
 
const char * SCIPbenderscutGetName (SCIP_BENDERSCUT *benderscut)
 
const char * SCIPbenderscutGetDesc (SCIP_BENDERSCUT *benderscut)
 
int SCIPbenderscutGetPriority (SCIP_BENDERSCUT *benderscut)
 
SCIP_Longint SCIPbenderscutGetNCalls (SCIP_BENDERSCUT *benderscut)
 
SCIP_Longint SCIPbenderscutGetNFound (SCIP_BENDERSCUT *benderscut)
 
SCIP_Bool SCIPbenderscutIsInitialized (SCIP_BENDERSCUT *benderscut)
 
SCIP_Real SCIPbenderscutGetSetupTime (SCIP_BENDERSCUT *benderscut)
 
SCIP_Real SCIPbenderscutGetTime (SCIP_BENDERSCUT *benderscut)
 
SCIP_Bool SCIPbenderscutIsLPCut (SCIP_BENDERSCUT *benderscut)
 
void SCIPbenderscutSetEnabled (SCIP_BENDERSCUT *benderscut, SCIP_Bool enabled)
 
SCIP_RETCODE SCIPincludeBenderscut (SCIP *scip, SCIP_BENDERS *benders, const char *name, const char *desc, int priority, SCIP_Bool islpcut, SCIP_DECL_BENDERSCUTCOPY((*benderscutcopy)), SCIP_DECL_BENDERSCUTFREE((*benderscutfree)), SCIP_DECL_BENDERSCUTINIT((*benderscutinit)), SCIP_DECL_BENDERSCUTEXIT((*benderscutexit)), SCIP_DECL_BENDERSCUTINITSOL((*benderscutinitsol)), SCIP_DECL_BENDERSCUTEXITSOL((*benderscutexitsol)), SCIP_DECL_BENDERSCUTEXEC((*benderscutexec)), SCIP_BENDERSCUTDATA *benderscutdata)
 
SCIP_RETCODE SCIPincludeBenderscutBasic (SCIP *scip, SCIP_BENDERS *benders, SCIP_BENDERSCUT **benderscutptr, const char *name, const char *desc, int priority, SCIP_Bool islpcut, SCIP_DECL_BENDERSCUTEXEC((*benderscutexec)), SCIP_BENDERSCUTDATA *benderscutdata)
 
SCIP_RETCODE SCIPsetBenderscutCopy (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutFree (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutInit (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutExit (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutInitsol (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutExitsol (SCIP *scip, SCIP_BENDERSCUT *benderscut,)
 
SCIP_RETCODE SCIPsetBenderscutPriority (SCIP *scip, SCIP_BENDERSCUT *benderscut, int priority)
 
SCIP_RETCODE SCIPstoreBendersCut (SCIP *scip, SCIP_BENDERS *benders, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, int nvars)
 
SCIP_RETCODE SCIPapplyBendersStoredCuts (SCIP *scip, SCIP_BENDERS *benders)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_DECL_SORTPTRCOMP ( SCIPbenderscutComp )

compares two Benders' decomposition cuts w. r. to their priority

compares two Benders' cuts w. r. to their delay positions and their priority

Definition at line 53 of file benderscut.c.

References assert(), NULL, and SCIP_Benderscut::priority.

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

SCIP_DECL_SORTPTRCOMP ( SCIPbenderscutCompName )

comparison method for sorting Benders' decomposition cuts w.r.t. to their name

comparison method for sorting Benders' cuts w.r.t. to their name

Definition at line 65 of file benderscut.c.

References SCIPbenderscutGetName().

◆ SCIPbenderscutGetData()

◆ SCIPbenderscutSetData()

void SCIPbenderscutSetData ( SCIP_BENDERSCUT * benderscut,
SCIP_BENDERSCUTDATA * benderscutdata )

sets user data of the Benders' decomposition cut; user has to free old data in advance!

Parameters
benderscutBenders' decomposition cut
benderscutdatanew Benders' decomposition cut user data

Definition at line 413 of file benderscut.c.

References assert(), SCIP_Benderscut::benderscutdata, and NULL.

Referenced by SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTFREE(), SCIP_DECL_BENDERSCUTFREE(), and SCIP_DECL_BENDERSCUTFREE().

◆ SCIPbenderscutGetName()

const char * SCIPbenderscutGetName ( SCIP_BENDERSCUT * benderscut)

◆ SCIPbenderscutGetDesc()

const char * SCIPbenderscutGetDesc ( SCIP_BENDERSCUT * benderscut)

gets description of the Benders' decomposition cut

Parameters
benderscutBenders' decomposition cut

Definition at line 502 of file benderscut.c.

References assert(), SCIP_Benderscut::desc, and NULL.

◆ SCIPbenderscutGetPriority()

int SCIPbenderscutGetPriority ( SCIP_BENDERSCUT * benderscut)

gets priority of the Benders' decomposition cut

Parameters
benderscutBenders' decomposition cut

Definition at line 512 of file benderscut.c.

References assert(), NULL, and SCIP_Benderscut::priority.

◆ SCIPbenderscutGetNCalls()

SCIP_Longint SCIPbenderscutGetNCalls ( SCIP_BENDERSCUT * benderscut)

gets the number of times, the Benders' decomposition cut was called and tried to find a violated cut

gets the number of times, the heuristic was called and tried to find a solution

Parameters
benderscutBenders' decomposition cut

Definition at line 533 of file benderscut.c.

References assert(), SCIP_Benderscut::ncalls, NULL, and SCIP_Longint.

Referenced by SCIPprintBendersStatistics().

◆ SCIPbenderscutGetNFound()

SCIP_Longint SCIPbenderscutGetNFound ( SCIP_BENDERSCUT * benderscut)

gets the number of the cuts found by this Benders' decomposition cut

gets the number of Benders' cuts found by this Benders' decomposition cut

Parameters
benderscutBenders' decomposition cut

Definition at line 543 of file benderscut.c.

References assert(), SCIP_Benderscut::nfound, NULL, and SCIP_Longint.

Referenced by generateAndApplyBendersCuts(), generateAndApplyBendersCuts(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), generateBendersCuts(), SCIP_DECL_BENDERSCUTEXEC(), and SCIPprintBendersStatistics().

◆ SCIPbenderscutIsInitialized()

SCIP_Bool SCIPbenderscutIsInitialized ( SCIP_BENDERSCUT * benderscut)

is the Benders' decomposition cut initialized?

Parameters
benderscutBenders' decomposition cut

Definition at line 553 of file benderscut.c.

References assert(), SCIP_Benderscut::initialized, NULL, and SCIP_Bool.

◆ SCIPbenderscutGetSetupTime()

SCIP_Real SCIPbenderscutGetSetupTime ( SCIP_BENDERSCUT * benderscut)

gets time in seconds used in this Benders' decomposition cut for setting up for next stages

gets time in seconds used by this Benders' decomposition cut for setting up

Parameters
benderscutBenders' decomposition cut

Definition at line 563 of file benderscut.c.

References assert(), NULL, SCIP_Real, SCIPclockGetTime(), and SCIP_Benderscut::setuptime.

Referenced by SCIPprintBendersStatistics().

◆ SCIPbenderscutGetTime()

SCIP_Real SCIPbenderscutGetTime ( SCIP_BENDERSCUT * benderscut)

gets time in seconds used in this Benders' decomposition cut

Parameters
benderscutBenders' decomposition cut

Definition at line 573 of file benderscut.c.

References assert(), SCIP_Benderscut::benderscutclock, NULL, SCIP_Real, and SCIPclockGetTime().

Referenced by SCIPprintBendersStatistics().

◆ SCIPbenderscutIsLPCut()

SCIP_Bool SCIPbenderscutIsLPCut ( SCIP_BENDERSCUT * benderscut)

returns whether the Benders' cut uses the LP information

Parameters
benderscutBenders' decomposition cut

Definition at line 583 of file benderscut.c.

References assert(), SCIP_Benderscut::islpcut, NULL, and SCIP_Bool.

Referenced by generateBendersCuts().

◆ SCIPbenderscutSetEnabled()

void SCIPbenderscutSetEnabled ( SCIP_BENDERSCUT * benderscut,
SCIP_Bool enabled )

sets the enabled flag of the Benders' decomposition cut method

Parameters
benderscutBenders' decomposition cut
enabledflag to indicate whether the Benders' decomposition cut is enabled

Definition at line 593 of file benderscut.c.

References assert(), SCIP_Benderscut::enabled, NULL, and SCIP_Bool.

Referenced by SCIP_DECL_BENDERSCUTEXEC(), and SCIP_DECL_BENDERSCUTEXEC().

◆ SCIPincludeBenderscut()

SCIP_RETCODE SCIPincludeBenderscut ( SCIP * scip,
SCIP_BENDERS * benders,
const char * name,
const char * desc,
int priority,
SCIP_Bool islpcut,
SCIP_DECL_BENDERSCUTCOPY((*benderscutcopy)) ,
SCIP_DECL_BENDERSCUTFREE((*benderscutfree)) ,
SCIP_DECL_BENDERSCUTINIT((*benderscutinit)) ,
SCIP_DECL_BENDERSCUTEXIT((*benderscutexit)) ,
SCIP_DECL_BENDERSCUTINITSOL((*benderscutinitsol)) ,
SCIP_DECL_BENDERSCUTEXITSOL((*benderscutexitsol)) ,
SCIP_DECL_BENDERSCUTEXEC((*benderscutexec)) ,
SCIP_BENDERSCUTDATA * benderscutdata )

creates a Benders' cut algorithms and includes it in the associated Benders' decomposition

This should be called from the SCIPincludeBendersXyz for the associated Benders' decomposition. It is only possible to include a Benders' cut algorithm if a Benders' decomposition has already been included This should be done during the problem creation stage.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
method has all Benders' decomposition callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludeBendersBasic() and setter functions if you seek for a method which is less likely to change in future releases
Parameters
scipSCIP data structure
bendersBenders' decomposition
namename of Benders' decomposition cuts
descdescription of Benders' decomposition cuts
prioritypriority of the Benders' decomposition cuts
islpcutindicates whether the cut is generated from the LP solution
benderscutdataBenders' decomposition cuts data

Definition at line 1085 of file scip_benders.c.

References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbenderscutCreate(), SCIPbendersIncludeBenderscut(), SCIPcheckStage(), SCIPerrorMessage, SCIPfindBenderscut(), and TRUE.

Referenced by SCIPincludeObjBenderscut().

◆ SCIPincludeBenderscutBasic()

SCIP_RETCODE SCIPincludeBenderscutBasic ( SCIP * scip,
SCIP_BENDERS * benders,
SCIP_BENDERSCUT ** benderscutptr,
const char * name,
const char * desc,
int priority,
SCIP_Bool islpcut,
SCIP_DECL_BENDERSCUTEXEC((*benderscutexec)) ,
SCIP_BENDERSCUTDATA * benderscutdata )

creates a Benders' cut and includes it an associated Benders' decomposition with all non-fundamental callbacks set to NULL

If needed, the non-fundamental callbacks can be added afterwards via setter functions SCIPsetBenderscutCopy(), SCIPsetBenderscutFree(), SCIPsetBenderscutInit(), SCIPsetBenderscutExit(), SCIPsetBenderscutInitsol(), SCIPsetBenderscutExitsol().

This should be done during the problem creation stage.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
if you want to set all callbacks with a single method call, consider using SCIPincludeBenders() instead
Parameters
scipSCIP data structure
bendersBenders' decomposition
benderscutptrreference to a Benders' decomposition cut, or NULL
namename of Benders' decomposition
descdescription of Benders' decomposition
prioritypriority of the Benders' decomposition
islpcutindicates whether the cut is generated from the LP solution
benderscutdataBenders' cut data

Definition at line 1138 of file scip_benders.c.

References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPbenderscutCreate(), SCIPbendersIncludeBenderscut(), SCIPcheckStage(), SCIPerrorMessage, SCIPfindBenderscut(), and TRUE.

Referenced by SCIPincludeBenderscutFeas(), SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().

◆ SCIPsetBenderscutCopy()

SCIP_RETCODE SCIPsetBenderscutCopy ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets copy method of Benders' decomposition cut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutBenders' decomposition cut copy method of benderscut or NULL if you don't want to copy your plugin into sub-SCIPs

Definition at line 1180 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetCopy(), SCIPcheckStage(), and TRUE.

◆ SCIPsetBenderscutFree()

SCIP_RETCODE SCIPsetBenderscutFree ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets destructor method of benderscut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut destructor of benderscut

Definition at line 1204 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetFree(), SCIPcheckStage(), and TRUE.

Referenced by SCIPincludeBenderscutFeasalt(), SCIPincludeBenderscutInt(), SCIPincludeBenderscutNogood(), and SCIPincludeBenderscutOpt().

◆ SCIPsetBenderscutInit()

SCIP_RETCODE SCIPsetBenderscutInit ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets initialization method of benderscut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut initialize benderscut

Definition at line 1228 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetInit(), SCIPcheckStage(), and TRUE.

Referenced by SCIPincludeBenderscutInt().

◆ SCIPsetBenderscutExit()

SCIP_RETCODE SCIPsetBenderscutExit ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets deinitialization method of benderscut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut deinitialize benderscut

Definition at line 1252 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetExit(), SCIPcheckStage(), and TRUE.

Referenced by SCIPincludeBenderscutFeasalt(), and SCIPincludeBenderscutInt().

◆ SCIPsetBenderscutInitsol()

SCIP_RETCODE SCIPsetBenderscutInitsol ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets solving process initialization method of benderscut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut solving process initialization method of benderscut

Definition at line 1276 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetInitsol(), SCIPcheckStage(), and TRUE.

◆ SCIPsetBenderscutExitsol()

SCIP_RETCODE SCIPsetBenderscutExitsol ( SCIP * scip,
SCIP_BENDERSCUT * benderscut )

sets solving process deinitialization method of benderscut

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut solving process deinitialization method of benderscut

Definition at line 1300 of file scip_benders.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetExitsol(), SCIPcheckStage(), and TRUE.

◆ SCIPsetBenderscutPriority()

SCIP_RETCODE SCIPsetBenderscutPriority ( SCIP * scip,
SCIP_BENDERSCUT * benderscut,
int priority )

sets the priority of a Benders' decomposition cut algorithm

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
benderscutbenderscut
prioritynew priority of the Benders' decomposition

Definition at line 1324 of file scip_benders.c.

References assert(), FALSE, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPbenderscutSetPriority(), SCIPbendersSetBenderscutsSorted(), SCIPcheckStage(), SCIPgetBenders(), SCIPgetNBenders(), and TRUE.

Referenced by SCIP_DECL_PARAMCHGD().

◆ SCIPstoreBendersCut()

SCIP_RETCODE SCIPstoreBendersCut ( SCIP * scip,
SCIP_BENDERS * benders,
SCIP_VAR ** vars,
SCIP_Real * vals,
SCIP_Real lhs,
SCIP_Real rhs,
int nvars )

adds the generated cuts to the Benders' cut storage

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipthe SCIP data structure
bendersBenders' decomposition
varsthe variables that have non-zero coefficients in the cut
valsthe coefficients of the variables in the cut
lhsthe left hand side of the cut
rhsthe right hand side of the cut
nvarsthe number of variables with non-zero coefficients in the cut

Definition at line 1366 of file scip_benders.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbendersStoreCut(), SCIPcheckStage(), TRUE, and vars.

Referenced by SCIPgenerateAndApplyBendersOptCut().

◆ SCIPapplyBendersStoredCuts()

SCIP_RETCODE SCIPapplyBendersStoredCuts ( SCIP * scip,
SCIP_BENDERS * benders )

applies the Benders' decomposition cuts in storage to the input SCIP instance

When calling the function, the user must be sure that the variables are associated with the input SCIP instance. The main use of this method is to transfer Benders' cuts between solvers in ParaSCIP.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:

applies the Benders' decomposition cuts in storage to the input SCIP instance

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Parameters
scipthe SCIP data structure
bendersBenders' decomposition

Definition at line 1434 of file scip_benders.c.

References assert(), createAndApplyStoredBendersCut(), i, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbendersGetNStoredCuts(), SCIPbendersGetStoredCutData(), and vars.