Reliability optimization of series-parallel systems with a choice of redundancy strategies using a genetic algorithm

Reliability optimization of series-parallel systems with a choice of redundancy strategies using a genetic algorithm

ARTICLE IN PRESS Reliability Engineering and System Safety 93 (2008) 550–556 www.elsevier.com/locate/ress Reliability optimization of series-paralle...

446KB Sizes 1 Downloads 49 Views

ARTICLE IN PRESS

Reliability Engineering and System Safety 93 (2008) 550–556 www.elsevier.com/locate/ress

Reliability optimization of series-parallel systems with a choice of redundancy strategies using a genetic algorithm R. Tavakkoli-Moghaddama,c,, J. Safarib, F. Sassanic a

Department of Industrial Engineering, Faculty of Engineering, University of Tehran, P.O. Box 11365/4563, Tehran, Iran b Department of Industrial Engineering, Science and Research Branch, Islamic Azad University, Tehran, Iran c Department of Mechanical Engineering, The University of British Columbia, Vancouver, Canada Received 21 April 2006; received in revised form 8 February 2007; accepted 11 February 2007 Available online 7 March 2007

Abstract This paper proposes a genetic algorithm (GA) for a redundancy allocation problem for the series-parallel system when the redundancy strategy can be chosen for individual subsystems. Majority of the solution methods for the general redundancy allocation problems assume that the redundancy strategy for each subsystem is predetermined and fixed. In general, active redundancy has received more attention in the past. However, in practice both active and cold-standby redundancies may be used within a particular system design and the choice of the redundancy strategy becomes an additional decision variable. Thus, the problem is to select the best redundancy strategy, component, and redundancy level for each subsystem in order to maximize the system reliability under system-level constraints. This belongs to the NP-hard class of problems. Due to its complexity, it is so difficult to optimally solve such a problem by using traditional optimization tools. It is demonstrated in this paper that GA is an efficient method for solving this type of problems. Finally, computational results for a typical scenario are presented and the robustness of the proposed algorithm is discussed. r 2007 Elsevier Ltd. All rights reserved. Keywords: Redundancy allocation problem; Series-parallel systems; Redundancy strategies; Reliability optimization; Genetic algorithms

1. Introduction The primary goal of reliability engineering is to improve the reliability system. In the initial design activity, the redundancy allocation is a direct way of enhancing system reliability. The redundancy allocation problem involves the simultaneous selection of components and a system-level design configuration, which can collectively meet all design constraints in order to optimize some objective functions such as system cost and/or reliability [1]. This reliability design problem has generally been formulated by considering active redundancy. To deal with these problems, a large number of models and solution methods have been proposed such as dynamic programming, Lagrangean multiplier [2], heuristic approach [3], integer programming [4], and genetic algorithms (GAs) [5]. Comprehensive Corresponding author. Tel.: +98 21 88021067; fax: +98 21 88013102.

E-mail addresses: [email protected] (R. Tavakkoli-Moghaddam), [email protected] (J. Safari), [email protected] (F. Sassani). 0951-8320/$ - see front matter r 2007 Elsevier Ltd. All rights reserved. doi:10.1016/j.ress.2007.02.009

overviews of these methods have been addressed by Kuo et al. [6] and Gen et al. [7]. Furthermore, the redundancy allocation problem is considered for various system structures such as series, parallel, network, parallel-series [8], k-out-of-n [9] and the like. The series-parallel system, as depicted in Fig. 1, is a common system structure that is used in most system designs. Thus, the series-parallel redundancy allocation problem is considered in this paper. The above-mentioned solution methodologies for seriesparallel systems are not applicable when the system design involves active and cold-standby redundancies. Coit [9] presented a new problem formulation and solution method to determine the optimal system design configuration when a system design includes multiple subsystems that are designed with either active or cold-standby redundancy. This solution method assumes that the redundancy strategy (active or cold-standby) for each subsystem is predetermined. However, the choice of these two redundancy strategies for each subsystem is much more realistic and it provides a better tool for the designers. Coit [10] also

ARTICLE IN PRESS R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

Fig. 1. Series-parallel system.

