Optimal Capacity Expansion and Contraction
with Uncertain and Cyclical Demand
Metin Cakanyıldırım ∗
School of Management, University of Texas at Dallas
Phone: (972) 883.6361. Fax: (972).883.2089.
Robin O. Roundy
School of Operations Research and Industrial Engineering, Cornell University
Phone: (607) 255.9137. Fax: (607).255.9129.
October 6, 2003
∗For correspondence: [email protected]
Optimal Capacity Expansion and Contraction
with Uncertain and Cyclical Demand
Abstract
This paper presents a novel approach to compute optimal machine capacity expansion/contraction times
under uncertain demand. It considers multiple machine types and allows for positive lead times for each
type. Each type may also have a nonzero installation lead time. The paper uses bottleneck policies
(BP); Always buy machines of the bottleneck machine type to increase capacity and always retire
machines in the reverse order. This order is used to optimally sequence machines types for expansion
and contraction for regular service and capacity costs. Lost sales costs are used as a measure of the
service. Capacity costs are computed through three components of machine specific costs: purchase
and retirement costs that are independent of the usage, and machine rent that is proportional to the
usage. Polynomial time algorithms are developed to solve the expansion and contraction problems
when the demand is first stochastically increasing and then stochastically decreasing. Extension of
the algorithms to several demand cycles is discussed and is shown to approximate true costs when the
demand is not stochastically monotone. A real life example drawn from the semiconductor industry is
solved to illustrate one of the algorithms.
Keywords: Capacity planning, uncertain demand, capacity delivery and installation lead times.
1
1 Introduction
This paper models and illustrates an optimal solution strategy for a capacity expansion and contraction prob-
lem. A single product family experiences stochastic demand. The product family requires various operations
on different machine groups. As demand increases new machines must be purchased to increase capacity.
Conversely, machines are retired when the demand falls down.
Our model is motivated by equipment intensive industries, in which capacity expansion and contraction
is critical and costly. For example, a new semiconductor fab costs around one billion dollars, and a single
lithography machine costs around 4-5 million dollars. It is predicted that machine prices will continue to
increase as products become more complex (known as Moore’s Law, Standard and Poor’s Industry Surveys
[27] p.7). Finding the means to finance new capacity is a major problem. After the capacity is acquired, upper
management naturally asks for high utilization. However machine purchase lead times are long (for example
6-12 months is common in the semiconductor industry [28] p.116), and future needs are affected by a variety
of uncertainties. Consequently it is very important to buy and retire the correct set of machines at the correct
times, so that demand matches productive capacity. The main purpose of this paper is to provide decision
makers with a decision support tool to achieve such a match.
In many equipment intensive industries demand is volatile. Especially demand forecasts beyond the purchase
lead times carry substantial uncertainty. The semiconductor industry and electric utilities are good examples. In
the case of the semiconductor industry, for capacity planning purposes the most relevant demand figures are the
ones extending from about 6 months to about 3 years into the future. The volatility of these figures are discussed
in Cakanyıldırım and Roundy [9]. Due to rapid technology shifts there is a high risk that inventoried products
will become obsolete. Consequently semiconductor companies carry only minimal inventories (Cakanyıldırım
and Roundy [10]), and inventory provides only minimal protection against uncertainty. In the case of electric
utilities, short term capacity planning is mostly done daily against uncertain demand reaching its peak about
early evenings. There can be substantial uncertainty in the hourly power demand. The product is a commodity
and will not become obsolete. However inventories cannot be used to smooth out demand fluctuations because
the storage is not efficient or economical. Summarizing, demand should be matched by regulating capacity
because relying on inventory, except in the short term, is generally not economical.
We are assuming that all products have the same or very similar processing requirements, i.e. we have a
single product family which might be obtained by aggregating several products. In many industries a single
product family is often composed of many different product versions. When a new manufacturing technology
2
becomes available, existing products are often migrated from an older technology to a newer one. New products
undergo a verification process before they are ready for production. Thus the uncertainty in the total demand
for a product family arises from several major sources - uncertainty in total marketplace demand, uncertainty
in the company’s market share, uncertainty in the timing of migrations of a product from one technology to
another, and uncertainty in the time when new products will be ready for production. We model the variability
in the total demand for the product family, without differentiating between the different sources of uncertainty.
Customer demands generally cycle with the economic climate, increasing in economic booms and decreasing
in economic slumps. Even high-tech industries which traditionally experience strong demand growth cannot
escape from these cycles. For example, the semiconductor industry hardly had 4-5 years of growth in the last
25 years while 2-3 years of growth followed by decline is common. Therefore, capacity contractions must be
studied along with expansions. Our model has a finite time horizon, treats time as a continuous variable, and
allows random demands. It does not permit any accumulation of inventory as motivated by the semiconductor
industry and electric utilities where unfilled demand is lost. Each machine type (or generator in electric utilities)
has a lead time for delivery and installation. We assume that machine capacities remain constant over the
decision horizon. We next discuss previous research. The mathematical model is presented in section 3. In
section 4, solution algorithms are discussed and illustrated with a real life example. We introduce the concept
of cyclical demand in section 5 and provide a brief conclusion in section 6.
2 Literature Survey
An extensive survey, capturing application areas and multi-location models, is in Luss [20], we discuss the mod-
els that appeared thereafter. Initially, capacity expansion work generally focused on models with deterministic
demands. Neebe and Rao [21] provides a shortest path formulation and a Lagrangian relaxation scheme to
sequencing and selecting expansion options. There have also been efforts to convert the stochastic expansion
problem to an equivalent deterministic problem in the sense that both problems have the same optimal solu-
tions. When product demands are transformed Brownian motion or transformed birth-death processes, Bean,
Higle and Smith [4] provide an equivalent formulation by replacing stochastic demand with its deterministic
counterpart and reducing the interest rate. Fong and Srinivasan [14] study a transportation problem where
the capacity of facilities is expanded as the deterministic demand grows. Li and Tirupati [19] explicitly con-
sider flexible and dedicated capacity expansions for multiple products and provide heuristics. Rajagopalan [23]
presents a capacity model by assuming that a combination of machines exist whose total capacity is exactly
3
equal to the demand. The model captures capacity expansions, disposals and replacements.
If time is a continuous variable rather than a discrete one, the expansion problem becomes an optimal con-
trol problem whose objective is usually the integral of cost (production, expansion, inventory) over time,e.g.,
Khmelnitsky and Kogan [18] provide an algorithm to calculate the optimal expansion rate function for deter-
ministic demand. Davis, Dempster, Sethi and Vermes [11] regulate the expansion rate with an investment rate
function. As soon as the cumulative investment reaches the random price of a discrete capacity unit, that unit
becomes available. This paper enriches classical approaches by introducing a nonconstant investment rate and
random capacity prices which are more common in infrastructure industries than in manufacturing. Bena-
vides, Duley and Johnson [5] study the optimal expansion times for semiconductor fabs without differentiating
between machine groups.
In the economics community, the capacity expansion problem is recently addressed by works of Dixit [12],
and Eberly and Van Mieghem [13]. The latter establishes structural properties for expansion and contraction
policies for multiple factors contributing to capacity. It provides a closed form solution of the optimal policy in
the case of i.i.d. stochastic processes and stationary costs. It also introduces the concept of ordering expansions
of different factors of capacity (see Proposition 3), which inspires the Bottleneck Policies of the current paper.
Harrison and Van Mieghem [15] revisit Eberly and Van Mieghem [13] and study manufacturing costs explicitly.
Their model is for discrete-time, continuous-capacity-expansion and multi-product case whereas the current
paper proposes a model for continuous-time, discrete-capacity-expansion and single-product case. Angelus,
Porteus and Wood [1] consider semiconductor fab capacity expansion with fixed costs, and stochastically
increasing and correlated demand and apply inventory theory. They show that the optimal expansion policy
is (s,S) type where both parameters depend on the most recently observed demand. Rocklin, Kashper and
Varvaloucas [25] prove the optimality of (s,S) capacity expansion/contraction policies under certain conditions
on the cost function and for a specific case (when demand exceeds the capacity, capacity is installed in an
amount at least as large as the capacity deficit).
Rajagopalan, Singh and Morton [24] study the replacement of old vintage machines with new ones, under
both certain and uncertain technology arrival times, and with deterministic, nondecreasing demand. They show
some structural properties of the optimal solution and exploit those with a dynamic program. In competitive
markets, companies pay attention to each other’s capacity expansions to avoid too much slack capacity. Using
game-theoretic techniques, Bashyam [2] models a duopolistic market with a few stochastic demand scenarios
under two cases. In the first (second) case, each company makes decisions without (with) the knowledge of the
4
other company’s decisions. The learning effect sometimes is not negligible, bringing per-unit costs and manu-
facturing times down. Under the learning effect, Hiller and Shapiro [16] provide a mixed integer programming
formulation of capacity expansion where concave manufacturing costs are approximated by piecewise linear
functions.
Although capacity expansions can be made at any time, quite a few models discretize time. Ong and Adams
[22] examine the effects of granularity of time on cost for three cases: certain demand without shortage, certain
demand with shortage, and uncertain demand. It is noted that the uncertain demand case is more sensitive to
time granularity. The study advises using nonuniform granularity i.e., decisions are made more frequently in
the short run than in the long run. In addition to making time discrete, another modeling practice is curtailing
the decision horizon. It is valuable to know the shortest decision horizon such that the first period’s decisions
do not change in response to events beyond that (decision) horizon. Bean and Smith [3] establish some criteria
for the existence of a finite decision horizon and provide an algorithm to calculate it. Recently, Van Mieghem
[29] has put together some of the work above and many others in an extensive review article.
3 Multiple Machine Capacity Expansion and Contraction Model
In this section we provide a mathematical description of the machine capacity expansion and contraction
model. Consider a single product family over a decison horizon [0, T ]. The family demand at time t is Dt(ω)
(ω ∈ Ω), a nonnegative and bounded random variable. We assume that Dt first stochastically increases and
then stochastically decreases, i.e. P (Dt ≥ y) is unimodal for any y ≥ 0. P (Dt ≥ y) can be set to increase
(decrease) to model the situation where demand only expands (contracts).
Let S be the earliest time P (Dt ≥ y) is maximized. Name [0, S] and [S, T ] as the expansion and contraction
intervals. If S depends on demand scenarios, we consider the conditional distribution of demand [Dt|S] for
every scenario. It may be convenient to specify our demand process in two steps, first specify S and then [Dt|S].
From these, we can construct Dt via unconditioning as ES [Dt|S]. Fortunately, P (Dt ≥ y) can still be unimodal
even when S depends on specific demand scenarios. For example, let T = 3 and suppose [Dt|S = 1] is U(0, 1) if
t ∈ [0, 1]∪ [2, 3], it is U(0, 2) if t ∈ [1, 2] and it is zero everywhere else. Suppose that [Dt|S = 2] = [Dt−1|S = 1]
and [S = 1] ([S = 2]) happens with probability p1 (p2). Then it follows that P (Dt ≥ y) = ESP (Dt ≥ y|S)
is unimodal with maximum at S = 1 (S = 2) if p1 ≥ p2 (p1 ≤ p2). A sufficient condition for concavity (so
unimodality) of P (Dt ≥ y) in t is that each P (Dt ≥ y|S) is concave. In summary, in an application where
expansion interval depends on demand scenarios, we can still have unimodal P (Dt ≥ y) and that is all we
5
assume: We allow for some specific demand realizations to increase (decrease) after (before) S.
We consider M machine types indexed by i, and assume that all machines of a type are identical and work
in parallel. If a machine of type i is purchased at time t then the machine is available at time t + L(i) for
installation and qualification. L(i) is the nonnegative machine delivery lead time for machines of type i, but it
does not include machine installation and process set up/qualification times. In practice, machine installation
teams (generally maintenance workers) install machines while machine operators handle the manufacturing.
Typically machines are installed one by one. There generally is an installation lead time τ(i) for each machine
of type i. The installation team concentrates on each machine of group i during τ(i) to set up / qualify that
machine. A machine of type i purchased at t is delivered at t + L(i) and is available for regular production at
t + L(i) + τ(i). L(i) restricts the delivery time of a machine of type i independent of all other machines. On
the contrary, τ(i) restricts the availability time of a machine of type i depending on the most recently installed
machine’s availability time. Because of this dependence, τ(i) and L(i) should not be lumped together. This
subtle point will become clearer when we formally state our problem.
When a machine is retired at time t, it immediately becomes unavailable at time t. We use machine
purchases (retirements) for capacity expansion (contraction) as demand fluctuates. In our model machine
capacities are fixed and given, capacity expansions and contractions can only be made in these fixed quantities.
Each type of machines constitute a machine group whose capacity is of interest to us. When a machine of a
group is installed (retired), that group’s total capacity jumps up (down) by a constant amount. The overall
system capacity at any time is minimum of all machine group capacities. Thus, system and machine group
capacities are step functions. Figure 1 depicts the capacities for two machine groups, and a realization of the
demand Dt. The vertical bars in Figure 1 stand for the amount produced at time t, i.e. the minimum of the
capacity and the demand.
– Figure 1 –
The installation of the k-th machine of type i at time t will raise the capacity of machine group i to a(i, k),
where a(i, k) is simply the number of machine type i available at time t multiplied by the capacity of a machine
of type i. If this k-th machine is purchased at time t(i, k) − L(i) − τ(i) and the installation team is available
for installation at t(i, k) − τ(i), capacity goes up at the availability time t(i, k). Thus L(i) ≤ t(i, k) ≤ T and
t(i, k) can happen only τ(i) time after the completion of the last installation before t(i, k). For machines that
are available initially, t(i, k) = 0. Similarly, the retirement of the kth machine of type i at time u(i, k) will
6
lower the capacity of machine group i from a(i, k) down to a(i, k − 1). Naturally, 0 ≤ t(i, k) ≤ u(i, k) ≤ T . If
t(i, k) = u(i, k) then the k-th machine of type i is never purchased.
Let K be an upper bound on the capacity that we would consider installing before time in [0, T ]. The set
of machines, including the existing machines, (i, k) : a(i, k) < K is sorted in increasing order of a(i, k) and
indexed by n, 1 ≤ n < N , so that a(in, kn) =: an ≤ an+1 and let tn := t(in, kn). Ties are broken arbitrarily.
Define Ln := L(in), τn := τ(in) and un := u(in, kn). We set tn = 0 for all existing machines, tN = uN , u0 = T
and aN = K. A bottleneck policy (BP) is a policy in which machines are made available for production in
increasing order of n and are retired on a decreasing order of n, i.e., tn ≤ tn+1 and un+1 ≤ un.
We model two kinds of costs, capacity costs and lost-sales costs. Capacity costs include the cost of financing
the purchase and installation of machines, and maintenance costs for the machines. The lost-sales cost is used
to measure service - the company’s ability to meet market demand. Other service measures could be used,
such as the expected number of weeks during which demand is fully met, etc. A service cost (measure) is called
regular if it depends on the machine purchase / retirement schedule only through the capacity, and postponing
the purchase or earlier retirement of a machine cannot decrease it. The measures described above are regular.
We limit attention to regular service measures. Capacity costs are called regular if postponing the purchase or
earlier retirement of a machine does not increase them.
Lemma 1 If the machine purchasing problem has regular cost functions, a bottleneck policy minimizes the total
cost with respect to any demand sample path realization under the following conditions:
i) Installation lead times are zero.
ii) Maintenance costs accumulated during τn and τm are the same for any two machines n and m.
Proof: Suppose that we are given an instance of the machine purchasing problem and a set of machine avail-
ability and retirement times tn, un : 1 ≤ n ≤ N, 0 ≤ tn ≤ un ≤ T. First, let n be the smallest integer such
that tn > tn+1. If (i) holds, we set tn+1 equal to tn. If (ii) holds, we switch the values of tn and tn+1. In case
of i), the capacity over [0, T ] is not affected while in case of ii) it may increase. However, in both cases service
costs do not increase. In case of i), the capacity costs do not increase since they are regular. The condition
(ii) directly implies that switching tn and tn+1 do not affect the maintenance or capacity costs. Iterating this
procedure we put availability times in BP order without increasing the cost. To complete the argument for
the retirement times, let n be the smallest integer such that un+1 > un and then set un+1 = un. Iterating the
above arguments, we can obtain a BP policy that does not cost more than the initial solution. Finally observe
that our arguments can be applied to any demand sample path. 2
7
A direct corollary of the lemma says that the BP minimizes the total expected cost under i) and ii). The
BP can be implemented in a manner such that the most recently purchased machine is not retired first when
demand starts falling. BP merely says that the most recently purchased machine and the first machine to retire
must be of the same type. This distinction is important to avoid retiring new machines which may be slightly
more efficient than older ones in practical applications, although our model assumes that all characteristics
of the machines of the same type are the same. The assumption of identical machines in a group allows us
to build BP order. If the optimal purchasing and retirement order is given a priori, this assumption is not
required. If both i) and ii) of the lemma fail, the BP is not necessarily optimal but still can be used to obtain
approximately optimal costs. Only BPs is considered in the remainder.
For now we assume that there are no existing machines, we will relax this assumption later on. The BP
determines the sequence in which machines are brought on line and are retired, but we still need to select the
availability times tn and retirement times un, subject to the constraint
tn ≥ tn−1 + 1[0≤tn<un]τn and un−1 ≥ un for 1 ≤ n ≤ N where t0 = 0, tN = uN and u0 = T. (1)
The indicator function 1[0≤tn<un] takes value of 1 if the nth machine is installed. If machine n is not installed,
then tm = um for all m ≥ n. The capacity of the system over [tn, tn+1) ∪ (un+1, un] is an, see Figure 1.
Note that E[(Dt − a)+] is the expected amount by which the demand at time t exceeds a. Let ∆n(Dt) =
E[(Dt − an−1)+]− E[(Dt − an)+] where Dt is emphasized to indicate that the expectations are taken against
Dt. Then we take the expected value of the total unmet demand in [0, T ) as our service measure:
N∑
n=1
(∫ tn
t=tn−1
E[(Dt − an−1)+]dt +∫ un−1
t=un
E[(Dt − an−1)+]dt
)
=N∑
n=1
(∫ tn
t=tn−1
N∑
k=n
E[(Dt − ak−1)+]−E[(Dt − ak)+]+ E[(Dt − aN )+]dt
)
+N∑
n=1
(∫ un−1
t=un
N∑
k=n
E[(Dt − ak−1)+]− E[(Dt − ak)+]+ E[(Dt − aN )+]dt
)
=N∑
k=1
k∑
n=1
(∫ tn
t=tn−1
∆k(Dt)dt +∫ un−1
t=un
∆k(Dt)dt
)
+N∑
n=1
∫ tn
t=tn−1
E[(Dt − aN )+]dt +N∑
n=1
∫ un−1
t=un
E[(Dt − aN )+]dt
=N∑
k=1
(∫ tk
t=0∆k(Dt)dt +
∫ T
t=uk
∆k(Dt)dt
)+
∫ T
t=0E[(Dt − aN )+]dt
8
=N−1∑
k=1
ηk(tk) + ζk(uk) + SC
where
ηk(tk) :=∫ tk
t=0∆k(Dt)dt , ζk(uk) :=
∫ T
t=uk
∆k(Dt)dt and SC :=∫ T
t=0∆N (Dt)dt.
Since SC is a sunk cost, independent of the timing of machine purchases, we will not include it in our objective
function. Actually by choosing N sufficiently large, SC can be brought down to zero. We obtain the following
lemma and illustrate lost sales functions with an example below.
Lemma 2 Total lost sales cost is separable by machines: It can be written as a sum of N functions, each of
which has only tn, un as argument.
Explanatory example: Suppose that T = 1 and the product demand is Uniformly distributed i.e., Dt ∼U(0, t) for t ∈ [0, 1]. Since the demand grows, the capacity is not contracted. First note that,
E[(Dt − a)+] =
t/2− a + 0.5a2/t if t ≥ a
0 otherwise
for 0 ≤ a, t ≤ 1.
Since ηn(tn) = 0 for tn < an−1, we study ηn(tn) only over tn ≥ an−1:
ηn(tn) =∫ tn
0∆n(Dt)dt =
(an − an−1)tn − 0.5(a2n − a2
n−1) ln tn + Constant if an ≤ tn
t2n/4− an−1tn + 0.5a2n−1 ln tn + Constant if an−1 ≤ tn < an
where Constant’s do not change with the availability time tn so they can be ignored. We will return to this
example in the next section. 2
We express the capacity costs as
N−1∑
n=1
Gn · 1(0≤tn<un) + hn(un − tn) + Hn · 1(tn<un<T )
where Gn is the time-independent fixed cost (perhaps a portion) of buying and installing machine n. Gn is
incurred if the machine is purchased, i.e., 0 ≤ tn < un. Hn is the salvage cost. It can take positive or negative
values but typically −Hn ≤ Gn. Hn is incurred if the machine is bought and retired before T , i.e., tn < un < T .
hn captures usage (un − tn) dependent costs: such as the amortized cost of the capital (perhaps a portion of
it) required to purchase and install the nth machine, plus the periodic maintenance cost. It is assumed to be
a convex and a nondecreasing function. The convexity may be due to the fact that older machines cost more
to maintain. We coin the term machine rent function for hn. Another interpretation of this cost structure is
9
via subcontracting; Machine n is subcontracted at tn by paying the fixed transaction cost Gn. Machine is used
until un by paying a rent of hn per unit time. Subcontracting is terminated at time un by incurring the fixed
transaction cost Hn.
The problem of expanding / contracting facility capacities in a supply chain can be attacked with this
cost structure. Then machine types correspond to production or transportation facilities and each machine
corresponds to a chunk of capacity. BP order can be based on the minimum capacity facility in the chain.
Moreover, this cost structure can be used to study a simplified version of Unit Commitment Problem ([26]) of
power generators. Then machine purchases (retirements) will correspond to turning the generators on (off).
In order to apply this model to Unit Commitment Problem, an optimal sequence for the activation and the
retirement of generators must be known. This is trivially the case when generators are similar enough to be
treated identical. Otherwise, this model can be used to evaluate optimal costs for given sequences, perhaps
as a part of a (sequence) search heuristic and it can be used to obtain bounds on the optimal cost. Note
that decision horizons for unit commitment problem is significantly shorter than machine or facility capacity
expansion / contraction problems. Also S and T are easier to find out in the unit commitment problem as
demand for power peaks early in the evening and dwindles early in the morning.
For now, assume that Gn = Hn = 0 for all n. In the next section, we discuss how to treat nonzero purchase
costs and salvage values. Recall that Ln, 0 ≤ Ln < T is the lead time required for purchase, installation and
qualification of the nth new machine. We model the total cost associated with the purchase and retirement of
nth machine as
fn(tn, un) =
ηn(tn) + ζ(un) + hn(un − tn) if Ln ≤ tn ≤ un ≤ T
∞ otherwise
, 1 ≤ n ≤ N (2)
When the tool purchase budget is limited but unused budgets are transferred to the coming time periods,
budgets may imply financial lead times on machine purchases: the purchase of the nth machine is delayed until
the budget is sufficient enough to cover for∑
i≤n Gi. Then we must use the maximum of financial and delivery
leadtimes in (2). It is instructive to compare how τn and Ln are incorporated into our formulation respectively
via (1) and (2).
Without loss of generality, we assume that capacity costs Gn, hn and Hn are already scaled by the unit lost
sales cost so that we can add capacity and lost sales costs without further manipulation. We use (2) in our
computational study, but our algorithm does not require fn(., .) to have any particular algebraic form. The
10
machine capacity problem (P) then becomes
(P) minN∑
n=1
fn(tn, un) : (1) holds.
We break ties by favoring larger values of tn and smaller values of un.
It is evident from (P) that all tn and un are determined at t = 0 against the demand distribution available
then. When the demand distribution is updated, we resolve (P). In the execution mode, at any time we imple-
ment only those expansions / contractions that have to be done before the next demand update. Consequently,
we advocate a rolling horizon approach.
The next section describes an algorithm for the computation of optimal machine purchasing and retirement
times. The algorithm requires that cost functions are convex and concave only once in [0, T ].
Lemma 3 Cost fn(t, u) is jointly convex over 0 ≤ t ≤ S ≤ u ≤ T .
Proof: It suffices to show that each of ηn, ζn and hn is jointly convex. Since hn is assumed to be convex,
hn(u− t) is jointly convex. We discuss the joint convexity only for ηn, similar arguments apply to ζn. It suffices
to study the derivative of ηn(t) in t .
dηn(t)dt
= ∆n(Dt) =∫ an
an−1
P (Dt ≥ y)dy. (3)
The integrand is nondecreasing over 0 ≤ t ≤ S so ηn(t) is convex. 2
Unimodality plays a central role in Lemma 3, however it may not hold over the entire horizon [0, T ]. We
later treat the case where P (Dt ≥ y) is unimodal within demand cycles which span the entire horizon when
concatenated together. Lemma 3 is used to restrict machine expansions (contractions) to demand expansion
(contraction) intervals. This observation is formalized with the next lemma.
Lemma 4 There exists an optimal solution t∗n, u∗n to (P) such that
i) Effectively all installations happen during demand expansion: For any machine n, either 0 ≤ t∗n ≤ S or
t∗n = t∗n−1 + τn (4)
ii) All retirements happen during demand contraction interval: S ≤ u∗n ≤ T .
Proof: i) Suppose we have an optimal solution with n0 as the smallest index such that S < t∗n0≤ T and (4)
fails. Then let ε = t∗n0− τn0 − t∗n0−1. Let C = n0, n0 + 1, . . . N be the set of all expansions happening at
or after t∗n0. We argue that the following modification on installation and retirement times does not increase
11
the objective function: Pull both expansion and contraction times of machines in C by ε amount towards S
i.e. by setting tn = t∗n − ε and un = u∗n − ε for all n ∈ C. Observe that new expansion and contraction times
still satisfy (1). The costs associated with expansions and contractions outside C are not affected with this
modification so we focus on costs due to machines in C. Since un − tn does not change with the modification,
let xn = un − tn = u∗n − t∗n ≥ 0, then
∑
n∈C
fn(t∗n, t∗n + xn) =∑
n∈C
(∫ t∗n
0∆n(Dt)dt +
∫ T
t∗n+xn
∆n(Dt)dt + hn(xn)
)
This cost cannot increase as we decrease t∗n because
d
dtfn(t, t + x) = ∆n(Dt)− ∆n(Dt+x) =
∫ an
an−1
P (Dt ≥ y)− P (Dt+x ≥ y)dy ≥ 0.
The last inequality follows from stochastically decreasing demand for t ≥ S. Since our modification does not
increase costs and yields a better or equivalent solution with tn0 = tn0−1 + τn0 . The argument for ii) is simpler
and is omitted. 2
Lemma 4 implies that most capacity expansions and all capacity contractions happen respectively during
demand growth and fall. There can be some machine installations happening after demand starts dropping
because installation team does not have the capacity to complete installations earlier. In that case, the in-
stallation team works full time from S to the installation of the last machine. Actually we can trace back
the availability time of machines installed after S to a machine m installed before S in the following sense. If
t∗n > S, then there exists another machine m such that
t∗n = t∗m +n∑
i=m+1
τi and t∗m ≤ S.
In the special case of τn = 0 for each machine n, without loosing any generality we can set
tN = S = uN . (5)
This constraint will later allow us to split (P) into expansion and contraction problems. Next, an algorithm is
devised to solve (P) without splitting it.
4 Calculation of Optimal Expansion and Contraction Times
One way to solve (P) is to pose it as a comvex minimization problem. This can be achieved by eliminating
indicator functions in (1). Let s be the index of the last machine installed in [0, T ], 0 ≤ s < N . Let (Ps) be a
12
smaller version of (P) where the machines from s + 1 to N are removed from consideration because they will
not be installed. This can be achieved by setting tn = un for all n > s. Clearly (Ps) is a convex minimization
problem. For every s known and fixed, there is a unique set of KKT conditions whose solution yields the
optimal solution to (Ps). For every s, we attempt to construct a solution to KKT conditions. For n = 1 . . . s,
let λen−1 be the dual variable associated with constraint tn−1 + τn− tn ≤ 0 with the understanding that t0 = 0.
Define λcn similarly for constraint un − un−1 ≤ 0. Also associate λec for ts ≤ us. KKT conditions for a given s
are
(KKT-E): For 1 ≤ n ≤ s, ∇1fn(tn, un) = λen−1 − λe
n , tn−1 + τn ≤ tn , (tn−1 + τn − tn)λen−1 = 0 , λe
n−1 ≥ 0.
λes = λec , t0 = 0;
(KKT-C): For 1 ≤ n ≤ s, ∇2fn(tn, un) = λcn+1 − λc
n , un ≤ un−1 , (un − un−1)λcn = 0 , λc
n ≥ 0.
λcs+1 = λec , u0 = T.
(KKT-EC): ts ≤ us , (ts − us)λec = 0 , λec ≥ 0
where ∇ifn denotes the derivative with respect to the ith argument of fn. The KKT conditions are specific
to a given s. For now suppose that (P) is to be solved for a given s so that we can suppress the dependence
on s in our notation. When machine rents are nonlinear functions of usage, finding a solution to the KKT
conditions is challenging. It may require iterative algorithms whose complexity is exponential in N .
In the remainder of this paper, only those problems with linear machine rents are discussed. Linearity of
machine rents allow us to split machine n related costs fn(tn, un) into two
fen(tn) := ηn(tn)− hntn and f c
n(un) := ζn(un) + hnun.
This split simplifies the KKT conditions, which will next be specialized for nonzero and zero installation lead
times.
4.1 Nonzero Installation Lead Times
In this case, it is convenient to reindex retirement n as 2s − n + 1 so that retirement indices start from s + 1
and go upto 2s. Furthermore define generic cost function fn as
fn(t) =
fen(t) if 1 ≤ n ≤ s
f cn(t) if s + 1 ≤ n ≤ 2s
, 1 ≤ n ≤ N
13
Note that we use t for retirement times after reindexing. Because of reindexing primal constraints associated
with retirements become tn ≤ tn+1 for s < n ≤ 2s where t2s+1 = T . Define zero installation lead times for
retirements, i.e. τn = 0 for n > s, to write primal constraints
tn ≥ tn−1 + τn for 1 ≤ n ≤ 2s , where t0 = 0 and , t2s+1 = T. (6)
Let λn−1 be associated with (tn−1 + τn − tn), i.e. λn−1 = λen−1 for n ≤ s and λn−1 = λc
2s−n+1 for n > s.
KKT-E, KKT-C and KKT-EC can be combined into a single set of KKT conditions
(KKT): For 1 ≤ n ≤ 2s, ∇fn(tn) = λn−1 − λn , tn−1 + τn ≤ tn , (tn−1 + τn − tn)λn−1 = 0 , λn−1 ≥ 0,
λ2s ≥ 0 , t0 = 0 , t2s+1 = T.
An algorithm will be presented to find a solution to these KKT conditions.
The capacity increment that results from installing machine n is an − an−1. Since machines are usually of
different types, the ratio of an − an−1 to the cost of machine n can be very small or very large. In isolation,
machines with small (large) capacity increment to cost ratio would be made available late (early). However,
because of the BP order, expansion times of machines collide and certain sets of machines may share the
same availability time. Then the total capacity increment that results from making a set of machines simul-
taneously available becomes commensurate with the total cost of these machines. Similar comments can be
made for machine retirements. Consequently, it is reasonable to expect that some machines are made available
simultaneously while some others are retired simultaneously. These group of machines are called clusters.
A cluster is a set of consecutive machines p, p + 1, . . . , q. Machines in the same cluster are installed one
after another without any idle time for the installation team, that is
n ∈ p, . . . , q ⇒ tn = tp +n∑
i=p+1
τi
Machines in the same cluster are all retired simultaneously. Let C be a generic cluster. Because of our cluster
definition all clusters except for one are either composed of installments (indices ≤ s) or retirements (indices
> s). There can exist at most one cluster that includes both installments and retirements. For each cluster
define ∧C := minn : n ∈ C and ∨C := maxn : n ∈ C. The root of a cluster is always ∧C. The root is
always the first installment or retirement in the cluster. The availability or retirement time of the root can be
used to obtain all the other availability or retirement times in a cluster:
n ∈ C ⇒ tn = t∧C +n∑
i=∧C+1
τi (7)
14
Define expansion and lost sales costs attributed to clusters as follows
fC(tC) :=∑
n∈C
fn
tC +
n∑
i=∧C+1
τi
(8)
The availability or the retirement time associated with a given cluster C is computed by solving the following
problem, called (PC).
(PC)
minfC(tC) : 0 ≤ tC ≤ S if ∧ C ≤ s
minfC(tC) : S ≤ tC ≤ T if ∧ C > s
(9)
There can be machine retirements associated with indices in C even when ∧C ≤ s. However, the availability
time of the root of C is tC and all other availability and retirement times are related to tC via (7). Restriction
tC ≤ S still allows for some expansions and all retirements to happen after S. However, the restrictions
0 ≤ tC ≤ S and S ≤ tC ≤ T ensures that fC is convex over its domain. Thus, (PC) is a convex minimization
problem of only one variable. Moreover, these restrictions are satisfied by optimal availability and retirement
times; recall Lemma 4.
Let (Pp,s,q) be a smaller version of (Ps); In (Pp,s,q) the first p machines are initially available, the last
machine purchased is s and the last machine retired is q − 1. The indices must satisfy 0 ≤ s < N , 0 ≤ p ≤ s,
s < q ≤ 2s + 1. For example, in (Pp,s,s+1) no machines are retired while in (Pp,s,2s+1) all machines are retired.
To define (Pp,s,q) formally, add the following equalities to the constraints of (Ps)
0 = t0 = t1 = . . . = tp and tq = . . . = t2s = t2s+1 = T.
Let the optimal cost of (Pp,s,q) be cp,s,q.
Problems of type (P) can be solved to optimality with the class of PAV (pool adjacent violators) algorithms
in Best, Chakravarti and Ubhaya [7]. We use the general principles of PAV algorithms: (i) Machine availability
or retirement times that violate the constraints in (6) are pooled together into machine clusters. (ii) The
solution at the end of each iteration is optimal for a problem defined for a subset of machines. (iii) Clusters
are never split. A specialized PAV algorithm called the cluster algorithm is provided in Table I to solve
(Pp,s,q) : s < q ≤ 2s + 1 for given p and s. The algorithm increases the indices of the machines by one in
each iteration, which can be visualized as introducing a machine to the right hand side of existing clusters.
If J is a set of clusters that constitute a partition of 1, . . . , 2s, then C(n) is the cluster in J containing the
nth machine. Thus ∧C(n) ≤ n ≤ ∨C(n) for all n. Note that for each n ≤ q, a partition J of machines in
[p + 1, n − 1] is available from the computations in step n − 1 of the algorithm. The cluster C(k) containing
15
machine k is defined with respect to partition J . The validity of the cluster algorithm is established by showing
that KKT conditions are satisfied if the dual variables are defined as
λ∨C = 0 , λn =∨C∑
i=n+1
∇fi(tC) for each n ∈ C and each C ∈ J
where J is the final partition reported by the algorithm.
- Table I -
We now examine the running time of the cluster algorithm. The cluster algorithm never splits an existing
cluster. Since there are N machines, it can perform at most O(N) unions. Whenever there is a union or
the index n increases by one, an fC must be minimized. Thus, at most O(N) function minimizations are
performed while solving all of the subproblems in (Pp,s,q) : s < q ≤ 2s+1 for fixed p and s. A total of O(N3)
minmizations are done to solve all the subproblems for all p and s. Moreover,
∑
n∈E
ηn(t) =∫ τ=t
τ=0E[(Dτ − a∧E−1)+]−E[(Dτ − a∨E)+]dτ,
∑
n∈C
ζn(t) =∫ τ=T
τ=tE[(Dτ − a∧C−1)+]− E[(Dτ − a∨C)+])dτ.
Thus fC(t) can be evaluated in time that is constant in |C|. Since fC(t) is convex, each minimization takes T ,
i.e. constant time in the number of machines in |C|. However, T can increase with the desired accuracy of the
minimizers. As a result, the cluster algorithm runs in O(N3 T ) and computes cp,s,q : 0 ≤ p ≤ s < N, s < q ≤2s + 1. The algorithm stores only one availability or retirement time per machine so it requires only O(N)
memory while computing each cost cp,s,q. Once the cost cp,s,q is computed and stored into O(N3) memeory all
the availability and retirement time data can be cleared from the memory. In summary, when the installation
lead times are nonzero, the cluster algorithm computes cp,s,q : 0 ≤ p ≤ s < N, s < q ≤ 2s + 1 in O(N3 T )
time and stores them in O(N3) memory space.
Nonzero fixed costs Gn and Hn are now incorporated into computations. Let I0 be the existing machine
with the largest BP index. Assume that the set of existing machines respect the BP, i.e. if n is an existing
machine so are 1, . . . , n − 1. It may be profitable to retire some of the existing machines at time t = 0 and
purchase them at a later time. This operation will save some machine rent and can bring in some salvage value
(if Hn < 0) but will require payments for the fixed purchase costs later on. Let p + 1, . . . , I0 be the set of
machines to retire initially at t = 0 where I0 is known but p must be determined. Then the optimal cost of
16
(P) would be
min0 ≤ p ≤ s < N
s < q ≤ 2s + 1
I0∑
n=p+1
Hn +s∑
n=∧p,I0+1
Gn + c∧p,I0,s,q +q−1∑
n=s+1
Hn
(10)
Note that when p > I0, no machines are retired at t = 0 so the first term in the objective function vanishes.
Once cp,s,q : 0 ≤ p ≤ s < N, s < q ≤ 2s+1 are computed, the cost in (10) can be evaluated for every possible
value of p, s and q. Thus the minimum cost can be found in O(N3 T ) time.
Theorem 1 If installation lead times are nonzero, the capacity expansion / contraction problem can be solved
in O(N3 T ) time.
Theorem 1 applies to the general case when I0, Gn and Hn can all be nonzero. If some of these parameters
are zero, we obtain the first 7 cases listed in Table II. The fifth column contains the set of problems to solve
for each case. These sets are determined by studying which of the indices p, s and q are necessary to evaluate
the cost in (10). The running times in the sixth column depend directly on how many of the indices p, s and q
are fixed in the problems. In Case 3, solving (P0,s,2s) : 0 ≤ s < N in O(NT ) requires modifying the cluster
algorithm in a manner that new machine indices are introduced into the middle of existing clusters instead of
to the right hand side as in Table I: Given optimal clusters for (Ps−1), installation and retirement indices s and
s + 1, both for machine s, are introduced one by one. Times ts and ts+1 are found by respectively minimizing
fs and fs+1. Clusters are united if ts and ts+1 violate the constraints ts−1 + τs ≤ ts ≤ ts+1 ≤ ts+2. Since no
clusters are ever split, there can be at most O(N) unite operations. The last two columns of Table II relates
to zero installation lead times which is discussed in the next subsection. This subsection is closed with an
example.
- Table II -
Explanatory Example continued: We revisit the example of uniform product demand presented before.
Suppose that machines A and B are both needed to manufacture the product and a single A (B) machine
has 0.3 (0.4) units of capacity. Further suppose that currently 1 A and 1 B are available so a0 = 0.3. The
bottleneck machine is A. After installing a single A at t(A, 1), B becomes the bottleneck with capacity 0.4 so
a1 = 0.4. After the first installation of B at t(B, 1), A becomes the bottleneck with capacity 0.6 so a2 = 0.6.
17
Installing machines in BP order a3 = 0.8 with 3 A’s and 2 B’s, and a4 = 0.9 with 3 A’s and 3 B’s. Suppose
that K = 1 so we do not consider installing the third A machine and N = 5. We use bottleneck policy to get:
0 ≤ [t1 := t(A, 1)] ≤ [t2 := t(B, 1)] ≤ [t3 := t(A, 2)] ≤ [t4 := t(B, 2)] ≤ [t5 := t(A, 3)] = [S = 1]
Since the demand is stochastically increasing, S = T and no machines are retired. Suppose that all machine
capacity costs are zero except for the per-time operation costs and rents for machines A and B, namely hn = 0.05
for all machines. Furthermore set all installation lead times to zero.
Using the ηn(t) obtained before in the context of uniform demand, for any C ⊆ 1 . . . 5,
fC(t) =
(a∨C − a∧C − h(C))t− 0.5(a2∨C− a2∧C
) ln t + Constant if a∨C ≤ t
t2/4− (a∧C + h(C))t + 0.5a2∧Cln t + Constant if a∧C ≤ t < a∨C
−h(C)t if t < a∧C
where h(C) =∑
n∈C hn. In this example, hn values are chosen large enough so that tC ≥ a∨C for all the
clusters C considered below. Then the optimal availability time for cluster C is
tC = min
0.5(a2∨C
− a2∧C)
a∨C − a∧C − h(C), 1
.
Now we will use the Cluster algorithm to solve this 5 machine problem, (P) = (P1,5) so r = 1 and s = 5.
At the start R = 1, 2, 3, 4, 5 and n = 2. When we are solving subproblem (P1,2), t1 = 0.7 = tC(k) and
t2 = 0.66 = tC′ so we unite machine expansions into C = 1, 2 and set R = 1, 3, 4, 5. In the next two
subproblems (P1,3) and (P1,4), t1,2 = 0.675 = tC(k) and t3 = 0.93 = tC′ , and t3 = 0.93 = tC(k) and t4 = 1 = tC′
so no other unite operations are executed. Thus root set R = 1, 3, 4, 5 remains unaltered and it leads to
the optimal machine clusters 1, 2, 3, 4 and 5. In terms of expansion times, t(A, 1) = t(B, 1) = 0.675,
t(A, 2) = 0.93, t(B, 2) = t(A, 3) = 1, the second B machine is not purchased within the planning horizon. 2
4.2 Zero Installation Lead Times
In this case Lemma 4 can be used to trivially set λes = λc
s = λec = 0. Thus, KKT-EC is eliminated and
KKT-E and KKT-C are separated. Remaining KKT-E and KKT-C conditions correspond to expansion (PE)
and contraction (PC) problems
(PE) minN∑
n=1
fen(tn) : 0 = t0 ≤ t1 ≤ t2 ≤ . . . ≤ tN−1 ≤ tN = S,
18
(PC) minN∑
n=1
f cn(un) : S = uN ≤ uN−1 ≤ . . . ≤ u1 ≤ u0 = T.
Note that the original indexing of retirements is kept unchanged. The cluster definition does not change but the
interpretation does: Machines in the same cluster are installed or retired simultaneously. Because of Lemma
4, each cluster can be considered either as an expansion cluster E or as a contraction cluster C. Cluster costs
and a cluster subproblems still can be respectively defined by (8) and (9).
Let (PEp,s) be a smaller version of (PE) where first p machines are initially available and the last machine
purchased is s, i.e add the constraints 0 = t0 = . . . = tp and ts+1 = . . . = tN = S to (PE). Also define (PCs,q)
as a smaller version of (PC) where first s machines are initially available and the last machine retired is q + 1,
i.e add the constraints S = uN = . . . = us+1 and uq = . . . = u0 = T to (PC) Suppose that fixed costs Gn
and Hn are zero. The cluster algorithm of Table I can be modified to solve (PEp,s) : 0 ≤ p ≤ s < N and
(PCs,q) : 0 ≤ q ≤ s < N separately. The algorithm can be validated by choosing the dual variables as
λe∨E = 0 , λe
n =∨E∑
i=n+1
∇fei (tE) for each n ∈ E and λc
∨C = 0 , λcm =
m∑
i=∧C
∇f ci (uC) for each m ∈ C.
Although expansion and contraction problems are solved separately, their solutions must be patched to-
gether with the Expansion/Contraction (EC) algorithm presented in Table III. With the cluster algorithm, all
the problems in (PEp,s) : 0 ≤ p ≤ s < N and in (PC
s,q) : 0 ≤ q ≤ s < N can be solved in O(N2 T ) and their
costs can be stored into O(N2) memory. Thus, step A of the EC algorithm can be completed in O(N2 T ).
- Table III -
To discuss the running times of the problems in Table II, consider nonzero I0, Gn and Hn. Let eI,s be the
cost of the expansion problem if machines in I + 1, . . . , I0 are retired at t = 0 and machines in I + 1, . . . , sare purchased:
eI,s =I0∑
n=I+1
Hn + eI,s +s∑
n=I+1
Gn for I ≤ I0, I ≤ s (11)
Note that salvage costs are incurred when retiring existing machines. Let
I∗(s) = arg min0≤I≤I0
eI,s and e∗,s = eI∗(s),s for 0 ≤ s < N (12)
where e∗,s is the optimal expansion cost with the option of retiring some of the existing machines immediately.
In particular, all of the machines in I∗(s) + 1, . . . , I0 are retired at t = 0 to achieve e∗,s. Analogous to e∗,s,
19
let cs,∗ be the optimal cost of the contraction problem starting with machines in 1, . . . , s at t = S:
q∗(s) = arg min0≤q≤s
cs,q +
s∑
n=q+1
Hn
and cs,∗ = cs,q∗(s) +
s∑
n=q∗(s)+1
Hn for 0 ≤ s < N (13)
Finally, the optimal last machine s is found by combining expansion and contraction costs
s∗ = arg min0≤s<N
(e∗,s + cs,∗) (14)
Then the solution to the expansion contraction problem dictates retiring machines in I∗(s∗) + 1, . . . , I0 at
t = 0, installing machines in I∗(s∗)+1, . . . , s∗ at times given by the optimal solution to (PEI∗(s∗),s∗). Moreover,
machines in q∗(s∗) + 1, . . . , s∗ are retired at times given by (PCq∗(s∗),s∗).
The validity of the EC algorithm can be established by arguing: (i) All feasible solutions are considered
by the EC algorithm. (ii) Given a last machine s0 and the associated optimal solution, the optimal total cost
TC(s0) is less than or equal to e∗,s0 +cs0,∗. In particular, TC(s0) < e∗,s0 +cs0,∗ if ts0 = us0 in the given optimal
solution and Gs0 > 0. That is because, the cost e∗,s0 + cs0,∗ includes Gs0 but does not necessarily use machine
s0. Then,
TC(s0) = minn≤s0
(e∗,n + cn,∗) (15)
Minimizing both sides of (15) over s0 : 0 ≤ s0 < N, we obtain the minumum in (14). Thus, the optimal last
machine index s∗ computed by the EC algorithm is correct.
Recall that step A of the EC algorithm generates all ep,s and cs,q. Once all ep,s and cs,q are available,
the computations in (11), (12), (13) and (14) can be done in O(N2). These are steps B, C and D of the EC
Algorithm. Thus, the EC algorithm solves the problem in Case 8 of Table II in O(N2 T ) time. In the special
case of I0 = 0 and Hn = 0, the cluster algorithm solves (PE0,s), (PC
s,0) : 0 ≤ s < N in O(N T ) in step A of the
EC algorithm. Steps B or C can be ignored. In step D, the sum in the right hand side of (14) is replaced by
eI0,s + cs,1, then s∗ can be found in O(N). In Cases 1 and 3, the EC Algorithm runs in O(N T ). In Case 5,
the cluster algorithm if directly applied to (Pp,N,2N ) yields a solution in O(N T ) while the EC algorithm takes
O(N2 T ). However, except for Case 5 the EC algorithm always has running times shorter than or equal to
those of the cluster algorithm; compare columns six and eight of Table II. In summary, zero installation lead
times give rise to faster algorithms by a factor of O(N) in Cases 6 and 8.
Real Life Example: We illustrate the EC algorithm with real life data from the semiconductor industry.
We obtained machine data from SEMATECH (SEmiconductor MAnufacturing TECHnology, sematech.org)
20
databases. Machine data includes purchase prices, capacities (in number of wafers per month) and delivery
lead times (in months). There are about 40 machine types, each of which is necessary to manufacture a single
wafer. Machine delivery lead times range from 12 months to 24 months. Purchase prices are between $0.4
M and $11 M which are converted to monthly machine rents using fixed amortization. We assume that fixed
machine purchase costs and salvage values are zero, and set the lost sales costs at $1.2 K per wafer. Initial fab
capacity is about 5900 wafers per month. We plan for capacity starting 12 months from now and ending 67
months from now, so lead times shorter than or equal to 12 months are irrelevant. In each month, demand is
modelled by a symmetric trapezoid density with lower and upper bounds shown in Figure 4. The trapezoid
density has three intervals over which it linearly increases, stays constant and linearly decreases. We choose
these interval lengths equal so that a lower bound and an upper bound suffice to define the entire demand
process. Demand is stochastically increasing for the first 30 months (S = 30) and stochastically decreasing in
the remaining 25 months (T = 55). We plan to buy at most 82 machines in the 55 month planning horizon
(N = 82). According to the optimal solution shown in Figure 4, only 34 machines are installed in 5 different
months (5 clusters) in the first 30 months of demand growth. In the remaining 25 months, 31 machines are
retired in 5 different months (5 clusters) leaving a capacity of about 6600 wafers per month. A more detailed
study of capacity expansion heuristics and models for the Semiconductor Industry can be found in [10]. 2
– Figure 4 –
4.3 Remarks
Having presented algorithms to find an optimal solution to (P), we make several remarks which apply to
problems with zero and nonzero installation lead times.
• Existing machines may violate the BP order. Suppose that machines in 1, . . . , I0 and machine n exist
initially where n > I0 + 1 and there are no other machines. Since tn = 0 in this case, we concentrate
on the cost associated with un, i.e. ζn(un) + hnun. From the proof of Lemma 3, this cost is concave for
0 ≤ u ≤ S so it is minimized either at u = 0 or u ≥ S. To decide whether machine n should be retired
immediately or kept at least until S, it suffices to compare the costs of these two options. If n is retired
immediately, Hn is paid but then the existing machines respect the BP order. The cost of this option is
computed by adding Hn to costs in (10) or in (11). If n is notretired, set an−1 := an because as soon as
n− 1st machine is installed the overall production capacity becomes an. Remove the nth machine from
21
the problem. Note that machine n’s rent is hnun−hntn, removing machine n from the problem causes tn
to drop from the cost expressions. The remaining term hnun reflects the true machine rent paid until un.
After these modifications, the existing machines respect the BP order and the costs can be computed in
ususal manner. This logic cannot be efficiently extended to the case with two or more existing machines
violating BP order; The costs must be computed separately by prsuming that a subset of machines in
violation are retired immediately. However, the number of machines violating the BP order is limited by
the number of machine types and in most practical applications there will be a few machines violating
the BP order. Moreover, once machines are put into BP order, the EC algorithm will retain the order.
• Machine rents may be nonlinear. Our algorithms can still be applied after approximating machine rents
with linear functions. Our solutions will not be optimal but can be used as a good starting point for an
iterative algorithm solving KKT-E, KKT-C and KKT-EC conditions. Since (Ps) is a convex program,
the iterative algorithms, if they converge, will always yield the global optimal solution.
• The size of (P) is determined primarily by the number of machines considered. Since capacity larger
than the largest demand is useless, minn : an−1 ≥ supω∈Ω DS(ω) is an upper bound on N . Another
meaningful upper bound on N can be derived from the total machine purchase budget available over
[0, S].
• The horizon T is determined by the availability of stochastic forecasts Dt : 0 ≤ t ≤ T. There can
be multiple demand expansion and contraction cycles in [0, T ]. In the case of Gn = Hn = 0 for all n,
solutions to cycles are independent by the special structure of (P); As far as the immediate decisions
are concerned, it is sufficient to myopically solve a single cycle problem. For nonzero Gn and Hn, cycles
affect each other and a reasonable effort must be made to consider all the demand cycles. We focus on
multiple demand cycles in the next section.
5 Demand Cycles with Linear Machine Rents
If several demand cycles are considered and Gn or Hn are nonzero, capacity expansions and contractions over
these cycles must be optimized together. We now provide a shortest path formulation for this purpose by
first starting with the demand characterization: Suppose there are K demand cycles and within each cycle
demand stochastically increases and decreases only once. Then [0, T ] can be partitioned into K expansion
22
and contraction intervals following each other; Expansion during [Tk−1, Sk] and contraction during [Sk, Tk] for
k = 1 . . . K where T0 = 0 and TK = T .
In our formulation, stages correspond to the time epochs at the end of demand cycles. Adding these stages
to the starting stage at t = 0, we index stages from 0 to K. At each stage we have an integer Ik−1 as the state
variable indicating the existing machines at the beginning of demand cycle k. For example, 1, . . . , I0 and
1, . . . , I1 are the set of existing machines at t = 0 and t = T1. The shortest path problem is defined on a
network which has nodes that correspond to states; we use (k, n) to denote state Ik = n at stage k, 0 ≤ k ≤ K,
see Figure 2.
– Figure 2 –
The network has horizontal arcs among stages and vertical arcs inside stages. The length of each horizontal
arc denotes capacity expansion and contraction costs over a demand cycle. We let Eki,j be the cost of starting
demand cycle k with machines 1, . . . , i and ending it with machines 1, . . . , j, Eki,j does not include machine
retirement costs at the beginning of cycle k. Then j +1 is the BP index of the last machine retired. Depending
on whether installation lead times are zero or not, cycle costs are
Eki,j =
min∑sn=i+1 Gn + ck
i,s,2s−j+1 +∑2s−j
n=s+1 Hn : i ≤ s ≤ 2s− j + 1, s < N if τn > 0 for some n
min∑sn=i+1 Gn + ek
i,s + cks,j +
∑sn=j+1 Hn : ∨i, j ≤ s < N if τn = 0 for all n
Superscript k indicates that lost sales costs are computed against the demand during cycle k. Cost Eki,j is
assigned to arc from node (k − 1, i) to (k, j). In order to model retiring machines at the beginning of each
demand cycle we add vertical arcs from node (k, i) to node (k, j) where i > j and set their length to∑i
n=j+1 Hn.
If the demand process does not have jumps at the begining of cycles, there will be no need to decrease capacity
suddenly at the beginning of cycles. This is because any necessary decrease in capacity at the begining of a
cycle can be made at the end of the previous cycle. Then, we do not need to include vertical arcs at any stage
but stage 0. With or without vertical arcs, there will be O(N2K) arcs in the network.
To construct the network, we need to compute capacity expansion and contraction costs during demand
cycles. All the problems pertaining to a demand cycle can be solved in O(N3 T ) (O(N2 T )) when installation
lead times are nonzero (zero). Then it takes O(N) comparisons to compute each Eki,j or O(N3) to compute all
Eki,j in a given cycle. Thus, all arc lengths in a demand cycle can be computed in O(N3 T ) (O(N2 max(T , N))).
Because of the stage structure of the network, we can compute the shortest paths to nodes primarily in the
order of increasing k and secondarily in decreasing n. Each node has O(N) incoming arcs, so finding the
23
shortest path to each node takes O(N) comparisons. In total, the shortest path can be found in O(K N2)
which is dominated by the time required to construct the network. Consequently, expansion / contraction
problems over K demand cycles can be solved in O(K N3 T ) (O(K N2 max(T , N))) if installation lead times
are nonzero (zero).
Many stochastic demand processes can be approximated fairly well by processes that stochastically increase
and decrease several times over [0, T ]. We use this assertion to approximately solve problems where demand
process is not monotone throughout the horizon. The assertion can be made concrete for a specific class of
demand processes that are uniformly distributed between piecewise linear bounds at and bt at time t, i.e.
Dt ∼ U(at, bt). Dt is stochastically increasing (decreasing) if both at and bt are nondecreasing (nonincreasing).
If this is not the case, we will create an approximate demand process DKt using K demand cycles as follows:
First divide the time horizon into short enough cycles [Tk−1, Tk] such that bounds are linear in each cycle. In
cycles where at and bt are nondecreasing (nonincreasing), set Sk = Tk (Sk = Tk−1), aKt = at and bK
t = bt
throughout the cycle. Then pick any cycle [Tk−1, Tk] where at and bt are moving in the reverse directions and
set Sk = (Tk−1 + Tk)/2. Also create approximate bounds aKt and bK
t such that they are linear on [Tk−1, Sk]
and [Sk, Tk], and agree with at and bt at the beginning and end of the cycle:
• If at is increasing and bt decreasing over [Tk−1, Tk],
aKTk−1
:= aTk−1, aK
Sk:= aTk
and aKTk
:= aTk; bK
Tk−1:= bTk−1
, bKSk
:= bTk−1and bK
Tk:= bTk
. (16)
• If at is decreasing and bt increasing over [Tk−1, Tk],
aKTk−1
:= aTk−1, aK
Sk:= aTk−1
and aKTk
:= aTk; bK
Tk−1:= bTk−1
, bKSk
:= bTkand bK
Tk:= bTk
. (17)
Figure 3 illustrates (a2t , b
2t ) and (a4
t , b4t ) for a given pair of (at, bt). By construction DK
t ∼ (aKt , bK
t ) is stochasti-
cally increasing over [Tk−1, Sk] and decreasing over [Sk, Tk] for each demand cycle k so our algorithms can be
used in each cycle.
– Figure 3 –
The lost sales costs can be approximated well by using DKt instead of Dt, indeed the approximate cost
converges to the actual cost as K increases. For any given instance of the problem, there exists a true
optimal solution and the associated cost. On the other hand, we can also compute the optimal shortest
path in the demand cycle network with approximate demands. The next lemma establishes that the latter cost
approximates the former and the proof is in the appendix.
24
Lemma 5 Given uniformly distributed demand process Dt with piecewise linear bounds, suppose that DKt is
constructed according to (16) and (17). The length of the shortest path measured against DKt in a K cycle
network is nonincreasing in K and eventually converges to the true optimal cost measured against Dt.
For any finite K, the optimal approximate cost obtained from the cycle network is an upper bound on the
true optimal cost. This can be used to obtain bounds for budgeting purposes for capacity related costs.
Mixtures of specific demand distribution studied above can be used to mimic more complex demand pro-
cesses, e.g. uniform demand with nonlinear bounds and nonuniform demands. Fortunately, these complex
processes can still be approximated by patching together stochastically increasing and decreasing processes
over several demand cycles. In conclusion, approximating nonmonotone demands by monotone demands makes
our algorithms applicable for a wide range of problems.
6 Conclusion
We provided a polynomial time algorithm to optimally plan for capacity expansions / contractions and illus-
trated its use with a real life example drawn from the semiconductor industry. We first have assumed that
a single product family experiences stochastic demand that first stochastically increases and then decreases.
Machines are purchased while demand is growing and are retired later on. Machines can have delivery and
installation lead times. Unlike a good portion of the existing capacity expansion literature that deals with
single machine types, we model a multiple machine type problem by introducing BP order for the sequence of
purchases and retirements. BP order remains optimal for regular cost functions, in addition to our specific lost
sales and capacity costs. We have discussed that capacity cost structure is general enough to accommodate
several interperetations: machine purchases (with or without salvage values), subcontracting, simplified ver-
sions of unit commitment problem, facility capacity expansion / contraction in a supply chain. We also provide
a network formulation for optimal capacity expansion / contraction over several demand cycles. Later we have
established that this formulation can be used to approximately solve capacity problems when the demand is
not stochastically monotone.
Our model is motivated by equipment intensive industries such as the semiconductor industry and electric
utilities where capacity is costly and have considerable installation lead times. Capacity expansions and con-
tractions are the primary irreversible decisions that have long term effects on competitiveness and profitability.
Capacity plans must consider risks of undercapacity and overcapacity that arise from uncertainty, which can be
25
built in via a general stochastic demand model. Managers always strive to match capacity with demand, often
by trading off service costs against capacity expansion and contraction costs. Since almost all the capacity
planning work deals with expansions and ignores capacity contractions, our model fills an important gap in
the literature by yielding an algorithm to automatically make this trade off. Moreover, it allows managers to
study the trade off under different capacity budgets, and demand processes with varying degrees of uncertainty.
Then managers can use the algorithm to substantiate capacity budget requests from the upper management.
Studying the trade off under different degrees of uncertainties will show the significance of (more) accurate
forecasting. Then managers can determine if more effort should be spent for forecasting.
Several managerial insights can be drawn. The optimality of BP order for machine expansions and con-
tractions is probably the most intuitive. The BP order can be used not only for capacity planning but also for
execution; for example when a machine delivery is late, managers may ask for the postponement of the deliveries
of all the machines coming after the late machine in the BP order. Another managerial insight is the optimality
of machine clusters. Sometimes managers use capacity expansion heuristics, for example they target to meet a
high percentage of the demand throughout the planning horizon. When the demand is growing continuously,
heuristics dictate installing machines one by one, i.e. by spreading installations. Spreading installations can
break down optimal clusters and can lead to suboptimal solutions. Besides, it actually is desirable to install
and retire machines in clusters to minimize disruptions to operations. Lastly, when installation lead times are
nonzero, it can be optimal to install machines even after demand starts falling.
26
Appendix: Proof of Lemma 5
To establish the convergence of the shortest path length (computed with approximate demands) to the true
optimal cost, it is sufficient to show that the lost sales cost can be distributed to K cycles and they converge
to true costs as K increases. Suppose that in a solution machine n is installed at tn,1, . . . , tn,L and retired at
un,1, . . . , un,L where tn,l ≤ un,l ≤ tn,l+1 so a total of L installments and retirements occur during [0, T ]. Using
Lemma 2, instead of the total lost sales cost we can focus only on lost sales cost associated with machine n:∫ tn,1
0∆n(Dt)dt +
L∑
l=2
∫ tn,l
un,l−1
∆n(Dt) +∫ T
un,L
∆n(Dt)dt. (18)
If the cycles are sufficiently short (K is sufficiently large and K > L), there will exist a Tk between any
retirement time un,l and the next instalment time tn,l+1. Then there can be at most one retirement and one
installment in an arbitrary cycle [Tk−1, Tk]. To partition the cost in (18) to K cycles, define phony installments
and retirements for cycles which contain no installments or retirements. Start from cycle k = 1. If the first
cycle contains a retirement but no installment (machine is initially available), set tn,1 = 0 and un,1 = un,1 and
let k = 2. Otherwise keep k = 1.
• If [Tk−1, Tk] contains no installment time or retirement time, set tn,k = Tk and un,k = Tk.
• If [Tk−1, Tk] contains one installment time tn,l and no retirement time, let k be the first cycle after cycle
k that contains a retirement time. Thus, the lth instalment and retirement happens in cycles k and k.
Set tn,k = tn,l, un,k = Tn,l, tn,k′ = Tk′ and un,k′ = Tk′ for k′ < k, and set tn,k = Tk−1, un,k = un,l.
• If [Tk−1, Tk] contains one installment time tn,l and one retirement time un,l, tn,k = tn,l and un,k = un,l.
That is, an installment and a retirement happens in the kth cycle.
• Proceed to cycle k + 1.
The former instalment times tn,k and retirement times un,k indicate the same solution as tn,k and un,k so both
solutions yield the same capacity costs. However, the latter solution can be easily associated with demand
cycles. Recall that when computing Eki,j we allocated lost sale costs to cycles, we can now also partition the
lost sales costs in (18) to cycles as∫ tn,1
0∆n(DK
t )dt +K∑
k=2
∫ tn,k
un,k−1
∆n(DKt ) +
∫ T
un,K
∆n(DKt )dt =
K∑
k=1
(∫ tn,k
Tk−1
∆n(DKt )dt +
∫ Tk
un,k
∆n(DKt )dt
).
The cost within parentheses is the lost sales cost computed (via η(tn,k) and ζ(un,k) functions) and attached to
the horizontal arcs of the cycle network between stage k − 1 and k.
27
As we increase the number of cycles, we can assess the lost sales cost more accurately. Moreover, as K
increases, aKt and bK
t converge from above to at and bt implying that ∆n(DKt ) converges from above to ∆n(Dt):
(K∑
k=1
∫ tn,k
Tk−1
∆n(DKt )dt +
K∑
k=1
∫ Tk
un,k
∆n(DKt )dt
)↓
(K∑
k=1
∫ tn,k
Tk−1
∆n(Dt)dt +K∑
k=1
∫ Tk
un,k
∆n(Dt)dt
)
This shows that paths in the cycle network compute the true costs for any given solution tn,l and un,l in the
limiting case. 2
Acknowledgment : This work was supported by grants from University of Texas at Dallas and Semicon-
ductor Research Cooperation under the task “Modeling Random Processes”.
28
References
[1] A. Angelus, E.L. Porteus and S.C. Wood (1997). Optimal sizing and timing of capacity expansions with
implications for modular semiconductor wafer fabs. Research Paper No.1479. Graduate School of Business,
Stanford University.
[2] T.C.A. Bashyam (1996). Competitive capacity expansion under demand uncertainty. European Journal of
Operational Research, Vol. 95: 89-114.
[3] J.C. Bean and R.L. Smith (1985). Optimal capacity expansion over an infinite horizon. Management Science,
Vol.31, No.12 : 1523-1532.
[4] J.C. Bean, J.L. Higle and R.L. Smith (1992). Capacity expansion under stochastic demands. Operations
Research Vol.40 Supp. No.2: S210-S216.
[5] D.L. Benavides, J.R. Duley and B.E. Johnson (1999). As good as it gets: optimal fab design and deployment.
IEEE Transactions on Semiconductor Manufacturing, Vol.12, No.3 : 281-287.
[6] M.J. Best and N. Chakravarti (1990). Active set algorithms for isotonic regression: a unifying framework.
Mathematical Programming, Vol 47: 425-439
[7] M.J. Best, N. Chakravarti and V. Ubhaya (2000). Minimizing separable convex functions subject to simple
chain constraints. SIAM Journal on Optimization, Vol.10, No.3: 658-672.
[8] M. Cakanyıldırım and R. Roundy (2001). Optimal Capacity Expansion and Contraction under Demand
Uncertainty. Working paper, School of Management, University of Texas at Dallas.
[9] M. Cakanyıldırım and R. Roundy (2002). SeDFAM: Semiconductor demand forecast accuracy model. IIE
Transactions, Vol.34, No.5: 449-465.
[10] M. Cakanyıldırım and R. Roundy (2002). Evaluation of capacity planning practices for the semiconductor
industry. IEEE Transactions on Semiconductor Manufacturing, Vol.15, No.3: 331-340.
[11] M.H.A. Davis, M.A.H. Dempster, S.P. Sethi and D. Vermes (1987). Optimal capacity expansion under
uncertainty. Advances in Applied Probability Vol.19: 156-176.
[12] A. Dixit (1997). Investment and employment dynamics in the short run and the long run. Oxford Economic
Papers, Vol.49 No.1: 1-20.
29
[13] J.C. Eberly and J.A. Van Mieghem (1997). Multi-factor dynamic investment under uncertainty. Journal
of Economic Theory Vol.75: 345-387.
[14] C.O. Fong and V. Srinivasan (1986). The multiregion dynamic capacity expansion problem: an improved
heuristic. Management Science Vol.32 No.9: 1140-1152.
[15] J.M. Harrison and J.A. Van Mieghem (1999). Multi-resource investment strategies: operational hedging
under demand uncertainty. European Journal of Operational Research, Vol.113, No.1: 17-29.
[16] R.S. Hiller and J.J. Shapiro (1986). Optimal capacity expansion planning when there are learning effects.
Management Science, Vol.32, No.9 : 1153-1163.
[17] P.L. Jackson and R.O. Roundy (1991). Minimizing Separable Convex Objectives on Arbitrarily Directed
Trees of Variable Upper Bound Constraints. Mathematics of Operations Research, Vol.16, Iss.3: 504-533.
[18] E. Khmelnitsky and K. Kogan (1996). Optimal policies for aggregate production and capacity planning
under rapidly changing demand conditions. International Journal of Production Research, Vol.34, No.7 :
1929-1941.
[19] S. Li and D. Tirupati (1994). Dynamic capacity expansion problem with multiple products: Technology
selection and timing of capacity additions. Operations Research, Vol.42, No 5: 958-976.
[20] H. Luss (1982). Operations research and capacity expansion problems: a survey. Operations Research,
Vol.30, No.5: 907-947.
[21] A.W. Neebe and M.R. Rao (1986). Sequencing capacity expansion projects in continuous time. Management
Science, Vol.32, No.11: 1467-1479.
[22] S.L. Ong and B.J. Adams (1989). The effect of discretizing the planning period on the optimal cost of
capacity expansion systems. European Journal of Operational Research, Vol.43, No.3: 292-304.
[23] S. Rajagopalan (1998). Capacity expansion and equipment replacement: a unified approach. Operations
Research Vol.46, No.6: 846-857.
[24] S. Rajagopalan, M.R. Singh and E.M. Morton (1998). Capacity expansion and replacement in growing
markets with uncertain technological breakthroughs. Management Science, Vol.44, No.1 : 12-30.
30
[25] S.M. Rocklin, A. Kashper and G.C. Varvaloucas (1984). Capacity expansion/contraction of a facility with
demand augmentation dynamics. Operations Research, Vol.32, No.1 : 133-147.
[26] G.B. Sheble and G.M. Fahd (1994). Unit Commitment Literature Synopsis. IEEE Transactions on Power
Systems, Vol.9, No.1 : 128-135.
[27] Standard & Poor’s Industry Surveys (1997). Semiconductors. Standard & Poor’s, New York, NY.
[28] The National Technology Roadmap for Semiconductors: Technology Needs (1997). Semiconductor Industry
Association, San Jose, California.
[29] J.A. Van Mieghem (2002). Capacity portfolio investment and hedging: review and new directions. Working
paper commissioned by MSOM, Northwestern University.
31
t t tt t0 1 2 3 4
3 a
2a
1a
0a
=0
a4
Etcher Capacity
Ion Implanter Capacity
Demand
Time
Demand
Production=Min(Capacity,Demand)
u 4 u u3 2
a5
Capacityper time
Figure 1: Production capacity versus demand for a semiconductor fab.
0,1
0,2
0,i
0,N
k-1,1
k-1,2
k-1,i
k-1,N
k,1
k,2
k,j
k,N
K,1
K,2
K,i
K,N
Eki,j
Demand Cycle k
Stage k-1 Stage k
Figure 2: Demand cycle network with N machines and K cycles. Node (k−1, i) indicates starting cycle k with
i existing machines. Vertical arcs are to retire machines at the beginning of cycles.
32
Cycle 1 Cycle 2
Cycle 1 Cycle 2 Cycle 3 Cycle 4
at
bt
bt2
at2
bt4
at4
0 T2T1S1 S2
S1
With 2 cycles
With 4 cyclesT10 S2 S3 S4T2 T4T3
Figure 3: Approximation to the original demand process U(at, bt) with 2 and 4 cycles.
33
0 10 20 30 40 500
5000
10000
15000
Months
Uni
ts o
f Cap
acity
per
Mon
th
Upper bound of DemandLower bound of DemandOptimal Capacity
Figure 4: Optimal capacity as demand grows and falls.
• INITIALIZE: tp = t0
For n = p + 1 to n = 2s do
• SOLVE (Pp,s,n):
• C := n, UniteComplete := false
While UniteComplete = false do
• k := ∧C − 1
• Compute tC and remember tk from the memory
If tk > tC then
• Unite: C := C ∪ C(k)
else
• UniteComplete := true
endwhile
• Update tn for n ∈ C. Record cp,s,n.
endfor
Table I: Cluster Algorithm. For given p and s such that 0 ≤ p ≤ s < N , the algorithm solves (Pp,s,q) : s ≤q ≤ 2s and records the cost cp,s,q.
34
Nonzero Installation Lead Times Zero Installation Lead Times
Case I0 Gn Hn Solve Running time Solve Running time
1 = 0 = 0 = 0 (P0,N,2N ) O(NT ) (PE0,s), (PC
s,0) O(NT )
2 = 0 = 0 > 0 (P0,s,q) O(N2T ) (PE0,s), (PC
s,q) O(N2T )
3 = 0 > 0 = 0 (P0,s,2s) O(NT ) (PE0,s), (PC
s,0) O(NT )
4 = 0 > 0 > 0 (P0,s,q) O(N2T ) (PE0,s), (PC
s,q) O(N2T )
5 > 0 = 0 = 0 (Pp,N,2N ) O(NT ) (PEp,s), (PC
s,0) O(N2T )
6 > 0 = 0 > 0 (Pp,s,q) O(N3T ) (PEp,s), (PC
s,q) O(N2T )
7 > 0 > 0 = 0 (Pp,s,2s) O(N2T ) (PEp,s), (PC
s,0) O(N2T )
8 > 0 > 0 > 0 (Pp,s,q) O(N3T ) (PEp,s), (PC
s,q) O(N2T )
Table II: Running times for various special cases of (P). Ranges for indices are 0 ≤ s < N, 0 ≤ p ≤ s < q ≤ 2s+1
for nonzero installation lead times. They are 0 ≤ s < N and 0 ≤ p, q ≤ s for zero installation lead times.
A: Solve Expansion and Contraction Subproblems:
for p = 0 to N − 1 do
Solve (PEp,s) : p ≤ s < N with the Cluster Algorithm
Set q = p and Solve (PCs,q) : q ≤ s < N with the Cluster Algorithm.
Record costs ep,s : p ≤ s < N and cs,q : q ≤ s < N.endfor
B: Use (11) and (12) to compute e∗,s and I∗(s) and record them.
C: Use (13) to compute cs,∗ and q∗(s) and record them.
D: Use (14) to compute the optimal total cost and s∗.
E: Retire [I∗(s∗) + 1, I0] at t = 0 and find optimal availability and retirement times using
the Cluster Algorithm on (PEI∗(s∗),s∗) and (PC
s∗,q∗(s∗))
Table III: EC Algorithm to solve (P) under linear machine rents and zero installation lead times.
35
Top Related