Detailed Description
methods and datastructures for relaxation handlers
Definition in file relax.c.
#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/tree.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/paramset.h"
#include "scip/scip.h"
#include "scip/sol.h"
#include "scip/var.h"
#include "scip/relax.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/struct_relax.h"
Go to the source code of this file.
Function Documentation
◆ SCIP_DECL_PARAMCHGD()
|
static |
method to call, when the priority of a relaxation handler was changed
Definition at line 59 of file relax.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetRelaxPriority().
◆ SCIPrelaxCopyInclude()
SCIP_RETCODE SCIPrelaxCopyInclude | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
copies the given relaxation handler to a new scip
- Parameters
-
relax relaxation handler set SCIP_SET of SCIP to copy to
Definition at line 73 of file relax.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPrelaxGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
◆ doRelaxCreate()
|
static |
internal method for creating a relaxation handler
- Parameters
-
relax pointer to relaxation handler data structure set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of relaxation handler desc description of relaxation handler priority priority of the relaxation handler (negative: after LP, non-negative: before LP) freq frequency for calling relaxation handler relaxdata relaxation handler data
Definition at line 92 of file relax.c.
References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), and SCIPsnprintf().
Referenced by SCIPrelaxCreate().
◆ 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_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 relaxation handler
- Parameters
-
relax pointer to relaxation handler data structure set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of relaxation handler desc description of relaxation handler priority priority of the relaxation handler (negative: after LP, non-negative: before LP) freq frequency for calling relaxation handler relaxdata relaxation handler data
Definition at line 162 of file relax.c.
References doRelaxCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPrelaxFree().
Referenced by SCIPincludeRelax(), and SCIPincludeRelaxBasic().
◆ SCIPrelaxFree()
SCIP_RETCODE SCIPrelaxFree | ( | SCIP_RELAX ** | relax, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of relaxation handler
- Parameters
-
relax pointer to relaxation handler data structure set global SCIP settings
Definition at line 194 of file relax.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPrelaxCreate().
◆ SCIPrelaxInit()
SCIP_RETCODE SCIPrelaxInit | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
initializes relaxation handler
- Parameters
-
relax relaxation handler set global SCIP settings
Definition at line 221 of file relax.c.
References SCIP_Relax::imprtime, SCIP_Relax::initialized, SCIP_Relax::lastsolvednode, SCIP_Relax::naddedconss, SCIP_Relax::name, SCIP_Relax::ncalls, SCIP_Relax::ncutoffs, SCIP_Relax::nimprbounds, SCIP_Relax::nreduceddom, SCIP_Relax::nseparated, NULL, SCIP_Relax::relaxclock, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Relax::setuptime, and TRUE.
◆ SCIPrelaxExit()
SCIP_RETCODE SCIPrelaxExit | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
calls exit method of relaxation handler
- Parameters
-
relax relaxation handler set global SCIP settings
Definition at line 265 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.
Referenced by SCIPsetInitPlugins().
◆ SCIPrelaxInitsol()
SCIP_RETCODE SCIPrelaxInitsol | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
informs relaxation handler that the branch and bound process is being started
- Parameters
-
relax relaxation handler set global SCIP settings
Definition at line 295 of file relax.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.
Referenced by SCIPsetExitprePlugins().
◆ SCIPrelaxExitsol()
SCIP_RETCODE SCIPrelaxExitsol | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
informs relaxation handler that the branch and bound process data is being freed
- Parameters
-
relax relaxation handler set global SCIP settings
Definition at line 319 of file relax.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPrelaxExec()
SCIP_RETCODE SCIPrelaxExec | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set, | ||
SCIP_TREE * | tree, | ||
SCIP_STAT * | stat, | ||
int | depth, | ||
SCIP_Real * | lowerbound, | ||
SCIP_RESULT * | result | ||
) |
calls execution method of relaxation handler
- Parameters
-
relax relaxation handler set global SCIP settings tree branch and bound tree stat dynamic problem statistics depth depth of current node lowerbound pointer to lower bound computed by the relaxation handler result pointer to store the result of the callback method
Definition at line 343 of file relax.c.
References SCIP_Relax::freq, SCIP_Relax::imprtime, SCIP_Relax::lastsolvednode, SCIP_Relax::naddedconss, SCIP_Relax::name, SCIP_Relax::ncalls, SCIP_Relax::ncutoffs, SCIP_Relax::nimprbounds, SCIP_Relax::nreduceddom, SCIP_Relax::nseparated, SCIP_Stat::ntotalnodes, NULL, SCIP_Relax::relaxclock, SCIP_Stat::relaxcount, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIP_SUCCESS, SCIP_SUSPENDED, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPinProbing(), SCIPnodeGetLowerbound(), SCIPrelaxMarkUnsolved(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsRelGT(), and SCIPtreeGetCurrentNode().
Referenced by SCIPsolveProbingRelax(), and solveNodeRelax().
◆ SCIPrelaxSetCopy()
void SCIPrelaxSetCopy | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXCOPY((*relaxcopy)) | |||
) |
set copy method of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 461 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxCopy().
◆ SCIPrelaxSetFree()
void SCIPrelaxSetFree | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXFREE((*relaxfree)) | |||
) |
set destructor of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 472 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxFree().
◆ SCIPrelaxSetInit()
void SCIPrelaxSetInit | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXINIT((*relaxinit)) | |||
) |
set initialization method of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 483 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxInit().
◆ SCIPrelaxSetExit()
void SCIPrelaxSetExit | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXEXIT((*relaxexit)) | |||
) |
set deinitialization method of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 494 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxExit().
◆ SCIPrelaxSetInitsol()
void SCIPrelaxSetInitsol | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXINITSOL((*relaxinitsol)) | |||
) |
set solving process initialization method of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 505 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxInitsol().
◆ SCIPrelaxSetExitsol()
void SCIPrelaxSetExitsol | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXEXITSOL((*relaxexitsol)) | |||
) |
set solving process deinitialization method of relaxation handler
- Parameters
-
relax relaxation handler
Definition at line 516 of file relax.c.
References NULL.
Referenced by SCIPsetRelaxExitsol().
◆ SCIPrelaxSetPriority()
void SCIPrelaxSetPriority | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of relaxation handler
- Parameters
-
relax relaxation handler set global SCIP settings priority new priority of the relaxation handler
Definition at line 557 of file relax.c.
References FALSE, NULL, and SCIP_Relax::priority.
Referenced by SCIPsetRelaxPriority().
◆ SCIPrelaxEnableOrDisableClocks()
void SCIPrelaxEnableOrDisableClocks | ( | SCIP_RELAX * | relax, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of relax
, depending on the value of the flag
- Parameters
-
relax the relaxation handler for which all clocks should be enabled or disabled enable should the clocks of the relaxation handler be enabled?
Definition at line 591 of file relax.c.
References NULL, SCIP_Relax::relaxclock, SCIPclockEnableOrDisable(), and SCIP_Relax::setuptime.
◆ SCIPrelaxIsSolved()
SCIP_Bool SCIPrelaxIsSolved | ( | SCIP_RELAX * | relax, |
SCIP_STAT * | stat | ||
) |
returns whether the relaxation was completely solved at the current node
- Parameters
-
relax relaxation handler stat dynamic problem statistics
Definition at line 693 of file relax.c.
References SCIP_Relax::lastsolvednode, SCIP_Stat::ntotalnodes, and NULL.
Referenced by updateLoopStatus().
◆ 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
-
relaxation global relaxation data blkmem block memory set global SCIP settings stat problem statistics data primal primal data tree branch and bound tree
Definition at line 719 of file relax.c.
References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_OKAY, and TRUE.
Referenced by prepareReoptimization(), and SCIPtransformProb().
◆ SCIPrelaxationFree()
SCIP_RETCODE SCIPrelaxationFree | ( | SCIP_RELAXATION ** | relaxation | ) |
frees global relaxation data
- Parameters
-
relaxation global relaxation data
Definition at line 747 of file relax.c.
References BMSfreeMemory, NULL, and SCIP_OKAY.
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
-
relaxation global relaxation data iszero are all values of the relaxation solution set to zero?
Definition at line 759 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
-
relaxation global relaxation data
Definition at line 770 of file relax.c.
References NULL, and SCIP_Relaxation::relaxsolzero.
Referenced by SCIPclearRelaxSolVals().
◆ SCIPrelaxationSetSolValid()
void SCIPrelaxationSetSolValid | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Bool | isvalid, | ||
SCIP_Bool | includeslp | ||
) |
sets the relaxsolvalid and includeslp flags in the relaxation data to the given values
- Parameters
-
relaxation global relaxation data isvalid is the stored solution valid? includeslp does the relaxator contain all cuts in the LP?
Definition at line 780 of file relax.c.
References NULL, SCIP_Relaxation::relaxsolincludeslp, and SCIP_Relaxation::relaxsolvalid.
Referenced by markRelaxsUnsolved(), SCIPmarkRelaxSolInvalid(), SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), SCIPtreeRestoreRelaxSol(), and solveNode().
◆ SCIPrelaxationIsSolValid()
SCIP_Bool SCIPrelaxationIsSolValid | ( | SCIP_RELAXATION * | relaxation | ) |
returns whether the global relaxation solution is valid
- Parameters
-
relaxation global relaxation data
Definition at line 793 of file relax.c.
References NULL, and SCIP_Relaxation::relaxsolvalid.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPcreateRelaxSol(), SCIPgetRelaxSolObj(), SCIPgetRelaxSolVal(), SCIPisRelaxSolValid(), SCIPlinkRelaxSol(), SCIPsolCreateRelaxSol(), SCIPsolLinkRelaxSol(), SCIPsolveCIP(), SCIPtreeStartProbing(), SCIPtreeStoreRelaxSol(), and solveNode().
◆ SCIPrelaxationIsLpIncludedForSol()
SCIP_Bool SCIPrelaxationIsLpIncludedForSol | ( | SCIP_RELAXATION * | relaxation | ) |
returns whether the global relaxation solution was computed by a relaxator which included all LP cuts
- Parameters
-
relaxation global relaxation data
Definition at line 803 of file relax.c.
References NULL, and SCIP_Relaxation::relaxsolincludeslp.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPsolveCIP(), SCIPtreeStoreRelaxSol(), and solveNode().
◆ SCIPrelaxationSetSolObj()
void SCIPrelaxationSetSolObj | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Real | obj | ||
) |
sets the objective value of the global relaxation solution
- Parameters
-
relaxation global relaxation data obj objective value
Definition at line 813 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
-
relaxation global relaxation data
Definition at line 824 of file relax.c.
References NULL, and SCIP_Relaxation::relaxsolobjval.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPgetRelaxSolObj(), SCIPsolLinkRelaxSol(), SCIPsolveCIP(), and solveNode().
◆ SCIPrelaxationSolObjAdd()
void SCIPrelaxationSolObjAdd | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Real | val | ||
) |
adds the given value to the global relaxation solution's objective value
- Parameters
-
relaxation global relaxation data val value to add to the objective value
Definition at line 834 of file relax.c.
References NULL, and SCIP_Relaxation::relaxsolobjval.
Referenced by SCIPvarSetRelaxSol().
◆ 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
-
relaxation global relaxation data set global SCIP settings var variable with changed objective coefficient oldobj old objective coefficient newobj new objective coefficient
Definition at line 845 of file relax.c.
References NULL, SCIP_Relaxation::relaxsolobjval, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetRelaxSol(), and SCIPvarGetStatus().
◆ SCIPrelaxationSetSolRelax()
void SCIPrelaxationSetSolRelax | ( | SCIP_RELAXATION * | relaxation, |
SCIP_RELAX * | relax | ||
) |
store the most recent relaxation handler relax
responsible for the solution
- Parameters
-
relaxation global relaxation data relax responsible relaxation handler, or NULL
Definition at line 865 of file relax.c.
References SCIP_Relaxation::lastsolrelax, and NULL.
Referenced by SCIPclearRelaxSolVals(), SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), and SCIPsetRelaxSolValsSol().
◆ SCIPrelaxationGetSolRelax()
SCIP_RELAX* SCIPrelaxationGetSolRelax | ( | SCIP_RELAXATION * | relaxation | ) |
returns the most recent relaxation handler responsible for the solution, or NULL if unspecified
- Parameters
-
relaxation global relaxation data
Definition at line 876 of file relax.c.
References SCIP_Relaxation::lastsolrelax, and NULL.
Referenced by SCIPsolCreateRelaxSol().