presented an optimal solution to redundancy allocation problems when there are some subsystems using active redundancy, cold-standby redundancy, or selecting the best redundancy strategy. This becomes an additional decision variable in redundancy allocation problems. Coit [10] solved this problem by first formulating it and then applying a zero-one integer programming method. Chern [11] showed that even a simple redundancy allocation problem in series systems with linear constraints is NP-hard. This has prompted recent researchers to develop metaheuristic methods to achieve approximate solutions of acceptable quality in a reasonable computational time. Metaheuristic methods can be used to solve complex discrete optimization problems. These methods provide more flexibility and require fewer assumptions on the objective function and the associated constraints. A GA is one of the metaheuristic methods trying to imitate the biological phenomenon of evolutionary production through the parent–children relationship [12]. Recently, GAs have been designed to solve a variety of reliability optimization problems. Coit et al. [1] successfully applied a GA for redundancy allocation problems. The structure of this paper is organized as follows. Sections 2 and 3 present a review on the redundancy strategies and the problem formulation, respectively. In Section 4, a GA is proposed for solving the redundancy allocation problem when either active or cold-standby redundancy can be selected for individual subsystems. Section 5 considers a numerical example to demonstrate the efficiency of the proposed methodology through computational results. Finally, Section 6 presents conclusion. 2. Redundancy strategies There are two types of redundancy strategies, namely, active and standby. If all the redundant components operate simultaneously from time zero, even though the system needs only one at any given time, such an arrangement is called active redundancy. There are three variants of the standby redundancy, namely, cold, warm, and hot. In the cold

551

standby redundancy, the component does not fail before it operates. In the warm standby redundancy, the component is more prone to failure before operation than the cold standby components. In the hot standby redundancy, the failure pattern of component does not depend on whether the component is idle or in operation. The mathematical models for hot standby and active redundancy arrangements are the same. In the standby redundancy arrangement, the redundant components are sequentially used in the system at component failure times. Each redundant component in the standby arrangement can operate only when it is switched on. When the component in operation fails, one of the redundant units is switched on to continue the system operation [13]. In the standby redundancy, there are two scenarios in first detecting failure and then switching to good components. These are classified as Cases 1 and 2. For the Case 1, the failure detection and switching hardware (or software) continually monitors the system performance. When it detects a failure it activates a redundant component. For the Case 2, a failure is only possible when a switch is required. At any time the switch is required; there is a constant probability (ri) that the switching will be successful [10]. This paper considers redundancy strategies consisting of only active (hot) and cold-standby components. The approach used categorizes all the subsystems into four sets according to the following definitions: A: set of all subsystems with active redundancy, S: set of all subsystems with cold-standby redundancy, C: set of all subsystems with active or cold-standby redundancy, and N: set of all subsystems with no redundancy.

3. Problem formulation The mathematical model of the series-parallel redundant reliability system with s subsystems and two separable linear constraints is considered and presented as the following integer nonlinear programming problem [10]. In this model, the components within the same subsystem are of the same type. 3.1. Notations

s ni N nmax, mi zi z t

i

number of subsystems number of components used in subsystem i (i ¼ 1, 2, y, s) set of ni (n1, n2, y, ns) upper bound for ni (nipnmax,i 8i) number of available component choices for a subsystem i (i ¼ 1, 2, y, s) index of component choice used for a subsystem i (ziA{1, 2, y, mi}) set of zi (z1, z2, ..., zs) mission time

ARTICLE IN PRESS R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

552

R(t; z, n)

system reliability at time t for designing vectors z and n reliability at time t for the jth available component for subsystem i scale and shape parameters for the Gamma

ri(t) li, kij

k

distribution; f ij ðtÞ ¼ ðlijij tkij 1 elij t Þ=Gðkij Þ system-level constraint limits for cost and weight cost and weight for the jth available component for the subsystem i failure-detection/switching reliability at time t (Case 1) failure-detection/switching reliability at time t (Case 2)

C, W cij, wij ri(t) ri

3.2. Mathematical model max

Rðt; z; nÞ

