• No results found

Inventory control with demand substitution Stefan Kuipers

N/A
N/A
Protected

Academic year: 2021

Share "Inventory control with demand substitution Stefan Kuipers"

Copied!
29
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Inventory control with demand substitution

Stefan Kuipers

Under supervision of prof. dr. R.H. Teunter

1 July 2019

Abstract

(2)

1

Introduction

The original Economic Order Quantity (EOQ) model was already developed more than 100 years ago by Ford W. Harris. However, there are still some directions left in which the model can be extended. In this thesis, the model will be extended to include two products and the possibility of substitution between the products. Specifically, we will look into the case that both products have equivalent holding costs and setup costs, but batches of both products are allowed to arrive at different times. This situation can occur at supermarkets or other shops that sell different brands of the same type of product. In case that one of the products is out of stock, customers will often buy a product of another brand. However, they do not always like to buy another brand, and we will take that into account by either adding a penalty cost per product substituted or adding a probability that the customer leaves and a corresponding lost sale cost. Another situation, as described in the paper of Zvi Drezner et al.[1] is that two different products can be remade into eachother for a fixed transfer cost per product substituted. This is equivalent to the situation with fixed penalty cost per product, so the model can be used for both situations. Since the model is an extension of the basic EOQ model, it will be a deterministic model with constant demand. As demand is almost never constant in reality, the model will not describe everything perfectly. However, at the very least, the model will give some good insights for comparable situations in real life. Additionally, the optimal solutions provided by the model may be more efficient than not taking substitution into account at all, especially if the real life situation is comparable to the model.

After working out the model, some surprising results were obtained. If it is assumed that the demand for both products is equal and there are no lost sales, we are able to proof that the optimal solution is always contained within 3 cases. The first case is the full substitution case, in which half of the time, product 1 is substituted, and during the other half of the time, product 2 is substituted. This case is also equivalent to the case where one product is substituted all the time. The second case is the case of no substitution, in which both products are always available. The third case is the most interesting and unexpected. Despite the symmetry of the problem considered, only one product is substituted during a fraction of the time and no product is substituted during the rest of the time. The size of the fraction is dependent on the parameters of the model, namely the substitution cost, holding cost, setup cost and demand rate. Those same parameters also determine which of the 3 cases is optimal.

In later sections, we also consider the situation where demand is not equal and the situation with lost sales. In those cases, we did not manage to find a definitive proof stating which solutions are optimal. However, our nu-merical results indicate that the optimal solution is always included within the cases discussed in these sections since numerical optimization for different parameters has always led to a solution within those cases.

1.1

literature review

Recently, a group of researchers has made an overview of the literature on the planning of substitutable products. In this overview, they identify four areas of decisions in the substitution literature, namely: assortment planning, capacity planning, inventory decision, and pricing decision [2]. It is also possible for a paper to focus on multiple of these areas. This thesis will be focusing on the inventory decisions and will ignore prices and capacity constraints. Additionally, this thesis will assume that there are always exactly two products and therefore has nothing to do with assortment planning as the producer has no influence on the amounts or types of products sold. Hence this thesis would fall solely under the inventory decision category.

The paper [2] also differentiates between customers and suppliers as decision makers. In our case, the decision maker is the supplier which has the objective of minimizing costs. Finally, the direction of substitutability is also used to sort the different papers. Substitution can either work one way, where product 2 can be substituted by product 1 but not the other way around, or both ways. In this thesis, two way substitution is always assumed to be possible, although it is not necessary optimal.

The literature overview mentions multiple papers in the same category as this paper, with inventory decision, suppliers as decision makers and two way substitution. However, most of them do not use the EOQ model as their modelling base. Only two other papers did research in the same direction with the EOQ modelling base. The one written by Zvi Drezner et al. (1995) [1] did a very comparable analysis to this thesis and will also be analyzed. The other paper, written by McGullivary and Silver (1978) [3], was not relevant for our research and will not be discussed.

(3)

the products, and the third solution assumes partial substitution between the products. Before working it out, the authors expected that the first and second solution would be optimal depending on the parameters of the model while the third solution was expected to always be sub-optimal. They expected this because the setting is deter-ministic which usually results in extreme solutions instead of mixed solutions. However, the second solution ended up being always inferior to the third solution while either the third or the first solution was optimal depending on the parameters. This implied that it was never optimal to use full substitution, although the partial substitution solution converged towards the full substitution solution if the holding costs for the substituted product became extremely high. A condition for the substitution cost which determined whether the no substitution solution or the partial substitution solution was optimal was also obtained by the paper. The condition is that if the substitution cost is less or equal to the difference between holding costs of both products times some expression depending on the parameters, the solution of partial substitution is optimal. Otherwise, the solution without substitution is optimal. This implies that if the holding costs for both products are equal, it is never optimal to use any type of substitution. In this thesis, this implies that the only possible optimal solution where both products arrive at the same time is the no substitution solution. All other solutions with products arriving at the same time should be sub-optimal if the substitution cost is more than 0.

2

The model

The model used in this thesis will be comparable to the EOQ model. In this model, there are two products with constant demand di per unit time, where i = 1, 2 for respectively product 1 and 2. Both products have

equivalent fixed setup cost per batch A which is independent of the batch size, and equivalent constant holding cost h per unit time per product in stock. We assume that no back-orders are allowed and that there are no lost sales. As an addition to the general EOQ model, substitution will be allowed when there are no items left for either of the two products. In this case, all consumers will buy the other product, and the producer will pay a constant penalty cost s per product substituted. In section 5, a variation of this model will be used where not all consumers are buying the other product when their favourite product is out of stock. In this case, there is no penalty cost s, but instead a lost sale cost l per lost sale. The probability of such a lost sale will be denoted by λ. The inter-arrival times for batches of both products are set to be constant and equivalent in this model. However, batches of both products do not need to arrive at the same time. In Figure 1, an example is illustrated to ease explanation of the model.

Figure 1: An example of a two sided substitution

(4)

sharper decrease in stock for the other product. When a new batch of the product which is out of stock arrives, the substitution stops and the demand for both products becomes the original value again. Without loss of generality and for ease of discussion, we refer to the moment that a batch of product 1 arrives as the start of a new cycle. During such a cycle, 4 events will happen. Firstly, the amount of product 2 in stock becomes 0, in Figure 1 that happens when time equals 1. Secondly, a new batch of product 2 will arrive, at time equal to 2 in Figure 1. Thirdly, the amount of product 1 in stock becomes 0, which happens at time equal to 3 in Figure 1. Finally, a new batch of product 1 arrives which constitutes the end of the cycle, at time equal to 4 in the figure. If either the first or third event would not happen, we must have that our strategy is inefficient since there is always a positive amount of a product in stock which incurs unnecessary holding costs when compared to the strategy that lets a batch of that product arrive when the stock reaches 0. It is not possible that the second event happens before the first one, and it is also not possible that the third event happens before the second one since both products will then have a stock of 0 and back-orders are not allowed. Finally, since the fourth event constitutes the end of the cycle, it cannot happen before any other event. Hence the order of the events is always the same. However, it is still possible that multiple events happen at the exact same time. We define the new variable xi as the amount of time

between event i − 1 and event i divided by the total cycle time Tcycle, where i = 1, 2, 3, 4 and the start of the cycle

is defined as event 0. Note that both the variables xi, as well as the cycle time Tcycle are not given beforehand

and can be set to minimize the total costs in this model. It is also necessary that 0 ≤ xi≤ 1 and thatP 4

i=1xi= 1

for i = 1, 2, 3, 4. This is because those variables are fractions of the total cycle time and hence must be equal to 1 if summed up. Note that, instead of setting the cycle time, it is also possible to set the batch sizes Qi, where

i = 1, 2, for both products in combination with xi variables instead of setting the cycle time and xi variables. In

the scenario specific sections, direct relationships between the batch sizes and cycle time will be derived.

3

Two sided substitution under constant and equal demand

In this scenario, we assume that the demand for both products is equal. Hence, we have that d1= d2= d. Since

there are no backorders allowed, we must have that the total demand of the products during a cycle times the length of the cycle equals the total amount of products ordered. Hence we must have that:

2dTcycle= Q1+ Q2, which gives Tcycle=

Q1+ Q2

2d .

Now we want to determine the total cost per cycle. This total cost has 3 contributions, namely the holding cost, the substitution cost and the setup cost. The setup cost is simply equal to 2A. The substitution cost is the amount of products substituted times the substitution cost, in our case it is equal to (x2+ x4)dTcycles. The holding cost

