Scippy

SCIP

Solving Constraint Integer Programs

relax.h File Reference

Detailed Description

internal methods for relaxators

Author
Tobias Achterberg

Definition in file relax.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_primal.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_set.h"
#include "scip/type_sol.h"
#include "scip/type_stat.h"
#include "scip/type_tree.h"
#include "scip/type_relax.h"
#include "scip/pub_relax.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPrelaxCopyInclude (SCIP_RELAX *relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxCreate (SCIP_RELAX **relax, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int freq, SCIP_Bool includeslp, SCIP_DECL_RELAXCOPY((*relaxcopy)), SCIP_DECL_RELAXFREE((*relaxfree)), SCIP_DECL_RELAXINIT((*relaxinit)), SCIP_DECL_RELAXEXIT((*relaxexit)), SCIP_DECL_RELAXINITSOL((*relaxinitsol)), SCIP_DECL_RELAXEXITSOL((*relaxexitsol)), SCIP_DECL_RELAXEXEC((*relaxexec)), SCIP_RELAXDATA *relaxdata)
 
SCIP_RETCODE SCIPrelaxFree (SCIP_RELAX **relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxInit (SCIP_RELAX *relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxExit (SCIP_RELAX *relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxInitsol (SCIP_RELAX *relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxExitsol (SCIP_RELAX *relax, SCIP_SET *set)
 
SCIP_RETCODE SCIPrelaxExec (SCIP_RELAX *relax, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Real *lowerbound, SCIP_RESULT *result)
 
void SCIPrelaxSetPriority (SCIP_RELAX *relax, SCIP_SET *set, int priority)
 
void SCIPrelaxSetCopy (SCIP_RELAX *relax, SCIP_DECL_RELAXCOPY((*relaxcopy)))
 
void SCIPrelaxSetFree (SCIP_RELAX *relax, SCIP_DECL_RELAXFREE((*relaxfree)))
 
void SCIPrelaxSetInit (SCIP_RELAX *relax, SCIP_DECL_RELAXINIT((*relaxinit)))
 
void SCIPrelaxSetExit (SCIP_RELAX *relax, SCIP_DECL_RELAXEXIT((*relaxexit)))
 
void SCIPrelaxSetInitsol (SCIP_RELAX *relax, SCIP_DECL_RELAXINITSOL((*relaxinitsol)))
 
void SCIPrelaxSetExitsol (SCIP_RELAX *relax, SCIP_DECL_RELAXEXITSOL((*relaxexitsol)))
 
SCIP_Bool SCIPrelaxIsSolved (SCIP_RELAX *relax, SCIP_STAT *stat)
 
void SCIPrelaxEnableOrDisableClocks (SCIP_RELAX *relax, SCIP_Bool enable)
 
SCIP_RETCODE SCIPrelaxationCreate (SCIP_RELAXATION **relaxation, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree)
 
SCIP_RETCODE SCIPrelaxationFree (SCIP_RELAXATION **relaxation, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)
 
void SCIPrelaxationSetSolZero (SCIP_RELAXATION *relaxation, SCIP_Bool iszero)
 
SCIP_Bool SCIPrelaxationIsSolZero (SCIP_RELAXATION *relaxation)
 
void SCIPrelaxationSetSolValid (SCIP_RELAXATION *relaxation, SCIP_Bool isvalid)
 
SCIP_Bool SCIPrelaxationIsSolValid (SCIP_RELAXATION *relaxation)
 
void SCIPrelaxationSetSolObj (SCIP_RELAXATION *relaxation, SCIP_Real obj)
 
SCIP_Real SCIPrelaxationGetSolObj (SCIP_RELAXATION *relaxation)
 
void SCIPrelaxationSolObjAdd (SCIP_RELAXATION *relaxation, SCIP_Real val)
 
SCIP_SOLSCIPrelaxationGetBestRelaxSol (SCIP_RELAXATION *relaxation)
 
void SCIPrelaxationSetBestRelaxSolObj (SCIP_RELAXATION *relaxation, SCIP_Real obj)
 
SCIP_Real SCIPrelaxationGetBestRelaxSolObj (SCIP_RELAXATION *relaxation)
 
void SCIPrelaxationUpdateVarObj (SCIP_RELAXATION *relaxation, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
 

Function Documentation

◆ SCIPrelaxCopyInclude()

SCIP_RETCODE SCIPrelaxCopyInclude ( SCIP_RELAX relax,
SCIP_SET set 
)

copies the given relaxator to a new scip

copies the given relaxation handler to a new scip

Parameters
relaxrelaxation handler
setSCIP_SET of SCIP to copy to

Definition at line 71 of file relax.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPrelaxGetName(), and SCIPsetDebugMsg.

Referenced by SCIPsetCopyPlugins().

◆ SCIPrelaxCreate()

SCIP_RETCODE SCIPrelaxCreate ( SCIP_RELAX **  relax,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
BMS_BLKMEM blkmem,
const char *  name,
const char *  desc,
int  priority,
int  freq,
SCIP_Bool  includeslp,
SCIP_DECL_RELAXCOPY((*relaxcopy))  ,
SCIP_DECL_RELAXFREE((*relaxfree))  ,
SCIP_DECL_RELAXINIT((*relaxinit))  ,
SCIP_DECL_RELAXEXIT((*relaxexit))  ,
SCIP_DECL_RELAXINITSOL((*relaxinitsol))  ,
SCIP_DECL_RELAXEXITSOL((*relaxexitsol))  ,
SCIP_DECL_RELAXEXEC((*relaxexec))  ,
SCIP_RELAXDATA relaxdata 
)

creates a relaxator

creates a relaxation handler

Parameters
relaxpointer to relaxation handler data structure
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of relaxation handler
descdescription of relaxation handler
prioritypriority of the relaxation handler (negative: after LP, non-negative: before LP)
freqfrequency for calling relaxation handler
includeslpDoes the relaxator contain all cuts in the LP?
relaxdatarelaxation handler data

Definition at line 89 of file relax.c.

References BMSallocMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), and SCIPsnprintf().

Referenced by SCIPincludeRelax(), and SCIPincludeRelaxBasic().

◆ SCIPrelaxFree()

SCIP_RETCODE SCIPrelaxFree ( SCIP_RELAX **  relax,
SCIP_SET set 
)

calls destructor and frees memory of relaxator

calls destructor and frees memory of relaxation handler

Parameters
relaxpointer to relaxation handler data structure
setglobal SCIP settings

Definition at line 153 of file relax.c.

References BMSfreeMemory, BMSfreeMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

◆ SCIPrelaxInit()

SCIP_RETCODE SCIPrelaxInit ( SCIP_RELAX relax,
SCIP_SET set 
)

initializes relaxator

initializes relaxation handler

Parameters
relaxrelaxation handler
setglobal SCIP settings

Definition at line 179 of file relax.c.

References SCIP_Relax::initialized, SCIP_Relax::lastsolvednode, SCIP_Relax::name, SCIP_Relax::ncalls, NULL, SCIP_Relax::relaxclock, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Relax::setuptime, and TRUE.

Referenced by SCIPsetSetPriorityNlpi().

◆ SCIPrelaxExit()

SCIP_RETCODE SCIPrelaxExit ( SCIP_RELAX relax,
SCIP_SET set 
)

calls exit method of relaxator

calls exit method of relaxation handler

Parameters
relaxrelaxation handler
setglobal SCIP settings

Definition at line 217 of file relax.c.

References FALSE, SCIP_Relax::initialized, SCIP_Relax::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Relax::setuptime.

◆ SCIPrelaxInitsol()

SCIP_RETCODE SCIPrelaxInitsol ( SCIP_RELAX relax,
SCIP_SET set 
)

informs relaxator that the branch and bound process is being started

informs relaxation handler that the branch and bound process is being started

Parameters
relaxrelaxation handler
setglobal SCIP settings

Definition at line 247 of file relax.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.

◆ SCIPrelaxExitsol()

SCIP_RETCODE SCIPrelaxExitsol ( SCIP_RELAX relax,
SCIP_SET set 
)

informs relaxator that the branch and bound process data is being freed

informs relaxation handler that the branch and bound process data is being freed

Parameters
relaxrelaxation handler
setglobal SCIP settings

Definition at line 271 of file relax.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.

◆ SCIPrelaxExec()

SCIP_RETCODE SCIPrelaxExec ( SCIP_RELAX relax,
SCIP_SET set,
SCIP_STAT stat,
int  depth,
SCIP_Real lowerbound,
SCIP_RESULT result 
)

calls execution method of relaxator

calls execution method of relaxation handler

Parameters
relaxrelaxation handler
setglobal SCIP settings
statdynamic problem statistics
depthdepth of current node
lowerboundpointer to lower bound computed by the relaxation handler
resultpointer to store the result of the callback method

Definition at line 295 of file relax.c.

References SCIP_Relax::freq, SCIP_Relax::lastsolvednode, SCIP_Relax::name, SCIP_Relax::ncalls, SCIP_Stat::ntotalnodes, NULL, SCIP_Relax::relaxclock, SCIP_Stat::relaxcount, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIP_SUCCESS, SCIP_SUSPENDED, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPinProbing(), SCIPrelaxMarkUnsolved(), and SCIPsetDebugMsg.

Referenced by SCIPsolveProbingRelax(), and solveNodeRelax().

◆ SCIPrelaxSetPriority()

void SCIPrelaxSetPriority ( SCIP_RELAX relax,
SCIP_SET set,
int  priority 
)

sets priority of relaxator

sets priority of relaxation handler

Parameters
relaxrelaxation handler
setglobal SCIP settings
prioritynew priority of the relaxation handler

Definition at line 476 of file relax.c.

References FALSE, NULL, and SCIP_Relax::priority.

Referenced by SCIPsetRelaxPriority().

◆ SCIPrelaxSetCopy()

void SCIPrelaxSetCopy ( SCIP_RELAX relax,
SCIP_DECL_RELAXCOPY((*relaxcopy))   
)

set copy callback of relaxation handler

set copy method of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 380 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxCopy().

◆ SCIPrelaxSetFree()

void SCIPrelaxSetFree ( SCIP_RELAX relax,
SCIP_DECL_RELAXFREE((*relaxfree))   
)

set destructor callback of relaxation handler

set destructor of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 391 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxFree().

◆ SCIPrelaxSetInit()

void SCIPrelaxSetInit ( SCIP_RELAX relax,
SCIP_DECL_RELAXINIT((*relaxinit))   
)

set initialization callback of relaxation handler

set initialization method of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 402 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxInit().

◆ SCIPrelaxSetExit()

void SCIPrelaxSetExit ( SCIP_RELAX relax,
SCIP_DECL_RELAXEXIT((*relaxexit))   
)

set deinitialization callback of relaxation handler

set deinitialization method of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 413 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxExit().

◆ SCIPrelaxSetInitsol()

void SCIPrelaxSetInitsol ( SCIP_RELAX relax,
SCIP_DECL_RELAXINITSOL((*relaxinitsol))   
)

set solving process initialization callback of relaxation handler

set solving process initialization method of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 424 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxInitsol().

◆ SCIPrelaxSetExitsol()

void SCIPrelaxSetExitsol ( SCIP_RELAX relax,
SCIP_DECL_RELAXEXITSOL((*relaxexitsol))   
)

set solving process deinitialization callback of relaxation handler

set solving process deinitialization method of relaxation handler

Parameters
relaxrelaxation handler

Definition at line 435 of file relax.c.

References NULL.

Referenced by SCIPsetRelaxExitsol().

◆ SCIPrelaxIsSolved()

SCIP_Bool SCIPrelaxIsSolved ( SCIP_RELAX relax,
SCIP_STAT stat 
)

returns whether the relaxation was completely solved at the current node

Parameters
relaxrelaxation handler
statdynamic problem statistics

Definition at line 573 of file relax.c.

References SCIP_Relax::lastsolvednode, SCIP_Stat::ntotalnodes, and NULL.

Referenced by updateLoopStatus().

◆ SCIPrelaxEnableOrDisableClocks()

void SCIPrelaxEnableOrDisableClocks ( SCIP_RELAX relax,
SCIP_Bool  enable 
)

enables or disables all clocks of relax, depending on the value of the flag

Parameters
relaxthe relaxation handler for which all clocks should be enabled or disabled
enableshould the clocks of the relaxation handler be enabled?

Definition at line 510 of file relax.c.

References NULL, SCIP_Relax::relaxclock, SCIPclockEnableOrDisable(), and SCIP_Relax::setuptime.

◆ SCIPrelaxationCreate()

SCIP_RETCODE SCIPrelaxationCreate ( SCIP_RELAXATION **  relaxation,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PRIMAL primal,
SCIP_TREE tree 
)

creates global relaxation data

Parameters
relaxationglobal relaxation data
blkmemblock memory
setglobal SCIP settings
statproblem statistics data
primalprimal data
treebranch and bound tree

Definition at line 599 of file relax.c.

References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPsetInfinity(), SCIPsolCreateUnknown(), and TRUE.

Referenced by prepareReoptimization(), and SCIPtransformProb().

◆ SCIPrelaxationFree()

SCIP_RETCODE SCIPrelaxationFree ( SCIP_RELAXATION **  relaxation,
BMS_BLKMEM blkmem,
SCIP_PRIMAL primal 
)

frees global relaxation data

Parameters
relaxationglobal relaxation data
blkmemblock memory
primalprimal data

Definition at line 627 of file relax.c.

References BMSfreeMemory, NULL, SCIP_CALL, SCIP_OKAY, and SCIPsolFree().

Referenced by freeReoptSolve(), and freeTransform().

◆ SCIPrelaxationSetSolZero()

void SCIPrelaxationSetSolZero ( SCIP_RELAXATION relaxation,
SCIP_Bool  iszero 
)

sets the relaxsolzero flag in the relaxation data to the given value

Parameters
relaxationglobal relaxation data
iszeroare all values of the relaxation solution set to zero?

Definition at line 643 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolzero.

Referenced by SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), and SCIPsetRelaxSolValsSol().

◆ SCIPrelaxationIsSolZero()

SCIP_Bool SCIPrelaxationIsSolZero ( SCIP_RELAXATION relaxation)

returns whether the global relaxation solution is cleared and all values are set to zero

Parameters
relaxationglobal relaxation data

Definition at line 654 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolzero.

Referenced by SCIPclearRelaxSolVals().

◆ SCIPrelaxationSetSolValid()

void SCIPrelaxationSetSolValid ( SCIP_RELAXATION relaxation,
SCIP_Bool  isvalid 
)

sets the relaxsolvalid flag in the relaxation data to the given value

Parameters
relaxationglobal relaxation data
isvalidis the stored solution valid?

Definition at line 664 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolvalid.

Referenced by markRelaxsUnsolved(), SCIPmarkRelaxSolInvalid(), SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), solveNode(), and solveNodeRelax().

◆ SCIPrelaxationIsSolValid()

SCIP_Bool SCIPrelaxationIsSolValid ( SCIP_RELAXATION relaxation)

returns whether the global relaxation solution is valid

Parameters
relaxationglobal relaxation data

Definition at line 675 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolvalid.

Referenced by SCIPcreateRelaxSol(), SCIPgetRelaxSolObj(), SCIPgetRelaxSolVal(), SCIPisRelaxSolValid(), SCIPlinkRelaxSol(), SCIPsolCreateRelaxSol(), SCIPsolLinkRelaxSol(), and solveNodeRelax().

◆ SCIPrelaxationSetSolObj()

void SCIPrelaxationSetSolObj ( SCIP_RELAXATION relaxation,
SCIP_Real  obj 
)

sets the objective value of the global relaxation solution

Parameters
relaxationglobal relaxation data
objobjective value

Definition at line 685 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolobjval.

Referenced by SCIPclearRelaxSolVals(), and SCIPsetRelaxSolValsSol().

◆ SCIPrelaxationGetSolObj()

SCIP_Real SCIPrelaxationGetSolObj ( SCIP_RELAXATION relaxation)

returns the objective value of the global relaxation solution w.r.t. the transformed problem

Parameters
relaxationglobal relaxation data

Definition at line 696 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolobjval.

Referenced by SCIPgetRelaxSolObj(), and SCIPsolLinkRelaxSol().

◆ SCIPrelaxationSolObjAdd()

void SCIPrelaxationSolObjAdd ( SCIP_RELAXATION relaxation,
SCIP_Real  val 
)

adds the given value to the global relaxation solution's objective value

Parameters
relaxationglobal relaxation data
valvalue to add to the objective value

Definition at line 706 of file relax.c.

References NULL, and SCIP_Relaxation::relaxsolobjval.

Referenced by SCIPvarSetRelaxSol().

◆ SCIPrelaxationGetBestRelaxSol()

SCIP_SOL* SCIPrelaxationGetBestRelaxSol ( SCIP_RELAXATION relaxation)

gets pointer to best relaxation solution

Parameters
relaxationglobal relaxation data

Definition at line 717 of file relax.c.

References SCIP_Relaxation::bestrelaxsol, and NULL.

Referenced by addCurrentSolution(), enforceConstraints(), SCIPsolveCIP(), solveNode(), and solveNodeRelax().

◆ SCIPrelaxationSetBestRelaxSolObj()

void SCIPrelaxationSetBestRelaxSolObj ( SCIP_RELAXATION relaxation,
SCIP_Real  obj 
)

sets the objective value of the best relaxation solution

Parameters
relaxationglobal relaxation data
objobjective value of best relaxation solution

Definition at line 727 of file relax.c.

References SCIP_Relaxation::bestrelaxsolobj, and NULL.

Referenced by propAndSolve(), solveNode(), and solveNodeRelax().

◆ SCIPrelaxationGetBestRelaxSolObj()

SCIP_Real SCIPrelaxationGetBestRelaxSolObj ( SCIP_RELAXATION relaxation)

returns the objective value of the best relaxation solution

returns the objective value of the best relaxation solution (or minus infinity if it should not be enforced)

Parameters
relaxationglobal relaxation data

Definition at line 738 of file relax.c.

References SCIP_Relaxation::bestrelaxsolobj, and NULL.

Referenced by addCurrentSolution(), enforceConstraints(), SCIPsolveCIP(), solveNode(), and solveNodeRelax().

◆ SCIPrelaxationUpdateVarObj()

void SCIPrelaxationUpdateVarObj ( SCIP_RELAXATION relaxation,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldobj,
SCIP_Real  newobj 
)

updates objective value of current relaxation solution after change of objective coefficient

Parameters
relaxationglobal relaxation data
setglobal SCIP settings
varvariable with changed objective coefficient
oldobjold objective coefficient
newobjnew objective coefficient

Definition at line 748 of file relax.c.

References NULL, SCIP_Relaxation::relaxsolobjval, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetRelaxSol(), and SCIPvarGetStatus().

Referenced by SCIPchgVarObjProbing(), and treeBacktrackProbing().