/** creates the integer objective value separator and includes it in SCIP */ SCIP_RETCODE SCIPincludeSepaIntobj( SCIP* scip /**< SCIP data structure */ ) { SCIP_SEPADATA* sepadata; SCIP_EVENTHDLRDATA* eventhdlrdata; /* create intobj separator data */ SCIP_CALL( sepadataCreate(scip, &sepadata) ); /* include separator */ SCIP_CALL( SCIPincludeSepa(scip, SEPA_NAME, SEPA_DESC, SEPA_PRIORITY, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_USESSUBSCIP, SEPA_DELAY, sepaCopyIntobj, sepaFreeIntobj, sepaInitIntobj, sepaExitIntobj, sepaInitsolIntobj, sepaExitsolIntobj, sepaExeclpIntobj, sepaExecsolIntobj, sepadata) ); /* include event handler for objective change events */ eventhdlrdata = (SCIP_EVENTHDLRDATA*)sepadata; SCIP_CALL( SCIPincludeEventhdlr(scip, EVENTHDLR_NAME, EVENTHDLR_DESC, NULL, eventFreeIntobj, eventInitIntobj, eventExitIntobj, eventInitsolIntobj, eventExitsolIntobj, eventDeleteIntobj, eventExecIntobj, eventhdlrdata) ); return SCIP_OKAY; }
/** creates the integer objective value separator and includes it in SCIP */ SCIP_RETCODE SCIPincludeSepaIntobj( SCIP* scip /**< SCIP data structure */ ) { SCIP_SEPADATA* sepadata; SCIP_EVENTHDLRDATA* eventhdlrdata; SCIP_SEPA* sepa; SCIP_EVENTHDLR* eventhdlr; /* create intobj separator data */ SCIP_CALL( sepadataCreate(scip, &sepadata) ); /* include separator */ SCIP_CALL( SCIPincludeSepaBasic(scip, &sepa, SEPA_NAME, SEPA_DESC, SEPA_PRIORITY, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_USESSUBSCIP, SEPA_DELAY, sepaExeclpIntobj, sepaExecsolIntobj, sepadata) ); assert(sepa != NULL); /* set non-NULL pointers to callback methods */ SCIP_CALL( SCIPsetSepaCopy(scip, sepa, sepaCopyIntobj) ); SCIP_CALL( SCIPsetSepaFree(scip, sepa, sepaFreeIntobj) ); SCIP_CALL( SCIPsetSepaExit(scip, sepa, sepaExitIntobj) ); SCIP_CALL( SCIPsetSepaExitsol(scip, sepa, sepaExitsolIntobj) ); /* include event handler for objective change events */ eventhdlr = NULL; eventhdlrdata = (SCIP_EVENTHDLRDATA*)sepadata; SCIP_CALL( SCIPincludeEventhdlrBasic(scip, &eventhdlr, EVENTHDLR_NAME, EVENTHDLR_DESC, eventExecIntobj, eventhdlrdata) ); assert(eventhdlr != NULL); SCIP_CALL( SCIPsetEventhdlrInit(scip, eventhdlr, eventInitIntobj) ); SCIP_CALL( SCIPsetEventhdlrExit(scip, eventhdlr, eventExitIntobj) ); return SCIP_OKAY; }