The exact techniques for reliability optimization problems are not necessarily desirable because it is very hard to obtain the exact solution. Because of the difficulties of applying exact techniques, a major focus of this paper is to attempt reliability optimization by using the proposed GA. This algorithm can be considered as a very practical tool to solve such complex problems successfully. 4. Genetic algorithms A GA is a probabilistic search method for solving optimization problems. Holland [14] first made pioneering contributions to the development of GAs that can be effectively adopted for complex combinatorial problems. For a detailed description of applications of GAs to reliability optimization problems, one may refer to Gen et al. [12]. The proposed GA developed for this general problem is described in the following subsections.

(1) 4.1. Solution encoding

s:t: s X

cizi ni pC;

ni 2 f1; 2; . . . ; nmax;i g,

ð2Þ

wizi ni pW ;

zi 2 f1; 2; . . . ; mi g.

(3)

i¼1 s X i¼1

With respect to Eq. (1), the objective is to determine the redundancy strategy, component type, and the quantity of components in each subsystem to achieve maximum system reliability. Constraints given in Eqs. (2) and (3) consider the available cost and weight, respectively. To calculate R(t;z,n), Eqs. (4) and (5) are presented for the system reliability in two cases as follows: Case 1: Continuous detector/switch operation Rðt; z; nÞ ¼

Y

ð1  ð1  rizi ðtÞni Þ 

i2A

þ

Y

rizi ðtÞ

i2S

ni 1 Z X j¼1

0

t

ri ðuÞf izðjÞi ðuÞrizi ðt

!

 uÞ du

Y

4.2. Initial population rizi ðtÞ.

i2N

ð4Þ Case 2: Switch active only in response to a failure Rðt; z; nÞ ¼

Y

ð1  ð1  rizi ðtÞni Þ 

i2A

þ

Y

j¼1

rji

Z 0

t

The initial population is determined randomly and legally by selecting p solution matrixes, where p is the population size of 8. 4.3. Fitness function

rizi ðtÞ

i2S

ni 1 X

Each possible solution (phenotype) to this problem is a collection of redundancy strategies, selected components, and ni parts in parallel ðni pnmax;i Þ for each subsystem. ni parts can be chosen only in one combination amongst the mi available components. The solution encoding is a 3  s matrix. The first, second, and third rows represent the redundancy strategy, type of selected components, and the number of selected components, respectively. The subsystem representations are then placed into adjacent columns to complete the matrix representation. Fig. 2 shows an example of encoding solution with s ¼ 14. This matrix represents a prospective solution with two of the first component used in parallel with active redundancy for the first subsystem; two of the second component used in parallel with cold standby redundancy for the second subsystem, etc.

f ðjÞ izi ðuÞrizi ðt  uÞ du

!

Y i2N

rizi ðtÞ.

ð5Þ

The fitness function is defined as the sum of the objective and a dynamic penalty function determined by the relative degree of infeasibility. To provide an efficient search through the infeasible region but to assure that the final

Fig. 2. Encoding solution as a chromosome representation.

ARTICLE IN PRESS R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

553

Fig. 3. Example of crossover.

Fig. 4. Example of general mutation.

Fig. 5. Example of Max–Min mutation.

best solution is feasible, the dynamic penalty function proposed by Coit et al. [15] is adopted. 4.4. Crossover breeding operator Parents are randomly selected and then the proposed Crossover breeding operator is applied based on the crossover probability of 0.7. One offspring is produced by a uniform crossover breeding operator. This operator first generates a random crossover mask and then exchanges relative genes between parents according to the mask. A crossover mask is simply a binary operator or window of the same size as the chromosome [12]. Another offspring is produced by the modified uniform crossover operator. For this operator, crossover mask generates as follow: (1) Subsystems with the lowest and highest reliability amongst the candidate solutions are determined. (2) All bits in the crossover mask for these two subsystems must be one and another zero. For instance, the crossover is performed as depicted in Fig. 3.

4.5. General mutation operator The mutation operator performs random perturbations to selected solutions. Each value within the solution matrix is randomly altered at a mutation rate of 0.1. For instance, the general mutation is performed as depicted in Fig. 4. 4.6. Max–min mutation operator In this paper, this operator is a modified version proposed by You [16]. For each candidate solution, this operator randomly mutates subsystems with the highest and lowest reliability amongst the candidate solutions. Each value within these subsystems is randomly altered at a mutation rate of 0.2. For example, the max–min mutation is performed as indicated in Fig. 5. 4.7. Selection After operator breeding, the p best solutions amongst the previous generation and the new child are retained to form the next generation.

