Detailed DescriptionDiving heuristic that chooses fixings w.r.t. changes in the solution density after Pryor and Chinneck. Definition in file heur_distributiondiving.c. #include <assert.h> #include <string.h> #include "scip/heur_distributiondiving.h" #include "scip/branch_distribution.h" #include "pub_dive.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 30 of file heur_distributiondiving.c.
Definition at line 31 of file heur_distributiondiving.c.
Definition at line 32 of file heur_distributiondiving.c.
Definition at line 33 of file heur_distributiondiving.c.
Definition at line 34 of file heur_distributiondiving.c.
Definition at line 35 of file heur_distributiondiving.c.
Definition at line 36 of file heur_distributiondiving.c.
Definition at line 37 of file heur_distributiondiving.c.
does the heuristic use a secondary SCIP instance? Definition at line 38 of file heur_distributiondiving.c.
the event type to be handled by this event handler Definition at line 39 of file heur_distributiondiving.c. Referenced by heurdataEnsureArraySize(), and heurdataFreeArrays().
Definition at line 40 of file heur_distributiondiving.c.
bit mask that represents all supported dive types Definition at line 41 of file heur_distributiondiving.c.
Definition at line 43 of file heur_distributiondiving.c. Referenced by calcBranchScore(), rowCalculateGauss(), and varProcessBoundChanges().
minimal relative depth to start diving Definition at line 48 of file heur_distributiondiving.c.
maximal relative depth to start diving Definition at line 49 of file heur_distributiondiving.c.
maximal fraction of diving LP iterations compared to node LP iterations Definition at line 50 of file heur_distributiondiving.c.
additional number of allowed LP iterations Definition at line 51 of file heur_distributiondiving.c.
maximal quotient (curlowerbound - lowerbound)/(cutoffbound - lowerbound) where diving is performed (0.0: no limit) Definition at line 52 of file heur_distributiondiving.c.
maximal quotient (curlowerbound - lowerbound)/(avglowerbound - lowerbound) where diving is performed (0.0: no limit) Definition at line 55 of file heur_distributiondiving.c.
maximal UBQUOT when no solution was found yet (0.0: no limit) Definition at line 58 of file heur_distributiondiving.c.
maximal AVGQUOT when no solution was found yet (0.0: no limit) Definition at line 59 of file heur_distributiondiving.c.
use one level of backtracking if infeasibility is encountered? Definition at line 60 of file heur_distributiondiving.c.
percentage of immediate domain changes during probing to trigger LP resolve Definition at line 61 of file heur_distributiondiving.c.
LP solve frequency for diving heuristics Definition at line 62 of file heur_distributiondiving.c.
should only LP branching candidates be considered instead of the slower but more general constraint handler diving variable selection? Definition at line 63 of file heur_distributiondiving.c.
the score;largest 'd'ifference, 'l'owest cumulative probability,'h'ighest c.p., 'v'otes lowest c.p., votes highest c.p.('w'), 'r'evolving Definition at line 67 of file heur_distributiondiving.c.
Definition at line 70 of file heur_distributiondiving.c.
default scoring parameter to guide the diving Definition at line 71 of file heur_distributiondiving.c. Function Documentation
ensure that maxindex + 1 rows can be represented in data arrays; memory gets reallocated with 10% extra space to save some time for future allocations
Definition at line 109 of file heur_distributiondiving.c. References EVENT_DISTRIBUTION, heurdataUpdateCurrentBounds(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPallocBufferArray, SCIPcatchVarEvent(), SCIPfeasCeil(), SCIPgetNVars(), SCIPgetStage(), SCIPgetVars(), SCIPreallocBufferArray, SCIPvarGetProbindex(), and SCIPvarIsActive(). Referenced by calcBranchScore(), and varProcessBoundChanges().
update the variables current lower and upper bound
Definition at line 198 of file heur_distributiondiving.c. References NULL, rowCalculateGauss(), SCIP_Real, SCIPisFeasLE(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), and SCIPvarGetUbLocal(). Referenced by heurdataEnsureArraySize(), rowCalculateGauss(), and varProcessBoundChanges().
calculates the initial mean and variance of the row activity normal distribution. The mean value
Definition at line 231 of file heur_distributiondiving.c. References calcBranchScore(), heurdataUpdateCurrentBounds(), NULL, SCIP_INVALID, SCIP_Real, SCIPcolGetVar(), SCIPdebug, SCIPdebugMessage, SCIPisFeasLE(), SCIPisFeasNegative(), SCIPisInfinity(), SCIPprintRow(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetVals(), SCIPvarCalcDistributionParameters(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbLocal(), and SQUARED. Referenced by calcBranchScore(), and heurdataUpdateCurrentBounds().
calculate the branching score of a variable, depending on the chosen score parameter
Definition at line 344 of file heur_distributiondiving.c. References FALSE, heurdataEnsureArraySize(), heurdataFreeArrays(), MAX, NULL, rowCalculateGauss(), SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPcolGetNNonz(), SCIPcolGetRows(), SCIPcolGetVals(), SCIPdebugMessage, SCIPfeasCeil(), SCIPfeasFloor(), SCIPgetRowLPFeasibility(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisNegative(), SCIPisSumPositive(), SCIProwCalcProbability(), SCIProwGetIndex(), SCIProwGetName(), SCIPupdateDistributionScore(), SCIPvarCalcDistributionParameters(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), and SQUARED. Referenced by rowCalculateGauss().
free heuristic data
Definition at line 547 of file heur_distributiondiving.c. References EVENT_DISTRIBUTION, heurdataAddBoundChangeVar(), NULL, SCIP_CALL, SCIP_OKAY, SCIPdropVarEvent(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVars(), and SCIPvarGetProbindex(). Referenced by calcBranchScore().
add variable to the bound change event queue; skipped if variable is already in there, or if variable has no row currently watched
Definition at line 601 of file heur_distributiondiving.c. References heurdataPopBoundChangeVar(), NULL, SCIP_INVALID, and SCIPvarGetProbindex(). Referenced by heurdataFreeArrays().
returns the next unprocessed variable (last in, first out) with pending bound changes, or NULL
Definition at line 647 of file heur_distributiondiving.c. References NULL, SCIPvarGetProbindex(), and varProcessBoundChanges(). Referenced by heurdataAddBoundChangeVar().
process a variable from the queue of changed variables
Definition at line 677 of file heur_distributiondiving.c. References heurdataEnsureArraySize(), heurdataUpdateCurrentBounds(), MAX, NULL, SCIP_CALL, SCIP_DECL_EVENTFREE(), SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPcolGetNNonz(), SCIPcolGetRows(), SCIPcolGetVals(), SCIPinProbing(), SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisInfinity(), SCIProwGetIndex(), SCIPvarCalcDistributionParameters(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbLocal(), and SQUARED. Referenced by heurdataPopBoundChangeVar().
destructor of event handler to free user data (called when SCIP is exiting) Definition at line 801 of file heur_distributiondiving.c. Referenced by varProcessBoundChanges().
copy method for primal heuristic plugins (called when SCIP copies plugins) Definition at line 820 of file heur_distributiondiving.c.
destructor of primal heuristic to free user data (called when SCIP is exiting) Definition at line 834 of file heur_distributiondiving.c.
initialization method of primal heuristic (called after problem was transformed) Definition at line 854 of file heur_distributiondiving.c.
deinitialization method of primal heuristic (called before transformed problem is freed) Definition at line 874 of file heur_distributiondiving.c.
scoring callback for distribution diving. best candidate maximizes the distribution score Definition at line 893 of file heur_distributiondiving.c.
execution method of primal heuristic Definition at line 964 of file heur_distributiondiving.c.
event execution method of distribution branching which handles bound change events of variables Definition at line 1010 of file heur_distributiondiving.c.
creates the distributiondiving heuristic and includes it in SCIP
Definition at line 1034 of file heur_distributiondiving.c. Referenced by SCIPincludeDefaultPlugins(). |