Int. J. Production Economics 141 (2013) 56–65
Contents lists available at SciVerse ScienceDirect
Int. J. Production Economics journal homepage: www.elsevier.com/locate/ijpe
A problem-adjusted genetic algorithm for flexibility design ¨ Michael Schneider a,n, Jorn Grahl b, David Francas c, Daniele Vigo d a
Chair of Business Information Systems and Operations Research, University of Kaiserslautern, Germany Department of Information Systems and Business Administration, University of Mainz, Germany Camelot Management Consultants AG, Germany d Department of Electronics, Computer Science and Systems, University of Bologna, Italy b c
a r t i c l e i n f o
a b s t r a c t
Article history: Received 14 October 2011 Accepted 12 May 2012 Available online 23 May 2012
Many present markets for goods and services have highly volatile demand due to short life cycles and strong competition in saturated environments. Determination of capacity levels is difficult because capacities often need to be set long before demand realizes. In order to avoid capacity-demand mismatches, operations managers employ mix-flexible resources which allow them to shift excess demands to unused capacities. The Flexibility Design Problem (FDP) models the decision on the optimal configuration of a flexible (manufacturing) network. FDP is a difficult stochastic optimization problem, for which traditional exact approaches are not able to solve but the smallest instances in reasonable time. We develop a Flexibility Design Genetic Algorithm (FGA) that exploits qualitative insights into the structure of good solutions, such as the well-established chaining principle, to enhance its performance. FGA is compared to a commercial solver, a simple GA, and a Simulated Annealing local search on instances of up to 15 demand types and resources. Experimental evidence shows that the proposed approach outperforms the competing methods with respect to both computing time and solution quality. & 2012 Elsevier B.V. All rights reserved.
Keywords: Flexible manufacturing Flexibility design Metaheuristics Genetic algorithm Network design Stochastic optimization problem
1. Introduction Demand-capacity mismatches occur in a wide range of operations like workforce planning, strategic network planning or the design of queueing systems. They are mainly triggered by uncertainty about the demand for workforce, goods and services. Demand uncertainty is driven by shortening product and service life cycles, high competition on saturated markets and the increase of product and service variety. Resource capacity levels are usually fixed for a significant time period and must therefore be set long before demand realizes. Capacity levels should match demand closely to avoid capacity shortage (when demand exceeds capacity) or idle time (when capacity exceeds demand). The use of flexible resources is an important means to counter such mismatches. Bertrand (2003) discusses several types of flexibility that have been introduced in science and practice. We consider mix flexibility, which is the ability of a resource to process several demand types without incurring high transition penalties (Koste and Malhorta, 1999). The core idea of using mix-flexible resources is to assign several demand types to a single resource, so that the capacity n
Corresponding author. E-mail addresses:
[email protected],
[email protected] (M. Schneider),
[email protected] (J. Grahl),
[email protected] (D. Francas),
[email protected] (D. Vigo). 0925-5273/$ - see front matter & 2012 Elsevier B.V. All rights reserved. http://dx.doi.org/10.1016/j.ijpe.2012.05.017
of the resource can be used for more than one demand type. Flexibility decisions can be formalized by means of a bipartite graph, where one set of nodes represents the demand types and the other set the resources. An arc between a demand type and a resource is called a link and indicates the capability of the resource to process the demand type. If a resource is only connected to a single demand type, it is inflexible, whereas if it has more than one linked demand type, it is mix-flexible. Fig. 1 shows a simple example with two resources A and B and two demand types 1 and 2. Both resources have a capacity of 100 units and demand is 150 units for demand type 1 and 50 units for demand type 2. If both resources are inflexible and resource A can only process demand type 1 and B demand type 2 (as indicated by the solid links), we have a capacity shortage of 50 units at resource A and 50 units of unused capacity at resource B. Now, if resource B is mix-flexible and can process both demand types (by adding the dashed link), demand types 1 and 2 are linked by resource B. In this way, the 50 units of excess demand at resource A can be shifted to resource B. We end up with no capacity shortage and two completely utilized resources. Note also that, as illustrated in Fig. 1, in the mix-flexible case one demand type may link more than one resource in the sense that the resources are both able to process the demand type. Originally, this generic principle has been proposed by Jordan and Graves (1995) in the context of designing flexible production networks. Since then, it has been successfully applied in several
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
150
1
A
100
50
2
B
100
Demand Type
Link
Resource
Node
Arc
Node
Formal Representation
Product
Production possibilities
Plant
Manufacturing Industry
Task
Skill
Worker
Generic
Workforce Planning
Fig. 1. Example of the benefits of mix flexibility with two resources {A,B} having capacity 100 and two demand types {1,2} with demands 150 and 50. Without flexibility, we end up with a capacity shortage of 50 units at resource A and 50 units of unused capacity at resource B. With flexibility (dashed line), there is no capacity shortage and two completely utilized resources. The figure also lists domain specific terms for demand types and resources.
practical applications in the same domain (see, e.g., Hallgren and Olhager, 2009; Kauder and Meyr, 2009) or in other industrial areas like the cross-training of workers at production lines and call centers (see, e.g., Brusco and Johns, 1998; Hopp et al., 2004; Wallace and Whitt, 2005; Nembhard, 2007) and the design of queueing systems (see, e.g., Gurumurthi and Benjaafar, 2004; Andrado´ttir et al., 2007). Fig. 1 lists the appropriate domainspecific terms for the two major application areas. However, as the contributions of our paper are not restricted to an application domain, we stick to the generic terms for the remainder of the text. The challenge common to the different application areas is to find the most profitable assignment of demand types to resources when confronted with stochastic demands. This decision is modeled by the Flexibility Design Problem (FDP). The FDP determines the optimal assignment of demand types to resources such that the total expected profit is maximized. We formulate the FDP as a two-stage stochastic program, however, the FDP is NP-hard even for deterministic demands (Garey and Johnson, 1979). In our numerical studies, we observe the inability of standard solvers to solve all but the smallest FDP instances to optimality in a reasonable amount of time. Motivated by this, we develop a Genetic Algorithm (GA) specifically tailored to FDP, denoted as Flexibility Design GA (FGA). FGA incorporates problem-specific knowledge on the structure of high-quality FDP solutions to guide the search. Specifically, it uses the flexibility principles of Jordan and Graves (1995), which have proven to be a reasonable and robust strategy for designing flexible networks. We thus demonstrate how qualitative principles can be incorporated into a quantitative solution approach to increase computational efficiency. We present a computational study on FDPs with up to 15 demand types, 15 resources and 500 demand scenarios. To the best of our knowledge, no benchmark instances for the FDP or a closely related problem are available and no efficient metaheuristic solution method for the FDP has been proposed. Therefore, we generate several sets of random test instances. As comparison methods for our approach, we use the commercial solver XpressOptimizer (see Fico Xpress Optimization Suite, 2011), a Simple GA (SGA) and a Simulated Annealing (SA) approach. FGA demonstrates superior performance, consistently finding flexibility configurations with higher expected profits in a fraction of the time required by the comparison methods. The paper is organized as follows. Section 2 reviews the literature and describes the flexibility principles developed by Jordan and Graves (1995). A formulation of the FDP as a two-stage
57
stochastic program is given in Section 3. Section 4 describes in detail the FGA for solving this problem. Experimental results are presented in Section 5. The experiments evaluate the run-time and solution quality of the FGA and the three comparison methods. Moreover, we study the effectiveness of each problem-specific extension that we integrate into FGA. Section 6 concludes the paper and gives a brief outlook on future research.
2. Literature review Jordan and Graves (1995) present a pioneering work on the structure of high-quality solutions for the design of flexible networks. They study the optimal assignment of products to plants in a simplified multi-product and multi-plant manufacturing network. In simulation studies, the flexibility benefits of different configurations are compared using expected sales and expected capacity utilization as performance measures. Central to their work is the concept of a chain. A chain is defined as a group of products and plants which are all connected, directly or indirectly, by product assignment decisions. In other words, the bipartite graph representation of a chain is connected, i.e., it consists of one connected component. Jordan and Graves (1995) propose the following flexibility principles, which have heavily influenced academic research and industry practice since then: (1) Chains which encompass as many plants and products as possible are superior to configurations that contain several chains. (2) A complete chain which has all nodes of the graph in a cycle has virtually the same benefits as a totally flexible network, i.e., a network in which each product is connected to all resources. From a flexibility viewpoint, adding further links beyond a complete chain configuration is almost useless. (3) In general, there are several possibilities to configure a production network in a way that optimizes flexibility benefits. (4) When adding flexibility to an inflexible network, the demand for each product should be balanced with the capacity of the plants the product is directly connected to. Analogously, the capacity of each plant should be balanced with the demand of the products the plant is directly connected to. Iravani et al. (2005) develop domain-independent flexibility measures based on the number of possibilities to shift demand in a network. They analyze different structures for mix flexibility and develop indices to quantify a system’s ability to respond to variability in its environment. Their results underline the power of chain-like flexibility configurations. Aksin and Karaesmen (2007) address mix flexibility in systems with parallel flow using a graph–theoretic approach to determine the maximum achievable throughput under a particular network structure. Their results on structural properties of mix-flexible configurations also support the concept of chaining. Bassamboo et al. (2010) assess the problem of capacity and technology selection based on the newsvendor network model of Van Mieghem and Rudi (2002) to deduct optimal flexibility configurations. In their evaluation, the optimal solutions are not chain structures, yet chain-based solutions have only small optimality gaps. Chou et al. (2010) provide analytical justification for the efficiency of chaining structures. They analyze the performance of chain structures and identify a class of conditions under which chain structures yield performances similar to those of fully-flexible systems. A strand of the related literature deals with the model-based strategic planning of a company’s production network. Apart from mix flexibility decisions, these approaches typically consider additional issues like capacity choice, detailed operational work shift models (Bihlmaier et al., 2009), raw material supplier selection (Alonso-Ayuso et al., 2003), net present value based optimization (Fleischmann et al., 2006) and uncertain demand,
58
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
costs and supply (Santoso et al., 2005). In general, the resulting models are highly complex and require sophisticated solution methods. Typically, accelerated mixed-integer programming techniques like Benders Decomposition or Branch and Fix are used. Kauder and Meyr (2009) consider an extension of Fleischmann et al. (2006)’s planning model and propose a mixedinteger linear programming model with chaining constraints. The chaining constraints are imposed on the deterministic program and no explicit modeling of demand uncertainty takes place. They observe that integrating the chaining constraints ‘‘worsens the situation [the solution time of the commercial solver] significantly’’. In Kauder (2008), a Threshold Accepting procedure also restricted to chain configurations is developed and proves able to partly outperform the commercial solver.
3. The flexibility design problem This section presents a mathematical model of the FDP, which is utilized to determine the fitness of the solutions produced by FGA and the two comparison methods SGA and SA. Additionally, the procedure for creating the initial population of FGA uses this model to determine the linearly relaxed solution of FDP. The model is similar to that of Jordan and Graves (1995) but includes profit margin and link costs. We consider the FDP in a network consisting of a set I ¼ f1, . . . ,ng of demand types and a set J ¼ f1, . . . ,mg of resources. The problem can be described as two-stage mixed-integer linear stochastic program as follows (see e.g., Birge and Louveaux, 1997). The first stage decides the flexibility design, represented by binary variables yij ,i A I,j A J that take value 1 if demand type i is assigned to resource j and 0 otherwise. Assigning demand type i to resource j raises link costs cij. We assume that demands are uncertain at the time decisions yij are made. This uncertainty is captured by a set of scenarios S ¼ f1, . . . ,kg. A single scenario s A S has probability ps and associated demand dsi for demand type i. The second stage is a simple linear production planning problem. Its production capability is determined by the yij variables (the first-stage decisions). The quantity of demand type i that is produced at resource j in scenario s is associated with the decision variable xsij . Total processing at resource j is limited by its capacity Kj. Variables pij denote the associated profit margins. The s second-stage recourse function is the expected profit Q ðyij ,di Þ and depends on the first-stage decisions and the stochastic demands. The expected value is computed over all scenarios s A S. The overall objective is to determine a flexibility design yij that maximizes expected second-stage profits minus first-stage link investment costs. The stochastic program in its intensive form is XX X s max cij yij þ ps Q ðyij ,di Þ, ð1Þ yij 8i A I,j A J
sAS
iAI jAJ
with the second-stage recourse function defined by XX s pij xsij Q ðyij ,di Þ ¼ s max xij 8i A I,j A J,s A S
s:t:
X xsij r K j
ð2Þ
units of a demand type can be processed than there is demand for the demand type. Note that demand may not be satisfied and unmet demand is lost. Constraints (5) ensure that each resource adheres to the production possibilities set on the first stage. The stochastic program possesses the relatively complete recourse property (see, e.g., Birge and Louveaux, 1997), so that every solution of the first-stage variables yij has a feasible completion at the second stage. When yij are fixed in (1), the problem decomposes and the second-stage (2) to (6) can be solved independently with respect to the given first-stage decisions.
4. A problem-adjusted genetic algorithm for FDP Genetic Algorithms (Holland, 1975) are population-based metaheuristics for solving hard optimization problems. Our FGA bases on Goldberg (1989)’s simple GA and uses flexibility principles to enhance its performance. Techniques for dealing with the stochasticity of the problem, e.g., adaptive sample sizes are neglected. Thus, we may claim that the results of FGA are solely due to the integration of problem knowledge into the search process and not due to techniques that are generally applicable. For the same reason, we refrain from fine-tuning FGA parameters and from the application of other performance enhancement techniques. A pseudocode overview of FGA is given in Algorithm 1. To generate the initial solution, we determine the expected structure of good solutions and seed such solutions systematically. Solution representation and fitness evaluation are described in Section 4.1, the exact procedure for creating the initial population in Section 4.2. After evaluating the initial (current) population, individuals are selected for mating based on their fitness and crossover is applied as described in Section 4.3. The proposed crossover operator combines good parts of flexibility configurations and avoids their disruption by restricting the crossover points. Subsequently, the generated offspring is mutated using a specialized mutation operator explained in Section 4.4. The operator randomly opens or closes links according to the flexibility principles. Finally, the current population and the offspring are combined to form the population for the next generation using an elitist strategy. Algorithm 1. Pseudocode overview of the FGA. P’ generateInitialPopulation() while termination criteria not satisfied do evaluateFitness(P) P 0 ’ selectMatingPool(P) P 0 ’ applyCrossover(P0 ) P 0 ’ applyMutation(P0 ) evaluateFitness(P0 ) P’ combine(P,P 0 ) end while return best individual found
iAI jAJ
8j A J, s A S
ð3Þ
8iA I, sA S,
ð4Þ
4.1. Solution representation and fitness evaluation
iAI
X s xsij rdi jAJ
xsij ryij K j xsij A R
8i A I, j A J, s A S,
8i A I, j A J, s A S:
ð5Þ ð6Þ
Constraints (3) ensure that resource capacities are respected for all resources and scenarios. Constraints (4) state that no more
FGA takes the first-stage decisions of FDP. Thus, chromosomes are binary strings of fixed length l ¼ m n, where the bit at position u is the binary decision yij with i ¼ du=me and j ¼ um ði1Þ. For each chromosome, k demand scenarios are generated, and the linear production programs on the second stage are solved to optimality using Xpress-Optimizer. The value of the recourse function is the average of the optimal profits. Subtracting first-stage link investment costs yields the expected profit (the fitness) of a chromosome.
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
P1: Finding Promising Structures - Randomized rounding
P2: Generating New Solutions with Promising Structures
59
P3: Adding Diversity
- Determine best-performing structures in P1 - Generate new individuals mirroring these structures
- Fill with random individuals created with link ratios present in P2
25%
50%
25%
Initial Population
Fig. 2. Flow-chart for creating the initial population of the FGA.
4.2. Generation of the Initial Population It is desirable that the initial population of a GA is biased towards high-quality solutions. A straightforward approach is to consider the available expert knowledge and generate random chain configurations. We have tried this simple approach in an early stage of our research and found that it does not suffice. Depending on the problem instance to be solved, the optimal solution may not even be close to a chain, and even if it was, a different chain assignment might be optimal. Therefore, we develop a more sophisticated approach to seeding the first population of FGA, which adapts the flexibility of the solutions that it seeds to the problem instance at hand. This is achieved by a sampling procedure based on the randomized rounding of the linearly relaxed solution of the FDP. More precisely, the initial population of FGA is selected from three preliminary populations P 1,...,3 . As outlined in Fig. 2, the goal of the first population is to get a rough picture of promising structures, the second one aims at replicating such structures, and the third adds diversity. We now describe these steps in detail.
appendix. The algorithm presented there works directly on a chromosome and uses bit-wise operations only, which allows for a very efficient implementation. The link ratio RðyÞ is the number of links that are set in a solution divided by the maximum number of possible links n m. It can also be used as a rough indicator for the degree of flexibility present in a solution. We now describe how the two indicators are used to construct a population P2 with similar characteristics as the solutions in P 1 . Determining the quality of different structures: First, we determine the quality that solutions with a given number of components achieved among the solutions in P 1 , i.e., we assign a weight to each number of components that indicates the average quality of a solution with this component number. To this end, we first calculate a weight oðyÞ which depends on the expected profit of a single solution y. The weight relates the expected profit FðyÞ to the expected profit of other solutions. The larger the oðyÞ, the more outstanding the expected profit of y. Let Fworst denote the smallest expected profit in P 1 . Then, oðyÞ is defined as FðyÞF worst : FðkÞF worst kAP1
oðyÞ ¼ P 4.2.1. Finding promising solutions We create P1 to get a rough picture of promising flexibility structures. P1 is constructed by randomly rounding the optimal solution y i,j ,i A I,j A J of the linear relaxation of the FDP (see, e.g., Srinivasan, 1999). For each y i,j , we draw a random number r in [0,1]. If r o y i,j , we round y i,j to 1, and to 0 otherwise. The solution is then mapped onto a binary string as described in Section 4.1 and the fitness of the created solutions is evaluated. The goal of this phase is to create a set of fair solutions that show some degree of variety. Tests showed that this is actually the case as the created solutions are on average of higher quality than random solutions and differ among themselves to a satisfying extent. 4.2.2. Generating new solutions with promising characteristics The goal of the second phase is to identify the characteristics of the better solutions in the first population and generate a set of new solutions that share these characteristics, i.e., P2 shall be filled with solutions that are structurally similar to the best ones of P1. To this end, we select the best half of P1 into a population P 1 and compute the following indicators for each solution y A P 1 : (1) the number of components gðyÞ of the bipartite graph of y, and (2) the link ratio RðyÞ. The number of network components gðyÞ is obtained from y’s bipartite graph and roughly indicates to which degree flexibility and chaining structures are present in the network. The value gðyÞ can either be calculated with depth-first search (see, e.g., Cormen et al., 2001) or using our algorithm, which is given in the
ð7Þ
To compute weight WðeÞ for a given number of components e, we sum up the weights oðyÞ of all solutions in P 1 having e components X WðeÞ ¼ oðyÞ: ð8Þ y A P 1 :gðyÞ ¼ e
The resulting WðeÞ can be seen as aggregate measures for the impact of flexibility on expected profit. For example, if Wð1Þ 1, then graphs with only one component (chains) perform very well in P 1 . It is then likely that other highly profitable solutions are also chains. The weight WðeÞ is used to determine how strongly solutions with e components should be represented in P2. Generating the new population: We mirror the structures of solutions in P 1 by filling P2 so that it contains approximately WðeÞ 9P 2 9 solutions for each component number e. We achieve this by first filling P2 with random solutions that are structurally similar to those in P 1 and subsequently modifying these solutions. We control the number of links set in the random solutions by using a probability g of setting a link. This leads to an expected number of g n m links, i.e., g is the expected link ratio of a created solution. By appropriately setting g, we can bias solutions towards a certain amount of flexibility. For example, g ¼1/m on average supplies the number of links to form a completely inflexible configuration, whereas g¼2/m on average supplies the number of links required to form a complete chain. However, random sampling cannot guarantee a certain network structure,
60
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
i.e., setting g ¼ g may not result in an inflexible configuration and setting g ¼ g may not form a chain. We set a lower bound g ¼ minfRðyÞ9y A P 1 g on g to roughly mirror the flexibility structures in P 1 . The respective upper bound is g ¼ maxfRðyÞ9y A P 1 g and g is uniformly sampled from ½g ; g . After solutions have been sampled using g, we modify them so that the population contains approximately WðeÞ 9P 2 9 solutions with e components. We transform solutions by adding links, thus reducing the number of components. Links are added in a way that balances demands and resource capacities (Jordan and Graves, 1995), i.e., we successively add links from the component with the highest excess demand to the component with the highest excess capacity. In this way, we end up with a newly generated population P2 in which solutions with a given component number occur according to their performance in P 1 .
4.2.3. Adding diversity We generate a third population P3 to add some diversity to the initial population. Tests showed this to be necessary since randomized rounding tends to create many similar solutions in P1, and this similarity is propagated in P2. We generate P3 with the sampling technique used to fill P2, but g (g ) is set to the minimal (maximal) link ratio of the best 12 of individuals in P2. Finally, we build a single population P by merging the best 14 of P1 and P2 and the best 12 of P3. Note that we used such a large fraction for P3 to increase diversity, which has a positive effect on the solution quality as conducted pretests showed.
4.3. Problem-adjusted crossover We next present a crossover operator that is better suited to the FDP than the one-point or uniform crossover used in standard GAs, which break good solutions at arbitrary positions. Consider the problem instance with three demand types and resources depicted in Fig. 3. The chromosomes are divided into three groups, so that each one contains the resource assignment decisions of a demand type. Crossover points are represented in the figure as vertical lines (9). Suppose that the resource assignment for the second demand type (i.e., bits four to six, denoted by the dashed line) of Parent 1 is optimal. After applying one-point crossover, it is not present in any offspring. To avoid this problem, we use a problem-adjusted one-point crossover that cannot cut the resource assignment of any demand type but only at demand type boundaries, i.e., only crossover points r A ft m9t ¼ 1, . . . ,n1g are possible. Extensive testing showed that the adjusted one-point crossover consistently finds better results than two-point crossover restricted to demand type boundaries. Note that the problem-adjusted crossover is not able to introduce new resource assignments into the population. Sufficient supply of such assignments must be assured by an initial population of adequate size and the mutation operator. The problem-adjusted crossover operator only recombines these assignments to evolve better solutions. Parent 1
Parent 2
Offspring 1
+
X
010 1|01 010
Offspring 2
110 0|10 110
010 110 110
110 001 010
Fig. 3. Application of standard one-point crossover at arbitrary positions can destroy high-quality partial solutions.
4.4. Problem-adjusted mutation We adjust classical bit-flip mutation to prevent FGA from searching in low-quality areas of the search space. To this end, the minimal and maximal link ratio for the best 30% of the population is determined at the beginning of each generation, denoted as Rmin and Rmax. If an individual has a link ratio greater than Rmax, mutation does not open another link. Analogously, mutation does not close a link in an individual already having a lower link ratio than Rmin. The mutation probability is initially set to 1=2l, but to prevent premature convergence we adaptively enlarge it in several steps that depend on the number of iterations that have passed without improving the best found solution. More precisely, let R denote the maximum number of generations without improvement, i.e., the number that causes the GA to terminate. The generations in which we increase the mutation probability are defined by a list of q adaption ratios ða1 , . . . ,aq Þ sorted in increasing order, with 0 rae r 1,eA f1, . . . ,qg. After ae R,e A f1, . . . ,qg generations, the mutation probability is multiplied by a factor a. Whenever the algorithm finds a new overall best solution, the mutation probability is reset to 1=2l. In numerical tests, we found that this procedure clearly improved the solution quality compared to the standard mutation. The specific parameter values used are described in Section 5.1.
5. Numerical studies Our numerical studies consist of three parts. First, we compare the performance of FGA on a benchmark set containing 180 small and medium-sized problem instances to that of the following comparison methods: (1) Xpress-Optimizer, a commercial highquality solver (X-O), (2) a Simulated Annealing (SA) approach, and (3) a Simple GA (SGA). Second, we study the performance of FGA and the comparison methods SGA and X-O on a set of nine large problem instances. Finally, in the third part, we evaluate the effectiveness of the problem-specific adaptions introduced into FGA with respect to SGA. This is achieved by comparing the incremental improvement introduced by the various problem specific adaptions in FGA. These are the population creation method described in Section 4.2 and the problem-adjusted genetic operators from Sections 4.3 and 4.4. Implementation details, method parameters of FGA and SGA and a description of our SA method are given in Section 5.1. The generation of the benchmark instances is described in Section 5.2. The results of the studies are presented and discussed in Sections 5.3–5.5. 5.1. Implementation details and method parameters We first describe implementation details that are identical in FGA, SGA and SA. All methods are implemented in Java and use the representation and evaluation scheme described in Section 4.1. The models for evaluating the expected profit of a solution and for computing the relaxed solution (required for creating the initial FGA solutions, see Section 4.2) are written in Xpress Mosel and are integrated into the Java code using the Mosel Java Library. Since the second stage problem is a variant of the classical Transportation Problem, it is solved very efficiently by commercial solvers like Xpress Optimizer. We now describe the method parameters that are identical in FGA and SGA. As mentioned above, we do not fine-tune GA parameters, but parameters are chosen from preliminary tests so as to achieve good performance. The population size is 5 n m. Both GAs select the best b0:5 popSizec individuals at the
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
beginning of a generation into the mating pool and maintain the best b0:1 popSizec individuals for the next generation. Two random parents from the mating pool are either crossed with a probability of 0.8, or put directly into the offspring pool otherwise. Mutation is applied on individuals of the offspring pool as described in Section 4.4. The probability for a bit in a chromosome to be mutated is 1=2l. Both GAs terminate after at most 200 generations or if the best solution found has not improved for more than R ¼ 50 generations. We now examine the features specific to either FGA or SGA. The initial population of SGA is uniformly sampled and standard one-point crossover and bit-flip mutation are applied. FGA uses problem-adjusted population creation and genetic operators as outlined in Section 4. The sequence of adaption ratios is A¼{0.5,0.8,0.9} and the mutation probability is scaled by a ¼ 2. The comparison method SA is a randomized local search method (Kirkpatrick et al., 1983). With some probability, SA also accepts moves to neighboring solutions with a worse objective function value and is thus able to escape from low-quality local optima. Over time, this probability decreases according to a so-called cooling schedule and finally leads to convergence to a local optimum. The SA is also coded in Java and uses the representation and evaluation scheme described in Section 4.1. The initial solution of our SA method is generated by means of a simple DROP heuristic. DROP starts from a fully flexible solution and iteratively closes the link that leads to the highest improvement in the objective function. The subsequent SA procedure uses ‘‘open link’’ and ‘‘close link’’ moves, corresponding to bit-flips due to the used representation, with the same probability. The procedure stops after a maximal number of iterations, which is set to 200 n m, or if the best found solution has not improved for 50 n m iterations. The initial temperature T is set pffiffiffiffiffiffiffiffiffiffiffi to 1000 and is reduced by 2% every b n mc iteration. To keep computing time in acceptable limits, we restrict the number of FGA, SGA and SA runs per instance to five. The maximum run-time for X-O is the sum of the run-times required by FGA for all five runs.
5.2. Generation of benchmark instances To the best of our knowledge, no benchmark instances for FDP are available from the literature. Therefore, we randomly generate a set of small to medium-sized problem instances (called base set), using the following six combinations of the number of demand types m and resources n: m/n¼{5/5,8/5,10/5,8/8,12/8,16/8} combined with the following two scenario numbers k¼{50,200}. To generate a series of instances with varying degrees of flexibility in the optimal solutions, we make use of the fact that low profit margins with high link costs decrease the value of flexibility (Fine and Freund, 1990; Van Mieghem, 1998) and use three different link cost/profit margin ratios lcpm¼ {5,10,20}. For each of the resulting 6 2 3 ¼ 36 combinations, we create five random instances (denoted as instance block), resulting in 180 instances total. For better readability, results are often aggregated by instance blocks and the values shown are averages over the problems contained in the block. We use the following naming scheme to denote instance blocks: m/n/k/lcpm. Instances within a block are numbered from m/n/k/lcpm–1 to m/n/k/lcpm–5. Problem parameters are chosen as follows: demands for demand types i A I are uncorrelated and normally distributed with expected value mi (uniformly distributed in [50,150]) and standard deviation si ¼ mi 0:3. The demands dis for the different scenarios s A S are generated from mi and si by means of descriptive sampling (see, e.g., Pidd, 1984). Resource capacities K j , j A J are uniformly sampled from the interval ½0:7 c, 1:3 c, where c ¼ ðn 100Þ=m denotes the average resource capacity. Link
61
costs cij are uniformly drawn from [150, 300] and profit margins pij from ½150=lcpm,300=lcpm. In order to investigate the performance of FGA on larger instances, we generate a second problem set using m=n ¼ 15=15, k¼{50,200,500}, lcpm ¼10 with three instances per combination, resulting in a total of nine instances. The number of generated instances had to be restricted due to high run-times of the methods. The experiments were conducted on a standard desktop PC with Intel Core 2 Quad Processor at 2.83 GHz and 4 GB of RAM, running Windows 7 Professional.
5.3. Performance of FGA on small and medium-sized instances To assess the solution quality and run-time of FGA on small to medium-sized instances, this study compares FGA results with X-O, SA and SGA results on the problem instances of the base set. Table 1 provides an overview of the results. For all instance blocks, we report the best solution (BS) for the respective instance block found by any of the methods. For X–O, the percentage gap to BS (D), the run-time in seconds and the fraction of instances in the block that were solved to optimality in the given time (Opt) are listed. For SA, SGA and FGA, the gap of the best solution found in the five runs to BS (Dbest ) and the average run-time are reported. Moreover, the table lists averages over all demand type/resource combinations and the averages over all instances. The first thing we note is that all methods yield small gaps with respect to the best solution found (which is optimal for 30% of the instances). This seems to indicate that the FDP profit function is rather flat around the optimum. To further test this hypothesis, we additionally generate 2000 random solutions by means of the technique used to create population P3 in Section 4.2 with g ¼ 0:2 and g ¼ 0:4 for all problem instances with n/m¼5/5. The second-stage production program is solved to optimality by X–O. The average gaps to BS for the best solution of the generated random sample are at approximately 2%. This means that obtaining solutions with a low gap is quite easy, however, effectively closing the gap turns out to be harder. Compared to the other methods, FGA shows superior solution quality and is able to provide the best solution for 33 out of 36 instance blocks. Of the eight instance blocks completely solved to optimality, FGA is able to provide all optimal solutions for six blocks. Considering single instance level (not listed in the table), FGA finds 49 of 54 optimal solutions. The average run-time of FGA over all instances is clearly below that of the comparison methods. For the instance blocks with m/n ¼{5/5,8/5,10/5}, SGA runs slightly faster than FGA, however, it cannot match the solution quality of FGA, as it is not able to find the best solution for any instance block. The quality of SA is strictly below that of FGA concerning solution quality and run-time and on average on a slightly lower level than SGA. X–O provides the best solution in eight of the 36 instance blocks and is able to find the optimal solution in the time given for 30% (54) of the instances. Average solution quality lies below that of FGA but above SGA and SA. All instance blocks with m/n¼5/5 can be solved to optimality in very fast time and even FGA is not able to compete although it delivers excellent results in terms of optimality gaps. The use of FGA seems unnecessary in the case of such small problems, however, it should be noted that problems of such small sizes have only minor practical relevance. For the larger problems, X–O is no longer able to find the optimal solution in the given time, from the 60 problems with m/n ¼12/8 or m/n ¼16/8 not a single one is solved to optimality. Moreover, we note that the gap between FGA and the comparison methods increases for larger instances. Since this type of instances is practically more relevant and represents the
62
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
Table 1 Performance of FGA and comparison methods X–O, SA and SGA on small to medium-sized instances. The best solution found (BS), the gaps to BS in % (D), the run-time in seconds and the fraction of instances in the block that X-O solved to optimality in the given time (Opt) are reported for all instance blocks. Instance
BS
X–O
D 5/5/50/5 5/5/50/10 5/5/50/20 5/5/200/5 5/5/200/10 5/5/200/20
SA Time
SGA
Opt
Dbest
4.1 4.5 1.5 37.5 43.3 11.4
1.0 1.0 1.0 1.0 1.0 1.0
0.17 0.21 0.61 0.12 0.02 1.58
Time
FGA Time
Dbest
18,043 9058 3369 18,072 9069 3365
0.00 0.00 0.00 0.00 0.00 0.00 0.00
17.0
1.0
0.45
52.2
0.39
19.5
0.00
24.8
31,905 14,757 6027 31,917 14,765 6022
0.04 0.00 0.00 0.13 0.13 0.02
210.3 199.2 62.0 602.5 498.0 454.5
0.2 0.2 1.0 0.2 0.2 0.4
0.05 0.36 0.41 0.18 0.09 0.22
59.8 58.0 58.0 178.8 176.9 180.7
0.06 0.27 0.98 0.14 0.09 0.30
35.9 32.9 28.0 110.3 102.8 89.3
0.00 0.02 0.07 0.00 0.00 0.00
45.1 41.3 31.7 143.0 120.8 96.2
0.05
337.8
0.37
0.22
118.7
0.31
66.5
0.02
79.7
40,628 18,530 8835 40,592 18,540 8832
0.08 0.05 0.00 0.14 0.30 0.16
299.5 299.7 199.7 1174.5 999.7 872.2
0.2 0.2 1.0 0.0 0.2 0.4
0.15 0.10 0.83 0.09 0.26 0.07
89.2 89.9 89.2 296.7 293.7 299.8
0.13 0.08 0.83 0.12 0.29 0.31
57.6 56.6 51.0 200.5 192.2 168.3
0.00 0.00 0.00 0.00 0.00 0.00
75.6 61.8 53.4 234.9 208.3 159.9
0.12
640.9
0.33
0.25
193.1
0.29
121.0
0.00
132.3
31,109 14,848 6400 31,113 14,854 6387
0.03 0.00 0.00 0.11 0.34 0.00
454.0 416.0 153.8 1693.5 1377.5 755.7
0.0 0.0 0.4 0.0 0.0 0.2
0.02 0.74 0.34 0.04 1.37 1.39
133.6 131.4 128.8 355.4 359.3 353.2
0.35 0.28 0.47 0.44 0.63 1.15
99.6 98.9 84.7 345.1 337.8 313.0
0.00 0.00 0.00 0.00 0.00 0.00
90.8 83.2 66.2 338.7 275.7 209.9
0.08
808.4
0.1
0.65
243.6
0.55
213.2
0.00
177.4
0.40 0.50 0.09 0.55 0.74 0.51
1313.0 1148.4 816.4 4462.8 3802.4 2689.8
0.0 0.0 0.0 0.0 0.0 0.0
0.38 0.11 2.20 0.62 1.01 1.22
288.0 269.8 227.0 951.9 933.4 913.0
0.39 0.76 1.59 0.52 0.81 1.35
275.2 253.8 223.5 996.6 905.9 821.2
0.00 0.00 0.00 0.00 0.00 0.00
262.6 229.7 163.3 892.6 760.5 538.0
0.46
2372.1
0.0
0.92
597.2
0.90
579.4
0.00
474.4
0.62 1.12 0.63 0.53 1.04 0.89
2491.8 2319.0 1720.0 9435.4 8465.0 6000.2
0.0 0.0 0.0 0.0 0.0 0.0
0.57 0.98 1.71 0.67 0.62 2.30
566.3 552.5 458.0 2356.8 2112.0 1823.0
0.41 0.94 1.82 0.49 0.82 1.98
562.8 538.0 452.0 2267.7 2086.4 1803.3
0.00 0.00 0.00 0.00 0.00 0.00
498.4 463.8 344.0 1887.1 1693.0 1200.0
| (16/8)
0.81
5071.9
1.14
1311.4
1.08
1285.0
0.00
1014.4
|
0.25
1536.1
0.61
419.4
0.59
380.8
0.00
| (5/5) 8/5/50/5 8/5/50/10 8/5/50/20 8/5/200/5 8/5/200/10 8/5/200/20 | (8/5) 10/5/50/5 10/5/50/10 10/5/50/20 10/5/200/5 10/5/200/10 10/5/200/20 | (10/5) 8/8/50/5 8/8/50/10 8/8/50/20 8/8/200/5 8/8/200/10 8/8/200/20 | (8/8) 12/8/50/5 12/8/50/10 12/8/50/20 12/8/200/5 12/8/200/10 12/8/200/20
45,279 21,124 8704 45,337 21,125 8681
| (12/8) 16/8/50/5 16/8/50/10 16/8/50/20 16/8/200/5 16/8/200/10 16/8/200/20
67,610 31,930 14,239 67,666 31,939 14,227
application area of metaheuristics, we further study the performance of FGA on large problem instances in the next section.
5.4. Performance on large scale instances
16.0 15.6 16.0 87.0 88.5 90.3
10.6 10.5 9.7 31.7 29.2 25.1
0.00 0.00 0.00 0.00 0.03 0.00
14.3 13.2 11.2 40.0 39.5 30.9
317.2 ,
Table 2 Results of FGA, X–O and SGA on large problem instances with 15 demand types, 15 resources and 50/200/500 scenarios. Gaps to the best solution found by any of the applied methods for the respective instance are reported in % (D). Moreover, run-times in minutes are reported. Instance
To assess the solution quality and run-time of FGA on large instances, this study compares FGA results with X–O and SGA results on the set of large instances described in Section 5.2. We reduced the number of comparison methods because of the high computation times and SGA was preferred over SA due to the slightly better performance on small and medium-sized instances. The results are given in Table 2. Run-times are reported in minutes. For X–O, the percentage gap to the best solution found by any of the applied methods for the respective instance is listed (D). For SGA and FGA, we report the gap of the best solution (Dbest ) and average solution (Davg ) found by the respective method in the five runs to the best solution of the instance found by any of the tested methods.
0.10 0.20 0.80 0.10 0.10 1.05
Time
Dbest
X–O
FGA
SGA avg
D
Time
Dbest
D
Time
Dbest
Davg
Time
15/15/50–1 15/15/50–2 15/15/50–3 15/15/200–1 15/15/200–2 15/15/200–3 15/15/500–1 15/15/500–2 15/15/500–3
0.48 0.64 0.48 0.62 0.88 0.64 0.86 1.15 1.00
165 190 172 805 835 809 2560 2494 2663
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0.11 0.17 0.21 0.10 0.13 0.18 0.11 0.18 0.14
33 37 34 161 166 161 512 559 473
1.22 1.27 1.74 0.66 1.63 1.64 1.61 1.50 1.30
1.62 1.77 1.96 1.23 1.93 1.92 1.82 1.79 1.65
77 79 70 395 402 371 1247 1278 1272
| (15/15)
0.75
1188
0.00
0.15
237.8
1.50
1.74
577.2
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
For all the large instances, the best solution is found by FGA. Even the average solution of FGA is consistently better than the best solution found by X–O or SGA for all instances. FGA is able to reduce the run-time of SGA by nearly 50%. Also note that, contrary to FGA, SGA is not even able to match the solution quality of X–O for any of the nine problem instances. 5.5. Studying the effectiveness of FGA components Our FGA algorithm extends SGA by two components: the problem-adjusted population creation mechanism and adapted genetic operators. In this section, we evaluate in more detail how each component contributes to the solution quality and run-time of FGA. To this end, we solve the base instance set with SGA combined with the problem-adjusted population creation method (SGA-POP) and compare the results to those found by SGA and
63
FGA. Results are reported in Table 3. For better readability, results of SGA and FGA are repeated in the table. For all methods, the gap of the best solution (Dbest ) found in five runs to the best solution of the instance block and the run-time in seconds are given. The results demonstrate the positive impact of our population creation mechanism. With approximately one-third less computing time (SGA vs. SGA-POP), we are able to reduce the average gap from 0.59 to 0.09. For each instance block tested, the solution quality of SGA-POP is above that of SGA. The reduction of the run-time is due to a faster convergence of the population (to a better solution), an indicator that the unfocused initial population of SGA slows down convergence and increases the number of evaluations required. The additional benefit gained by the adjusted genetic operators (SGAPOP vs. FGA) is not as significant, however, it still improves the average solution quality while reducing the run-time. Fewer new solutions with low quality are created because chromosomes are not
Table 3 Comparison of performance of SGA, SGA-POP and FGA to study the effectiveness of the problem-specific adaptions in FGA. Gaps to best solution of the instance block (Dbest ) and the run-time in seconds are reported. Instance
SGA
Dbest 5/5/50/5 5/5/50/10 5/5/50/20 5/5/200/5 5/5/200/10 5/5/200/20
0.10 0.20 0.80 0.10 0.10 1.05
SGA-POP Time 10.6 10.5 9.7 31.7 29.2 25.1
Dbest 0.02 0.19 0.58 0.02 0.06 0.58
FGA Time 15.6 13.8 11.8 42.1 41.1 32.3
Dbest 0.00 0.00 0.00 0.00 0.03 0.00
Time 14.3 13.2 11.2 40.0 39.5 30.9
| (5/5)
0.39
19.5
0.24
26.1
0.00
24.8
8/5/50/5 8/5/50/10 8/5/50/20 8/5/200/5 8/5/200/10 8/5/200/20
0.06 0.27 0.98 0.14 0.09 0.30
35.9 32.9 28.0 110.3 102.8 89.3
0.01 0.04 0.07 0.02 0.06 0.00
45.2 41.0 32.6 139.0 120.4 102.1
0.00 0.02 0.07 0.00 0.00 0.00
45.1 41.3 31.7 143.0 120.8 96.2
| (8/5)
0.31
66.5
0.03
80.1
0.02
79.7
10/5/50/5 10/5/50/10 10/5/50/20 10/5/200/5 10/5/200/10 10/5/200/20
0.13 0.08 0.83 0.12 0.29 0.31
57.6 56.6 51.0 200.5 192.2 168.3
0.03 0.02 0.06 0.00 0.04 0.00
76.2 65.7 56.6 240.9 205.4 162.7
0.00 0.00 0.00 0.00 0.00 0.00
75.6 61.8 53.4 234.9 208.3 159.9
| (10/5)
0.29
121.0
0.03
134.6
0.00
132.3
8/8/50/5 8/8/50/10 8/8/50/20 8/8/200/5 8/8/200/10 8/8/200/20
0.35 0.28 0.47 0.44 0.63 1.15
99.6 98.9 84.7 345.1 337.8 313.0
0.01 0.06 0.38 0.07 0.06 0.11
92.9 85.7 67.9 336.0 285.0 222.4
0.00 0.00 0.00 0.00 0.00 0.00
90.8 83.2 66.2 338.7 275.7 209.9
| (8/8)
0.55
213.2
0.11
181.7
0.00
177.4
12/8/50/5 12/8/50/10 12/8/50/20 12/8/200/5 12/8/200/10 12/8/200/20
0.39 0.76 1.59 0.52 0.81 1.35
275.2 253.8 223.5 996.6 905.9 821.2
0.05 0.05 0.01 0.01 0.00 0.02
255.8 228.8 171.8 906.0 754.8 556.6
0.00 0.00 0.00 0.00 0.00 0.00
262.6 229.7 163.3 892.6 760.5 538.0
| (12/8)
0.90
579.4
0.02
479.0
0.00
474.4
16/8/50/5 16/8/50/10 16/8/50/20 16/8/200/5 16/8/200/10 16/8/200/20
0.41 0.94 1.82 0.49 0.82 1.98
562.8 538.0 452.0 2267.7 2086.4 1803.3
0.03 0.05 0.03 0.03 0.09 0.22
506.6 455.6 354.0 1837.2 1744.0 1244.4
0.00 0.00 0.00 0.00 0.00 0.00
498.4 463.8 344.0 1887.1 1693.0 1200.0
| (16/8)
1.08
1285.0
0.08
1023.6
0.00
1014.4
|
0.59
380.8
0.09
320.8
0.00
317.2
64
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
broken at arbitrary positions. Again, all individual instance blocks are solved with a higher quality by FGA. To conclude, the tests performed clearly prove the efficiency, in both solution quality and speed, of every component of FGA.
6. Conclusions
Appendix A. Determination of the number of components of a flexibility design The following algorithm determines the structure of the flexibility design that corresponds to a first-stage solution yij , iA f1, . . . ,ng, j A f1, . . . ,mg. The algorithm is given yij in the form of n demand type strings that represent the resource assignment of the respective demand type demandTypeString½i ¼ yi1 , . . . ,yim :
This paper presents a problem-adjusted genetic algorithm, called Flexibility Design GA (FGA), for solving the Flexibility Design Problem (FDP). FGA successfully integrates expert knowledge on the FDP to guide its search. FGA uses a problem-adjusted technique to generate its initial population, which is based on the estimation and replication of good flexibility structures. The problem-adjusted crossover operator avoids the disruption of good partial solutions, while mutation randomly opens or closes links only when appropriate. We conducted experiments on a base set with 180 small and medium-sized instances and a set of nine large-scale instances and compared the solution quality and run-time of FGA and three comparison methods: a simple GA, a Simulated Annealing approach and a commercial solver. Moreover, the effectiveness of the problem-specific adaptions in FGA is studied. The results show clearly that the customization of FGA is beneficial as run-time and solution quality improve with the problem-specific adaptions. In detail, FGA dominates all comparison methods with respect to both run-time and solution quality for all but the smallest problem instances. For the larger problem instances, which are of primary interest in practice, the gap between FGA and comparison methods widens. Future research is to integrate FGA into larger planning models which include resource capacity choices. The crux is to gain qualitative insights into the interplay between the assignment and capacity decisions and to examine how this knowledge can be used in a solution approach. Furthermore, we noted in the experiments that FGA spends most of its time evaluating the second stage production program. It shall be investigated how its resolution can be sped up, e.g., by using sampling techniques or iterated dual reoptimization.
The algorithm returns a set that contains the components that constitute the network graph. A component consists of a list of the demand types it contains (demandTypeList) and a bitstring that represents the contained resources (resourceString). Obviously, the number of components can be determined as the cardinality of the returned component set. The pseudocode of the algorithm is shown in Fig. A1. The following example with four demand types and four resources illustrates the algorithm. We are given 0 1 1 1 0 0 B0 1 1 0C B C yij ¼ B C: @0 1 0 0A 0
0
0
1
The rows i A f1, . . . ,ng in the matrix represent the demand type strings. We start with an empty set of components Components ¼ f g. We create a component with the first demand type string (Lines 4– 6): c1 ¼ ð/1S, 1 1 0 0Þ and add it to Components in Line 14, i.e., Components ¼ fc1 g. Next, we create a component with the second demand type string c2 ¼ ð/2S, 0 1 1 0Þ. For each component in Components, we check whether a bitwise 4 between the resource string of the component from Components and the resource string of c2 is different from zero (lines 7–9) c1 :resourceString4c2 :resourceString ¼ 1 1 0 040 1 1 0 ¼ 0 1 0 0 a0 0 0 0: As the result is different from zero, we remove c1 from Components and merge c1 and c2 (Lines 10–13) so that c2 ¼ ð/1; 2S, 1 1 1 0Þ. c2 is added to Components, i.e., Components ¼ fc2 g. Next, we create the component c3 ¼ ð/3S, 0 1 0 0Þ and perform the bitwise 4 operation
Acknowledgments
c2 :resourceString4c3 :resourceString ¼ 1 1 1 040 1 0 0 ¼ 0 1 0 0 a0 0 0 0:
David Francas did much of his work on this manuscript while being a research assistant at the Department of Logistics, University of Mannheim.
We remove c2 from Components and merge c2 and c3 to c3 ¼ ð/1; 2,3S, 1 1 1 0Þ, which is added to Components. Next, we create the component c4 ¼ ð/4S, 0 0 0 1Þ. Since c3 :resourceString4 c4 :resourceString ¼ 1 1 1 040 0 0 1 ¼ 0 0 0 0, the component c4 is
Fig. A1. Procedure NETWORK-STRUCTURE.
M. Schneider et al. / Int. J. Production Economics 141 (2013) 56–65
Demand Type
Resource
1
A
2
B
3
C
4
D
Fig. A2. Production network for the given yij.
added to Components, which yields the final result Components ¼ fð/1; 2,3S, 1 1 1 0Þ, ð/4S, 0 0 0 1Þg: The production network for the given yij is depicted in Fig. A2 and confirms our result. References Aksin, O.Z., Karaesmen, F., 2007. Characterizing the performance of process flexibility structures. Operations Research Letters 35 (4), 477–484. ˜ o, M.T., Pe´rez, G., 2003. An Alonso-Ayuso, A., Escudero, L.F., Garı´n, A., Ortun approach for strategic supply chain planning under uncertainty based on stochastic 0-1 programming. Journal of Global Optimization 26 (1), 97–124. Andrado´ttir, S., Ayhan, H., Down, D.G., 2007. Compensating for failures with flexible servers. Operations Research 55 (4), 753–768. Bassamboo, A., Randhawa, R.S., Van Mieghem, J.A., 2010. Optimal flexibility configurations in newsvendor networks: Going beyond chaining and pairing. Management Science 56 (8), 1285–1303. Bertrand, J., 2003. Supply chain design: flexibility considerations. In: de Kok, A., Graves, S. (Eds.), Supply Chain Management. Handbook in Operations Research and Management Sciences, vol. 11. Elsevier, pp. 133–198. (Chapter 4). Bihlmaier, R., Koberstein, A., Obst, R., 2009. Modeling and optimizing of strategic and tactical production planning in the automotive industry under uncertainty. OR Spectrum 31 (2), 311–336. Birge, J.R., Louveaux, F., 1997. Introduction to Stochastic Programming. Springer. Brusco, M.J., Johns, T.R., 1998. Staffing a multiskilled workforce with varying levels of productivity: an analysis of cross-training policies. Decision Sciences 29 (2), 499–515.
65
Chou, M.C., Chua, G.A., Teo, C.-P., Zheng, H., 2010. Design for process flexibility: efficiency of the long chain and sparse structure. Operations Research 58 (1), 43–58. Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., 2001. Introduction to Algorithms. MIT Press. Fico Xpress Optimization Suite, 2011. Xpress Optimization Suite Overview /http://www.fico.com/en/Products/DMTools/xpress-overviewS. Fine, C., Freund, R., 1990. Optimal investment in product flexible manufacturing capacity. Management Science 36 (4), 449–466. Fleischmann, B., Ferber, S., Henrich, P., 2006. Strategic planning of BMW’s global production network. Interfaces 36 (3), 194–208. Garey, M., Johnson, D., 1979. Computers and Intractability: A Guide to the Theory of NP-Completeness. W.H. Freeman and Co. Goldberg, D.E., 1989. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley. Gurumurthi, S., Benjaafar, S., 2004. Modeling and analysis of flexible queueing systems. Naval Research Logistics 51, 755–782. Hallgren, M., Olhager, J., 2009. Flexibility configurations: empirical analysis of volume and product mix flexibility. Omega 37 (4), 746–756. Holland, J.H., 1975. Adaptation in Natural and Artificial Systems. University of Michigan Press. Hopp, W.J., Tekin, E., van Oyen, M.P., 2004. Benefits of skill chaining in serial production lines with cross-trained workers. Management Science 50 (1), 83–98. Iravani, S.M., van Oyen, M.P., Sims, K.T., 2005. Structural flexibility: a new perspective on the design of manufacturing and service operations. Management Science 51 (2), 151–166. Jordan, W.C., Graves, S.C., 1995. Principles on the benefits of manufacturing process flexibility. Management Science 41 (4), 577–594. Kauder, S., 2008. Strategische Planung internationaler Produktionsnetzwerke in der Automobilindustrie. Ph.D. Thesis, WU Vienna University of Economics and Business. Kauder, S., Meyr, H., 2009. Strategic network planning for an international automotive manufacturer. OR Spectrum 31 (3), 507–532. Kirkpatrick, S., Gelatt, C.D., Vecchi, M.P., 1983. Optimization by simulated annealing. Science 220, 671–680. Koste, L.L., Malhorta, M.K., 1999. A theoretical framework for analyzing the dimensions of manufacturing flexibility. Journal of Operations Management 18 (1), 75–93. Nembhard, D.A. (Ed.), 2007. Workforce Cross Training. CRC Press. Pidd, M., 1984. Computer Simulation in Management Science. John Wiley & Sons, Inc. Santoso, T., Ahmed, S., Goetschalckx, M., Shapiro, A., 2005. A stochastic programming approach for supply chain network design under uncertainty. European Journal of Operational Research 167 ((1) November), 96–115. Srinivasan, A., 1999. Approximation algorithms via randomized rounding: a survey. In: Series in Advanced Topics in Mathematics. Polish Scientific Publishers PWN, pp. 9–71. Van Mieghem, J.A., 1998. Investment strategies for flexible resources. Management Science 44 (8), 1071–1078. Van Mieghem, J.A., Rudi, N., 2002. Newsvendor networks: inventory management and capacity investment with discretionary activities. Manufacturing & Service Operations Management 4 (4), 313–335. Wallace, R.B., Whitt, W., 2005. A staffing algorithm for call centers with skill-based routing. Manufacturing & Service Operations Management 7 (4), 276–294.