1 / 11

Augmenting COIN/Sbb with a Variety of Node Selection Strategies

Gabrielle Grun:

nerys
Télécharger la présentation

Augmenting COIN/Sbb with a Variety of Node Selection Strategies

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gabrielle Grun: Initially, as a part of my Ph.D. research, I attempted to implement the gamut of node selection strategies in the commercial CPLEX (it is too inflexible and the critical parts of the code are inaccessible), the open source SYMPHONY (it is not as current and as widely used as COIN) and COIN/BCP. Prior to working with COIN, I had no experience with C++. The documentation for using and compiling BCP was inaccurate and out-of-date. It was very frustrating just getting the unaltered BCP code to compile in the CSSNet environment. In addition, BCP is merely a framework, not an actual branch and bound code. I joined the coin-announce, coin-discuss, etc. mail-lists on November 15th, 2002. When I came across the announcement of the launching of a branch and bound code which is less complicated than BCP, namely Sbb, on January 7th, 2003, I was quite excited. The coding contest was mentioned in the same coin-announce digest, and when I found out that the modifications that I intended to make to Sbb qualified as a contest submission, I decided to work towards entering the contest. Even with Sbb, there was a paucity of documentation, and there were incompatibilities with the computing environment at SFU. However, I received some assistance with the technical difficulties from the COIN-OR community---John Forrest and (Laszlo Ladanyi. I Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca

  2. Node Selection Strategies (1) Gabrielle Grun: DFS and breadth use the depth method/field of the SbbNode class to access the depth of a node. BFS uses the objectiveValue method/field to defined in SbbNode.hpp to assess the objective function value of a mode. Hereafter, each technique will be followed by an ordered pair representing the name of the class in SbbCompareActual.hpp for all strategies already included in Sbb (excluding user) and SbbCimpareUser.hpp for all user-defined strategies and its value in enum comparisonStrategies_t. • Note an * signifies that the node selection technique was already present in the unaltered Sbb (simple branch and bound) developed by John Forrest. • Each strategy is implemented as a class with a function test that returns true if given two nodes, x and y, y is preferable and false otherwise. • Static techniques • DFS * (implemented as the SbbCompareDepth class in SbbCompareActual.hpp)—select as dfs in enum comparisonStrategies_t defined in SbbEnum.hpp; advantageous as int feasible solutions are usually found deeper in the search tree

  3. Node Selection Strategies (2) Gabrielle Grun: • BFS * (SbbCompareObjective, bfs) ; minimizes superfluous nodes • Random choice (SbbCmpareRandom, randomChoice); to compare with more intelligent choices • Breadth (SbbCmpareBreadth, breadth)

  4. Node Selection Strategies (3) Gabrielle Grun: An extra field was added to the SbbNode class—estimates, a map of enum estimates_t (an enumeration type representing all estimate strategies, although the map is only utilized for rnumUnsatisfiedMod, sumUnsatisfiedMod, sumUnsatisfied, AVVInfPart, AVVIntPart and the pseudocost estimates) to double. The values for estimates are assigned in the choseBranch method of SbbNode.cpp (where numberUnsatisfied is also assigned a value). The values for numUnsatisfiedMod, sumUnsatisfiedMod, ssumUnsatisfied, AVVInfPart, and AVVIntPart are computed with the help of the getDistanceAndAllowableVariableValues method (adapted from the unfeasibility method) for both SbbClique and SbbSimpleInteger in SbbBranchActual.cpp. At the time of the contest, there was only one choice for the sum of integer infeasibilities. In its functioning, it was like the current sumUmsatisfiedMod but it was referred to as sumUnsatisfied. Note that while the numberUnsatisfied field originally existed in the SbbNode class, it did not form the basis of its own node selection strategy. • Non-objective function value estimates---metrics intended to lead to good int sols • Number of integer infeasibilities • (SbbCmpareOriNumUnsatisfied, oriNumUnsatisfied) • (SbbCmpareNumUnsatisfiedMod, numUnsatisfiedMod); differs from oriNumUnsatisfied in the computation for cliques (for simple integers, the computation is the same); ;each member variable of a clique is considered individually • Sum of integer infeasibilities • (SbbCmpareSumUnsatisfied, sumUnsatisfied) • sumUnsatisfiedMod is similar to numUnsatisfiedMod

  5. Node Selection Strategies (4) • The ratio of the sum of integer infeasibilities to the number of integer infeasibilities (SbbCompareRatioSumToNumUnsatisfiedMod, ratioSumToNumUnsatisfiedMod) • The weighted addition of the sum of integer infeasibilities to the number of integer infeasibilities (SbbCompareWeightedSumToNumUnsatisfiedMod, weightedSumToNumUnsatisfiedMod) • Minimum allowable variable values (SbbCompareAllowableVariableValues, AVVInfPart or AVVIntPart)

  6. Node Selection Strategies (5) Gabrielle Grun: The heuristic estimate uses the guessedObjectiveValue field in the SbbNode class which is assigned in SbbModel.cpp making use of the SbbHeuristic class. The computation of the projection estimates in the computeValue method of the SbbObjEstimate class of the SbbCompareUser.hpp file utilizes the objective function value and the sum (or number) of integer infeasibilities of the node and the root node as well as the best int solution so far (the method takes two arguments, a pointier to a SbbNode and a pointer to a SbbModel). • Direct objective function value estimates---the best objective function value from a node and its descendants given integrality • Heuristic estimate * (SbbCompareEstimate, heuristicEstimate) • Best projection (SbbCompareProE, ProE) • Best projection using the number of integer infeasibilities instead of the sum (SbbCompareProNumE, ProNumE)

  7. Node Selection Strategies (6) Gabrielle Grun: The pseudocost estimates were not fully implemented at the time of the contest. The computation of the standard pseudocost estimate in SbbNode.cpp is aided bib the computeDownPseudo and computeUpPseudo methods (the calculation of the midfield pseudocost estimates is supported by the setDownPseudo, setUpPseudo and setRandPseudo method) in SbbBranchActual.cpp for both cliques and simple integers. Note that for cliques, there was a choice to treat the member variables as a group or indistinctly. Since all the integer variables are already regarded as a group wig\th the altered pseudocost estimates, the variables in a clique are dealt with separately for the standard psuidupckost estimate. • Pseudocost estimates • Standard pseudocost estimate (SbbComparePseudoE, PseudoE) • Altered pseudocost estimate taking the average (minimum or maximum) of objective value differences caused by rounding of integer variables as a group (SbbCompareDiffPseudoAver(Min or Max)E, DiffPseudoAver(Min or Max)E )

  8. Node Selection Strategies (7) Gabrielle Grun: A norm estimate makes use of a direct objective function value estimate, so the type of this estimate has to be specified. The following files alone have been modified or added to COIN/Sbb: SbbEnum.hpp, StringConv.h, SbbBranchActual.cpp, SbbBranchActual.hpp, SbbBranchBase.cpp, SbbBranchBase.hpp, SbbModel.cpp, SbbModel.hpp, SbbNode.cpp, SbbNode.hpp, (SbbMessage.hpp after the contest submission) sample2.cpp, runtimes, and Makefile (Makefile.sample2). The following fields were added to the SbbModel class: number of infeasibilities at continuous modified for cliques= int continuousInfeasibilitiesMod_, the type of objective based estimate for a norm estimate= enum objEstimate_t objEstimateForNorm_, sum of infeasibilities at continuous= double ontinuousSumInfeasibilities, modified sum of infeasibilities at continuous (after the contest)= double ontinuousSumInfeasibilitiesMod, number of integer nodes= int umberIntegerNodes_, number of times upper bound (best int sol) changed= int timesUpperBoundChanged_, optimality gap (after the contest)= double opt Gap_. • Indirect objective function value estimates • Norm estimate (SbbCompareNormE, NormE) • Second norm estimate (SbbCompareNorm2E, Norm2E) • Third norm estimate (SbbCompareNorm3E, Norm3E) • Alternate norm estimate (SbbCompareAltNormE, AltNormE) • Second alternate norm estimate (SbbCompareAltNorm2E, AltNorm2E) • Third alternate norm estimate (SbbCompareAltNorm3E, AltNorm3E)

  9. Node Selection Strategies (8) • Multi-phase strategies---find good int sols in the first phase, and in the next phases, prove that no better solutions exist • Default * (SbbCompareDefault, defaultWay); before first integer solution, SbbCompareDepth is used, afterward a modified ProNumE with 98% of the cost of integrality (not 100%) • User * (SbbCompareUser, user); before first int sol or rounded sol, choose by numberUnsatisfied ((if equal, decide by depth), after 1 to 5 int sols, modified ProNumE as above, more than 5 int sols, BFS • User using sum of integer infeasibilities instead of the infeasibility count (SbbCompareUserSumUnsatisfied, sumUnsatisfied)

  10. Future Work (1) Gabrielle Grun: Diving occurs when one of the two children resulting from branching is selected rather than adding the children to the active list and selecting a mode from the candidate list. Advantages: into feasible solutions are usually deeper in tree and minimal context switching, • Enhancing Sbb with a full spectrum of diving technique • compare the performance of the different diving strategies to determine which approach is best under what conditions • Applying machine learning to chose the right node selection method: • Within a problem instance • Saaty’s Theory of Hierarchies and Eigenvectors analysis for decision-making using raw performance data as preferences

  11. Future Work (2) • Within a problem class • What are the problem classes and feature sets? • First approximation, use classification packages like SVM, SNoW, TextBooster, C5.0 • Clustering with a package like CLUTO • Follow Target Analysis template

More Related