can be calculated by integrating the amount of inventory over the cycle time and multiplying it by the holding cost. Note that the amount of product 1 consumed per time unit equals d in period 1 and 3, 2d in period 2 and 0 in period 4. Here we define period i as the period between event i and i − 1. The amount of product 2 consumed per time unit equals d in period 1 and 3, 2d in period 4 and 0 in period 2. The amount of product 1 in stock, called S1, at some time t can be determined by integrating the demand from time t to Tcycle. This gives then as

result:

for 0 ≤ t < Tcyclex1, we have that: S1= dTcycle(x3+ 2x2) + d(Tcyclex1− t),

for Tcyclex1≤ t < Tcycle(x1+ x2), we have that: S1= dTcyclex3+ 2d(Tcycle(x1+ x2) − t),

for Tcycle(x1+ x2) ≤ t < Tcycle(x1+ x2+ x3), we have that: S1= d(Tcycle(x1+ x2+ x3) − t),

for Tcycle(x1+ x2+ x3) ≤ t < Tcycle, we have that: S1= 0.

To get the total honding cost for product 1, we need to integrate this over time and multiply it by the holding cost h. This results in the following total holding cost for product 1 per cycle:

Chold,1= hdTcycle2 ((x3+ 2x2)x1+ 1 2x 2 1+ x3x2+ x22+ 1 2x 2 3) = hdT2 cycle 2 ((x1+ x2+ x3) 2+ x2 2+ 2x1x2), = hdT 2 cycle 2 ((1 − x4) 2+ x2 2+ 2x1x2).

In the last equality, we used thatP4

i=1xi= 1. Note that since both products are equivalent, the costs for product

2 can be obtained by changing x1, x2, x3, x4 into respectively x3, x4, x1, x2. The following total holding cost per

cycle is then obtained:

(5)

Thus, the total cost per cycle is equal to: Ccycle= 2A + (x2+ x4)s Q1+ Q2 2 + h(Q1+ Q2)2 8d ((1 − x4) 2+ (1 − x 2)2+ x22+ x24+ 2x1x2+ 2x3x4).

Then, using C =Ccycle

Tcycle = 2d Q1+Q2Ccycle, we obtain: C = 4Ad Q1+ Q2 + sd(x2+ x4) + h(Q1+ Q2) 4 ((1 − x4) 2+ (1 − x 2)2+ x22+ x 2 4+ 2x1x2+ 2x3x4),

where C is the cost per time unit. To ease further calculations, we will define a new function F (x1, x2, x3, x4):

F (x1, x2, x3, x4) = (1 − x4)2+ (1 − x2)2+ x22+ x 2

4+ 2x1x2+ 2x3x4. (1)

Using this function, we can redefine the cost function: C = 4AD

Q1+ Q2

+ sd(x2+ x4) +

h(Q1+ Q2)

4 F (x1, x2, x3, x4).

There are a few constraints that must hold regarding batch quantities. They result from the fact that since Qi

products are ordered during a cycle, we must have that the same amount of products are sold during such a cycle. Q1= S1,t=0= dTcycle(x1+ 2x2+ x3) = 1 + x2− x4 2 (Q1+ Q2), (2) Q2= S2,t=(x1+x2)Tcycle = dTcycle(x1+ 2x4+ x3) = 1 + x4− x2 2 (Q1+ Q2). If we rewrite the first constraint, we end up at:

Q2= Q1( 2 1 + x2− x4 − 1), or Q2+ Q1= 2 1 + x2− x4 Q1.

Using this equation, we can get rid of all the Q2 terms. We then end up with:

C =2Ad Q1 (1 + x2− x4) + sd(x2+ x4) + hQ1 2(1 + x2− x4) F. Now, we can minimize this over Q1 by setting ∂Q∂C1 = 0:

∂C ∂Q1 = −2Ad Q2 1 (1 + x2− x4) + hF 2(1 + x2− x4) = 0, which leads to the optimal Q1:

Q∗1= 2(1 + x2− x4)

r Ad

hF, (3)

and the corresponding optimal Q2:

Q∗2= 2(1 − x2+ x4)

r Ad hF. Using (2) and (3), we arrive at the optimal cycle time:

Tcycle∗ = 2 r

A hdF.

Filling this in results in the following equation for the cost per time unit:

C = 2√AdhF + sd(x2+ x4). (4)

Additionally, note that all parameters of the model, namely setup cost, holding cost and demand rate, are equal for both products. This implies that both products are interchangeable and therefore, we must have that if a solution with certain values for x1, x2, x3, x4 is optimal, there exists another optimal solution where the products

are interchanged, resulting in the values of x1and x3being interchanged, as well as the values of x2 and x4, unless

the values of x1and x3 are equal in addition to the values of x2 and x4. This implies that we can always assume

that x2 ≥ x4 without losing generality when finding solutions, as any solution where that is not the case has an

equivalent solution where the products are swapped and therefore has x2> x4.

We will show in the next subsection, that one of the following cases must be optimal: first, the case of total substitution, where x1 = x3 = 0. Secondly, the case of no substitution, where x2 = x4 = 0. Finally, we will

look at the case of one sided substitution where x2 = x3 = 0, or equivalently, x1 = x4 = 0. Then, in further

(6)

3.1

Proof that optimal solution is within the 3 cases

In this section, it will be proven that the cases shown above always include an optimal solution. To do this, we minimize the cost per time unit C and show that this only results in the cases discussed above.

Since C depends on multiple variables, we are first going to minimizing it given x2 and x4 and then minimize

it over those variables. Since C only depends on x1 and x3 via F , minimizing it given x2 and x4 is the same

as minimizing F . Note that we can ignore the parts of F that are not dependent on either x1 or x3 for the

minimization. We can then write F as:

F = ... + 2x1x2+ 2x3x4= ... + 2x1x2+ 2(1 − x2− x1− x4)x4= ... + 2x1(x2− x4).

where the parts given by dots are only dependent on x2 and x4. Since this problem is symmetric, we can assume

that x2≥ x4 without losing any generality. This is because all solutions where this is not the case have an

equiva-lent solution where the products are swapped and hence x2> x4. We can see that there are 2 different possibilities.

If x2 > x4, then C is minimized for x1= 0. If x2= x4, then the solution is independent of x1, and hence taking

x1 = 0 will lead to an optimal solution. Hence we need to have that x1 = 0 is an optimal solution, given that

x2≥ x4.

If we also have that x3 = 0, we end up at case 1. Hence, to find other solutions, we need to have that x3 > 0.

Now, we fill in that x2= 1 − x4− x3 and minimize C over x4 given x3:

C = 2√AdhF + sd(1 − x3),

F = (1 − x4)2+ (x4+ x3)2+ (1 − x3− x4)2+ x24+ 2x3x4.

Since C only depends on x4 via F , minimizing C is again equivalent to minimizing F :

∂F ∂x4

= −2(1 − x4) + 2(x4+ x3) − 2(1 − x4− x3) + 2x4+ 2x3= 8x4+ 6x3− 4 = 0.

We have that if x3 ≥ 23, then the optimal value for x4 equals 0. In that situation, it is equivalent to case 3 with

x1= x4= 0. Hence the only situation of interest is when x3< 23. Then we have that x4= 12−34x3 and also that

x2= 12−14x3. When we fill in x4, we obtain for F :

F = (1 2+ 3 4x3) 2+ (1 2 + 1 4x3) 2+ (1 2 − 1 4x3) 2+ (1 2 − 3 4x3) 2+ x 3− 3 2x 2 3= 1 + x3− 1 4x 2 3.

This results in the following expression for C, where a new variable γ = s q

d

Ah is defined to ease calculations:

C = 2√AdhF + sd(1 − x3) = 2 r Adh(1 + x3− 1 4x 2 3) + sd(1 − x3) = √ Adh(2 r 1 + x3− 1 4x 2 3+ γ(1 − x3)).

Then, to find the optimal value for x3, we set the derivative to zero:

∂C ∂x3 = √ Adh(−γ + 1 − 1 2x3 q 1 + x3−14x23 ) = 0, which gives γ r 1 + x3− 1 4x 2 3= 1 − 1 2x3,

squaring both sides gives γ2(1 + x3−

1 4x 2 3) = 1 − x3+ 1 4x 2 3, this gives 1 − γ 2− (1 + γ2)x 3+ 1 4(1 + γ 2)x2 3= 0.

This gives as result that x3=

2(1 + γ2) ± 2p(1 + γ2)2− (1 + γ2)(1 − γ2)

1 + γ2 = 2 ± 2

√ 2p γ

1 + γ2.

We have that only the solution with the minus sign is feasible. And then only for γ ≤ 1. However, this solution is a maximum for those values of γ. This means that either x3 = 0 or x3 ≥ 23 is the optimal solution for this