ARTICLE IN PRESS R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

554

4.8. Stopping condition

Table 2 Comparison between computational of GA and optimal solution

The GA is terminated after a pre-selected number of generations. A reasonable number can be arrived at with a few preliminary test runs. We found 30 generations to be sufficient.

i

Optimal solution

1 2 3 4 5 6 7 8 9 10 11 12 13 14

5. A numerical example To evaluate the performance of the proposed GA, a typical example taken from Coit et al. [10] is first solved. In this example, the series-parallel system is connected by 14 parallel subsystems and each system has three or four components of choice. Component cost, weight, and Gamma distribution parameters (lij, kij) are given in Table 1. The objective is to maximize system reliability at t ¼ 100 h, given the constraints for the system cost (C ¼ 130 max) and the system weight (W ¼ 170 max). For each subsystem, active or cold-standby redundancy can be used, and the reliability of a switch (at 100 h) is 0.99 for all subsystems. The maximum number of components is 6 (i.e., nmax, i) within any subsystem. Because of the stochastic nature of the proposed GA, four trials are performed for 30-generation each and the best solution amongst the four is considered as the final solution. The maximum reliability identified by the proposed GA is used to compare its performance to the optimal solution obtained by Coit et al. [10], as given in Table 2. It is shown that, the solution of the proposed algorithm is comparable to the optimal solution. Fig. 6 shows the convergence of the best fitness in each generation. The near-optimal solution is achieved after approximately 24 generations. The results show that the GA consistently converged to the optimal solution. Since, GA is a stochastic search algorithm, another aspect of investigating the efficiency of the proposed GA is the sensitivity analysis to the GA operators used in this

Proposed algorithm

zi

ni Redundancy

zi

ni

Redundancy

3 1 4 3 2 2 1 3 1 2 3 4 2 3

4 2 3 3 3 2 2 2 2 3 2 2 2 2

1 1 4 3 2 2 1 1 1 1 1 1 3 3

2 2 3 3 2 2 2 3 2 2 4 3 2 2

Cold-standby Active Active Cold-standby Active Active Cold-standby Cold-standby Active Cold-standby Cold-standby Cold-standby Cold-standby Active

System reliability Resources consumed Weight Cost

Active Cold-standby Active Cold-standby Active Cold-standby Cold-standby Cold-standby Cold-standby Cold-standby Cold-standby Cold-standby Active Cold-standby 0.9863 170 123

0.9705 170 104

Fitness

0.9 0.8 0.7 0.6

5

10 15 20 25 Generation number

30

Fig. 6. Fitness convergence.

Table 1 Parameter setting for the given problem i

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Choice 1 (j ¼ 1)

Choice 2 (j ¼ 2)

Choice 3 (j ¼ 3)

Choice 4 (j ¼ 4)

lij

kij

cij

wj

lij

kij

cij

wj

lij

kij

cij

wj

lij

kij

cij

wj

0.00532 0.00818 0.0133 0.00741 0.00619 0.00436 0.0105 0.0150 0.00268 0.0141 0.00394 0.00236 0.00215 0.0110

2 3 3 2 1 3 3 3 2 3 2 1 2 3

1 2 2 3 2 3 4 3 2 4 3 2 2 4

3 8 7 5 4 5 7 4 8 6 5 4 5 6

0.000726 0.000619 0.0110 0.0124 0.00431 0.00567 0.00466 0.00105 0.000101 0.00683 0.00355 0.00769 0.00436 0.00834

1 1 3 3 2 3 2 1 1 2 2 2 3 1

1 1 3 4 2 3 4 5 3 4 4 3 3 4

4 10 5 6 3 4 8 7 9 5 6 5 5 7

0.00499 0.00431 0.0124 0.00683 0.00818 0.00268 0.00394 0.0105 0.000408 0.00105 0.00314 0.0133 0.00665 0.00355

2 2 3 2 3 2 2 3 1 1 2 3 3 2

2 1 1 5 3 2 5 6 4 5 5 4 2 5

