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 is given by where is the number of variables, and are the variable coefficient and bounds, respectively. With the same notation, the variance is given by , with the variance being for integer variables and for continuous variables.
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(). |