situation. However, both of these solutions are a part of respectively case 1 and 3. Hence the three cases discussed above will always give an optimal solution.

3.2

Case 1: x

1

= x

3

= 0

In this case, we can rewrite F:

(7)

Then, we can write C as:

C1= 2

q

Adh(2x2

2+ 2(1 − x2)2) + sd.

Now, we can minimize this over x2by setting ∂x∂C

2 = 0: ∂C1 ∂x2 =√Adh 4x2− 4(1 − x2) p(2x2 2+ 2(1 − x2)2) = 0, which gives x2= 1 2.

Hence, under total substitution, it is optimal to set x2 = x4 = 12. Note that this means that the time between

arrivals for product 1 and product 2 is always the same and always happens when the other product is just sold out. Also note that this case is completely equivalent to the case where you only buy one product and where the other product always gets substituted. In this case the cycle time is half of the cycle time obtained from the case 1 solution.

3.3

Case 2: x

2

= x

4

= 0

In this case, we have that F = 2 for all possible combinations of x1 and x3. Hence we have:

C2= 2

2√Adh.

Note that the cost does not depend on x1 and x3. This makes sense because there is no longer any substitution,

hence this model becomes equal to optimizing the EOQ model for both products individually. Hence it does not matter when the batches of both products arrive when compared to eachother.

3.4

Case 3: x

2

= x

3

= 0

Note that this case is completely equivalent to the case where x4 = x1 = 0, since both products have the same

demand and substitution cost. In this case, we can rewrite F: F = (1 − x4)2+ x24+ 1.

Then, we can write C as:

C3= 2

q

Adh((1 − x4)2+ x24+ 1) + sdx4.

Now, we can minimize this over x4by setting ∂x∂C4 = 0:

∂C ∂x4 = √ Adh 2x4− 2(1 − x4) p(1 − x4)2+ x24+ 1 + sd = 0, which gives 2 − 4x4 p(1 − x4)2+ x24+ 1 = s r d Ah= γ. Here, we have defined γ = s

q

d

Ah. If we rewrite the above equation, we end up at:

x4= 1 2± √ 3 2 γ p(8 − γ2).

Of these two solutions, only the one with the minus sign is a minimum. Also note that this is only a feasible mini-mum for γ ≤√2. If γ >√2, then setting x4= 0 is optimal, which is the same as the previous case with x2= x4= 0.

Now, we will compare this solution with the solution of the first case and check when either is optimal. In the first case, we have for the total cost C1:

C1= 2 q Adh(2x2 2+ 2(1 − x2)2) + sd = 2 √ Adh + sd = (2 + γ) √ Adh. In this case, we had for the total cost C:

C3= 2 q Adh((1 − x4)2+ x24+ 1) + sdx4= √ Adh(γx4+ 2 q ((1 − x4)2+ x24+ 1)).

Where we can fill in the optimal solution for x4:

(8)

Now, we check for which value of γ both costs are equal. (2 + γ)√Adh =√Adh(γ(1 2− √ 3 2 γ p(8 − γ2)) + 4 r 3 8 − γ2), which gives 2 + γ = γ( 1 2− √ 3 2 γ p(8 − γ2)) + 4 r 3 8 − γ2.

Working this out gives 2 solutions, namely γ =√3 − 1 and γ = −√3 − 1, of which the last one is infeasible. Then we observe that the solution with x1= x3 = 0 is optimal for γ <

3 − 1, and that for γ >√3 − 1, the solution with x2= x3= 0 is optimal.:

3.5

analysis

The results from the cases discussed in this section are summarized in the next theorem: Theorem 1

Under the assumptions stated in section 2, the solution that minimizes costs given that the demands for both products are equal is given by:

For γ ≤√3 − 1, x2= x4= 1 2, x1= x3= 0. For√3 − 1 ≤ γ <√2, x1= 1 2+ √ 3 2 γ p(8 − γ2), x4= 1 2− √ 3 2 γ p(8 − γ2), x2= x3= 0, or x2= 1 2− √ 3 2 γ p(8 − γ2), x3= 1 2+ √ 3 2 γ p(8 − γ2), x1= x4= 0. For γ ≥√2, x2= x4= 0, 0 ≤ x1≤ 1, x3= 1 − x1.

The corresponding batch sizes and cycle time are then given by:

Q∗1= 2(1 + x2− x4) r Ad hF, Q∗2= 2(1 − x2+ x4) r Ad hF, Tcycle∗ = 2 r A hdF.

The table below gives an overview of the different solutions for increasing γ

Table 1: The optimal strategy for increasing values of γ

γ x1 x2 x3 x4 0 0 0.5 0 0.5 0.5 0 0.5 0 0.5 0.73 0 0.5 0 0.5 0.74 0.735 0 0 0.265 1 0.827 0 0 0.173 1.41 0.998 0 0 0.002 1.42 0 ≤ x1≤ 1 0 1 − x1 0 10 0 ≤ x1≤ 1 0 1 − x1 0

Note that for a λ of 0.74, 1 and 1.41 , there exists another optimal solution where x3equals the value of x1, x2

equals the value of x4 while x1 and x4 equal 0. Intuitively, both the low γ solution and the high γ solution make

sense. If γ is low, then the cost for substitution is also low. Since the holding cost are minimized when x2 and x4

both equal 12, it makes sense that that solution also minimizes total cost for low γ. In this case, there is always only one of the two products in stock which also substitutes for the other product.

(9)

of both products only depends on the stock of the other product if there is substitution involved.

The solution for values of γ in between √3 − 1 and √2 is the most interesting solution. In this case, only one of the two products is substituted and the other product is always in stock. In case that x2 = x3 = 0, we

have that product 2 is always in stock while product 1 is substituted a fraction of the time equal to x4. In case

that x1= x4= 0, it is the other way around with product 2 being substituted a fraction of the time equal to x2.

Note that it does not matter which product is always in stock since both products are equivalent. This solution was somewhat unexpected since both solutions are asymmetric between the two products even though the original problem is a symmetric problem. However, intuitively it does make sense. If you instead would substitute both products some part of the time, the extra products that will substitute the demand for at least one of the products have to be stored for some time before being used, incurring holding cost in the process. This is not the case in this solution, where substitution happens immediately after a batch arrives. Since it only substitutes during a small amount of the cycle instead of during the whole cycle like in the low γ solution, this incurs a lot less substitution cost making it better for higher values of γ. In Figure 2, the optimal values of x2 or x4 and respectively x3 or x1

are plotted as a function of γ to show how those values depend on γ

Figure 2: The optimal values for the fractions xi of the cycle time as a function of γ for the case 3

solution. Between the red lines, this is the optimal solution

In Figure 2, we observe that the fraction of the time when one product is substituted decreases when γ increases. This fraction reaches 0 at the value of γ where the case 2 solution becomes optimal. This makes sense since a higher γ implies higher substitution costs and therefore less substitution. Also note that the fraction of the time when products are substituted is always less than the fraction of time without substitution.

(10)

Figure 3: The total cost per time unit C as a function of the value of the substitution cost s for the different cases discussed in this section.

One can observe that the crossing points between the case 3 solution and the other solutions are at the values of s, or γ, predicted by the theorem. We can also observe that the cost savings case 3 provides when it is optimal are in general higher for lower values of s.

(11)

Figure 4: The total cost per time unit C as a function of the value of the substitution cost s for the different cases discussed in this section and a symmetric version of the case 3 solution.

The symmetric variant of the case 3 solution is indeed always at least as expensive as the case 3 solution. This solution is sometimes even worse than the case 2 solution while the case 3 solution is optimal. The solution also converges to the same crossing point as the one between the case 3 and case 1 solution, which makes sense as for higher values of s the case 3 solution and the two-sided solution both have x2= x4= 0 and are therefore part of

the case 2 solution set.

4

Two sided substitution under constant but different demand

For this model, we will have the same situation as in the previous section. However, in this case, the demand rates for product 1 and 2, called d1 an d2 respectively, are not equal. A new variable that will be used for convenience

is d∗, which is defined as d∗= d2

d1. The length of a cycle, Tcycle is now equal to

Q1+Q2

d1+d2 =

Q1+Q2

d1(1+d∗) using the same

reasoning as in the previous section.

Now we want to determine the total cost per cycle for this more general situation. The setup cost is still simply equal to 2A. The substitution is the amount of products substituted times the substitution cost, which is now equal to (d∗x2+ x4)d1Tcycles. The holding costs for product 1 and 2 can still be obtained by integrating the

