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/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.
|
static |
method to call, when the priority of a relaxation handler was changed
Definition at line 57 of file relax.c.
References SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetRelaxPriority().
SCIP_RETCODE SCIPrelaxCopyInclude | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
copies the given relaxation handler to a new scip
relax | relaxation handler |
set | SCIP_SET of SCIP to copy to |
Definition at line 71 of file relax.c.
References SCIP_CALL, SCIP_OKAY, SCIPrelaxGetName(), and SCIPsetDebugMsg.
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
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 89 of file relax.c.
References BMSallocMemory, BMSduplicateMemoryArray, FALSE, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), and SCIPsnprintf().
Referenced by SCIPincludeRelax(), and SCIPincludeRelaxBasic().
SCIP_RETCODE SCIPrelaxFree | ( | SCIP_RELAX ** | relax, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of relaxation handler
relax | pointer to relaxation handler data structure |
set | global SCIP settings |
Definition at line 151 of file relax.c.
References BMSfreeMemory, BMSfreeMemoryArray, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
SCIP_RETCODE SCIPrelaxInit | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
initializes relaxation handler
relax | relaxation handler |
set | global SCIP settings |
Definition at line 177 of file relax.c.
References SCIP_Relax::initialized, SCIP_Relax::lastsolvednode, SCIP_Relax::name, SCIP_Relax::ncalls, SCIP_Relax::relaxclock, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Relax::setuptime, and TRUE.
Referenced by SCIPsetSetPriorityNlpi().
SCIP_RETCODE SCIPrelaxExit | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
calls exit method of relaxation handler
relax | relaxation handler |
set | global SCIP settings |
Definition at line 215 of file relax.c.
References FALSE, SCIP_Relax::initialized, SCIP_Relax::name, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Relax::setuptime.
Referenced by SCIPsetInitPlugins().
SCIP_RETCODE SCIPrelaxInitsol | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
informs relaxation handler that the branch and bound process is being started
relax | relaxation handler |
set | global SCIP settings |
Definition at line 245 of file relax.c.
References SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.
SCIP_RETCODE SCIPrelaxExitsol | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set | ||
) |
informs relaxation handler that the branch and bound process data is being freed
relax | relaxation handler |
set | global SCIP settings |
Definition at line 269 of file relax.c.
References SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Relax::setuptime.
Referenced by SCIPsetInitsolPlugins().
SCIP_RETCODE SCIPrelaxExec | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
int | depth, | ||
SCIP_Real * | lowerbound, | ||
SCIP_RESULT * | result | ||
) |
calls execution method of relaxation handler
relax | relaxation handler |
set | global SCIP settings |
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 293 of file relax.c.
References SCIP_Relax::freq, SCIP_Relax::lastsolvednode, SCIP_Relax::name, SCIP_Relax::ncalls, SCIP_Stat::ntotalnodes, 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().
void SCIPrelaxSetCopy | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXCOPY((*relaxcopy)) | |||
) |
set copy method of relaxation handler
relax | relaxation handler |
Definition at line 378 of file relax.c.
Referenced by SCIPsetRelaxCopy().
void SCIPrelaxSetFree | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXFREE((*relaxfree)) | |||
) |
set destructor of relaxation handler
relax | relaxation handler |
Definition at line 389 of file relax.c.
Referenced by SCIPsetRelaxFree().
void SCIPrelaxSetInit | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXINIT((*relaxinit)) | |||
) |
set initialization method of relaxation handler
relax | relaxation handler |
Definition at line 400 of file relax.c.
Referenced by SCIPsetRelaxInit().
void SCIPrelaxSetExit | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXEXIT((*relaxexit)) | |||
) |
set deinitialization method of relaxation handler
relax | relaxation handler |
Definition at line 411 of file relax.c.
Referenced by SCIPsetRelaxExit().
void SCIPrelaxSetInitsol | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXINITSOL((*relaxinitsol)) | |||
) |
set solving process initialization method of relaxation handler
relax | relaxation handler |
Definition at line 422 of file relax.c.
Referenced by SCIPsetRelaxInitsol().
void SCIPrelaxSetExitsol | ( | SCIP_RELAX * | relax, |
SCIP_DECL_RELAXEXITSOL((*relaxexitsol)) | |||
) |
set solving process deinitialization method of relaxation handler
relax | relaxation handler |
Definition at line 433 of file relax.c.
Referenced by SCIPsetRelaxExitsol().
void SCIPrelaxSetPriority | ( | SCIP_RELAX * | relax, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of relaxation handler
relax | relaxation handler |
set | global SCIP settings |
priority | new priority of the relaxation handler |
Definition at line 474 of file relax.c.
References FALSE, and SCIP_Relax::priority.
Referenced by SCIPsetRelaxPriority().
void SCIPrelaxEnableOrDisableClocks | ( | SCIP_RELAX * | relax, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of relax
, depending on the value of the flag
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 508 of file relax.c.
References SCIP_Relax::relaxclock, SCIPclockEnableOrDisable(), and SCIP_Relax::setuptime.
SCIP_Bool SCIPrelaxIsSolved | ( | SCIP_RELAX * | relax, |
SCIP_STAT * | stat | ||
) |
returns whether the relaxation was completely solved at the current node
relax | relaxation handler |
stat | dynamic problem statistics |
Definition at line 550 of file relax.c.
References SCIP_Relax::lastsolvednode, and SCIP_Stat::ntotalnodes.
Referenced by updateLoopStatus().
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
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 576 of file relax.c.
References BMSallocMemory, FALSE, SCIP_ALLOC, SCIP_OKAY, and TRUE.
Referenced by prepareReoptimization(), and SCIPtransformProb().
SCIP_RETCODE SCIPrelaxationFree | ( | SCIP_RELAXATION ** | relaxation | ) |
frees global relaxation data
relaxation | global relaxation data |
Definition at line 603 of file relax.c.
References BMSfreeMemory, and SCIP_OKAY.
Referenced by freeReoptSolve(), and freeTransform().
void SCIPrelaxationSetSolZero | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Bool | iszero | ||
) |
sets the relaxsolzero flag in the relaxation data to the given value
relaxation | global relaxation data |
iszero | are all values of the relaxation solution set to zero? |
Definition at line 615 of file relax.c.
References SCIP_Relaxation::relaxsolzero.
Referenced by SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), and SCIPsetRelaxSolValsSol().
SCIP_Bool SCIPrelaxationIsSolZero | ( | SCIP_RELAXATION * | relaxation | ) |
returns whether the global relaxation solution is cleared and all values are set to zero
relaxation | global relaxation data |
Definition at line 626 of file relax.c.
References SCIP_Relaxation::relaxsolzero.
Referenced by SCIPclearRelaxSolVals().
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
relaxation | global relaxation data |
isvalid | is the stored solution valid? |
includeslp | does the relaxator contain all cuts in the LP? |
Definition at line 636 of file relax.c.
References SCIP_Relaxation::relaxsolincludeslp, and SCIP_Relaxation::relaxsolvalid.
Referenced by markRelaxsUnsolved(), SCIPmarkRelaxSolInvalid(), SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), SCIPtreeRestoreRelaxSol(), and solveNode().
SCIP_Bool SCIPrelaxationIsSolValid | ( | SCIP_RELAXATION * | relaxation | ) |
returns whether the global relaxation solution is valid
relaxation | global relaxation data |
Definition at line 649 of file relax.c.
References SCIP_Relaxation::relaxsolvalid.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPcreateRelaxSol(), SCIPgetRelaxSolObj(), SCIPgetRelaxSolVal(), SCIPisRelaxSolValid(), SCIPlinkRelaxSol(), SCIPsolCreateRelaxSol(), SCIPsolLinkRelaxSol(), SCIPsolveCIP(), SCIPtreeStartProbing(), SCIPtreeStoreRelaxSol(), and solveNode().
SCIP_Bool SCIPrelaxationIsLpIncludedForSol | ( | SCIP_RELAXATION * | relaxation | ) |
returns whether the global relaxation solution was computed by a relaxator which included all LP cuts
relaxation | global relaxation data |
Definition at line 659 of file relax.c.
References SCIP_Relaxation::relaxsolincludeslp.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPsolveCIP(), SCIPtreeStoreRelaxSol(), and solveNode().
void SCIPrelaxationSetSolObj | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Real | obj | ||
) |
sets the objective value of the global relaxation solution
relaxation | global relaxation data |
obj | objective value |
Definition at line 669 of file relax.c.
References SCIP_Relaxation::relaxsolobjval.
Referenced by SCIPclearRelaxSolVals(), and SCIPsetRelaxSolValsSol().
SCIP_Real SCIPrelaxationGetSolObj | ( | SCIP_RELAXATION * | relaxation | ) |
returns the objective value of the global relaxation solution w.r.t. the transformed problem
relaxation | global relaxation data |
Definition at line 680 of file relax.c.
References SCIP_Relaxation::relaxsolobjval.
Referenced by addCurrentSolution(), enforceConstraints(), SCIPgetRelaxSolObj(), SCIPsolLinkRelaxSol(), SCIPsolveCIP(), and solveNode().
void SCIPrelaxationSolObjAdd | ( | SCIP_RELAXATION * | relaxation, |
SCIP_Real | val | ||
) |
adds the given value to the global relaxation solution's objective value
relaxation | global relaxation data |
val | value to add to the objective value |
Definition at line 690 of file relax.c.
References SCIP_Relaxation::relaxsolobjval.
Referenced by SCIPvarSetRelaxSol().
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
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 701 of file relax.c.
References SCIP_Relaxation::relaxsolobjval, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetRelaxSol(), and SCIPvarGetStatus().