2 9 6 4 5 5 9 6 7 6 6 6 6 6

0.00818 – 0.00466 – – 0.000408 – – 0.000943 – – 0.0110 – 0.00436

3 – 2 – – 1 – – 1 – – 3 – 3

2 – 4 – – 2 – – 3 – – 5 – 6

5 – 4 – – 4 – – 8 – – 7 – 9

ARTICLE IN PRESS R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

555

0.0350

0.0300

Standard deviation

0.0250

0.0200

0.0150

0.0100

0.0050

0.0000 1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Problem Fig. 7. Standard deviation of the fitness functions.

Table 3 GA performance for problems taken from Fyffe [17] Problem

Weight constraint

Trial 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191

2

3

Standard deviation

Best feasible solution

0.0150 0.0211 0.0290 0.0197 0.0180 0.0208 0.0125 0.0180 0.0273 0.0270 0.0137 0.0150 0.0047 0.0048 0.0210 0.0136 0.0120 0.0083 0.0144 0.0117 0.0046 0.0144 0.0086 0.0065 0.0082 0.0246 0.0136 0.0080 0.0098 0.0163 0.0067 0.0092 0.0107

0.9641 0.9629 0.9636 0.9564 0.9675 0.9619 0.9454 0.9647 0.9614 0.9669 0.9602 0.9705 0.9639 0.9608 0.9717 0.9707 0.9681 0.9703 0.9738 0.9734 0.9756 0.9834 0.9741 0.9797 0.9737 0.9804 0.9844 0.9821 0.9815 0.9771 0.9861 0.9863 0.9856

4

Reliability

Weight

Cost

Reliability

Weight

Cost

Reliability

Weight

Cost

Reliability

Weight

Cost

0.9626 0.9629 0.9636 0.9549 0.9675 0.9217 0.9439 0.9327 0.9507 0.9638 0.9447 0.9705 0.9639 0.9514 0.9515 0.9594 0.9667 0.9656 0.97 0.9734 0.9756 0.9634 0.9538 0.9797 0.9780 0.9737 0.9531 0.9681 0.9581 0.9429 0.9785 0.9654 0.9605

158 159 161 163 163 181 172 178 172 169 179 170 170 175 178 175 176 177 177 178 176 186 183 179 184 186 191 188 172 197 190 188 191

107 93 95 95 104 113 109 102 110 107 112 104 107 105 104 104 112 101 102 107 100 110 111 110 119 114 109 111 113 112 122 120 119

0.9578 0.9544 0.9021 0.9327 0.9471 0.9541 0.9454 0.9571 0.9614 0.9418 0.9341 0.9581 0.9639 0.9608 0.9547 0.9618 0.9565 0.9512 0.9467 0.9488 0.9735 0.9834 0.9679 0.9779 0.9689 0.929 0.9844 0.9802 0.9815 0.9771 0.9786 0.9781 0.9794

159 161 183 171 167 167 164 169 167 178 178 172 171 172 177 173 179 181 185 187 179 179 180 178 182 193 184 185 187 187 188 191 190

97 102 106 111 96 98 97 92 91 105 97 113 98 107 111 114 104 104 111 109 107 113 112 102 106 108 120 109 115 112 109 123 119

0.9319 0.9534 0.9039 0.9564 0.9464 0.9619 0.9255 0.9647 0.9392 0.9669 0.9294 0.9380 0.9595 0.9508 0.9717 0.9707 0.9681 0.9703 0.9738 0.9704 0.971 0.9513 0.9741 0.9650 0.9589 0.9795 0.9767 0.9821 0.9748 0.9683 0.9696 0.9830 0.9856

173 162 181 162 167 164 180 165 174 166 184 183 172 178 172 174 174 176 177 177 180 185 180 183 189 182 184 186 189 190 189 185 189

103 92 112 93 98 96 117 100 103 92 109 110 100 102 102 109 105 102 114 113 112 121 106 122 119 113 109 116 115 114 111 124 123

