50#define SCIP_DEFAULT_ENABLED TRUE
96 if( benderscut->benderscutcopy !=
NULL )
99 SCIP_CALL( benderscut->benderscutcopy(
set->scip, benders, benderscut) );
138 (*benderscut)->priority = priority;
139 (*benderscut)->islpcut = islpcut;
140 (*benderscut)->benderscutcopy = benderscutcopy;
141 (*benderscut)->benderscutfree = benderscutfree;
142 (*benderscut)->benderscutinit = benderscutinit;
143 (*benderscut)->benderscutexit = benderscutexit;
144 (*benderscut)->benderscutinitsol = benderscutinitsol;
145 (*benderscut)->benderscutexitsol = benderscutexitsol;
146 (*benderscut)->benderscutexec = benderscutexec;
147 (*benderscut)->benderscutdata = benderscutdata;
150 (*benderscut)->ncalls = 0;
151 (*benderscut)->nfound = 0;
152 (*benderscut)->initialized =
FALSE;
158 &(*benderscut)->priority,
TRUE, priority, INT_MIN/4, INT_MAX/4,
163 "is this Benders' decomposition cut method used to generate cuts?", &(*benderscut)->enabled,
FALSE,
196 benderscutcopy, benderscutfree, benderscutinit, benderscutexit, benderscutinitsol, benderscutexitsol,
210 assert(!(*benderscut)->initialized);
214 if( (*benderscut)->benderscutfree !=
NULL )
216 SCIP_CALL( (*benderscut)->benderscutfree(
set->scip, *benderscut) );
243 if(
set->misc_resetstat )
252 if( benderscut->benderscutinit !=
NULL )
257 SCIP_CALL( benderscut->benderscutinit(
set->scip, benderscut) );
282 if( benderscut->benderscutexit !=
NULL )
287 SCIP_CALL( benderscut->benderscutexit(
set->scip, benderscut) );
307 if( benderscut->benderscutinitsol !=
NULL )
312 SCIP_CALL( benderscut->benderscutinitsol(
set->scip, benderscut) );
331 if( benderscut->benderscutexitsol !=
NULL )
336 SCIP_CALL( benderscut->benderscutexitsol(
set->scip, benderscut) );
374 SCIP_CALL( benderscut->benderscutexec(
set->scip, benders, benderscut,
sol, probnumber, type, &cutresult) );
387 SCIPerrorMessage(
"execution method of Benders' decomposition cut <%s> returned invalid result <%d>\n",
388 benderscut->
name, cutresult);
397 (*result) = cutresult;
433 benderscut->benderscutcopy = benderscutcopy;
444 benderscut->benderscutfree = benderscutfree;
455 benderscut->benderscutinit = benderscutinit;
466 benderscut->benderscutexit = benderscutexit;
477 benderscut->benderscutinitsol = benderscutinitsol;
488 benderscut->benderscutexitsol = benderscutexitsol;
498 return benderscut->
name;
508 return benderscut->
desc;
539 return benderscut->
ncalls;
549 return benderscut->
nfound;
SCIP_RETCODE SCIPbenderscutExit(SCIP_BENDERSCUT *benderscut, SCIP_SET *set)
SCIP_RETCODE SCIPbenderscutCreate(SCIP_BENDERS *benders, SCIP_BENDERSCUT **benderscut, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, 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)
void SCIPbenderscutSetExit(SCIP_BENDERSCUT *benderscut,)
void SCIPbenderscutSetInitsol(SCIP_BENDERSCUT *benderscut,)
SCIP_RETCODE SCIPbenderscutFree(SCIP_BENDERSCUT **benderscut, SCIP_SET *set)
static SCIP_RETCODE doBenderscutCreate(SCIP_BENDERS *benders, SCIP_BENDERSCUT **benderscut, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, 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)
void SCIPbenderscutSetFree(SCIP_BENDERSCUT *benderscut,)
SCIP_RETCODE SCIPbenderscutInitsol(SCIP_BENDERSCUT *benderscut, SCIP_SET *set)
void SCIPbenderscutSetExitsol(SCIP_BENDERSCUT *benderscut,)
SCIP_RETCODE SCIPbenderscutExitsol(SCIP_BENDERSCUT *benderscut, SCIP_SET *set)
void SCIPbenderscutSetInit(SCIP_BENDERSCUT *benderscut,)
SCIP_RETCODE SCIPbenderscutExec(SCIP_BENDERSCUT *benderscut, SCIP_SET *set, SCIP_BENDERS *benders, SCIP_SOL *sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT *result)
void SCIPbenderscutSetPriority(SCIP_BENDERSCUT *benderscut, int priority)
#define SCIP_DEFAULT_ENABLED
SCIP_RETCODE SCIPbenderscutCopyInclude(SCIP_BENDERS *benders, SCIP_BENDERSCUT *benderscut, SCIP_SET *set)
void SCIPbenderscutSetCopy(SCIP_BENDERSCUT *benderscut,)
SCIP_RETCODE SCIPbenderscutInit(SCIP_BENDERSCUT *benderscut, SCIP_SET *set)
internal methods for Benders' decomposition cuts
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockReset(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
common defines and data types used in all packages of SCIP
#define SCIP_CALL_FINALLY(x, y)
const char * SCIPbendersGetName(SCIP_BENDERS *benders)
const char * SCIPbenderscutGetDesc(SCIP_BENDERSCUT *benderscut)
SCIP_Bool SCIPbenderscutIsLPCut(SCIP_BENDERSCUT *benderscut)
SCIP_RETCODE SCIPsetBenderscutPriority(SCIP *scip, SCIP_BENDERSCUT *benderscut, int priority)
void SCIPbenderscutSetData(SCIP_BENDERSCUT *benderscut, SCIP_BENDERSCUTDATA *benderscutdata)
int SCIPbenderscutGetPriority(SCIP_BENDERSCUT *benderscut)
const char * SCIPbenderscutGetName(SCIP_BENDERSCUT *benderscut)
SCIP_Bool SCIPbenderscutIsInitialized(SCIP_BENDERSCUT *benderscut)
SCIP_BENDERSCUTDATA * SCIPbenderscutGetData(SCIP_BENDERSCUT *benderscut)
SCIP_Longint SCIPbenderscutGetNCalls(SCIP_BENDERSCUT *benderscut)
SCIP_Real SCIPbenderscutGetTime(SCIP_BENDERSCUT *benderscut)
SCIP_Real SCIPbenderscutGetSetupTime(SCIP_BENDERSCUT *benderscut)
SCIP_Longint SCIPbenderscutGetNFound(SCIP_BENDERSCUT *benderscut)
void SCIPbenderscutSetEnabled(SCIP_BENDERSCUT *benderscut, SCIP_Bool enabled)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
static const char * paramname[]
#define BMSfreeMemory(ptr)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSfreeMemoryArray(ptr)
struct BMS_BlkMem BMS_BLKMEM
#define BMSallocMemory(ptr)
SCIP_PARAMDATA * SCIPparamGetData(SCIP_PARAM *param)
int SCIPparamGetInt(SCIP_PARAM *param)
internal methods for handling parameter settings
public methods for Benders' decomposition
public methods for message output
public data structures and miscellaneous methods
data structures and methods for collecting reoptimization information
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_RETCODE SCIPsetAddBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
internal methods for global SCIP settings
SCIP_BENDERSCUTDATA * benderscutdata
SCIP_CLOCK * benderscutclock
datastructures for Benders' decomposition cuts techniques
enum SCIP_BendersEnfoType SCIP_BENDERSENFOTYPE
#define SCIP_DECL_BENDERSCUTEXEC(x)
struct SCIP_BenderscutData SCIP_BENDERSCUTDATA
#define SCIP_DECL_BENDERSCUTEXITSOL(x)
#define SCIP_DECL_BENDERSCUTFREE(x)
#define SCIP_DECL_BENDERSCUTCOPY(x)
#define SCIP_DECL_BENDERSCUTINIT(x)
#define SCIP_DECL_BENDERSCUTINITSOL(x)
#define SCIP_DECL_BENDERSCUTEXIT(x)
#define SCIP_DECL_SORTPTRCOMP(x)
struct SCIP_ParamData SCIP_PARAMDATA
#define SCIP_DECL_PARAMCHGD(x)
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE