71 if( eventhdlr->eventcopy !=
NULL )
92 if( !
set->exact_enable )
176 (*eventhdlr)->eventcopy = eventcopy;
177 (*eventhdlr)->eventfree = eventfree;
178 (*eventhdlr)->eventinit = eventinit;
179 (*eventhdlr)->eventexit = eventexit;
180 (*eventhdlr)->eventinitsol = eventinitsol;
181 (*eventhdlr)->eventexitsol = eventexitsol;
182 (*eventhdlr)->eventdelete = eventdelete;
183 (*eventhdlr)->eventexec = eventexec;
184 (*eventhdlr)->eventhdlrdata = eventhdlrdata;
185 (*eventhdlr)->initialized =
FALSE;
215 eventinitsol, eventexitsol, eventdelete, eventexec, eventhdlrdata), (
void)
SCIPeventhdlrFree(eventhdlr,
set) );
229 if( *eventhdlr ==
NULL )
232 assert(!(*eventhdlr)->initialized);
235 if( (*eventhdlr)->eventfree !=
NULL )
237 SCIP_CALL( (*eventhdlr)->eventfree(
set->scip, *eventhdlr) );
266 if(
set->misc_resetstat )
272 if( eventhdlr->eventinit !=
NULL )
277 SCIP_CALL( eventhdlr->eventinit(
set->scip, eventhdlr) );
302 if( eventhdlr->eventexit !=
NULL )
307 SCIP_CALL( eventhdlr->eventexit(
set->scip, eventhdlr) );
327 if( eventhdlr->eventinitsol !=
NULL )
332 SCIP_CALL( eventhdlr->eventinitsol(
set->scip, eventhdlr) );
351 if( eventhdlr->eventexitsol !=
NULL )
356 SCIP_CALL( eventhdlr->eventexitsol(
set->scip, eventhdlr) );
385 SCIP_CALL( eventhdlr->eventexec(
set->scip, eventhdlr, event, eventdata) );
402 return eventhdlr->
name;
434 eventhdlr->eventcopy = eventcopy;
445 eventhdlr->eventfree = eventfree;
456 eventhdlr->eventinit = eventinit;
467 eventhdlr->eventexit = eventexit;
478 eventhdlr->eventinitsol = eventinitsol;
489 eventhdlr->eventexitsol = eventexitsol;
500 eventhdlr->eventdelete = eventdelete;
579#undef SCIPeventGetType
580#undef SCIPeventGetOldobj
581#undef SCIPeventGetNewobj
582#undef SCIPeventGetOldtype
583#undef SCIPeventGetNewtype
584#undef SCIPeventGetOldbound
585#undef SCIPeventGetNewbound
586#undef SCIPeventGetNode
587#undef SCIPeventGetSol
588#undef SCIPeventGetRowCol
589#undef SCIPeventGetRowOldCoefVal
590#undef SCIPeventGetRowNewCoefVal
591#undef SCIPeventGetRowOldConstVal
592#undef SCIPeventGetRowNewConstVal
593#undef SCIPeventGetRowSide
594#undef SCIPeventGetRowOldSideVal
595#undef SCIPeventGetRowNewSideVal
610 (*event)->data.eventvaradded.var =
var;
628 (*event)->data.eventvardeleted.var =
var;
650 (*event)->data.eventvarfixed.var =
var;
671 (*event)->data.eventvarunlocked.var =
var;
692 (*event)->data.eventobjchg.var =
var;
693 (*event)->data.eventobjchg.oldobj =
oldobj;
694 (*event)->data.eventobjchg.newobj =
newobj;
695 (*event)->data.eventobjchg.oldobjexact =
NULL;
696 (*event)->data.eventobjchg.newobjexact =
NULL;
717 (*event)->data.eventbdchg.var =
var;
718 (*event)->data.eventbdchg.oldbound = oldbound;
719 (*event)->data.eventbdchg.newbound = newbound;
720 (*event)->data.eventbdchg.oldboundexact =
NULL;
721 (*event)->data.eventbdchg.newboundexact =
NULL;
742 (*event)->data.eventbdchg.var =
var;
743 (*event)->data.eventbdchg.oldbound = oldbound;
744 (*event)->data.eventbdchg.newbound = newbound;
745 (*event)->data.eventbdchg.oldboundexact =
NULL;
746 (*event)->data.eventbdchg.newboundexact =
NULL;
766 if( newbound > oldbound )
770 (*event)->data.eventbdchg.var =
var;
771 (*event)->data.eventbdchg.oldbound = oldbound;
772 (*event)->data.eventbdchg.newbound = newbound;
773 (*event)->data.eventbdchg.oldboundexact =
NULL;
774 (*event)->data.eventbdchg.newboundexact =
NULL;
794 if( newbound < oldbound )
798 (*event)->data.eventbdchg.var =
var;
799 (*event)->data.eventbdchg.oldbound = oldbound;
800 (*event)->data.eventbdchg.newbound = newbound;
801 (*event)->data.eventbdchg.oldboundexact =
NULL;
802 (*event)->data.eventbdchg.newboundexact =
NULL;
859 (*event)->data.eventhole.var =
var;
860 (*event)->data.eventhole.left = left;
861 (*event)->data.eventhole.right = right;
881 (*event)->data.eventhole.var =
var;
882 (*event)->data.eventhole.left = left;
883 (*event)->data.eventhole.right = right;
903 (*event)->data.eventhole.var =
var;
904 (*event)->data.eventhole.left = left;
905 (*event)->data.eventhole.right = right;
925 (*event)->data.eventhole.var =
var;
926 (*event)->data.eventhole.left = left;
927 (*event)->data.eventhole.right = right;
946 (*event)->data.eventimpladd.var =
var;
962 assert(oldtype != newtype);
967 (*event)->data.eventtypechg.var =
var;
968 (*event)->data.eventtypechg.oldtype = oldtype;
969 (*event)->data.eventtypechg.newtype = newtype;
985 assert(oldtype != newtype);
990 (*event)->data.eventimpltypechg.var =
var;
991 (*event)->data.eventimpltypechg.oldtype = oldtype;
992 (*event)->data.eventimpltypechg.newtype = newtype;
1011 (*event)->data.eventrowaddedsepa.row = row;
1030 (*event)->data.eventrowdeletedsepa.row = row;
1049 (*event)->data.eventrowaddedlp.row = row;
1068 (*event)->data.eventrowdeletedlp.row = row;
1090 (*event)->data.eventrowcoefchanged.row = row;
1091 (*event)->data.eventrowcoefchanged.col = col;
1092 (*event)->data.eventrowcoefchanged.oldval = oldval;
1093 (*event)->data.eventrowcoefchanged.newval = newval;
1114 (*event)->data.eventrowconstchanged.row = row;
1115 (*event)->data.eventrowconstchanged.oldval = oldval;
1116 (*event)->data.eventrowconstchanged.newval = newval;
1138 (*event)->data.eventrowsidechanged.row = row;
1139 (*event)->data.eventrowsidechanged.side = side;
1140 (*event)->data.eventrowsidechanged.oldval = oldval;
1141 (*event)->data.eventrowsidechanged.newval = newval;
1200 return event->eventtype;
1211 event->eventtype = eventtype;
1227 return event->data.eventvaradded.var;
1231 return event->data.eventvardeleted.var;
1235 return event->data.eventvarfixed.var;
1239 return event->data.eventvarunlocked.var;
1243 return event->data.eventobjchg.var;
1252 return event->data.eventbdchg.var;
1259 return event->data.eventhole.var;
1263 return event->data.eventimpladd.var;
1267 return event->data.eventtypechg.var;
1271 return event->data.eventimpltypechg.var;
1292 event->data.eventvaradded.var =
var;
1297 event->data.eventvardeleted.var =
var;
1302 event->data.eventvarfixed.var =
var;
1307 event->data.eventvarunlocked.var =
var;
1312 event->data.eventobjchg.var =
var;
1322 event->data.eventbdchg.var =
var;
1330 event->data.eventhole.var =
var;
1335 event->data.eventimpladd.var =
var;
1340 event->data.eventtypechg.var =
var;
1345 event->data.eventimpltypechg.var =
var;
1370 return event->data.eventobjchg.oldobj;
1387 return event->data.eventobjchg.newobj;
1405 return event->data.eventbdchg.oldbound;
1429 return event->data.eventbdchg.newbound;
1452 return event->data.eventbdchg.oldboundexact;
1475 return event->data.eventtypechg.oldtype;
1492 return event->data.eventtypechg.newtype;
1509 return event->data.eventimpltypechg.oldtype;
1526 return event->data.eventimpltypechg.newtype;
1543 return event->data.node;
1561 event->data.node = node;
1580 return event->data.sol;
1598 event->data.sol =
sol;
1617 return event->data.eventhole.left;
1634 return event->data.eventhole.right;
1647 return event->data.eventrowaddedsepa.row;
1649 return event->data.eventrowdeletedsepa.row;
1651 return event->data.eventrowaddedlp.row;
1653 return event->data.eventrowdeletedlp.row;
1655 return event->data.eventrowcoefchanged.row;
1657 return event->data.eventrowconstchanged.row;
1659 return event->data.eventrowsidechanged.row;
1681 return event->data.eventrowcoefchanged.col;
1698 return event->data.eventrowcoefchanged.oldval;
1715 return event->data.eventrowcoefchanged.newval;
1732 return event->data.eventrowconstchanged.oldval;
1749 return event->data.eventrowconstchanged.newval;
1766 return event->data.eventrowsidechanged.side;
1783 return event->data.eventrowsidechanged.oldval;
1800 return event->data.eventrowsidechanged.newval;
1851 var =
event->data.eventvardeleted.var;
1859 var =
event->data.eventvarfixed.var;
1867 var =
event->data.eventvarunlocked.var;
1875 var =
event->data.eventobjchg.var;
1891 if(
set->exact_enable )
1898 newobj =
event->data.eventobjchg.newobjexact;
1899 oldobj =
event->data.eventobjchg.oldobjexact;
1935 var =
event->data.eventbdchg.var;
1957 var =
event->data.eventbdchg.var;
1980 var =
event->data.eventbdchg.var;
2022 var =
event->data.eventbdchg.var;
2066 var =
event->data.eventhole.var;
2074 var =
event->data.eventimpladd.var;
2083 var =
event->data.eventtypechg.var;
2091 var =
event->data.eventimpltypechg.var;
2125 if( num > eventfilter->
size )
2134 eventfilter->
size = newsize;
2136 assert(num <= eventfilter->size);
2151 (*eventfilter)->eventtypes =
NULL;
2152 (*eventfilter)->eventhdlrs =
NULL;
2153 (*eventfilter)->eventdata =
NULL;
2154 (*eventfilter)->nextpos =
NULL;
2155 (*eventfilter)->size = 0;
2156 (*eventfilter)->len = 0;
2157 (*eventfilter)->firstfreepos = -1;
2158 (*eventfilter)->firstdeletedpos = -1;
2161 (*eventfilter)->delayupdates =
FALSE;
2177 assert(!(*eventfilter)->delayupdates);
2183 for(
i = 0;
i < (*eventfilter)->len; ++
i )
2188 if( (*eventfilter)->eventhdlrs[
i]->eventdelete !=
NULL )
2190 SCIP_CALL( (*eventfilter)->eventhdlrs[
i]->eventdelete(
set->scip, (*eventfilter)->eventhdlrs[
i],
2191 &(*eventfilter)->eventdata[
i]) );
2231 pos = eventfilter->
len;
2243 pos = eventfilter->
len;
2250 assert(0 <= pos && pos < eventfilter->len);
2259 assert(0 <= pos && pos < eventfilter->len);
2263 eventfilter->
eventdata[pos] = eventdata;
2264 eventfilter->
nextpos[pos] = -2;
2266 if( filterpos !=
NULL )
2287 for(
i = eventfilter->
len - 1;
i >= 0; --
i )
2315 assert(-1 <= filterpos && filterpos < eventfilter->len);
2318 if( filterpos == -1 )
2320 if( filterpos == -1 )
2323 (
void*)eventhdlr, (
void*)eventdata, eventtype, (
void*)eventfilter);
2326 assert(0 <= filterpos && filterpos < eventfilter->len);
2382 assert(0 <= pos && pos < eventfilter->len);
2386 nextpos = eventfilter->
nextpos[pos];
2422 eventtype =
event->eventtype;
2425 if( (eventtype & eventfilter->
eventmask) == 0 )
2435 len = eventfilter->
len;
2437 for(
i = 0;
i < len; ++
i )
2440 if( (eventtype & eventtypes[
i]) != 0 )
2451 eventfilter->
eventmask &= ~event->eventtype;
2478#undef SCIPeventqueueIsDelayed
2499 assert(num <= eventqueue->eventssize);
2512 (*eventqueue)->events =
NULL;
2513 (*eventqueue)->eventssize = 0;
2514 (*eventqueue)->nevents = 0;
2515 (*eventqueue)->delayevents =
FALSE;
2527 assert((*eventqueue)->nevents == 0);
2549 (
void*)*event, (*event)->
eventtype, (
void*)eventqueue, eventqueue->
nevents);
2598 switch( (*event)->eventtype )
2639 var = (*event)->data.eventobjchg.var;
2641 pos =
var->eventqueueindexobj;
2645 assert(pos < eventqueue->nevents);
2646 qevent = eventqueue->events[pos];
2652 SCIPsetDebugMsg(
set,
" -> merging OBJ event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2653 SCIPvarGetName((*event)->data.eventobjchg.var), (*event)->data.eventobjchg.oldobj,
2654 (*event)->data.eventobjchg.newobj,
2664 var->eventqueueindexobj = -1;
2674 var->eventqueueindexobj = eventqueue->nevents;
2682 var = (*event)->data.eventbdchg.var;
2684 pos =
var->eventqueueindexlb;
2688 assert(pos < eventqueue->nevents);
2689 qevent = eventqueue->events[pos];
2695 SCIPsetDebugMsg(
set,
" -> merging LB event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2696 SCIPvarGetName((*event)->data.eventbdchg.var), (*event)->data.eventbdchg.oldbound,
2697 (*event)->data.eventbdchg.newbound,
2704 if( (*event)->data.eventbdchg.newboundexact !=
NULL )
2734 var->eventqueueindexlb = -1;
2744 var->eventqueueindexlb = eventqueue->nevents;
2752 var = (*event)->data.eventbdchg.var;
2754 pos =
var->eventqueueindexub;
2758 assert(pos < eventqueue->nevents);
2759 qevent = eventqueue->events[pos];
2765 SCIPsetDebugMsg(
set,
" -> merging UB event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2766 SCIPvarGetName((*event)->data.eventbdchg.var), (*event)->data.eventbdchg.oldbound,
2767 (*event)->data.eventbdchg.newbound,
2774 if( (*event)->data.eventbdchg.newboundexact !=
NULL )
2804 var->eventqueueindexub = -1;
2814 var->eventqueueindexub = eventqueue->nevents;
2820 var = (*event)->data.eventimpladd.var;
2822 if(
var->eventqueueimpl )
2887 event = eventqueue->
events[
i];
2898 event->data.eventobjchg.var->eventqueueindexobj = -1;
2903 event->data.eventbdchg.var->eventqueueindexlb = -1;
2908 event->data.eventbdchg.var->eventqueueindexub = -1;
2913 event->data.eventimpladd.var->eventqueueimpl =
FALSE;
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
internal methods for branching rules and branching candidate storage
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
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
#define SCIP_CALL_FINALLY(x, y)
SCIP_RETCODE SCIPeventhdlrCopyInclude(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
static void eventFreeExactData(SCIP_EVENT *event, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPeventFree(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
void SCIPeventhdlrSetDelete(SCIP_EVENTHDLR *eventhdlr,)
static SCIP_RETCODE eventqueueAppend(SCIP_EVENTQUEUE *eventqueue, SCIP_SET *set, SCIP_EVENT **event)
SCIP_RETCODE SCIPeventCreateLbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
static void eventfilterProcessUpdates(SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateVarFixed(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventhdlrInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventCreateVarAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateRowDeletedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_RETCODE SCIPeventhdlrCreate(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
void SCIPeventhdlrSetExitsol(SCIP_EVENTHDLR *eventhdlr,)
void SCIPeventhdlrSetInit(SCIP_EVENTHDLR *eventhdlr,)
static SCIP_RETCODE doEventhdlrCreate(SCIP_EVENTHDLR **eventhdlr, const char *name, const char *desc, SCIP_DECL_EVENTCOPY((*eventcopy)), SCIP_DECL_EVENTFREE((*eventfree)), SCIP_DECL_EVENTINIT((*eventinit)), SCIP_DECL_EVENTEXIT((*eventexit)), SCIP_DECL_EVENTINITSOL((*eventinitsol)), SCIP_DECL_EVENTEXITSOL((*eventexitsol)), SCIP_DECL_EVENTDELETE((*eventdelete)), SCIP_DECL_EVENTEXEC((*eventexec)), SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_RETCODE SCIPeventqueueFree(SCIP_EVENTQUEUE **eventqueue)
SCIP_RETCODE SCIPeventCreateGholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventhdlrExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
void SCIPeventhdlrSetFree(SCIP_EVENTHDLR *eventhdlr,)
SCIP_RETCODE SCIPeventCreateUbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
void SCIPeventhdlrSetExit(SCIP_EVENTHDLR *eventhdlr,)
void SCIPeventhdlrEnableOrDisableClocks(SCIP_EVENTHDLR *eventhdlr, SCIP_Bool enable)
SCIP_RETCODE SCIPeventCreateVarUnlocked(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventhdlrExit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventChgSol(SCIP_EVENT *event, SCIP_SOL *sol)
static SCIP_RETCODE eventqueueEnsureEventsMem(SCIP_EVENTQUEUE *eventqueue, SCIP_SET *set, int num)
SCIP_RETCODE SCIPeventAddExactObjChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
static SCIP_RETCODE updateLpExactBoundChange(SCIP_VAR *var, SCIP_LPEXACT *lp, SCIP_SET *set, SCIP_EVENT *event, SCIP_Bool isUb, SCIP_Bool isGlb)
SCIP_RETCODE SCIPeventCreateObjChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_RETCODE SCIPeventChgNode(SCIP_EVENT *event, SCIP_NODE *node)
SCIP_RETCODE SCIPeventqueueAdd(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENT **event)
SCIP_RETCODE SCIPeventhdlrFree(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_RETCODE SCIPeventCreateRowSideChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
SCIP_RETCODE SCIPeventCreateRowAddedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPeventAddExactBdChg(SCIP_EVENT *event, BMS_BLKMEM *blkmem, SCIP_RATIONAL *oldbound, SCIP_RATIONAL *newbound)
SCIP_RETCODE SCIPeventCreateGholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventqueueProcess(SCIP_EVENTQUEUE *eventqueue, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateRowDeletedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_RETCODE SCIPeventCreateLholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventhdlrInit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventfilterDel(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPeventhdlrExec(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set, SCIP_EVENT *event, SCIP_EVENTDATA *eventdata)
SCIP_RETCODE SCIPeventChgVar(SCIP_EVENT *event, SCIP_VAR *var)
void SCIPeventhdlrSetInitsol(SCIP_EVENTHDLR *eventhdlr,)
SCIP_RETCODE SCIPeventCreateRowConstChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_Real oldval, SCIP_Real newval)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateSync(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
static SCIP_RETCODE eventfilterEnsureMem(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_RETCODE SCIPeventCreateImplAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
SCIP_RETCODE SCIPeventqueueCreate(SCIP_EVENTQUEUE **eventqueue)
SCIP_RETCODE SCIPeventfilterProcess(SCIP_EVENTFILTER *eventfilter, SCIP_SET *set, SCIP_EVENT *event)
SCIP_RETCODE SCIPeventCreateImplTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_IMPLINTTYPE oldtype, SCIP_IMPLINTTYPE newtype)
SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_RETCODE SCIPeventCreateVarDeleted(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventCreateRowCoefChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
SCIP_RETCODE SCIPeventCreateGubChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventCreateGlbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPeventqueueDelay(SCIP_EVENTQUEUE *eventqueue)
SCIP_RETCODE SCIPeventCreateLholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventCreateTypeChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_VARTYPE oldtype, SCIP_VARTYPE newtype)
static int eventfilterSearch(SCIP_EVENTFILTER *const eventfilter, SCIP_EVENTTYPE const eventtype, SCIP_EVENTHDLR *const eventhdlr, SCIP_EVENTDATA *const eventdata)
static void eventfilterDelayUpdates(SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateRowAddedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
static void eventDisable(SCIP_EVENT *event)
void SCIPeventhdlrSetCopy(SCIP_EVENTHDLR *eventhdlr,)
internal methods for managing events
SCIP_Real SCIPeventhdlrGetSetupTime(SCIP_EVENTHDLR *eventhdlr)
SCIP_Bool SCIPeventhdlrIsInitialized(SCIP_EVENTHDLR *eventhdlr)
SCIP_Real SCIPeventhdlrGetTime(SCIP_EVENTHDLR *eventhdlr)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
SCIP_EVENTHDLRDATA * SCIPeventhdlrGetData(SCIP_EVENTHDLR *eventhdlr)
void SCIPeventhdlrSetData(SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTHDLRDATA *eventhdlrdata)
SCIP_Real SCIPeventGetRowOldCoefVal(SCIP_EVENT *event)
SCIP_RATIONAL * SCIPeventGetOldboundExact(SCIP_EVENT *event)
SCIP_IMPLINTTYPE SCIPeventGetNewImpltype(SCIP_EVENT *event)
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
SCIP_SOL * SCIPeventGetSol(SCIP_EVENT *event)
SCIP_VARTYPE SCIPeventGetNewtype(SCIP_EVENT *event)
SCIP_Real SCIPeventGetHoleRight(SCIP_EVENT *event)
SCIP_Real SCIPeventGetHoleLeft(SCIP_EVENT *event)
SCIP_Real SCIPeventGetOldobj(SCIP_EVENT *event)
SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowNewConstVal(SCIP_EVENT *event)
SCIP_COL * SCIPeventGetRowCol(SCIP_EVENT *event)
SCIP_Real SCIPeventGetNewobj(SCIP_EVENT *event)
SCIP_SIDETYPE SCIPeventGetRowSide(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowOldSideVal(SCIP_EVENT *event)
SCIP_IMPLINTTYPE SCIPeventGetOldImpltype(SCIP_EVENT *event)
SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
SCIP_NODE * SCIPeventGetNode(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowNewCoefVal(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowNewSideVal(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowOldConstVal(SCIP_EVENT *event)
SCIP_ROW * SCIPeventGetRow(SCIP_EVENT *event)
SCIP_VARTYPE SCIPeventGetOldtype(SCIP_EVENT *event)
void SCIPrationalFreeBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **rational)
void SCIPrationalSetReal(SCIP_RATIONAL *res, SCIP_Real real)
SCIP_RETCODE SCIPrationalCopyBlock(BMS_BLKMEM *mem, SCIP_RATIONAL **result, SCIP_RATIONAL *src)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
void SCIPrationalSetRational(SCIP_RATIONAL *res, SCIP_RATIONAL *src)
SCIP_Bool SCIPrationalIsEQ(SCIP_RATIONAL *rat1, SCIP_RATIONAL *rat2)
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_VARSTATUS SCIPvarGetStatusExact(SCIP_VAR *var)
SCIP_COLEXACT * SCIPvarGetColExact(SCIP_VAR *var)
int SCIPvarGetProbindex(SCIP_VAR *var)
const char * SCIPvarGetName(SCIP_VAR *var)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
internal methods for LP management
SCIP_RETCODE SCIPlpExactUpdateVarObj(SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPlpExactUpdateVarUb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIPcolExactChgObj(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
SCIP_RETCODE SCIPlpExactUpdateVarLb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
internal methods for exact LP management
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPprimalUpdateVarObj(SCIP_PRIMAL *primal, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
internal methods for collecting primal CIP solutions and primal informations
public methods for managing events
public methods for message output
public methods for problem variables
wrapper for rational number arithmetic
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
internal methods for global SCIP settings
SCIP_RATIONAL * newboundexact
SCIP_RATIONAL * oldboundexact
SCIP_EVENTTYPE delayedeventmask
SCIP_EVENTHDLR ** eventhdlrs
SCIP_EVENTTYPE * eventtypes
SCIP_EVENTDATA ** eventdata
SCIP_RATIONAL * newobjexact
SCIP_RATIONAL * oldobjexact
SCIP_EVENTVARFIXED eventvarfixed
union SCIP_Event::@322041326034065172164026121262043157346166014061 data
SCIP_EVENTTYPECHG eventtypechg
SCIP_EVENTTYPEIMPLCHG eventimpltypechg
SCIP_EVENTVARUNLOCKED eventvarunlocked
SCIP_EVENTBDCHG eventbdchg
SCIP_EVENTIMPLADD eventimpladd
SCIP_EVENTOBJCHG eventobjchg
SCIP_EVENTVARADDED eventvaradded
SCIP_EVENTVARDELETED eventvardeleted
SCIP_EVENTHDLRDATA * eventhdlrdata
unsigned int eventqueueimpl
datastructures for managing events
data structures for LP management
datastructures for global SCIP settings
datastructures for problem variables
struct SCIP_BranchCand SCIP_BRANCHCAND
#define SCIP_EVENTTYPE_GHOLEADDED
struct SCIP_Eventhdlr SCIP_EVENTHDLR
#define SCIP_EVENTTYPE_FIRSTLPSOLVED
#define SCIP_DECL_EVENTINITSOL(x)
#define SCIP_EVENTTYPE_NODEFEASIBLE
#define SCIP_EVENTTYPE_BOUNDCHANGED
#define SCIP_EVENTTYPE_VARUNLOCKED
#define SCIP_EVENTTYPE_ROWSIDECHANGED
#define SCIP_DECL_EVENTDELETE(x)
#define SCIP_EVENTTYPE_SYNC
#define SCIP_EVENTTYPE_ROWADDEDLP
#define SCIP_EVENTTYPE_POORSOLFOUND
#define SCIP_EVENTTYPE_TYPECHANGED
#define SCIP_EVENTTYPE_PRESOLVEROUND
#define SCIP_EVENTTYPE_GUBCHANGED
#define SCIP_DECL_EVENTEXIT(x)
#define SCIP_EVENTTYPE_GHOLEREMOVED
#define SCIP_EVENTTYPE_GBDCHANGED
struct SCIP_EventData SCIP_EVENTDATA
#define SCIP_EVENTTYPE_UBTIGHTENED
#define SCIP_EVENTTYPE_NODEFOCUSED
struct SCIP_EventFilter SCIP_EVENTFILTER
#define SCIP_EVENTTYPE_NODEINFEASIBLE
#define SCIP_EVENTTYPE_OBJCHANGED
#define SCIP_EVENTTYPE_VARFIXED
#define SCIP_EVENTTYPE_VARDELETED
struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
#define SCIP_DECL_EVENTEXEC(x)
#define SCIP_EVENTTYPE_NODEEVENT
#define SCIP_EVENTTYPE_LHOLEREMOVED
#define SCIP_EVENTTYPE_NODEBRANCHED
#define SCIP_DECL_EVENTCOPY(x)
#define SCIP_DECL_EVENTINIT(x)
#define SCIP_EVENTTYPE_LBRELAXED
struct SCIP_EventQueue SCIP_EVENTQUEUE
#define SCIP_EVENTTYPE_DUALBOUNDIMPROVED
#define SCIP_EVENTTYPE_BESTSOLFOUND
#define SCIP_EVENTTYPE_FORMAT
#define SCIP_EVENTTYPE_GLBCHANGED
#define SCIP_DECL_EVENTFREE(x)
#define SCIP_EVENTTYPE_HOLECHANGED
#define SCIP_EVENTTYPE_ROWDELETEDSEPA
#define SCIP_EVENTTYPE_VARADDED
#define SCIP_EVENTTYPE_LBCHANGED
#define SCIP_EVENTTYPE_ROWDELETEDLP
#define SCIP_EVENTTYPE_UBCHANGED
#define SCIP_EVENTTYPE_LHOLEADDED
#define SCIP_EVENTTYPE_LPSOLVED
#define SCIP_DECL_EVENTEXITSOL(x)
#define SCIP_EVENTTYPE_IMPLADDED
#define SCIP_EVENTTYPE_ROWCOEFCHANGED
struct SCIP_Event SCIP_EVENT
#define SCIP_EVENTTYPE_IMPLTYPECHANGED
#define SCIP_EVENTTYPE_ROWADDEDSEPA
#define SCIP_EVENTTYPE_LPEVENT
#define SCIP_EVENTTYPE_NODEDELETE
#define SCIP_EVENTTYPE_DISABLED
#define SCIP_EVENTTYPE_SOLEVENT
#define SCIP_EVENTTYPE_ROWCONSTCHANGED
#define SCIP_EVENTTYPE_LBTIGHTENED
#define SCIP_EVENTTYPE_UBRELAXED
enum SCIP_SideType SCIP_SIDETYPE
struct SCIP_LpExact SCIP_LPEXACT
struct SCIP_Primal SCIP_PRIMAL
struct SCIP_Rational SCIP_RATIONAL
enum SCIP_Retcode SCIP_RETCODE
struct SCIP_Node SCIP_NODE
enum SCIP_ImplintType SCIP_IMPLINTTYPE
@ SCIP_VARTYPE_CONTINUOUS
@ SCIP_VARSTATUS_MULTAGGR
@ SCIP_VARSTATUS_AGGREGATED
enum SCIP_Vartype SCIP_VARTYPE
internal methods for problem variables