• Keine Ergebnisse gefunden

Data: RegionRi, actual node positionn, coordinate for next splitting hyperplanep.

dim←ndisc mod d;

/* Generate the new left and right nodes. */

5

nlef tR←Rlef t;

6

nrightR←Rright;

7

/* Generate entire bound set for both nodes left and right. */

8

/* Propagate actual known lower bounds to the successors. */

12

At this point only the determination, if regions overlap, remains. This we need in algorithm DynamicAppendNodes, at lines 10 and 11. The hard part derives from the fact that regions may

6.5. The Dynamic Segmentation Tree Chapter 6. Solving the Pricing Problem

overlap across the domainD.

If inDynamicAppendNodesat nodenwe split upnRinto the subregionsnleftRandnrightRby (c, d), both these subregions have to be tested if they contain the elements from the upper bound set ofn.

We check this by generating a regionRj for each element fromnUB, transform it into our domain and crop it toRj0 against the subspace enclosed by the respective subnode withR0j =Rj∩nleftR andR0j=Rj∩nrightR respectively. Then, we check ifR0j∩nleftR6=∅andRj∩nrightR6=∅. If the intersection is not empty for the left subnode, we addjto the left nodes upper bound set, the right bound set likewise. If Rj overlaps both left and right successors region, j is added to both up-per bound sets. We have to decide this only the elements ofUB, and not for all node differencesbi. In the static tree, we always know exactly, where our bi has to be inserted and expand the upper bound sets in the passing. In the dynamic version, we have to explicitly determine if an overlap occurs for each element in UB. As the subspaces defined bynR are always regular, but we newly generate regions Rj, j ∈ UB at each such bound set determination, the Rj may be negative. Thus we have to take into account negative parts ofRj, transform Rj into our domain and perform the overlap check on the transformed part.

We speed up the procedure by leaving out the crop part, and perform the check with adjusted intervals, w.r.t. the modulo transformation into D. The check is performed for each dimension.

We simply check for a dimension d, if the interval [R(j)min, R(j)max] (adjusted for negative regions) lies in the interval defined by the actual node subspace [nRmin, nRmax].

For regions crossing the domain border, two interval checks are performed separately for the di-mensions having the value<0. We perform one interval check for the regular part normally and one for the interval of the transformed negative part. Likewise, if Rj crosses the domain border in more dimensions. If no overlap occurs in one dimension, no overlap occurs for Rj and nR at all, and we can just break the loop which iterates the dimensionsd.

Figure 6.13a shows some example segmentation encoding the node subspaces RA, RB, RC, RD,RE. We list now the overlaps for regionsR1,R2,R3,R4, R5, derived fromb1,b2, b3,b4,b5. The overlaps for node subspaces and regions forbi found in this figure are:

• Node subspaceRA: The elements that overlap the subspace defined through this branch are the regions forb4, b5. The regionsR4, R5reach into subspaceRAacross the domain border.

The left branch counterpart node holds the subspace RB∪RC∪RD∪RE which overlaps with allRj. The upper bound at this node contains allbi.

• Node subspace RB: The subspace defined by this branch overlaps with regions for node differencesb2, b3, b4, b5. The left branch counterpart node hold subspaceRC∪RD∪REand overlaps with regions forb1, b2, b3, b5.

• Node subspaceRC: The subspace defined by this branch overlaps with regions forb2, b3, b5. Its right branch counterpart node holds subspace RD∪RE, which overlaps withb1, b5. The remaining segments work likewise.

Figure 6.13b shows an example of a possible next split. In the iteration before,b1was inserted, the bounds were generated for each node. The green node is an atomic leaf and needs not to be expanded further. Next element to be inserted isb3, determined to have the greatest dual value.

The region R2 is divided by the splitting hyperplane (red line) into R6 and R7. We regard the upper bound set atR2 which isb2, b3, b4, b5, For each element we decide if it overlapsR6 respective R7. The new upper bounds are then: R6UB ={b2, b3, b4, b5}sinceb3, b5“look into”R6 across the domain border. R7UB={b2, b4, b5}. Figure 6.14 illustrates the resulting segmentation tree.

6.5. The Dynamic Segmentation Tree Chapter 6. Solving the Pricing Problem

(b)Specific example of a possible next split.

Figure 6.13: Some cases of overlaps. In figure 6.13a, the case forb4 is interesting since it reaches into the node subspace R2 again across the domain border. Parts of subspaceb5 reach into even more node subspaces. When having big ˜δ such overlaps occur very often. All other cases are trivial. Figure 6.13b shows a specific example of a possible next split. The figure shows the segmentation after insertion ofb1. The region forb3 will be inserted next. The next split is drawn in red.

RA

Figure 6.14: Dynamic segmentation tree resulting from 6.13b.

6.5.2 Simulating DynamicInsertAndSearch- τ

The dynamic segmentation tree is again verified by simulating 1000 random value based iterations.

This test works the same as described in subsection 6.4.5 and uses random values to simulate pric-ing based on the set Tc. The only difference is that we do not build the segmentation tree in advance, but gradually in each simulated pricing/search iteration. We can reset the dynamic tree before each pricing simulation iteration, or let it grow gradually. In our tests, all simulation iter-ations succeeded, we found each timeτTcdynseg and the pricing in the dynamic segmentation tree thus was showed to work correctly.

6.6. Pricing Algorithms Chapter 6. Solving the Pricing Problem

6.6 Pricing Algorithms

Since the pricing procedure is generic, both the single and multi commodity commodity flow employ the same pricing algorithm. The algorithm StaticTreeSearch-τ, which determinesτ in a previously constructed static tree was presented in section 6.4.3 and is the basis for the static tree pricer. Thedynamic tree pricer employs the algorithmsDynamicInsertAndSearch-τ, DynamicInsertNode andDynamicAppendNodesfrom section 6.5. Additionally, we use both pric-ing algorithms to determine variables with negative Farkas coefficients.

Either algorithmStaticPriceror algorithm DynamicPriceris called asPricerAlgorithm in algo-rithm 5.1 from the previous chapter at line 10.

A pseudo code overview for theStaticPricer is listed in algorithm 6.8. The set of minutiae data pointsV and ˜δare assumed to be available as global variables. Input for each pricing itera-tion are the actual dual valuesuij for the template constraints andµj for node-label constraints, if these are employed by the model. The entire segmentation tree is built only at the first call (lines 1-2). After this, the pricer determines the lower bound set defining τ with the according procedure (line 3) and generates the new variable tnew (line 5), which is added in the end to the current LP after having returned it to the branch-and-price framework (line 6).

If we allow no variable duplicates, the algorithm marks the newly priced variable tnew, so that he pricer does not find the same variable again (line 4). When doing so, the algorithmStatic TreeSearch-τhas to be altered, so that it finds only unmarked result values.