0.9641 0.9156 0.9138 0.9152 0.9235 0.9233 0.9211 0.9281 0.8990 0.9084 0.9602 0.9692 0.9539 0.9514 0.9212 0.9385 0.9421 0.9587 0.9793 0.9723 0.9650 0.9773 0.9677 0.9745 0.9737 0.9804 0.9767 0.9668 0.9719 0.9778 0.9861 0.9863 0.9728

159 179 179 179 175 181 180 180 191 189 168 169 173 178 193 190 184 180 178 179 181 178 181 182 183 184 186 189 187 189 189 190 191

95 118 104 113 105 116 107 108 110 109 102 105 107 112 120 123 111 102 118 110 114 105 115 104 112 105 112 113 111 120 120 128 116

ARTICLE IN PRESS 556

R. Tavakkoli-Moghaddam et al. / Reliability Engineering and System Safety 93 (2008) 550–556

paper. A robust GA will exhibit low sensitivity to the operator variations as evidenced by the standard deviation of the best solution found during the search. Thus, to compare the standard deviation of the problems, 33 test problems are solved, which are a modified versions of the problems given in Fyffe et al. [17]. The data sets of these problems are shown in Table 1 and various weights of the available resource from 159 to 191 are considered. Fig. 7 shows the standard deviation of the best solution to each problem. The computational results are shown in Table 3. There are no significant differences amongst the standard deviations of the solutions. Thus, the proposed GA is a robust optimization algorithm. 6. Conclusion In this paper, a GA has been proposed for solving the redundancy allocation problem when either active or coldstandby redundancy can be selected for individual subsystems. These reliability design problems are usually formulated as a nonlinear integer programming model under a number of constraints. In general, these problems are not easy to solve in real cases, and especially for large systems. This is the motivation of using genetic algorithms (GAs). The proposed GA is more flexible in the sense that the practitioner is not limited to a single solution. References [1] Coit DW, Smith A. Optimization approaches to the redundancy allocation to the redundancy allocation problem for series-parallel systems. Proceedings of the fourth industrial engineering research conference, Nashville, TN, May 1995; p. 342–9.

[2] Misra KB. Reliability optimization of series-parallel system. IEEE Trans Reliab 1972;21(21):230–8. [3] Ramirez-Marquez JE, Coit DW. A heuristic for solving the redundancy allocation problem for multi-state series-parallel systems. Reliab Eng Syst Safety 2004;83:341–9. [4] Sharma U, Misra KB. An efficient algorithm to solve integer programming problems in reliability optimization. Int J Qual Reliab Manage 1990;7(5):44–56. [5] Coit DW, Smith A. Reliability optimization of series-parallel systems using a genetic algorithm. IEEE Trans Reliab 1996;45(2): 254–60. [6] Kuo W, Prasad VR, Tillman FA, Hawang C. Optimal reliability design fundamental and application. London: Cambridge University Press; 2001. [7] Gen M, Yun YS. Soft computing approach for reliability optimization: state-of-the-art survey. Reliab Eng Syst Safety 2006;91(9): 1008–26. [8] Yalaoui A, Chu C, Chatelet E. Reliability allocation problem in series-parallel system. Reliab Eng Syst Safety 2005;90:55–61. [9] Coit DW, Liu J. System reliability optimization with k-out-of-n subsystems. Int J Reliab Qual Safety Eng 2000;7(2):129–43. [10] Coit DW. Maximization of system reliability with a choice of redundancy strategies. IIE Trans 2003;35(6):535–44. [11] Chern MS. On the computational complexity of reliability redundancy allocation in a series system. Oper Res Lett 1992;11: 309–15. [12] Gen M, Cheng R. Genetic algorithm and engineering design. New York: Wiley; 1997. [13] Ebling CE. An introduction to reliability maintainability engineering. New York: McGraw-Hill; 1997. [14] Holland JH. Adaptation in natural and artificial systems. Michigan: University of Michigan Press; 1975. [15] Coit DW, Smith A. Penalty guided genetic search for reliability design optimization. Comput Ind Eng 1996;30(4):895–904. [16] You P, Chen T. An efficient heuristic for series-parallel redundant reliability problems. Comput Oper Res 2005;32:2117–27. [17] Fyffe ED, Hines WW, Lee NK. System reliability allocation and a computational algorithm. IEEE Trans Reliab 1968;17: 64–9.