amount of inventory over the cycle time and multiplying it by the holding cost. Note that the amount of product 1 consumed per time unit equals d1 in period 1 and 3, d1(1 + d∗) in period 2, and 0 in period 4. The amount of

product 2 consumed per time unit equals d1d∗ in period 1 and 3, d1(1 + d∗) in period 4 and 0 in period 2. We

again calculate the amount of product 1 in stock, S1, by integrating the demand. The following result is obtained:

For 0 ≤ t < Tcyclex1, we have that: S1= d1Tcycle(x3+ (1 + d∗)x2) + d1(Tcyclex1− t).

For Tcyclex1≤ t < Tcycle(x1+ x2), we have that: S1= d1Tcyclex3+ d1(1 + d∗)(Tcycle(x1+ x2) − t).

For Tcycle(x1+ x2) ≤ t < Tcycle(x1+ x2+ x3), we have that: S1= d1(Tcycle(x1+ x2+ x3) − t).

(12)

For product 2, the following stocks are obtained:

For Tcycle(x1+x2) ≤ t < Tcycle(x1+x2+x3), we have that: S2= d1Tcycle(d∗x1+(1+d∗)x4)+d1d∗(Tcycle(x1+x2+x3)−t).

For Tcycle(x1+ x2+ x3) ≤ t < Tcycle, we have that: S2= d1d∗Tcyclex1+ d1(1 + d∗)(Tcycle− t).

For 0 ≤ t < Tcyclex1, we have that: S2= d1d∗(Tcyclex1− t).

For Tcyclex1≤ t < Tcycle(x1+ x2), we have that: S2= 0.

By integrating the amount of products in stock over time and multiplying it by h, the total holding costs are obtained for both products:

Chold,1 = hd1Tcycle2 ((x3+(1+d∗)x2)x1+ 1 2x 2 1+x3x2+ (1 + d∗) 2 x 2 2+ 1 2x 2 3) = hd1Tcycle2 2 ((x1+x2+x3) 2+dx2 2+2d∗x1x2) = hd1T 2 cycle 2 ((1 − x4) 2+ dx2 2+ 2d ∗x 1x2). Chold,2 = hd1Tcycle2 ((d∗x1+(1+d∗)x4)x3+ 1 2x 2 3+d∗x1x4+ 1 + d∗ 2 x 2 4+d∗ 1 2x 2 1) = hdT2 cycle 2 (d ∗(x 1+x4+x3)2+x24+2x3x4) =hdT 2 cycle 2 (d ∗(1 − x 2)2+ x24+ 2x3x4).

Then we obtain for the new total cost per cycle Ccycle:

Ccycle= h(Q1+ Q2)2 2d1(1 + d∗)2 ((1 − x4)2+ d∗(1 − x2)2+ x24+ d ∗x2 2+ 2d ∗x 1x2+ 2x3x4) + 2A + Q1+ Q2 1 + d∗ s(d ∗x 2+ x4). Using C =Ccycle Tcycle = d1(1+d∗)

Q1+Q2 Ccycle, the following cost per time unit C is obtained:

C = h(Q1+ Q2) 2(1 + d∗) ((1 − x4) 2+ d(1 − x 2)2+ x24+ d ∗x2 2+ 2d ∗x 1x2+ 2x3x4) + 2Ad1(1 + d∗) Q1+ Q2 + sd1(d∗x2+ x4).

We again rewrite this equation to ease calculations: C = h(Q1+ Q2) 2(1 + d∗) F (x1, x2, x3, x4, d ∗) +2Ad1(1 + d∗) Q1+ Q2 + sd1(d∗x2+ x4), F (x1, x2, x3, x4, d∗) = (1 − x4)2+ d∗(1 − x2)2+ x24+ d∗x22+ 2d∗x1x2+ 2x3x4. (5)

We again have two constraints that must hold regarding batch quantities. They again result from the fact that since Qi products are ordered during a cycle, we must have that the same amount of products are sold during such

a cycle: Q1= S1,t=0= d1Tcycle(x1+ (1 + d∗)x2+ x3) = 1 + d∗x2− x4 1 + d∗ (Q1+ Q2), Q2= S2,t=Tcycle(x1+x2)= d1Tcycle(d ∗x 1+ (1 + d∗)x4+ d∗x3) = d∗+ x 4− d∗x2 1 + d∗ (Q1+ Q2).

If we rewrite the first constraint, we end up at: Q2= Q1( 1 + d∗ 1 + d∗x 2− x4 − 1), Q1+ Q2= 1 + d∗ 1 + d∗x 2− x4 Q1.

We can now rewrite C: C = hQ1 2(1 + d∗x 2− x4) F (x1, x2, x3, x4, d∗) + 2Ad1(1 + d∗x2− x4) Q1 + sd1(d∗x2+ x4).

Now we again minimize C over Q1:

(13)

This results in the following optimal Q1 and Q2: Q∗1= 2(1 + d∗x2− x4) r Ad hF, Q∗2= 2(d∗− d∗x2+ x4) r Ad hF.

If this is filled in in the cost per time equation, the following equation is obtained:

C = 2phAd1F + sd(d∗x2+ x4). (6)

The same cases as in the previous section will be covered. However, since this is no longer a symmetric prob-lem due to different demands, the case where x2 = 0 and where x4 = 0 will be split into two different cases.

Adittionally, I will include another solution that is always better than the first case solution, but cannot be ob-tained from the model. This time, I have not a definite proof that the optimal solution is always included in these cases. However, multiple different values of parameters were tested and the optimal solution always ended up being one of the cases. In the appendix, the start of a proof that an optimal solution is always within the cases is included.

4.1

Case 1: x

1

= x

3

= 0

In this case, we can rewrite F:

F = d∗((1 − x2)2+ x22) + x 2 2+ 1 − x 2 2) = (1 + d∗)(x 2 2+ (1 − x2)2).

Then, C can be written as: C1= 2 p Ad1h(1 + d∗) q x2 2+ (1 − x2)2+ sd1(1 + (d∗− 1)x2). (7)

We can then take the derivative of this to x2:

∂C1 ∂x2 = 2pAd1h(1 + d∗) 1 − 2x2 px2 2+ (1 − x2)2 + sd1(d∗− 1) = 0,

resulting in the following expression for the optimal x2:

x2= 1 2 − sd1(d∗− 1) 2p8Ad1h(1 + d∗) − s2d21(d∗− 1)2 =1 2 − γ1(d∗− 1) 2p8(1 + d∗) − γ2 1(d∗− 1)2 , where γ1is defined as s q d1

Ah. Note that the optimal solution is no longer to substitute both products for the same

time.

4.2

Extra case: one product is always substituted

Now, note that the case 1 solution in the previous section was equivalent to the situation where the same product always gets substituted. In this section, it is no longer the case because the optimal x2 is no longer equal to 0.5,

which implies that we cannot replace this solution with a solution that has a constant cyclelength and where only 1 product gets substituted. The one sided substitution solution is not included in the model because the setup cost always assume some amount of both products is ordered, which does not happen with complete one sided substitution. Hence I will need to analyze that situation independently.

In this situation, the setup costs are equal to A instead of 2A due to only one product being ordered. The substitution costs will be equal to the cost times the amount of products substituted, which will be equal to sd1Tcycle when product 1 is substituted or sd1d∗Tcycle when product 2 is substituted. This implies that when

d∗ > 1, it is optimal to substitute product 1 and when d∗< 1, it is optimal to substitute product 2. Finally, the holding costs will be equal to the amount of the products in stock integrated over the cycle length times the holding cost per product per time unit. As the total demand for the one product in stock is always equal to d1(1 + d∗),

the amount of that product in stock at time t will be d1(1 + d∗)(Tcycle− t). This results into the total holding cost

of hd1Tcycle2 (1+d∗)

2 . Now we have the total cost per cycle:

Ccycle= hd1Tcycle2

(1 + d∗)

(14)

By dividing it by Tcycle, we obtain the cost per unit time: C = hd1Tcycle (1 + d∗) 2 + sd1min(1, d ∗) + A Tcycle . We will then minimize this over Tcycle by setting the derivative to 0.

∂C ∂Tcycle = hd1 (1 + d∗) 2 − A T2 cycle

= 0, which gives Tcycle=

r A hd1

.

From this cycle time and the fact that the total demand over a cycle should equal the total amount of batch quantities, we can obtain the batch quantities:

Qi= r Ad1 h (1 + d ∗), Qj = 0.

Where i = 1 and j = 2 if d∗ < 1 and i = 2 and j = 1 if d∗ > 1. After substituting the cycle time in the cost per time unit equation, we obtain the following:

C0=

p

