• Keine Ergebnisse gefunden

A heuristic approach – ISPO-PingPong

Our exact solver ISPO-BAB, Algorithm9, which we presented in the preceding section is – as we will see in the next section – still too slow to satisfy real-world requirements.

For practical purposes we therefore developed the heuristic ISPO-PingPong. The basic idea of this approach is to perform size optimization and price optimization alternately until convergence. There is a crucial property of ISPO that makes this approach possi-ble. We call itreversible recourse. It is topic of the first subsection.

The main method of our heuristic ISPO-PingPong is presented in Subsection9.2.2.

In the following three subsections we will go more into detail. In Subsection9.2.3we describe the initial step of the heuristic – the determination of a set of maps “scenario to price trajectory”. We present the approach to handle the size optimization stage in Subsection9.2.4. In Subsection9.2.5 we go into the other part of the algorithm – the price optimization stage. We present computational results for our heuristic in Subsection9.2.6. Concluding, in Subsection9.2.7we will bring ISPO-PingPong into line with familiar approaches from literature.

9.2.1 Reversible recourse

Our problem has a special structure. We call itreversible recourse. This means: the independent second stage variables (in our case the price trajectories assigned to the different scenarios) can be interpreted asindependent first stagedecisions. The inde-pendent first stage variables and all deinde-pendent variables can then be seen as second stage variables. In our setting, fixing the independent decision variables of one stage does not even imply any restrictions to the feasible set of the independent variables in the other stage. Fixing a price trajectory to a scenario does not influence the feasibility of supply. This property can easily be observed in our Branch&Bound tree from the last Section, more precisely at the leaves which are related to an SLDP(WE). The constraints in the SLDP(WE) are for every leaf the same. Only the coefficients in the objective function differ.

9.2.2 The main algorithm

We outline our heuristic ISPO-PingPong in a top-down design. We describe the frame-work in Algorithm 15. After fixing a price trajectory to each scenario we alternate size and price optimization until the related objective function value of ISPO no longer increases. The particular parts are treated in the subsequent subsections.

9.2.3 Fixing price trajectories

At the beginning of Algorithm15we fix a price trajectory to each particular scenario.

There are different possibilities to do this. In order to start with a supposed good assignment for each scenarioeas a rule we solve the SLDP-CB({e→t}) for all valid price trajectoriestto optimality by Algorithm8and pick the price trajectory with the highest optimal objective function value.

We will present results for different settings in terms of fixing price trajectories in Subsection9.2.6.

Algorithm 15ISPO-PingPong

Require: complete data of an instance of ISPO Ensure:optimal supply policyx

1:for allscenarioseEdo

2: fix a price trajectory for each scenarioset of mapsWE 3:end for

4:setz=−∞

5:while true do

6: ISPO-SF(z): solve SLDP(WE) exactly or heuristicallyresulting supplyxwith expected revenue zSLDP(W E)

7: ifzSLDP(W E) =zthen

8: break

9: end if 10: x=x 11: z=zSLDP(W E)

12: ISPO-PO(x): for alleEsolve POPefor an initial stock according toxto optimalityupdated set of mapsWEwith expected revenuezPOP(x)

13: ifzPOP(x)=zthen

14: break

15: end if 16: z=zPOP(x)

17:end while

9.2.4 Solving the SLDP(W

E

)

To solve the SLDP(WE) within ISPO-PingPong we implemented an adapted version of the SFA heuristic from Chapter2.

We call this adapted version ISPO-SF, see Algorithm9.2.4. Scoring and fixing is done in the same way as in the SFA heuristic: At first we determine for each lot-type and branch the best-fitting multiplicity. Best fitting in that sense means that there is no other multiplicity for which for the considered branch and lot-type a higher expected revenue can be achieved . Starting from this, for each branch we determine the three locally best fitting lot-types and add a score of 100 to the best fitting lot-type, a score of 10 to the second best fitting lot-type and a score of 1 to the third best fitting lot-types.

With this we have implicitly assigned a score to each lot-type` ∈L, where most of the lot-types obtain the score zero. We can extend this scoring to the κ-subsets of Lby summing up the individual scores, so that we implicitly get an order of the

|L|

κ

many feasible lot-type combinations. With this we traverse theκ-subsets ofLin descending order and break up if a predefined number of subsets is reached, where ties are broken arbitrarily. For this purpose we apply an approach which we adopted from the original SFA heuristic. It makes it possible to traverse the “most promising” lot-types without explicitly generating all such subsets beforehand. In the corresponding search tree a node at Depthicorresponds to thei-th lot-type in a subset. Each node/lot-type with ordering j according to the scoring has only childnodes with ordering>

j, i.e. smaller or equal scores. Such we avoid to obtain permutations of the same subset of lot-types. At a leaf in depthκwe are given a completeκ-subset of lot-types.

Bounding in the tree is possible. The maximum possible overall score scoremax is given by the summed up single scores for theκfirst lot-types in the ordering. The minimum possible overall scorescoreminby the summed up single scores for theκ last lot-types. We perform depth-first-searches in our search tree for the overall scores scorecur = scoremax,scoremax−1, . . . ,scoremin until a predefined numbernrκof foundκ-subsets of lot-types is reached. Because in a branch of the tree the lot-types are ordered decreasingly according to their scores we obtain an upper boundubs for the overall score of all inducedκ-subsets by addingκminus depth times the score of the

current lot-type/node to the scores of the already fixed lot-types. Similarly we obtain a lower boundlbs: to the score of the fixed lot-types we add theκminus depth smallest occurring scores. Ifscorecur<lbsorscorecur>ubswe can prune the current branch of the search tree.

In the fixing step we assume that the applicable lot-types are restricted to the current κ-subset ofL. Now we differ from the original SFA heuristic as described in Chapter2.

In our implementation we solve the SLDP(WE) for the fixed lot-types directly via an MIP-solver – with a predefined solving time limit tb – and have not to perform an adjust step.

Notation 8(SLDP WE

for a subsetLˆ of lot-types). We consider a subsetLˆ ⊆Lof lot-types. We denote the SLDP WE

as formulated in Problem7restricted on the set Lˆof lot-types by SLDPLˆ WE

. Algorithm 16ISPO-SF

Require: complete data of an instance of ISPO

lot-type revenuesaˆe→tb,`,mfor allb,B,`LandmMand all mapsetfrom the setWE lower boundzSLDP(W E)for the objective value

Ensure:supply in terms of lots and corresponding expected revenuezSLDP(W E) 1:initscore(`) = 0∀`L

2:for allbBdo 3: for all`Ldo

