Top Banner
10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University [email protected] 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
11

10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University [email protected] Gabrielle Grun:

Jan 03, 2016

Download

Documents

Felix Knight
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

1

Augmenting COIN/Sbb with a Variety of Node Selection

StrategiesGabrielle Assunta Grün

Simon Fraser University

[email protected]

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

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

Page 2: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

7

Node Selection Strategies (1)

• 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

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.

 

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.

 

Page 3: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

8

Node Selection Strategies (2)

– BFS * (SbbCompareObjective, bfs) ; minimizes superfluous nodes

– Random choice (SbbCmpareRandom, randomChoice); to compare with more intelligent choices

– Breadth (SbbCmpareBreadth, breadth)

Gabrielle Grun:

 

 

Gabrielle Grun:

 

 

Page 4: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

9

Node Selection Strategies (3)

• 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

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.

 

 

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.

 

 

Page 5: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

10

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)

Page 6: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

11

Node Selection Strategies (5)

• 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)

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

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

Page 7: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

12

Node Selection Strategies (6)

– 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 )

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.

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.

Page 8: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

13

Node Selection Strategies (7)

• 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)

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_.

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_.

Page 9: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

14

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)

Page 10: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

15

Future Work (1)

• 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

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,

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,

Page 11: 10/19/03 1 Augmenting COIN/Sbb with a Variety of Node Selection Strategies Gabrielle Assunta Grün Simon Fraser University grun@cs.sfu.ca Gabrielle Grun:

10/19/03

16

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