2Ad1h(1 + d∗) + sd1min(1, d∗). (8)

Note that this is always lower than the cost per time unit obtained from the x1= x3= 0 solution. We can proof

this by stating thatpx2

2+ (1 − x2)2≥ √12 and sd1(1 + (d∗− 1)x2) ≥ sd1min(1, d∗). By filling this in equation

(7), we obtain: C1= 2 p Ad1h(1 + d∗) q x2 2+ (1 − x2)2+ sd1(1 + (d∗− 1)x2) ≥ p 2Ad1h(1 + d∗) + sd1min(1, d∗) = C0.

This implies that the solution where one product is always substituted is more efficient than the solution where both products get substituted some of the time.

4.3

Case 2: x

2

= x

4

= 0

We now have a cost per time of:

C2= 2

p

hAd1(1 + d∗).

Since F = 1 + d∗ for all possible x1 and x3. Also in this case, the cost is independent of both x1 and x3. Note

however, that the cost in this case is more then the cost obtained when optimizing the EOQ model for both products individually because the cycle times have to be equal for both products. We can also calculate when the cost equals that of the one sided substitution solution:

C0= p 2Ad1h(1 + d∗) + sd1min(1, d∗) = 2 p hAd1(1 + d∗) = C2, which gives s r d1 Ahmin(1, d ∗) = γ 1min(1, d∗) = (2 − √ 2)√1 + d∗, which gives γ 1= (2 − √ 2) √ 1 + d∗ min(1, d∗).

4.4

Case 3: x

2

= 0

We can rewrite F to:

F = (1 − x4)2+ x24+ 2x3x4+ d∗.

Then, we can write C as:

C = 2 q

