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;
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 )
1896 if( event->
data.eventobjchg.newobjexact !=
NULL )
1898 newobj =
event->data.eventobjchg.newobjexact;
1899 oldobj =
event->data.eventobjchg.oldobjexact;
1915 if( event->
data.eventobjchg.newobjexact ==
NULL )
1935 var =
event->
data.eventbdchg.var;
1943 event->
data.eventbdchg.newbound) );
1945 if( event->
data.eventbdchg.newboundexact !=
NULL )
1948 event->
data.eventbdchg.newboundexact) );
1957 var =
event->
data.eventbdchg.var;
1965 event->
data.eventbdchg.newbound) );
1967 if( event->
data.eventbdchg.newboundexact !=
NULL )
1970 event->
data.eventbdchg.newboundexact) );
1980 var =
event->
data.eventbdchg.var;
1993 event->
data.eventbdchg.newbound) );
1997 if( event->
data.eventbdchg.newboundexact !=
NULL )
2005 event->
data.eventbdchg.newboundexact) );
2022 var =
event->
data.eventbdchg.var;
2035 event->
data.eventbdchg.newbound) );
2039 if( event->
data.eventbdchg.newboundexact !=
NULL )
2047 event->
data.eventbdchg.newboundexact) );
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;
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,
2656 qevent->
data.eventobjchg.newobj);
2658 qevent->
data.eventobjchg.newobj = (*event)->
data.eventobjchg.newobj;
2659 if( qevent->
data.eventobjchg.newobj == qevent->
data.eventobjchg.oldobj )
2682 var = (*event)->
data.eventbdchg.var;
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,
2699 qevent->
data.eventbdchg.newbound);
2701 qevent->
data.eventbdchg.newbound = (*event)->
data.eventbdchg.newbound;
2704 if( (*event)->data.eventbdchg.newboundexact !=
NULL )
2706 if( qevent->
data.eventbdchg.newboundexact ==
NULL )
2715 if( qevent->
data.eventbdchg.newboundexact !=
NULL )
2723 if( qevent->
data.eventbdchg.newbound < qevent->
data.eventbdchg.oldbound )
2726 else if( qevent->
data.eventbdchg.newbound > qevent->
data.eventbdchg.oldbound )
2731 assert(qevent->
data.eventbdchg.newbound == qevent->
data.eventbdchg.oldbound);
2752 var = (*event)->
data.eventbdchg.var;
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,
2769 qevent->
data.eventbdchg.newbound);
2771 qevent->
data.eventbdchg.newbound = (*event)->
data.eventbdchg.newbound;
2774 if( (*event)->data.eventbdchg.newboundexact !=
NULL )
2776 if( qevent->
data.eventbdchg.newboundexact ==
NULL )
2785 if( qevent->
data.eventbdchg.newboundexact !=
NULL )
2793 if( qevent->
data.eventbdchg.newbound < qevent->
data.eventbdchg.oldbound )
2796 else if( qevent->
data.eventbdchg.newbound > qevent->
data.eventbdchg.oldbound )
2801 assert(qevent->
data.eventbdchg.newbound == qevent->
data.eventbdchg.oldbound);
2820 var = (*event)->
data.eventimpladd.var;
2887 event = eventqueue->
events[
i];
2897 assert(event->
data.eventobjchg.var->eventqueueindexobj ==
i);
2898 event->data.eventobjchg.var->eventqueueindexobj = -1;
2902 assert(event->
data.eventbdchg.var->eventqueueindexlb ==
i);
2903 event->data.eventbdchg.var->eventqueueindexlb = -1;
2907 assert(event->
data.eventbdchg.var->eventqueueindexub ==
i);
2908 event->data.eventbdchg.var->eventqueueindexub = -1;
2912 assert(event->
data.eventimpladd.var->eventqueueimpl);
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)
static assert(heur !=NULL)
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_EVENTTYPE delayedeventmask
SCIP_EVENTHDLR ** eventhdlrs
SCIP_EVENTTYPE * eventtypes
SCIP_EVENTDATA ** eventdata
union SCIP_Event::@322041326034065172164026121262043157346166014061 data
SCIP_EVENTHDLRDATA * eventhdlrdata
SCIP_EVENTFILTER * eventfilter
unsigned int eventqueueimpl
union SCIP_Var::@062351145146014100220174313010263165251013276204 data
SCIP_VARDATAEXACT * exactdata
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