Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

integer objective value separator

Author
Tobias Achterberg
Timo Berthold

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)
 

Macro Definition Documentation

◆ SEPA_NAME

#define SEPA_NAME   "intobj"

Definition at line 55 of file sepa_intobj.c.

Referenced by SCIP_DECL_SEPACOPY(), and SCIPincludeSepaIntobj().

◆ SEPA_DESC

#define SEPA_DESC   "integer objective value separator"

Definition at line 56 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ SEPA_PRIORITY

#define SEPA_PRIORITY   -100

Definition at line 57 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ SEPA_FREQ

#define SEPA_FREQ   -1

Definition at line 58 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ SEPA_MAXBOUNDDIST

#define SEPA_MAXBOUNDDIST   0.0

Definition at line 59 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ SEPA_USESSUBSCIP

#define SEPA_USESSUBSCIP   FALSE

does the separator use a secondary SCIP instance?

Definition at line 60 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ SEPA_DELAY

#define SEPA_DELAY   FALSE

should separation method be delayed, if other separators found cuts?

Definition at line 61 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ EVENTHDLR_NAME

#define EVENTHDLR_NAME   "intobj"

Definition at line 63 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

◆ EVENTHDLR_DESC

#define EVENTHDLR_DESC   "objective change event handler for integer objective value separator"

Definition at line 64 of file sepa_intobj.c.

Referenced by SCIPincludeSepaIntobj().

Function Documentation

◆ sepadataCreate()

static SCIP_RETCODE sepadataCreate ( SCIP scip,
SCIP_SEPADATA **  sepadata 
)
static

creates separator data

Parameters
scipSCIP data structure
sepadatapointer to store separator data

Definition at line 86 of file sepa_intobj.c.

References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.

Referenced by SCIPincludeSepaIntobj().

◆ sepadataFree()

static SCIP_RETCODE sepadataFree ( SCIP scip,
SCIP_SEPADATA **  sepadata 
)
static

frees separator data

Parameters
scipSCIP data structure
sepadatapointer to separator data

Definition at line 103 of file sepa_intobj.c.

References NULL, SCIP_OKAY, and SCIPfreeBlockMemory.

Referenced by SCIP_DECL_SEPAFREE().

◆ createObjRow()

static SCIP_RETCODE createObjRow ( SCIP scip,
SCIP_SEPA sepa,
SCIP_SEPADATA sepadata 
)
static

◆ separateCuts()

static SCIP_RETCODE separateCuts ( SCIP scip,
SCIP_SEPA sepa,
SCIP_SOL sol,
SCIP_RESULT result 
)
static

searches and adds integral objective cuts that separate the given primal solution

Parameters
scipSCIP data structure
sepathe intobj separator
solthe solution that should be separated, or NULL for LP solution
resultpointer to store the result

Definition at line 184 of file sepa_intobj.c.

References createObjRow(), FALSE, NULL, 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(), and SCIPvarGetUbLocal().

Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECSOL().

◆ SCIP_DECL_SEPACOPY()

static SCIP_DECL_SEPACOPY ( sepaCopyIntobj  )
static

copy method for separator plugins (called when SCIP copies plugins)

Definition at line 253 of file sepa_intobj.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaIntobj(), SCIPsepaGetName(), and SEPA_NAME.

◆ SCIP_DECL_SEPAFREE()

static SCIP_DECL_SEPAFREE ( sepaFreeIntobj  )
static

destructor of separator to free user data (called when SCIP is exiting)

Definition at line 267 of file sepa_intobj.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPsepaGetData(), SCIPsepaSetData(), and sepadataFree().

◆ SCIP_DECL_SEPAEXITSOL()

static SCIP_DECL_SEPAEXITSOL ( sepaExitsolIntobj  )
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 NULL, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPreleaseRow(), SCIPreleaseVar(), and SCIPsepaGetData().

◆ SCIP_DECL_SEPAEXECLP()

static SCIP_DECL_SEPAEXECLP ( sepaExeclpIntobj  )
static

LP solution separation method of separator

Definition at line 312 of file sepa_intobj.c.

References NULL, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPgetLPSolstat(), SCIPgetNLPBranchCands(), SCIPisStopped(), and separateCuts().

◆ SCIP_DECL_SEPAEXECSOL()

static SCIP_DECL_SEPAEXECSOL ( sepaExecsolIntobj  )
static

arbitrary primal solution separation method of separator

Definition at line 336 of file sepa_intobj.c.

References SCIP_CALL, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPceil(), SCIPfloor(), SCIPgetLocalLowerbound(), SCIPgetSolTransObj(), SCIPisStopped(), and separateCuts().

◆ SCIP_DECL_EVENTINIT()

static SCIP_DECL_EVENTINIT ( eventInitIntobj  )
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().

◆ SCIP_DECL_EVENTEXIT()

static SCIP_DECL_EVENTEXIT ( eventExitIntobj  )
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().

◆ SCIP_DECL_EVENTEXEC()