hAd1((1 − x4)2+ x24+ 2x3x4+ d∗+ sd1x4.

Note that C is strictly increasing with respect to x3 and is independent of x1. Hence for any given x4, it is optimal

to set x3= 0 and x1= 1 − x4. In that case we can write C as:

C = 2 q

hAd1((1 − x4)2+ x24+ d∗+ sd1x4.

Then, we minimize this cost over x4:

(15)

This can be rewritten to s r d1 Ah = γ1= 2 1 − 2x4 p(1 − x4)2+ x24+ d∗ , which gives γ12= 4 1 − 4x4+ 4x 2 4 d∗+ 1 + 2x2 4− 2x4 . This results in the following optimal x4:

x4= 1 2 − γ1 2p8 − γ2 √ 2d∗+ 1.

There is also a solution to the minimization with a plus sign after the 12, however that is a maximum. Note that we must have that the optimal x4 is more or equal to 0. Otherwise, this case is equivalent to the previous case

since setting x4= 0 is optimal. Hence:

γ1 2p8 − γ2 1 √ 2d∗+ 1 ≤ 1 2. Working this out results in the following condition:

γ1≤

2 √

d∗+ 1.

If this condition is not satisfied, x4= 0 is optimal which makes this case equivalent to the previous case.

In this case, we can write C as:

C = 2 s hAd1(d∗+ 1 2+ γ2 1 2(8 − γ2 1) (2d∗+ 1)) + sd 1( 1 2 − γ1 2p8 − γ2 1 √ 2d∗+ 1).

4.5

Case 4: x

4

= 0

We can rewrite F to:

F = 1 + d∗((1 − x2)2+ x22+ 2x1x2).

Then, we can write C as:

C = 2 q

hAd1(1 + d∗((1 − x2)2+ x22+ 2x1x2) + sd1d∗x2.

Note that again, C is strictly increasing with respect to x1 and is independent of x3. Hence for any given x2, it is

optimal to set x1= 0 and x3= 1 − x2. In that case we can write C as:

C = 2 q

hAd1(1 + d∗((1 − x2)2+ x22) + sd1d∗x2.

Then, we minimize this cost over x2:

∂C ∂x2 = sd1d∗+ 2 p hAd1 d∗(2x2− 1) p1 + d∗((1 − x 2)2+ x22) = 0.

This can be rewritten to: s r d1 Ah= 2 1 − 2x2 1 + d∗((1 − x 2)2+ x22) , which gives γ12= 4 1 − 4x2+ 4x 2 2 1 + d∗+ 2dx2 2− 2d∗x2 . This results in the following minimum for x2:

x2= 1 2− γ1 2p8 − d∗γ2 1 √ d∗+ 2.

Note that we must have that the optimal x2 is more than or equal to 0. Otherwise, this case is equivalent to the

previous case since setting x2= 0 is optimal. Hence:

γ1 2p8 − d∗γ2 1 √ d∗+ 2 ≤ 1 2. Working this out results in the following condition:

γ1≤

2 √

d∗+ 1.

Note that this is equivalent to the condition used in the case that x2 = 0. If this condition is not satisfied, we

(16)

In this case, we can write C as: C = 2 s hAd(1 +d ∗ 2 + d∗γ2 1 2(8 − d∗γ2 1 (d∗+ 2)) + sd 1d∗( 1 2− γ1 2p8 − d∗γ2 1 √ d∗+ 2).

Note that when d∗ > 1, or d2> d1, we have that this case has lower total costs than the previous case where

x2= x3= 0. If d∗< 1, than the previous case has lower total cost. We can also proof that there exist a range for

which this solution is optimal when d∗is within a certain range. We can calculate the extreme values of that range by finding the value of d∗ where the onesided substitution solution is equal to the crossing point between the case 3 or 4 solution and the case 2 solution. If the value of d∗ would get more extreme, then the onesided substitution solution would be cheaper than the case 3 and 4 solution until the value of γ1where the case 2 solution becomes

optimal. We have already calculated the values of γ1where the case 2 solution is equal to the onesided substitution

solution and were it is equal to the case 3 and 4 solution. We then calcuate the values of d∗for which those values are the same:

(2 −√2) √ 1 + d∗ min(1, d∗) = 2 √ 1 + d∗, which gives (2 − √ 2)(1 + d∗) = 2min(1, d∗).

First, we assume d∗> 1, then:

(2 −√2)(1 + d∗) = 2, which gives d∗= √ 2 2 −√2 = 1 √ 2 − 1 = 1 + √ 2. Now, if d∗< 1, then: (2 −√2)(1 + d∗) = 2d∗, which gives d∗= 2 − √ 2 √ 2 = √ 2 − 1.

Hence we can conclude that the case 3 and 4 solutions can only be optimal when√2 − 1 ≤ d∗≤ 1 +√2.

4.6

analysis

The results from the cases discussed in this section, including the extra case, are summarized in the following hypothesis: Hypothesis 1

Under the assumptions stated in section 2, and assuming that the 4 cases and the onesided substitution solu-tion discussed in the previous secsolu-tions indeed always include the optimal solusolu-tion, the solusolu-tion that minimizes costs is given by:

for γ1≤ min(γ1∗, (2 −

√ 2)

√ 1 + d∗

min(1, d∗)), product 1 (if d

> 1) or product 2 (if d< 1) is always substituted.

For γ1≥ max( 2 √ d∗+ 1, (2 − √ 2) √ 1 + d∗ min(1, d∗)), x2= x4= 0, 0 ≤ x1≤ 1, x3= 1 − x1.

First, when 1 < d∗<√2 + 1, we have:

for γ1∗≤ γ1≤ 2 √ d∗+ 1, x2= 1 2 − γ1 2p8 − d∗γ2 1 √ d∗+ 2, x 3= 1 2+ γ1 2p8 − d∗γ2 1 √ d∗+ 2, x 1= x4= 0.

And when√2 − 1 < d∗< 1, we have:

for γ1∗≤ γ1≤ 2 √ d∗+ 1, x4= 1 2 − γ1 2p8 − γ2 √ 2d∗+ 1, x 1= 1 2+ γ1 2p8 − γ2 √ 2d∗+ 1, x 2= x3= 0.

Here γ1∗ is some variable depending on d∗, it should go to √3 − 1 when d∗ goes to 1, and goes to √ 2

d∗+1 when d

approaches either√2 + 1 or√2 − 1. The corresponding batch sizes and cycle time for all solutions except the one sided substitution solution are then given by:

(17)

And for the one sided substitution solution: Q∗i = (1 + d∗) r Ad1 h , Q∗j = 0, Tcycle∗ = r A hd1F .

Where i = 1 and j = 2 if d∗ < 1 and i = 2 and j = 1 if d∗ > 1. Note that γ1∗ can be determined by equating

the cost equations from case 1 and case 3/4. However, this creates an equation that is very hard to solve analytically. Both the solution for high values of γ1 and the solution for low values of γ1 make sense intuitively like in the

previous section. The main difference there is that this time the one-sided substitution solution is always better than the two-sided case 1 solution. When d∗> 1 product 1 should always be substituted and when d∗< 1, product 2 should always be substituted when the one-sided substitution solution is optimal. In the solution for high values of γ1, the total cost is again independent of the time between the arrivals of batches for both products since there

is no interaction between the two products. The two different solutions for the remaining values of γ, in case d∗is not very high or low, are also the same type as in the previous section. However, now only one of the two solutions is optimal, depending of the value of d∗. When d∗> 1, the solution with x1= x4= 0 is optimal, and when d∗< 1,

the solution with x2= x3 = 0 is optimal. If the demand for product 2 is higher than that of product 1, most of

the holding costs will come from the stock of product 2. Therefore it makes sense that in that case, it is optimal to substitute some of that product with product 1 to reduce those holding costs. If the demand for product 1 is higher than that of product 2, it will be the other way around. This is illustrated in Figure 5:

Figure 5: The inventory level of two products with demand d1=1 and d2=2 over time in a certain case 3 scenario (x4=0.25,x1=0.75) and a complementing case 4 scenario (x2=0.25,x3=0.75). Time equals 0 at the time when the batch arrives of the product that is not substituted.

(18)

stock is equivalent for both case 3 and 4, implying equal holding costs. However, during the time when a certain product is substituted, the inventory for the two cases is different. In this case, with d2 > d1, the amount of

products in stock for case 3 is higher. This indeed implies a higher total holding cost for case 3 when d2 > d 1.

Therefore these solutions do make sense, even if they were somewhat unexpected as the substitution cost is higher for the optimal solution.

Finally, note that at least the solution for high values of γ1 can be improved by introducing different cycle times

for both products. This is because both products have different cycle times when being optimized individually due to the different demands. However, in this model we did not allow for this and it is very difficult to apply when there is substitution. An idea for further research is to use different cycle times where the length of one cycle is an integer number times the length of another cycle.

In Figure 6,7 and 8, the cost per time unit C is plotted against the value of s for a value of d∗ of respectively 0.5, 2 and 5. This will show the difference in costs between the solutions as well as illustrate the range where they are optimal. Note that since γ depends on s linearly, this also shows how the cost per time unit depends on γ. Because the other variables are set to be 1, γ will be equal to s. For comparison, a solution without substitution where cycle times are allowed to be different is also added. This may be hard to implement in reality with the exact cycle times from the solution but it gives an idea of the cost savings that are possible in that direction. The cost for that solution is obtained by the following formula:

C =p2Ad1h +

p

2Ad1d∗h.

This formula is obtained by rewriting the cost formula of the classical EOQ model. When d∗ is different from 1, this will be less than the solution of case 2.

Figure 6: The total cost per time unit C as a function of the value of the substitution cost s with a d∗ of 0.5 for the different cases discussed in this section.

As predicted, since d∗ < 1, we have that the solution for case 3, with x2 = x3 = 0 is always better or equal

than the solution for case 4, where x1= x4= 0. Additionally, since d∗>

(19)

much. There is also a striking difference in costs between the onesided substitution solution and the solution with x1= x3= 0, which is rather big considering that these solutions are equivalent when d∗= 1

Figure 7: The total cost per time unit C as a function of the value of the substitution cost s with a d∗ of 2 for the different cases discussed in this section.

(20)

Figure 8: The total cost per time unit C as a function of the value of the substitution cost s with a d∗ of 5 for the different cases discussed in this section.

In figure 8, we observe that although the general shape of the graph is comparable to Figure 7, a few things have changed. Firstly, the difference between the cost for the Case 3 and Case 4 solution has increased. The Case 3 solution is now only marginally better than the Case 2 solution of no substitution. Additionally, the Case 4 solution is no longer optimal for any value of γ1since d∗exceeds

2 + 1. Secondly, the solution using different cycle lengths is now significantly cheaper when compared to the case 2 solution. This implies that when the difference in demand between the 2 products is large and the cost of substitution is not too low, it may be more efficient to use different cycle lengths than to introduce substitution. Finally, although this was also the case in the other figures or this section, it is now clear that the line representing the Case 1 solution is somewhat curved. This results from the fact that in that solution, the values of x2 and x4 are dependent on γ, which is not the case in the Case 1

solution of section 3.

5

two sided substitution with lost sales under constant and equal

demand

In this scenario, we again assume that the demand for both products is equal. Hence we again have that d1= d2= d.

The difference between this scenario and section 3 is that there are now some lost sales when products are substi-tuted. We assume that when a product is out of stock, there is a probability of λ that a customer leaves instead of substituting. In case that a customer leaves, a penalty cost of l will be incurred. There will be no substitution cost s in this scenario.

The total cost per cycle has again 3 contributions in this scenario. The holding cost, setup cost and the lost sale cost. The setup cost is equal to 2A. The lost sale cost will be equal to the amount of lost sales times l, which is in our case equal to (x2+ x4)dTcycleλl. The holding cost is calculated by integrating the amount of inventory

(21)

result:

for 0 ≤ t < Tcyclex1, we have that: S1= dTcycle(x3+ (2 − λ)x2) + d(Tcyclex1− t),

for Tcyclex1≤ t < Tcycle(x1+ x2), we have that: S1= dTcyclex3+ (2 − λ)d(Tcycle(x1+ x2) − t),

for Tcycle(x1+ x2) ≤ t < Tcycle(x1+ x2+ x3), we have that: S1= d(Tcycle(x1+ x2+ x3) − t),

for Tcycle(x1+ x2+ x3) ≤ t < Tcycle, we have that: S1= 0.

To get the total holding cost for product 1, the amount of products in stock needs to be integrated over time and multiplied by the holding cost h. This results in the following total holding cost for product 1 per cycle:

Chold,1 = hdTcycle2 ((x3+(2−λ)x2)x1+ 1 2x 2 1+x3x2+ 2 − λ 2 x 2 2+ 1 2x 2 3) = hdT2 cycle 2 ((x1+x2+x3) 2+(1−λ)x2 2+2(1−λ)x1x2) = hdT 2 cycle 2 ((1 − x4) 2+ (1 − λ)x2 2+ 2(1 − λ)x1x2).

In the last equality, we used thatP4

i=1xi= 1. Note that since both products are equivalent, the costs for product

2 can be obtained by changing x1, x2, x3, x4 into respectively x3, x4, x1, x2. The following total holding cost per

cycle is then obtained:

Chold=

hdTcycle2

2 ((1 − x4)

2+ (1 − x

2)2+ (1 − λ)(x22+ x24+ 2x1x2+ 2x3x4)).

Thus, the total cost per cycle is equal to:

Ccycle= 2A + (x2+ x4)dTcycleλl + hdT2 cycle 2 ((1 − x4) 2+ (1 − x 2)2+ (1 − λ)(x22+ x 2 4+ 2x1x2+ 2x3x4)).

By dividing this by the cycle length Tcycle, we obtain the total cost per time unit:

C = 2A Tcycle + (x2+ x4)dT λl + hdTcycle 2 ((1 − x4) 2 + (1 − x2)2+ (1 − λ)(x22+ x 2 4+ 2x1x2+ 2x3x4)).

To ease further calculations, a new function F (x1, x2, x3, x4, λ) is defined:

F (x1, x2, x3, x4, λ) = (1 − x4)2+ (1 − x2)2+ (1 − λ)(x22+ x24+ 2x1x2+ 2x3x4). (9)

This substitution results in the following cost function: C = 2A

Tcycle

+ (x2+ x4)dλl +

hdTcycle

2 F (x1, x2, x3, x4, λ).

To compute the batch quantities, we can again use the constraints that result from the fact that the batch size must equal the amount of products sold during a cycle. The following constraints are obtained:

Q1= S1,t=0= dTcycle(x1+ (2 − λ)x2+ x3),

Q2= S1,t=(x2+x4)Tcycle= dTcycle(x1+ (2 − λ)x4+ x3).

Hence if both the cycle time Tcycle and the values of xi are determined, the batch quantities can be computed

directly. Now, the cost per time unit will be minimized over the cycle time by setting ∂T∂C

cycle = 0: ∂C ∂Tcycle = − 2A T2 cycle +hdF 2 = 0. This leads to the optimal cycle time:

Tcycle∗ = 2 r

A hdF, resulting in the following expression for the cost per time unit C:

C = 2√AdhF + (x2+ x4)dλl. (10)

Like in section 3, we expect the optimal solution to always be within one of the following three cases: x1= x3= 0,

x2= x4= 0 and x2= x3= 0, which is equivalent to the x1= x4= 0 case due to symmetry. In the appendix, the

(22)

5.1

Case 1: x

1

= x

3

= 0

In this case, there is always substitution of either product 1 or 2. We can rewrite F : F = (1 − x4)2+ (1 − x2)2+ (1 − λ)(x22+ x

2

4) = (2 − λ)x 2

2+ (2 − λ)(1 − x2)2.

We can then write the cost per time unit C1 as:

C1= 2 √ AdhF + dλl = 2 √ Adh q (2 − λ)x2 2+ (2 − λ)(1 − x2)2+ dλl.

Note that C1 only depends on x2 via F . Hence, minimizing C1 with respect to x2 is equivalent to minimizing F

with respect to x2. ∂F ∂x2 = 2(2 − λ)x2− 2(2 − λ)(1 − x2) = 0, which gives x2= 1 2.

Hence, under total substitution, we have that it is optimal to set x2= x4= 12. This implies that the time between

arrivals for product 1 and 2 is always the same and always happens when the only product left in stock runs out. Due to the symmetry, this case is equivalent to only buying one product with half of the cycle time and always substituting the other product. The total cost can then be written as:

C1= 2 r 2 − λ 2 √ Adh + dλl =√Adh(2 r 2 − λ 2 + λγl), where we define γl= l q d Ah.

5.2

Case 2: x

2

= x

4

= 0

In this case, there is no substitution at all. We have that F = 2, independent of x1 and x3. We can then the cost

per time unit C2 as:

C2= 2

√ 2Adh.

Note that this cost function is also independent of x1 and x3, implying that the time between batch arrivals of

both products during a cycle is irrelevant. Hence this case is equivalent to optimizing both products individually using the EOQ model.

5.3

Case 3: x

2

= x

3

= 0

Due to symmetry, this case is equivalent to the case where x1= x4= 0. We can write F as:

F = 1 + (1 − x4)2+ (1−)x24.

Then, the cost per time unit C3can be written as:

C3= 2

√ Adh

q

1 = (1 − x4)2+ (1 − λ)x24+ x4dl.

We can now minimize C3 by setting ∂C∂x43 = 0:

∂C3 ∂x4 =√Adh 2(1 − λ)x4− 2(1 − x4) p1 + (1 − x4)2+ (1 − λ)x24 + dλl = 0, which gives 2 − (4 − 2λ)x4 p1 + (1 − x4)2+ (1 − λ)x24 = λl r d Ah = λγl. The last equation can be rewritten to a quadratic equation by squaring both sides and then rewriting the resulting expression. This will result in the following solution:

x4= 1 2 − λ± γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l .

Only the solution with the minus sign constitutes a minimum. Note that we must have that x4> 0, otherwise this

solution is equivalent to case 2, since setting x4= 0 is optimal. This imposes a condition on γl:

1 2 − λ − γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l > 0. We will now calculate for which value of γ it is equivalent to 0.

(23)

We then square both sides: 1 = γl2λ2 3 − 2λ

4(2 − λ) − λ2γ2 l

, which gives 4(2 − λ) − λ2γ2l = γl2λ2(3 − 2λ), resulting in 4 = 2γl2λ2.

Then we obtain the solution:

γl=

√ 2 λ . We have that γlmust be lower than

√ 2

λ for the solution to not be equivalent to case 2.

We can also prove that for all values of λ in between 0 and 1, there exists a range of values for γl where the

Case 3 solution is optimal and different from the Case 2 solution. For this, we will find the value of γl where the

cost for the Case 2 solution is equal to that of the case 2 solution.

C1= √ Adh(2 r 2 − λ 2 + λγl= √ Adh2√2 = C2.

This can be rewritten to: γlλ = 2( √ 2 − r 2 − λ 2 ), which gives γl= √ 2 λ (2 − √ 2 − λ) < √ 2 λ . Assuming that 0 < λ < 1, the Case 3 solution is at least in the region between

√ 2 λ (2 − √ 2 − λ) and √ 2 λ optimal.

This is because the Case 2 solution is more expensive than the Case 1 solution is this region and because it was already determined that the Case 3 solution is different from the Case 1 solution in this region. Since the Case 1 solution is always a possibility within the Case 3 solution, namely when x4= 0, we must have that the solution is

better than the Case 1 solution and therefore it must be optimal.

5.4

analysis

The results from the cases discussed in this section are summarized in the next hypothesis: Hypothesis 2

Under the assumptions stated in section 2, and assuming that the 3 cases discussed in the previous subsections always include the optimal solution, the solution that minimizes costs given that the demands for both products are equal is given by:

for γl≤ γl∗, x2= x4= 1 2, x1= x3= 0. For γl∗≤ γl< √ 2 λ : x1= 1 − λ 2 − λ + γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l , x4= 1 2 − λ − γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l , x2= x3= 0, or x2= 1 2 − λ − γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l , x3= 1 − λ 2 − λ+ γl λ√3 − 2λ 2 − λ 1 p4(2 − λ) − λ2γ2 l , x1= x4= 0. for γ ≥ √ 2 λ , , 0 ≤ x1≤ 1, x3= 1 − x1, x2= x4= 0. The corresponding batch sizes and cycle time are then given by:

Q∗1= 2(x1+ x3+ (2 − λ)x2) r Ad hF, Q∗2= 2(x1+ x3+ (2 − λ)x4) r Ad hF, Tcycle∗ = 2 r A hdF.

Here, the variable γ1∗ can be determined by equating the cost equations from case 1 and case 3. However, this creates an equation that is hard to solve analytically. We do have that 0 < γ1∗<

√ 2 λ (2 −

2 − λ) when 0 < λ < 1 Both the solution for low values of γl and the solution for high values of γl are the same as in section 3. The only

(24)

with no substitution at all is only optimal for high values of γl, which makes sense, since there are less loss sale

cost due to the small proportion of people that become lost sales.

Figure 9: The total cost per time unit C as a function of the value of the lost sale cost l with a λ of 0.2 for the different cases discussed in this section.

(25)

Figure 10: The total cost per time unit C as a function of the value of the lost sale cost l with a λ of 0.5 for the different cases discussed in this section.

(26)

Figure 11: The total cost per time unit C as a function of the value of the lost sale cost l with a λ of 0.8 for the different cases discussed in this section.

In Figure 11, the trend observed in the previous figures continues. The full substitution solution is now only optimal until a lost sale cost of approximately 1.5. Also, the Case 3 solution is now almost never optimal and even when it is optimal, it is only marginally better than the Case 2 solution. Therefore, for high values of λ, the Case 3 solution appears to become irrelevant.

6

discussion

6.1

discussion of results

In the model with equal demand between the products, we found out 3 different cases of optimal solutions. Which one of them is optimal depends on the value of the parameter γ, consisting of s, A, h and d. Both the optimal solution for low values of γ (full substitution) and the solution for high values of γ (no substitution) were expected. The solution for values of γ between√3 − 1 and√2 was rather unexpected as it is an asymmetrical solution where only one of the 2 products is substituted for some amount of time. This fraction of time decreases when γ increases until it becomes 0, in which case the no substitution solution becomes optimal. This situation implies that it can be optimal to make sure one product is always in stock, while the other one is being substituted a fraction of the time. This works better than substituting both products for some fraction of the time because in that case some of the items which are used for substitution need to be stored for some time before being used, incurring holding costs in the process. This is not the case in the situation with one product being substituted, as the products are used for substitution directly after a batch arrives.

(27)

very high, the decreased holding costs outweigh the increased substitution costs, making it more efficient to always have the product with low demand in stock. In case of high substitution cost, the solution with no substitution at all is the optimal solution, implying that it is never optimal to always have the product with high demand in stock while substituting the other product.

From the same analysis, we obtained that if the demands differ too much this solution is no longer optimal, leaving only the no substitution solution and the full substitution solution where the product with the lowest de-mand always gets substituted. Additionally, if the dede-mand between the products differs a lot, it becomes profitable to start using different cycle times for those products if the substitution cost is high. This happens because the optimal individual cycle times for both products differ more if the demand of both products differs more. If there are lost sales when substituting with equal demand for both products, then the same optimal solutions as derived in the situation without lost sales are probably optimal. If the proportion of customers who become lost sales increases, the range of values of the cost per lost sale where the asymmetrical solution is optimal becomes signif-icantly smaller. Additionally, when the fraction of people who become lost sales increases, the full substitution solution stops being optimal for lower cost per lost sale. This implies that when the fraction of lost sales is low, it is often profitable to not always have both products in stock. But when the fraction of lost sales is high, is often profitable to always have both products in stock.

6.2

limitations and possible improvements

For this model, multiple assumptions have been made that may not be valid in reality. Firstly, we assumed that the the demand is constant. This allowed us to obtain a model with solutions that could be proven analytically. However, the main downside of this is that this model becomes less useful when demand is volatile. An avenue of further research is to model what happens when the demand follows a certain distribution instead of being constant and see whether the optimal solutions obtained in this model are still optimal.

A second assumption that was made was that the setup cost and holding cost per product per time unit are equal for both products. This assumption does not always hold, which limits the usefulness of the model in those cases. Difference in setup cost will not affect the model by much, as we can just replace the total setup cost of 2A by the new total setup cost, which will be rather easy. Difference in holding cost per time unit per product will affect the model severly as we can now no longer sum the holding cost of both products and then move the holding cost per time unit per product h outside of the bracket. Hence this will probably result in a cost equation that is more difficult to minimize. Note that this assumption was not made by Zvi Drezner et al. [1] as they worked with different holding costs for both products as well as different setup costs. Removing the assumptions for our model is also a good avenue for further research.

Another assumption we made was that different products need to have the same cycle lengths. It may also be useful to look into the case where cycle lengths of both products do not need to be the same, although that would make modelling significantly harder. This is especially profitable if the demand for both products is signif-icantly different, as shown in the analysis of section 4. A useful way in between would be to allow cycle lengths which are multiples of eachother, which is probably a lot easier to model as it is still possible to construct repeating cycles in that case.

Another assumption we made was that there are no backorders allowed. Allowing backorders would possibly give rise to other optimal solutions or change when the excisting solutions are optimal. This would probably make computations more difficult but it could be a possible direction for new research.

In the model for different demand rates, a change of variables was made where d∗ = d2

d1. It may have been

better to use another change of variables there, for example dt= d1+ d2 and d1t= dd1t. This may ease some of the

computations and potentially allow a definitive proof for the possible optimal solutions.

References

[1] Zvi Drezner et al. “An EOQ Model with Substitutions Between Products.” In: Journal of the Operational Research Society 46 (1995), pp. 887–891.

[2] Shin Hojung et al. “A classification of the literature on the planning of substitutable products.” In: European Journal of Operational Research 246 (2015), pp. 686–699.

(28)

7

appendix

7.1

notation used

Notation definition

A ordering or setup cost

h holding cost per unit and time unit

Qi batch quantity for product i, where i = 1, 2.

d demand per unit time for either of the two products in the case of equal demand. di demand per unit time for product i, where i = 1, 2 in the case of non-equal demand.

d∗ d2

d1 in case of non-equal demand.

Ccycle cost per cycle

Tcycle length of a cycle

C cost per time unit

Ci cost per time unit for Case i

s substitution cost per product substituted

xi fraction of the cycle time between event i and i − 1 as defined in section 2. i = 1, 2, 3, 4

F a formula as defined in equation (1), (5) and (9) for the different sections.

γ s q d Ah γ1 s q d1 Ah γl l q d Ah

λ fraction of products substituted that become lost sales l cost per lost sale

7.2

start of proof that cases in section 4 combined with the one sided substitution

solution always contain an optimal solution

In section 4, I did not show a proof that the optimal solution was always within the 4 cases discussed in that section. A beginning of such a proof is shown in this section. Note that the one sided substitution solution is not included in the model, but as that solution is always better than the x1= x3= 0 solution, it is sufficient to prove

that there is no solution better than the x1= x3= 0 solution in addition to the other proposed optimal solutions.

Like in section 3, we first minimize the cost per time unit C as given in (6) given x2 and x4. Since C only

depends on x3 and x1 via F , minimizing C is equivalent to minimizing F . Since we are minimizing over x3 and

x1, we can ignore the terms that do not depend on those two variables for the minimization.

F = ... + 2d∗x1x2+ 2x3x4= ... + 2d∗x1x2+ 2(1 − x2− x1− x4)x4= ... + 2d∗x1x2− 2x1x4= ... + 2x1(d∗x2− x4).

Here the dots include the irrelevant terms. We are left with 3 solutions for the minimization. If d∗x2> x4, then

the optimal solution is to set x1= 0. If d∗x2< x4, then it is to set x3= 0. Finally, if d∗x2= x4, then it does not

matter what x1and x3are, so setting either x1= 0 or x3= 0 is still optimal.

We will look into the case where d∗x2 ≥ x4, the other case can be approached in the same way. In this case

setting x1= 0 is optimal. F can then be written as:

F = (1 − x4)2+ x24+ 2x3x4+ d∗(1 − x2)2+ d∗x22.

SinceP4

i=1xi= 1, we can write x3= 1 − x2− x4, resulting in the following expression for F :

F = (1 − x4)2− x24+ 2x4− 2x4x2+ d∗(1 − x2)2+ d∗x22.

We now minimize C given x4:

(29)

This is solvable, since this will end up as an quadratic equation that can be solved by using the abc formula. However, the expression obtained from this for the optimal x2is very ugly and has two different solutions. Finding

the optimal x4afterwards by plugging in the solution for x2 will be a very hard task.

7.3

start of proof that cases in section 5 always contain an optimal solution

We have that the cost per time unit C only depends on both x1 and x3 via F . Hence if we minimize C with

respect to x1 when keeping x2 and x4 fixed, we only have to look at F . Ignoring parts independent of x1 or x3,

we can write F as:

F = ... + (1 − λ)(2x1x2+ 2x3x4) = ... + (1 − λ)(2x1x2+ 2(1 − x1− x2− x4)x4) = ... + (1 − λ)(2x1(x2− x4).

Note that the dots include the irrelevant terms depending only on x2 and x4. Since this is a symmetric problem,

we can assume that x2≥ x4 without losing generality. Now we have 2 different possibilities. If x2> x4, then C is

minimized when x1= 0. If x2= x4, then the solution is independent of x1, implying that setting x1= 0 is still an

optimal solution. Hence x1= 0 is always an optimal solution, given that x2≥ x4.

If we set x3 = 0, then we end up at case 3. Hence we must have that x3 > 0 if we want to end up at a

different solution. We then fill in x2= 1 − x3− x4and minimize C given x3over x4:

C = dλl(1 − x3) + 2

√ AdhF ,

F = (1 − x4)2+ (x3+ x4)2+ (1 − λ)((1 − x3− x4)2+ x24+ 2x3x4).

Since C only depends on x4 via F , minimizing C is equivalent to minimizing F :

∂F ∂x4

= −2(1−x4)+2(x4+x3)−2(1−λ)(1−x4−x3)+2(1−λ)x4+2(1−λ)x3= (−4+2λ)+(8−4λ)x4+(6−4λ)x3= 0.

This results in a value of12−3−2λ

4−2λx3for x4, and a value of12− 1

4−2λx3for x2. Note that we must have that x4> 0,

since if x4= 0, we are in the same situation as Case 3. Therefore we must have that x3<3−2λ2−λ. We can then fill

in the solution in the cost per time unit function C. After filing in the values for x4and simplifying the equation,

we obtain: C = 2√Adh r 1 −λ 2 + x3+ (λ − 1 4 − 2λ)x 2 3+ dλl(1 − x3).

It is possible to find the extrema of this function by differentiating it and setting the derivative to 0. This equation is solvable since writing it out results in a quadratic equation. However, the resulting expression for x3 will be

very big and ugly which makes interpreting hard. When filling in the cost function C for different values of λ and γl while varying the value of x3, it seems that there either is no extremum in the range of possible values of x3,

Referenties

GERELATEERDE DOCUMENTEN

This procedure requires current and constant prices data from either National Accounts or an Expenditure Survey for the following variables: private consumption of non-durable goods

Either all the organizational costs are allocated to projects, or the present value of a project has to be definitely positive in order to keep the organization going.. Some

Despi te the f act that some growth in the period under observation coirtd be described as 'illusory', resulting from the wider coverage of firms in the latter Census of Production, i

Figure 4: Achieved cycle service levels and average inventory levels regarding the normal, discrete, BDQ, general distribution fitted on the basis of one mean estimate and one

However, if the shelf of PIS A (blood of type O) is empty of items an arriving demand of type A is unsatisfied, since demand of type A cannot be satisfied by an item of type B

In the experiments section four policies were tested to determine if and when to adjust the order policy for products subject to obsolescence, in the context of nonstationary

Daarbij is de meest bondige omschrijving van het funktiebegrip niet die van Merton, maar die van Martindale (1961): 'een funktie'is een sys- teembepaalde en eveneens een

The effect of growth stage on the estimated non-linear parameters a, b and c for ruminal DM-, CP-, NDF- and ADF-disappearance of whole plant faba beans and oats harvested at