50 assert(eventhdlr !=
NULL);
52 assert(set->scip !=
NULL);
54 if( eventhdlr->eventcopy !=
NULL )
57 SCIP_CALL( eventhdlr->eventcopy(set->scip, eventhdlr) );
79 assert(eventhdlr !=
NULL);
82 assert(eventexec !=
NULL);
87 (*eventhdlr)->eventcopy = eventcopy;
88 (*eventhdlr)->eventfree = eventfree;
89 (*eventhdlr)->eventinit = eventinit;
90 (*eventhdlr)->eventexit = eventexit;
91 (*eventhdlr)->eventinitsol = eventinitsol;
92 (*eventhdlr)->eventexitsol = eventexitsol;
93 (*eventhdlr)->eventdelete = eventdelete;
94 (*eventhdlr)->eventexec = eventexec;
95 (*eventhdlr)->eventhdlrdata = eventhdlrdata;
96 (*eventhdlr)->initialized =
FALSE;
111 assert(eventhdlr !=
NULL);
112 assert(*eventhdlr !=
NULL);
113 assert(!(*eventhdlr)->initialized);
117 if( (*eventhdlr)->eventfree !=
NULL )
119 SCIP_CALL( (*eventhdlr)->eventfree(set->scip, *eventhdlr) );
139 assert(eventhdlr !=
NULL);
148 if( set->misc_resetstat )
154 if( eventhdlr->eventinit !=
NULL )
159 SCIP_CALL( eventhdlr->eventinit(set->scip, eventhdlr) );
175 assert(eventhdlr !=
NULL);
184 if( eventhdlr->eventexit !=
NULL )
189 SCIP_CALL( eventhdlr->eventexit(set->scip, eventhdlr) );
205 assert(eventhdlr !=
NULL);
209 if( eventhdlr->eventinitsol !=
NULL )
214 SCIP_CALL( eventhdlr->eventinitsol(set->scip, eventhdlr) );
229 assert(eventhdlr !=
NULL);
233 if( eventhdlr->eventexitsol !=
NULL )
238 SCIP_CALL( eventhdlr->eventexitsol(set->scip, eventhdlr) );
255 assert(eventhdlr !=
NULL);
256 assert(eventhdlr->eventexec !=
NULL);
258 assert(event !=
NULL);
267 SCIP_CALL( eventhdlr->eventexec(set->scip, eventhdlr, event, eventdata) );
282 assert(eventhdlr !=
NULL);
284 return eventhdlr->
name;
292 assert(eventhdlr !=
NULL);
303 assert(eventhdlr !=
NULL);
314 assert(eventhdlr !=
NULL);
316 eventhdlr->eventcopy = eventcopy;
325 assert(eventhdlr !=
NULL);
327 eventhdlr->eventfree = eventfree;
336 assert(eventhdlr !=
NULL);
338 eventhdlr->eventinit = eventinit;
347 assert(eventhdlr !=
NULL);
349 eventhdlr->eventexit = eventexit;
358 assert(eventhdlr !=
NULL);
360 eventhdlr->eventinitsol = eventinitsol;
369 assert(eventhdlr !=
NULL);
371 eventhdlr->eventexitsol = eventexitsol;
380 assert(eventhdlr !=
NULL);
382 eventhdlr->eventdelete = eventdelete;
390 assert(eventhdlr !=
NULL);
401 assert(eventhdlr !=
NULL);
412 assert(eventhdlr !=
NULL);
424 assert(eventhdlr !=
NULL);
442 assert(event !=
NULL);
461 #undef SCIPeventGetType 462 #undef SCIPeventGetOldobj 463 #undef SCIPeventGetNewobj 464 #undef SCIPeventGetOldbound 465 #undef SCIPeventGetNewbound 466 #undef SCIPeventGetNode 467 #undef SCIPeventGetSol 468 #undef SCIPeventGetRowCol 469 #undef SCIPeventGetRowOldCoefVal 470 #undef SCIPeventGetRowNewCoefVal 471 #undef SCIPeventGetRowOldConstVal 472 #undef SCIPeventGetRowNewConstVal 473 #undef SCIPeventGetRowSide 474 #undef SCIPeventGetRowOldSideVal 475 #undef SCIPeventGetRowNewSideVal 484 assert(event !=
NULL);
485 assert(blkmem !=
NULL);
490 (*event)->data.eventvaradded.var = var;
502 assert(event !=
NULL);
503 assert(blkmem !=
NULL);
508 (*event)->data.eventvardeleted.var = var;
520 assert(event !=
NULL);
521 assert(blkmem !=
NULL);
530 (*event)->data.eventvarfixed.var = var;
542 assert(event !=
NULL);
543 assert(blkmem !=
NULL);
551 (*event)->data.eventvarunlocked.var = var;
565 assert(event !=
NULL);
566 assert(blkmem !=
NULL);
567 assert(oldobj != newobj);
572 (*event)->data.eventobjchg.var = var;
573 (*event)->
data.eventobjchg.oldobj = oldobj;
574 (*event)->
data.eventobjchg.newobj = newobj;
588 assert(event !=
NULL);
589 assert(blkmem !=
NULL);
590 assert(oldbound != newbound);
595 (*event)->data.eventbdchg.var = var;
596 (*event)->
data.eventbdchg.oldbound = oldbound;
597 (*event)->
data.eventbdchg.newbound = newbound;
611 assert(event !=
NULL);
612 assert(blkmem !=
NULL);
613 assert(oldbound != newbound);
618 (*event)->data.eventbdchg.var = var;
619 (*event)->
data.eventbdchg.oldbound = oldbound;
620 (*event)->
data.eventbdchg.newbound = newbound;
634 assert(event !=
NULL);
635 assert(blkmem !=
NULL);
636 assert(oldbound != newbound);
640 if( newbound > oldbound )
644 (*event)->data.eventbdchg.var = var;
645 (*event)->
data.eventbdchg.oldbound = oldbound;
646 (*event)->
data.eventbdchg.newbound = newbound;
660 assert(event !=
NULL);
661 assert(blkmem !=
NULL);
662 assert(oldbound != newbound);
666 if( newbound < oldbound )
670 (*event)->data.eventbdchg.var = var;
671 (*event)->
data.eventbdchg.oldbound = oldbound;
672 (*event)->
data.eventbdchg.newbound = newbound;
686 assert(event !=
NULL);
687 assert(blkmem !=
NULL);
692 (*event)->data.eventhole.var = var;
693 (*event)->
data.eventhole.left = left;
694 (*event)->
data.eventhole.right = right;
708 assert(event !=
NULL);
709 assert(blkmem !=
NULL);
714 (*event)->data.eventhole.var = var;
715 (*event)->
data.eventhole.left = left;
716 (*event)->
data.eventhole.right = right;
730 assert(event !=
NULL);
731 assert(blkmem !=
NULL);
736 (*event)->data.eventhole.var = var;
737 (*event)->
data.eventhole.left = left;
738 (*event)->
data.eventhole.right = right;
752 assert(event !=
NULL);
753 assert(blkmem !=
NULL);
758 (*event)->data.eventhole.var = var;
759 (*event)->
data.eventhole.left = left;
760 (*event)->
data.eventhole.right = right;
772 assert(event !=
NULL);
773 assert(blkmem !=
NULL);
779 (*event)->data.eventimpladd.var = var;
791 assert(event !=
NULL);
792 assert(blkmem !=
NULL);
798 (*event)->data.eventrowaddedsepa.row = row;
810 assert(event !=
NULL);
811 assert(blkmem !=
NULL);
817 (*event)->data.eventrowdeletedsepa.row = row;
829 assert(event !=
NULL);
830 assert(blkmem !=
NULL);
836 (*event)->data.eventrowaddedlp.row = row;
848 assert(event !=
NULL);
849 assert(blkmem !=
NULL);
855 (*event)->data.eventrowdeletedlp.row = row;
870 assert(event !=
NULL);
871 assert(blkmem !=
NULL);
877 (*event)->data.eventrowcoefchanged.row = row;
878 (*event)->data.eventrowcoefchanged.col = col;
879 (*event)->data.eventrowcoefchanged.oldval = oldval;
880 (*event)->data.eventrowcoefchanged.newval = newval;
894 assert(event !=
NULL);
895 assert(blkmem !=
NULL);
901 (*event)->data.eventrowconstchanged.row = row;
902 (*event)->data.eventrowconstchanged.oldval = oldval;
903 (*event)->data.eventrowconstchanged.newval = newval;
918 assert(event !=
NULL);
919 assert(blkmem !=
NULL);
925 (*event)->data.eventrowsidechanged.row = row;
926 (*event)->data.eventrowsidechanged.side = side;
927 (*event)->data.eventrowsidechanged.oldval = oldval;
928 (*event)->data.eventrowsidechanged.newval = newval;
939 assert(event !=
NULL);
940 assert(blkmem !=
NULL);
953 assert(event !=
NULL);
963 assert(event !=
NULL);
965 return event->eventtype;
974 assert(event !=
NULL);
976 event->eventtype = eventtype;
986 assert(event !=
NULL);
992 return event->data.eventvaradded.var;
996 return event->data.eventvardeleted.var;
1000 return event->data.eventvarfixed.var;
1004 return event->data.eventvarunlocked.var;
1008 return event->data.eventobjchg.var;
1017 return event->data.eventbdchg.var;
1024 return event->data.eventhole.var;
1028 return event->data.eventimpladd.var;
1043 assert(event !=
NULL);
1049 event->data.eventvaradded.var = var;
1054 event->data.eventvardeleted.var = var;
1059 event->data.eventvarfixed.var = var;
1064 event->data.eventvarunlocked.var = var;
1069 event->data.eventobjchg.var = var;
1079 event->data.eventbdchg.var = var;
1087 event->data.eventhole.var = var;
1092 event->data.eventimpladd.var = var;
1108 assert(event !=
NULL);
1117 return event->data.eventobjchg.oldobj;
1125 assert(event !=
NULL);
1134 return event->data.eventobjchg.newobj;
1142 assert(event !=
NULL);
1152 return event->data.eventbdchg.oldbound;
1166 assert(event !=
NULL);
1176 return event->data.eventbdchg.newbound;
1190 assert(event !=
NULL);
1199 return event->data.node;
1208 assert(event !=
NULL);
1217 event->data.node = node;
1227 assert(event !=
NULL);
1236 return event->data.sol;
1245 assert(event !=
NULL);
1254 event->data.sol = sol;
1264 assert(event !=
NULL);
1273 return event->data.eventhole.left;
1281 assert(event !=
NULL);
1290 return event->data.eventhole.right;
1298 assert(event !=
NULL);
1303 return event->data.eventrowaddedsepa.row;
1305 return event->data.eventrowdeletedsepa.row;
1307 return event->data.eventrowaddedlp.row;
1309 return event->data.eventrowdeletedlp.row;
1311 return event->data.eventrowcoefchanged.row;
1313 return event->data.eventrowconstchanged.row;
1315 return event->data.eventrowsidechanged.row;
1328 assert(event !=
NULL);
1337 return event->data.eventrowcoefchanged.col;
1345 assert(event !=
NULL);
1354 return event->data.eventrowcoefchanged.oldval;
1362 assert(event !=
NULL);
1371 return event->data.eventrowcoefchanged.newval;
1379 assert(event !=
NULL);
1388 return event->data.eventrowconstchanged.oldval;
1396 assert(event !=
NULL);
1405 return event->data.eventrowconstchanged.newval;
1413 assert(event !=
NULL);
1422 return event->data.eventrowsidechanged.side;
1430 assert(event !=
NULL);
1439 return event->data.eventrowsidechanged.oldval;
1447 assert(event !=
NULL);
1456 return event->data.eventrowsidechanged.newval;
1471 assert(event !=
NULL);
1505 var =
event->
data.eventvardeleted.var;
1506 assert(var !=
NULL);
1513 var =
event->
data.eventvarfixed.var;
1514 assert(var !=
NULL);
1521 var =
event->
data.eventvarunlocked.var;
1522 assert(var !=
NULL);
1529 var =
event->
data.eventobjchg.var;
1530 assert(var !=
NULL);
1552 var =
event->
data.eventbdchg.var;
1553 assert(var !=
NULL);
1568 var =
event->
data.eventbdchg.var;
1569 assert(var !=
NULL);
1585 var =
event->
data.eventbdchg.var;
1586 assert(var !=
NULL);
1608 var =
event->
data.eventbdchg.var;
1609 assert(var !=
NULL);
1633 var =
event->
data.eventhole.var;
1634 assert(var !=
NULL);
1641 var =
event->
data.eventimpladd.var;
1642 assert(var !=
NULL);
1672 assert(eventfilter !=
NULL);
1673 assert(blkmem !=
NULL);
1674 assert(
set !=
NULL);
1676 if( num > eventfilter->
size )
1685 eventfilter->
size = newsize;
1687 assert(num <= eventfilter->size);
1698 assert(eventfilter !=
NULL);
1699 assert(blkmem !=
NULL);
1702 (*eventfilter)->eventtypes =
NULL;
1703 (*eventfilter)->eventhdlrs =
NULL;
1704 (*eventfilter)->eventdata =
NULL;
1705 (*eventfilter)->nextpos =
NULL;
1706 (*eventfilter)->size = 0;
1707 (*eventfilter)->len = 0;
1708 (*eventfilter)->firstfreepos = -1;
1709 (*eventfilter)->firstdeletedpos = -1;
1712 (*eventfilter)->delayupdates =
FALSE;
1726 assert(eventfilter !=
NULL);
1727 assert(*eventfilter !=
NULL);
1728 assert(!(*eventfilter)->delayupdates);
1729 assert(blkmem !=
NULL);
1730 assert(
set !=
NULL);
1731 assert(set->scip !=
NULL);
1734 for( i = 0; i < (*eventfilter)->len; ++i )
1738 assert((*eventfilter)->eventhdlrs[i] !=
NULL);
1739 if( (*eventfilter)->eventhdlrs[i]->eventdelete !=
NULL )
1741 SCIP_CALL( (*eventfilter)->eventhdlrs[i]->eventdelete(set->scip, (*eventfilter)->eventhdlrs[i],
1742 &(*eventfilter)->eventdata[i]) );
1770 assert(eventfilter !=
NULL);
1771 assert(blkmem !=
NULL);
1772 assert(
set !=
NULL);
1773 assert(eventhdlr !=
NULL);
1782 pos = eventfilter->
len;
1794 pos = eventfilter->
len;
1801 assert(0 <= pos && pos < eventfilter->len);
1810 assert(0 <= pos && pos < eventfilter->len);
1814 eventfilter->
eventdata[pos] = eventdata;
1815 eventfilter->
nextpos[pos] = -2;
1817 if( filterpos !=
NULL )
1834 assert(eventfilter !=
NULL);
1836 assert(eventhdlr !=
NULL);
1838 for( i = eventfilter->
len - 1; i >= 0; --i )
1840 if( eventdata == eventfilter->
eventdata[i]
1843 && eventfilter->
nextpos[i] == -2 )
1861 assert(eventfilter !=
NULL);
1862 assert(blkmem !=
NULL);
1863 assert(
set !=
NULL);
1865 assert(eventhdlr !=
NULL);
1866 assert(-1 <= filterpos && filterpos < eventfilter->len);
1869 if( filterpos == -1 )
1871 if( filterpos == -1 )
1873 SCIPerrorMessage(
"no event for event handler %p with data %p and event mask 0x%x found in event filter %p\n",
1874 eventhdlr, eventdata, eventtype, eventfilter);
1877 assert(0 <= filterpos && filterpos < eventfilter->len);
1878 assert(eventfilter->
eventtypes[filterpos] == eventtype);
1879 assert(eventfilter->
eventhdlrs[filterpos] == eventhdlr);
1880 assert(eventfilter->
eventdata[filterpos] == eventdata);
1881 assert(eventfilter->
nextpos[filterpos] == -2);
1895 assert(eventfilter->
nextpos[filterpos] == -2);
1910 assert(eventfilter !=
NULL);
1926 assert(eventfilter !=
NULL);
1933 assert(0 <= pos && pos < eventfilter->len);
1935 assert(eventfilter->
nextpos[pos] >= -1);
1937 nextpos = eventfilter->
nextpos[pos];
1966 assert(eventfilter !=
NULL);
1967 assert(
set !=
NULL);
1968 assert(event !=
NULL);
1971 (
void*)eventfilter, eventfilter->
len, eventfilter->eventmask, event->
eventtype);
1973 eventtype =
event->eventtype;
1976 if( (eventtype & eventfilter->eventmask) == 0 )
1986 len = eventfilter->len;
1987 eventtypes = eventfilter->eventtypes;
1988 for( i = 0; i < len; ++i )
1991 if( (eventtype & eventtypes[i]) != 0 )
2002 eventfilter->eventmask &= ~event->
eventtype;
2003 SCIPsetDebugMsg(
set,
" -> event type 0x%" SCIP_EVENTTYPE_FORMAT
" not processed. new mask of event filter %p: 0x%" SCIP_EVENTTYPE_FORMAT
"\n",
2004 event->
eventtype, (
void*)eventfilter, eventfilter->eventmask);
2029 #undef SCIPeventqueueIsDelayed 2039 assert(eventqueue !=
NULL);
2040 assert(
set !=
NULL);
2050 assert(num <= eventqueue->eventssize);
2060 assert(eventqueue !=
NULL);
2063 (*eventqueue)->events =
NULL;
2064 (*eventqueue)->eventssize = 0;
2065 (*eventqueue)->nevents = 0;
2066 (*eventqueue)->delayevents =
FALSE;
2076 assert(eventqueue !=
NULL);
2077 assert(*eventqueue !=
NULL);
2078 assert((*eventqueue)->nevents == 0);
2094 assert(eventqueue !=
NULL);
2096 assert(event !=
NULL);
2097 assert(*event !=
NULL);
2100 (
void*)*event, (*event)->
eventtype, (
void*)eventqueue, eventqueue->
nevents);
2103 eventqueue->events[eventqueue->nevents] = *event;
2104 eventqueue->nevents++;
2127 assert(eventqueue !=
NULL);
2128 assert(event !=
NULL);
2129 assert(*event !=
NULL);
2145 switch( (*event)->eventtype )
2184 var = (*event)->
data.eventobjchg.var;
2185 assert(var !=
NULL);
2190 assert(pos < eventqueue->nevents);
2191 qevent = eventqueue->events[pos];
2192 assert(qevent !=
NULL);
2197 SCIPsetDebugMsg(
set,
" -> merging OBJ event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2198 SCIPvarGetName((*event)->data.eventobjchg.var), (*event)->data.eventobjchg.oldobj,
2199 (*event)->data.eventobjchg.newobj,
2226 var = (*event)->
data.eventbdchg.var;
2227 assert(var !=
NULL);
2232 assert(pos < eventqueue->nevents);
2233 qevent = eventqueue->events[pos];
2234 assert(qevent !=
NULL);
2239 SCIPsetDebugMsg(
set,
" -> merging LB event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2240 SCIPvarGetName((*event)->data.eventbdchg.var), (*event)->data.eventbdchg.oldbound,
2241 (*event)->data.eventbdchg.newbound,
2275 var = (*event)->
data.eventbdchg.var;
2276 assert(var !=
NULL);
2281 assert(pos < eventqueue->nevents);
2282 qevent = eventqueue->events[pos];
2283 assert(qevent !=
NULL);
2288 SCIPsetDebugMsg(
set,
" -> merging UB event (<%s>,%g -> %g) with event at position %d (<%s>,%g -> %g)\n",
2289 SCIPvarGetName((*event)->data.eventbdchg.var), (*event)->data.eventbdchg.oldbound,
2290 (*event)->data.eventbdchg.newbound,
2322 var = (*event)->
data.eventimpladd.var;
2323 assert(var !=
NULL);
2342 assert(*event ==
NULL);
2352 assert(eventqueue !=
NULL);
2376 assert(eventqueue !=
NULL);
2387 for( i = 0; i < eventqueue->
nevents; ++i )
2389 event = eventqueue->
events[i];
2390 assert(event !=
NULL);
2400 event->data.eventobjchg.var->eventqueueindexobj = -1;
2405 event->data.eventbdchg.var->eventqueueindexlb = -1;
2410 event->data.eventbdchg.var->eventqueueindexub = -1;
2415 event->data.eventimpladd.var->eventqueueimpl =
FALSE;
2427 assert(i == eventqueue->
nevents);
2439 assert(eventqueue !=
NULL);
SCIP_Real SCIPeventGetRowNewSideVal(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventfilterCreate(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem)
void SCIPeventhdlrSetInit(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINIT((*eventinit)))
void SCIPeventhdlrSetCopy(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTCOPY((*eventcopy)))
#define SCIP_EVENTTYPE_LPSOLVED
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
SCIP_RETCODE SCIPeventCreateRowAddedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
internal methods for managing events
#define SCIP_EVENTTYPE_OBJCHANGED
#define SCIP_EVENTTYPE_LPEVENT
static int eventfilterSearch(SCIP_EVENTFILTER *const eventfilter, SCIP_EVENTTYPE const eventtype, SCIP_EVENTHDLR *const eventhdlr, SCIP_EVENTDATA *const eventdata)
SCIP_RETCODE SCIPeventhdlrCreate(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)
#define BMSfreeMemoryArrayNull(ptr)
#define SCIP_EVENTTYPE_VARFIXED
static SCIP_RETCODE eventqueueEnsureEventsMem(SCIP_EVENTQUEUE *eventqueue, SCIP_SET *set, int num)
void SCIPeventhdlrSetExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXITSOL((*eventexitsol)))
SCIP_EVENTVARUNLOCKED eventvarunlocked
#define SCIP_EVENTTYPE_ROWADDEDLP
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 SCIPeventCreateRowDeletedLP(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_SIDETYPE SCIPeventGetRowSide(SCIP_EVENT *event)
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)
static void eventDisable(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventChgType(SCIP_EVENT *event, SCIP_EVENTTYPE eventtype)
SCIP_RETCODE SCIPeventhdlrExit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
internal methods for clocks and timing issues
SCIP_RETCODE SCIPeventCreateImplAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_EVENTHDLR ** eventhdlrs
SCIP_Real SCIPeventGetRowNewConstVal(SCIP_EVENT *event)
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 SCIPeventCreateSync(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
SCIP_EVENTOBJCHG eventobjchg
SCIP_RETCODE SCIPeventhdlrCopyInclude(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_DECL_EVENTEXIT(EventhdlrNewSol::scip_exit)
struct SCIP_EventhdlrData SCIP_EVENTHDLRDATA
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
#define SCIP_EVENTTYPE_ROWSIDECHANGED
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
SCIP_RETCODE SCIPeventProcess(SCIP_EVENT *event, SCIP_SET *set, SCIP_PRIMAL *primal, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
static void eventfilterDelayUpdates(SCIP_EVENTFILTER *eventfilter)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_ROW * SCIPeventGetRow(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventqueueDelay(SCIP_EVENTQUEUE *eventqueue)
enum SCIP_Retcode SCIP_RETCODE
#define SCIP_EVENTTYPE_NODEFOCUSED
SCIP_RETCODE SCIPeventCreateUbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
int SCIPvarGetProbindex(SCIP_VAR *var)
internal methods for branching rules and branching candidate storage
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
#define SCIP_EVENTTYPE_GLBCHANGED
SCIP_RETCODE SCIPeventqueueFree(SCIP_EVENTQUEUE **eventqueue)
SCIP_RETCODE SCIPeventChgNode(SCIP_EVENT *event, SCIP_NODE *node)
SCIP_RETCODE SCIPeventChgVar(SCIP_EVENT *event, SCIP_VAR *var)
#define SCIP_EVENTTYPE_ROWDELETEDLP
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
#define BMSfreeMemory(ptr)
SCIP_Real SCIPeventGetRowOldSideVal(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventCreateLholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
#define SCIP_EVENTTYPE_BOUNDCHANGED
internal methods for LP management
SCIP_DECL_EVENTINITSOL(EventhdlrNewSol::scip_initsol)
SCIP_RETCODE SCIPeventCreateObjChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
internal methods for collecting primal CIP solutions and primal informations
#define SCIP_EVENTTYPE_LBCHANGED
#define SCIP_EVENTTYPE_NODEFEASIBLE
void SCIPeventhdlrSetData(SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTHDLRDATA *eventhdlrdata)
#define SCIP_EVENTTYPE_LBRELAXED
#define SCIP_EVENTTYPE_NODEBRANCHED
SCIP_DECL_EVENTINIT(EventhdlrNewSol::scip_init)
static SCIP_RETCODE eventfilterEnsureMem(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
SCIP_RETCODE SCIPeventCreateVarFixed(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
SCIP_RETCODE SCIPeventhdlrFree(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventCreateRowDeletedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_DECL_EVENTFREE(EventhdlrNewSol::scip_free)
SCIP_Real SCIPeventGetHoleLeft(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventChgSol(SCIP_EVENT *event, SCIP_SOL *sol)
SCIP_Real SCIPeventGetRowOldConstVal(SCIP_EVENT *event)
SCIP_Real SCIPeventhdlrGetTime(SCIP_EVENTHDLR *eventhdlr)
SCIP_Real SCIPeventGetNewbound(SCIP_EVENT *event)
void SCIPeventhdlrSetInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTINITSOL((*eventinitsol)))
#define SCIP_EVENTTYPE_ROWADDEDSEPA
SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
#define SCIP_EVENTTYPE_SOLEVENT
SCIP_RETCODE SCIPeventfilterAdd(SCIP_EVENTFILTER *eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
SCIP_Real SCIPeventGetOldobj(SCIP_EVENT *event)
#define BMSfreeMemoryArray(ptr)
#define SCIP_EVENTTYPE_LHOLEREMOVED
void SCIPclockReset(SCIP_CLOCK *clck)
SCIP_Bool SCIPeventhdlrIsInitialized(SCIP_EVENTHDLR *eventhdlr)
SCIP_RETCODE SCIPeventqueueCreate(SCIP_EVENTQUEUE **eventqueue)
SCIP_NODE * SCIPeventGetNode(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventCreateVarAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
#define SCIP_EVENTTYPE_GHOLEREMOVED
void SCIPeventhdlrEnableOrDisableClocks(SCIP_EVENTHDLR *eventhdlr, SCIP_Bool enable)
#define SCIP_EVENTTYPE_IMPLADDED
#define SCIP_EVENTTYPE_ROWCONSTCHANGED
struct SCIP_EventData SCIP_EVENTDATA
void SCIPeventhdlrSetExit(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTEXIT((*eventexit)))
SCIP_Real SCIPeventhdlrGetSetupTime(SCIP_EVENTHDLR *eventhdlr)
const char * SCIPvarGetName(SCIP_VAR *var)
SCIP_EVENTVARADDED eventvaradded
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
SCIP_Real SCIPeventGetNewobj(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventCreateLbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
#define SCIP_EVENTTYPE_UBRELAXED
SCIP_RETCODE SCIPeventCreateLholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
internal methods for global SCIP settings
#define SCIP_EVENTTYPE_LBTIGHTENED
SCIP_RETCODE SCIPeventhdlrInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_COL * SCIPeventGetRowCol(SCIP_EVENT *event)
#define SCIP_EVENTTYPE_LHOLEADDED
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
SCIP_EVENTIMPLADD eventimpladd
#define BMSduplicateMemoryArray(ptr, source, num)
#define SCIP_EVENTTYPE_UBCHANGED
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
#define BMSfreeBlockMemory(mem, ptr)
internal methods for problem variables
SCIP_VAR * SCIPeventGetVar(SCIP_EVENT *event)
SCIP_Real SCIPeventGetRowNewCoefVal(SCIP_EVENT *event)
#define SCIP_EVENTTYPE_NODEEVENT
SCIP_EVENTTYPE SCIPeventGetType(SCIP_EVENT *event)
void SCIPeventhdlrSetFree(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTFREE((*eventfree)))
void SCIPprimalUpdateVarObj(SCIP_PRIMAL *primal, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_EVENTHDLRDATA * eventhdlrdata
#define SCIP_EVENTTYPE_ROWCOEFCHANGED
SCIP_RETCODE SCIPeventCreateRowSideChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
SCIP_RETCODE SCIPeventCreateGholeRemoved(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPeventCreateGlbChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
static void eventfilterProcessUpdates(SCIP_EVENTFILTER *eventfilter)
SCIP_RETCODE SCIPeventCreateVarDeleted(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
#define SCIP_EVENTTYPE_NODEINFEASIBLE
#define SCIP_EVENTTYPE_ROWDELETEDSEPA
#define SCIP_EVENTTYPE_HOLECHANGED
#define SCIP_EVENTTYPE_GHOLEADDED
SCIP_COL * SCIPvarGetCol(SCIP_VAR *var)
SCIP_RETCODE SCIPbranchcandUpdateVar(SCIP_BRANCHCAND *branchcand, SCIP_SET *set, SCIP_VAR *var)
#define SCIP_EVENTTYPE_UBTIGHTENED
SCIP_RETCODE SCIPeventhdlrExec(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set, SCIP_EVENT *event, SCIP_EVENTDATA *eventdata)
#define SCIP_EVENTTYPE_FIRSTLPSOLVED
SCIP_RETCODE SCIPeventFree(SCIP_EVENT **event, BMS_BLKMEM *blkmem)
static SCIP_RETCODE eventqueueAppend(SCIP_EVENTQUEUE *eventqueue, SCIP_SET *set, SCIP_EVENT **event)
SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
SCIP_EVENTFILTER * eventfilter
SCIP_Real SCIPeventGetRowOldCoefVal(SCIP_EVENT *event)
SCIP_RETCODE SCIPeventCreateRowCoefChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
SCIP_EVENTDATA ** eventdata
#define SCIP_EVENTTYPE_DISABLED
SCIP_EVENTBDCHG eventbdchg
#define SCIP_EVENTTYPE_BESTSOLFOUND
#define SCIP_EVENTTYPE_POORSOLFOUND
SCIP_RETCODE SCIPeventfilterFree(SCIP_EVENTFILTER **eventfilter, BMS_BLKMEM *blkmem, SCIP_SET *set)
#define SCIP_EVENTTYPE_FORMAT
SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
SCIP_RETCODE SCIPeventfilterProcess(SCIP_EVENTFILTER *eventfilter, SCIP_SET *set, SCIP_EVENT *event)
public methods for message output
SCIP_RETCODE SCIPeventhdlrExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_Real SCIPeventGetOldbound(SCIP_EVENT *event)
SCIP_DECL_EVENTEXEC(EventhdlrNewSol::scip_exec)
SCIP_VARSTATUS SCIPvarGetStatus(SCIP_VAR *var)
SCIP_Real SCIPeventGetHoleRight(SCIP_EVENT *event)
#define SCIP_EVENTTYPE_VARUNLOCKED
SCIP_DECL_EVENTEXITSOL(EventhdlrNewSol::scip_exitsol)
unsigned int eventqueueimpl
#define SCIP_DECL_EVENTCOPY(x)
#define BMSallocMemory(ptr)
#define BMSreallocMemoryArray(ptr, num)
SCIP_RETCODE SCIPeventCreateGholeAdded(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real left, SCIP_Real right)
SCIP_RETCODE SCIPeventCreateVarUnlocked(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var)
union SCIP_Event::@7 data
SCIP_EVENTTYPE delayedeventmask
SCIP_EVENTTYPE * eventtypes
SCIP_EVENTVARDELETED eventvardeleted
SCIP_EVENTVARFIXED eventvarfixed
SCIP_DECL_EVENTDELETE(EventhdlrNewSol::scip_delete)
#define BMSallocBlockMemory(mem, ptr)
void SCIPeventhdlrSetDelete(SCIP_EVENTHDLR *eventhdlr, SCIP_DECL_EVENTDELETE((*eventdelete)))
SCIP_Bool SCIPeventqueueIsDelayed(SCIP_EVENTQUEUE *eventqueue)
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
#define SCIP_EVENTTYPE_GUBCHANGED
SCIP_EVENTHDLRDATA * SCIPeventhdlrGetData(SCIP_EVENTHDLR *eventhdlr)
#define SCIP_EVENTTYPE_SYNC
#define SCIP_EVENTTYPE_PRESOLVEROUND
SCIP_RETCODE SCIPeventCreateGubChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound)
#define SCIP_EVENTTYPE_VARADDED
SCIP_SOL * SCIPeventGetSol(SCIP_EVENT *event)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define SCIP_EVENTTYPE_VARDELETED
SCIP_RETCODE SCIPeventhdlrInit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
SCIP_RETCODE SCIPeventCreateRowAddedSepa(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row)
SCIP_RETCODE SCIPeventCreateRowConstChanged(SCIP_EVENT **event, BMS_BLKMEM *blkmem, SCIP_ROW *row, SCIP_Real oldval, SCIP_Real newval)
enum SCIP_SideType SCIP_SIDETYPE