29 #define SEPA_NAME "intobj" 30 #define SEPA_DESC "integer objective value separator" 31 #define SEPA_PRIORITY -100 33 #define SEPA_MAXBOUNDDIST 0.0 34 #define SEPA_USESSUBSCIP FALSE 35 #define SEPA_DELAY FALSE 37 #define EVENTHDLR_NAME "intobj" 38 #define EVENTHDLR_DESC "objective change event handler for integer objective value separator" 65 assert(sepadata != NULL);
68 (*sepadata)->objrow = NULL;
69 (*sepadata)->objvar = NULL;
70 (*sepadata)->setoff = 0.0;
82 assert(sepadata != NULL);
83 assert(*sepadata != NULL);
84 assert((*sepadata)->objrow == NULL);
85 assert((*sepadata)->objvar == NULL);
100 assert(sepadata != NULL);
102 if( sepadata->objrow == NULL )
111 attendobjvarbound =
FALSE;
113 if( sepadata->objvar == NULL )
121 attendobjvarbound =
TRUE;
128 if( attendobjvarbound )
134 sepadata->setoff = intobjval;
137 for( v = 0; v < nvars; ++v )
170 assert(result != NULL);
188 assert(sepadata != NULL);
194 intbound =
SCIPceil(scip, objval) - sepadata->setoff;
196 SCIPdebugMsg(scip,
"new objective variable lower bound: <%s>[%g,%g]\n",
210 else if ( tightened )
228 assert(
scip != NULL);
229 assert(sepa != NULL);
246 assert(sepadata != NULL);
263 assert(sepadata != NULL);
266 if( sepadata->objvar != NULL )
282 assert(sepadata != NULL);
285 if( sepadata->objrow != NULL )
367 assert(sepadata != NULL);
370 if( sepadata->objrow == NULL )
421 sepaExeclpIntobj, sepaExecsolIntobj,
424 assert(sepa != NULL);
436 eventExecIntobj, eventhdlrdata) );
437 assert(eventhdlr != NULL);
enum SCIP_Result SCIP_RESULT
static SCIP_RETCODE sepadataFree(SCIP *scip, SCIP_SEPADATA **sepadata)
#define SCIP_EVENTTYPE_OBJCHANGED
SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened)
SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_RETCODE SCIPsetEventhdlrExit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXIT((*eventexit)))
SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
SCIP_Real SCIPvarGetLbLocal(SCIP_VAR *var)
static SCIP_DECL_SEPAEXIT(sepaExitIntobj)
SCIP_RETCODE SCIPincludeEventhdlrBasic(SCIP *scip, SCIP_EVENTHDLR **eventhdlrptr, const char *name, const char *desc, SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_RETCODE SCIPreleaseVar(SCIP *scip, SCIP_VAR **var)
struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
SCIP_Real SCIPinfinity(SCIP *scip)
const char * SCIPsepaGetName(SCIP_SEPA *sepa)
enum SCIP_Retcode SCIP_RETCODE
SCIP_RETCODE SCIPaddVarLocks(SCIP *scip, SCIP_VAR *var, int nlocksdown, int nlocksup)
static SCIP_DECL_EVENTINIT(eventInitIntobj)
#define SCIPfreeBlockMemory(scip, ptr)
SCIP_Bool SCIPallVarsInProb(SCIP *scip)
static SCIP_DECL_SEPACOPY(sepaCopyIntobj)
static SCIP_RETCODE separateCuts(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result)
#define SCIPallocBlockMemory(scip, ptr)
int SCIPgetNLPBranchCands(SCIP *scip)
SCIP_RETCODE SCIPsetSepaCopy(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPACOPY((*sepacopy)))
static SCIP_DECL_SEPAFREE(sepaFreeIntobj)
SCIP_RETCODE SCIPincludeSepaIntobj(SCIP *scip)
SCIP_SEPADATA * SCIPsepaGetData(SCIP_SEPA *sepa)
SCIP_Bool SCIProwIsInLP(SCIP_ROW *row)
static SCIP_DECL_SEPAEXECSOL(sepaExecsolIntobj)
static SCIP_DECL_EVENTEXIT(eventExitIntobj)
SCIP_Real SCIPeventGetOldobj(SCIP_EVENT *event)
SCIP_RETCODE SCIPsetSepaExit(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXIT((*sepaexit)))
static SCIP_RETCODE createObjRow(SCIP *scip, SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata)
SCIP_RETCODE SCIPsetEventhdlrInit(SCIP *scip, SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINIT((*eventinit)))
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_Real SCIPeventGetNewobj(SCIP_EVENT *event)
void SCIPsepaSetData(SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata)
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
SCIP_Real SCIPgetLowerbound(SCIP *scip)
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
static SCIP_DECL_SEPAEXECLP(sepaExeclpIntobj)
SCIP_RETCODE SCIPincludeSepaBasic(SCIP *scip, SCIP_SEPA **sepa, const char *name, const char *desc, int priority, int freq, SCIP_Real maxbounddist, SCIP_Bool usessubscip, SCIP_Bool delay, SCIP_DECL_SEPAEXECLP((*sepaexeclp)), SCIP_DECL_SEPAEXECSOL((*sepaexecsol)), SCIP_SEPADATA *sepadata)
SCIP_RETCODE SCIPsetSepaExitsol(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXITSOL((*sepaexitsol)))
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_RETCODE SCIPcatchEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_RETCODE SCIPcreateEmptyRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
static SCIP_DECL_SEPAEXITSOL(sepaExitsolIntobj)
SCIP_RETCODE SCIPdropEvent(SCIP *scip, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_Real SCIPvarGetObj(SCIP_VAR *var)
SCIP_RETCODE SCIPcreateVar(SCIP *scip, SCIP_VAR **var, const char *name, SCIP_Real lb, SCIP_Real ub, SCIP_Real obj, SCIP_VARTYPE vartype, SCIP_Bool initial, SCIP_Bool removable, SCIP_DECL_VARDELORIG((*vardelorig)), SCIP_DECL_VARTRANS((*vartrans)), SCIP_DECL_VARDELTRANS((*vardeltrans)), SCIP_DECL_VARCOPY((*varcopy)), SCIP_VARDATA *vardata)
static SCIP_RETCODE sepadataCreate(SCIP *scip, SCIP_SEPADATA **sepadata)
integer objective value separator
int SCIPgetNVars(SCIP *scip)
SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
SCIP_Bool SCIPisObjIntegral(SCIP *scip)
SCIP_RETCODE SCIPsetSepaFree(SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAFREE((*sepafree)))
SCIP_Real SCIPgetLPObjval(SCIP *scip)
SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
#define SEPA_MAXBOUNDDIST
SCIP_VAR ** SCIPgetVars(SCIP *scip)
SCIP_Bool SCIPisStopped(SCIP *scip)
SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
SCIP_Bool SCIPisZero(SCIP *scip, SCIP_Real val)
SCIP_Real SCIPvarGetUbLocal(SCIP_VAR *var)
SCIP_Bool SCIPisFeasIntegral(SCIP *scip, SCIP_Real val)
static SCIP_DECL_EVENTEXEC(eventExecIntobj)
SCIP_Real SCIPceil(SCIP *scip, SCIP_Real val)
SCIP_EVENTHDLRDATA * SCIPeventhdlrGetData(SCIP_EVENTHDLR *eventhdlr)
#define SCIP_EVENTTYPE_VARADDED
struct SCIP_SepaData SCIP_SEPADATA