integer objective value separator
Definition in file sepa_intobj.c.
#include "scip/pub_event.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_sepa.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cut.h"
#include "scip/scip_event.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_message.h"
#include "scip/scip_mem.h"
#include "scip/scip_numerics.h"
#include "scip/scip_prob.h"
#include "scip/scip_sepa.h"
#include "scip/scip_sol.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_var.h"
#include "scip/sepa_intobj.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | SEPA_NAME "intobj" |
#define | SEPA_DESC "integer objective value separator" |
#define | SEPA_PRIORITY -100 |
#define | SEPA_FREQ -1 |
#define | SEPA_MAXBOUNDDIST 0.0 |
#define | SEPA_USESSUBSCIP FALSE |
#define | SEPA_DELAY FALSE |
#define | EVENTHDLR_NAME "intobj" |
#define | EVENTHDLR_DESC "objective change event handler for integer objective value separator" |
Functions | |
static SCIP_RETCODE | sepadataCreate (SCIP *scip, SCIP_SEPADATA **sepadata) |
static SCIP_RETCODE | sepadataFree (SCIP *scip, SCIP_SEPADATA **sepadata) |
static SCIP_RETCODE | createObjRow (SCIP *scip, SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata) |
static SCIP_RETCODE | separateCuts (SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result) |
static | SCIP_DECL_SEPACOPY (sepaCopyIntobj) |
static | SCIP_DECL_SEPAFREE (sepaFreeIntobj) |
static | SCIP_DECL_SEPAEXITSOL (sepaExitsolIntobj) |
static | SCIP_DECL_SEPAEXECLP (sepaExeclpIntobj) |
static | SCIP_DECL_SEPAEXECSOL (sepaExecsolIntobj) |
static | SCIP_DECL_EVENTINIT (eventInitIntobj) |
static | SCIP_DECL_EVENTEXIT (eventExitIntobj) |
static | SCIP_DECL_EVENTEXEC (eventExecIntobj) |
SCIP_RETCODE | SCIPincludeSepaIntobj (SCIP *scip) |
#define SEPA_NAME "intobj" |
Definition at line 55 of file sepa_intobj.c.
#define SEPA_DESC "integer objective value separator" |
Definition at line 56 of file sepa_intobj.c.
#define SEPA_PRIORITY -100 |
Definition at line 57 of file sepa_intobj.c.
#define SEPA_FREQ -1 |
Definition at line 58 of file sepa_intobj.c.
#define SEPA_MAXBOUNDDIST 0.0 |
Definition at line 59 of file sepa_intobj.c.
#define SEPA_USESSUBSCIP FALSE |
does the separator use a secondary SCIP instance?
Definition at line 60 of file sepa_intobj.c.
#define SEPA_DELAY FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 61 of file sepa_intobj.c.
#define EVENTHDLR_NAME "intobj" |
Definition at line 63 of file sepa_intobj.c.
#define EVENTHDLR_DESC "objective change event handler for integer objective value separator" |
Definition at line 64 of file sepa_intobj.c.
|
static |
creates separator data
scip | SCIP data structure |
sepadata | pointer to store separator data |
Definition at line 86 of file sepa_intobj.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, and sepadata.
Referenced by SCIPincludeSepaIntobj().
|
static |
frees separator data
scip | SCIP data structure |
sepadata | pointer to separator data |
Definition at line 103 of file sepa_intobj.c.
References assert(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, and sepadata.
Referenced by SCIP_DECL_SEPAFREE().
|
static |
creates the objective value inequality and the objective value variable, if not yet existing
scip | SCIP data structure |
sepa | separator |
sepadata | separator data |
Definition at line 120 of file sepa_intobj.c.
References assert(), FALSE, NULL, nvars, obj, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_IMPLINT, SCIPaddVar(), SCIPaddVarLocksType(), SCIPaddVarToRow(), SCIPallVarsInProb(), SCIPcacheRowExtensions(), SCIPceil(), SCIPcreateEmptyRowSepa(), SCIPcreateVar(), SCIPdebug, SCIPdebugMsg, SCIPflushRowExtensions(), SCIPgetLowerbound(), SCIPgetNVars(), SCIPgetVars(), SCIPinfinity(), SCIPisZero(), SCIPprintRow(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarMarkRelaxationOnly(), sepadata, TRUE, and vars.
Referenced by separateCuts().
|
static |
searches and adds integral objective cuts that separate the given primal solution
scip | SCIP data structure |
sepa | the intobj separator |
sol | the solution that should be separated, or NULL for LP solution |
result | pointer to store the result |
Definition at line 184 of file sepa_intobj.c.
References assert(), createObjRow(), FALSE, NULL, objval, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPaddRow(), SCIPceil(), SCIPdebugMsg, SCIPgetLPObjval(), SCIPgetSolTransObj(), SCIPisFeasIntegral(), SCIPisObjIntegral(), SCIProwIsInLP(), SCIPsepaGetData(), SCIPtightenVarLb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), sepadata, and sol.
Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECSOL().
|
static |
copy method for separator plugins (called when SCIP copies plugins)
Definition at line 253 of file sepa_intobj.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaIntobj(), SCIPsepaGetName(), and SEPA_NAME.
|
static |
destructor of separator to free user data (called when SCIP is exiting)
Definition at line 267 of file sepa_intobj.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPsepaGetData(), SCIPsepaSetData(), sepadata, and sepadataFree().
|
static |
solving process deinitialization method of separator (called before branch and bound process data is freed)
Definition at line 285 of file sepa_intobj.c.
References assert(), NULL, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPreleaseRow(), SCIPreleaseVar(), SCIPsepaGetData(), and sepadata.
|
static |
LP solution separation method of separator
Definition at line 312 of file sepa_intobj.c.
References NULL, result, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPgetLPSolstat(), SCIPgetNLPBranchCands(), SCIPisStopped(), and separateCuts().
|
static |
arbitrary primal solution separation method of separator
Definition at line 336 of file sepa_intobj.c.
References result, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPceil(), SCIPfloor(), SCIPgetLocalLowerbound(), SCIPgetSolTransObj(), SCIPisStopped(), separateCuts(), and sol.
|
static |
initialization method of event handler (called after problem was transformed)
Definition at line 361 of file sepa_intobj.c.
References NULL, SCIP_CALL, SCIP_EVENTTYPE_OBJCHANGED, SCIP_EVENTTYPE_VARADDED, SCIP_OKAY, and SCIPcatchEvent().
|
static |
deinitialization method of event handler (called before transformed problem is freed)
Definition at line 370 of file sepa_intobj.c.
References NULL, SCIP_CALL, SCIP_EVENTTYPE_OBJCHANGED, SCIP_EVENTTYPE_VARADDED, SCIP_OKAY, and SCIPdropEvent().
|
static |
execution method of objective change event handler
Definition at line 380 of file sepa_intobj.c.
References assert(), NULL, SCIP_CALL, SCIP_EVENTTYPE_FORMAT, SCIP_EVENTTYPE_OBJCHANGED, SCIP_EVENTTYPE_VARADDED, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPaddVarToRow(), SCIPdebugMsg, SCIPerrorMessage, SCIPeventGetNewobj(), SCIPeventGetOldobj(), SCIPeventGetType(), SCIPeventGetVar(), SCIPeventhdlrGetData(), SCIPisZero(), SCIPvarGetName(), SCIPvarGetObj(), sepadata, and var.