4: determine the revenue maximizing multiplicitym(`, b) = arg maxm∈Maˆe→tb,`,m 5: end for

9:whilea predefined numbernrκof passed throughκ-subsets of lot-types is not reacheddo 10: consider the not yet consideredκ−subsetLˆwith the highest overall scoreP

`∈ˆLscore(`)

Our approach for solving the price optimization stage is outlined in Algorithm 17, ISPO-PO. We use Algorithm3– POP-DYN – to solve the Price Optimization Problem for each particular scenario from the setEto optimality. From the the expected revenue over all these scenarios we have to subtract the corresponding lot-opening costs and the acquisition price for the supplied items. We take over these costs from the preceding solution of the size optimization stage.

9.2.6 Computational results

We apply ISPO-PingPong also to all instances of the test setI6test. We setnrκ= 100 andtb= 60seconds. We perform four different ways of fixing the price trajectories to

Algorithm 17ISPO-PO

Require: complete data of an instance for ISPO supplyxin terms of lots

Ensure:optimal price trajectory for each scenario according tox

1:compute overall acquisition, lot-opening and handling costscfor the given supplyx.

2:setz=c

3:for allscenarioseEdo

4: perform price optimization, Algorithm3, POP-DYN according to the supplyxrevenuea(e) 5: z=z+ Prob(e)·a(e)

6:end for 7:returnz

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6

gap

instance

best random first worst

Figure 9.5: ISPO-PingPong – goodness of solutions

the particular scenarios at the beginning of the algorithm: For each scenarioewe fix the price trajectoryt

1. that yields the highest optimal objective function value of the related single-supply-relaxation SLDP-CB({e→t}), “best” bound,

2. randomly,

3. without mark-downs during the real sales process (first in the depth-first gener-ation of the price trajectories, see the enumergener-ation tree in Section4.2), “first”

bound,

4. that yields the worst optimal objective function value of the SLDP-CB({e→t}),

“worst” bound.

We first take a look at the optimality gaps that are depicted in Figure9.5.

Overall we get averagely an optimality gap of 0.078% for fixing the price trajec-tories with the best bounds, a gap of 0,055% for fixing the price trajectrajec-tories randomly and a gap of 0,074% for choosing the first price trajectory. For fixing the worst price trajectory the resulting gap is 0.056%. That means in these cases we could achieve better results by starting with supposed “not promising” price trajectories. But actu-ally all gaps are tiny enough to justify each of the outlined setting for fixing the price trajectories.

With the choice of supposed “better” trajectories we soon arrive at a suboptimal local maximum. This is approved by the results depicted in Figure9.6. Already at first glance we can see that the strategy with the smallest gap – the randomly and worst choice of the price trajectories – needs the most iterations in all cases, while fixing the best trajectory yields a smaller number of iterations. We always counted a half iteration

1 1.5 2 2.5 3

iterations

instance

best random first worst

Figure 9.6: ISPO-PingPong – number of iterations

0 5 10 15 20 25 30 35 40

time(s)

instance

best random first worst

Figure 9.7: ISPO-PingPong – runtime

for performing size and price optimization. Averagely we get 1.59 iterations for fixing the best trajectories, 2.29 iterations for fixing the trajectories randomly or worst and 1.69 iterations for the price trajectory without a mark-down.

This behavior is also recognizable in the runtime, see Figure9.3: averagely 6.85 seconds for setting 1, 11.86 seconds for setting 2, 7.84 seconds for setting 3 and 8.70 seconds for the last setting.

Results for other choices ofnrκandtbare depicted in AppendixA.

9.2.7 Similarities to familiar approaches

At this point we want to remark that the main aspect of ISPO-PingPong – alternating size and price optimization until convergence – can also be connected to some general approaches in literature. The principle of our heuristic is similar to the principle of evolutionary algorithms, see for example [Mie99]. The idea of evolutionary algorithms is to assign a so-calledfitness-function to the solutions of the problem and iteratively in aselection-step to combine the best-solutions to get solutions with higherfitness. This is done until convergence. In our case thefitnessof the supply in terms of lot-types is given by the expected revenue the price optimization stage yields. By combining the local optimal supply with the local optimal mark-down strategy we possibly get a supply which results in higher revenue.

One could also connect the principle of ISPO-PingPong with the principle of bilevel programming. A bilevel program consists of an upper-level and a lower-level

0

Figure 9.8: ISPO-PingPong – Progress of gaps

tion problem. The lower-level problem considers a variablexas a parameter to com-pute the optimal value of a variableywhile the upper-level problem obtains the optimal value ofxby using the value ofycomputed in the lower-level problem [CCMGB10].

In our case – by virtue of reversible recourse – we can see the size optimization stage and also the price optimization stage as both, as upper-level and as lower-level sub-problems.