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().