Introduction

Motivation

Many industrial processes involve multi-stage production lines, where material handling is performed by a computer-controlled hoist or robot. A typical application of such processes is an automated electroplating line for processing printed circuit boards (PCBs), as shown in Fig. 1. Such a production line is usually composed of a sequence of chemical processing stages. A chemical or plating treatment is performed on the part at each processing stage, such as acid activating, copper plating, rinsing, etc. During the process, each part must be successively soaked at each stage for a period of time, which must fall within the prescribed time window. Each tank can process only one part at a time. There is no buffer in the line. A computer-controlled hoist is used to move the part from one tank to the next. Effective scheduling of hoist movements is critical in achieving high throughput from these systems. This problem is commonly known as the hoist scheduling problem (Che et al. 2002; Che and Chu 2005; Chen et al. 1998; Kats and Levner 1998; Lei and Wang 1989; Lim 1997; Liu et al. 2002; Mak et al. 2002; Manier 1994, Manier and Bloch 2003; Ng 1996; Phillips and Unger 1976; Shapiro and Nuttle 1998; Sun et al. 1994; Varnier et al. 1997).

Fig. 1
figure 1

An automated electroplating line for processing PCBs

Literature review

Most previous research on hoist scheduling problems studied basic electroplating lines, where there is a one-to-one correspondence between the processing stages and the chemical tanks in the systems (Che et al. 2002; Chen et al. 1998; Lei and Wang 1994; Lim 1997; Phillips and Unger 1976; Shapiro and Nuttle 1998; Sun et al. 1994). However, real-life electroplating lines are often more complex than the basic system (Che and Chu 2005; Liu et al. 2002; Ng 1996; Varnier et al. 1997). The following are two common extensions:

  1. 1.

    Multi-function tank (Liu et al. 2002; Phillips and Unger 1976). More than one production stage may share one physical tank to save the facility cost. This is often the case for rinsing or drying tanks. Such a tank is called a multi-function tank. The part visits a multi-function tank more than once.

  2. 2.

    Multi-tank stage (Che and Chu 2005; Liu et al. 2002). Production stages with long processing times can create severe bottlenecks in an electroplating line. To eliminate such bottlenecks and increase throughput, it is a common practice to add a group of duplicate tanks for these stages. A stage with multiple duplicate tanks is called a multi-tank stage.

Electroplating lines with multi-function tanks and multi-tank stages are called extended electroplating lines or extended systems (Liu et al. 2002). In real industrial environment, electroplating lines are usually operated cyclically for simplicity of implementation and ease of management. In such a cyclic production system, the hoist is programmed to perform a fixed sequence of moves repeatedly. Each repetition of the sequence of moves is called a cycle. The duration of a cycle is the cycle time. The cycle time measures the throughput of a production system. This paper addresses cyclic scheduling of a large real-life electroplating line with multi-function tanks and multi-tank stages. Particularly, we consider simple cyclic schedules with identical parts, where exactly one part enters and one part leaves the production line within a cycle. The criterion considered in this paper is cycle time minimization, which is consequently equivalent to maximizing throughput.

The simple cyclic single-hoist scheduling problem for the basic system was proved to be NP-complete by Lei and Wang (1989). This problem has been widely studied in the literature (Che et al. 2002; Chen et al. 1998; Lei and Wang 1994; Lim 1997; Phillips and Unger 1976; Shapiro and Nuttle 1998; Sun et al. 1994), while little work has been done for the extended system. Phillips and Unger (1976) presented the first integer programming model for the system with multi-function tanks. Other researchers (for example, Lei and Wang 1994; Ng 1996; Shapiro and Nuttle 1998) proposed branch-and-bound algorithms for the system with multi-tank stages. Recently, Liu et al. (2002) presented a mixed-integer programming model for the extended system and solved the MIP model using commercial optimization software CPLEX. Their algorithm can solve the problem with no more than 20 processing stages. Che and Chu (2005) developed a polynomial algorithm for a special system, where the parts’ processing times are given constants, i.e., zero-width time windows.

Most studies in the literature assume that the time required for the loaded hoist to transport a part from one tank to the next is a given constant, where a no-wait constraint is imposed requiring that as soon as the operation is completed in a tank, the part must be immediately removed from the tank and transported to the next one without any delay. Ng (1996) noted that flexible move times longer than constant ones can lead to a shorter cycle time. This is, in fact, equivalent to allowing the hoist to pause during the transportation of a part from one tank to the next. Appendix A gives an example to illustrate the fact that flexible move times longer than constant ones can lead to a shorter cycle time. In this paper, flexible move times are considered, i.e., the hoist is allowed to pause during the transportation of a part from one tank to the next.

The main contribution of the paper is as follows. First, we perform a formal analysis of the problem and propose an efficient branch-and-bound algorithm. The developed analytical properties allow us to considerably eliminate dominated or infeasible solutions and greatly speed up the algorithm. As will be shown in later section, even for two large real-life electroplating lines with 31 processing tanks, our approach can find the optimal solution in reasonable computation time, while the MIP approach proposed by Liu et al. (2002) can generally solve the problem with no more than 20 processing tanks. Second, we provide a more simplified formulation of the multi-function tank capacity constraint than that proposed by Liu et al., as will be described later. Third, this paper considers and solves several practical and benchmark problems in the literature. For one benchmark instance, we have found a better solution than that reported in the literature, and we report for the first time, to our knowledge, the optimal solution for two other large problems in the literature.

Related problems

This paper is devoted to the hoist scheduling problem. But the readers should note that a very similar problem of scheduling a material handling robot exists in cluster tools for semiconductor manufacturing (Kim et al. 2003; Lee et al. 2004; Lee and Lee 2006; Perkinson et al. 1996). A typical cluster tool consists of a number of wafer processing chambers and a wafer handling robot. As is the case in the hoist scheduling problem, the processing time of wafers in a chamber should be controlled within a given time window in most cases, especially for the low-pressure chemical vapor deposition process. Otherwise, the wafer will be subject to quality problems due to residual gases and heat (Kim et al. 2003). Modern cluster tools usually have two extended features. One is that parallel chambers to perform the same processing step are often used to balance the workloads among processing stages or steps (Kim et al. 2003; Lee et al. 2004; Perkinson et al. 1996). Another is that a wafer may visit a processing chamber more than once. Such a chamber is called a revisited or reentrant chamber (Kim et al. 2003; Lee and Lee 2006; Perkinson et al. 1996). We note that a revisited chamber and parallel chambers in cluster tool scheduling, respectively, correspond to a multi-function tank and duplicated tanks in the context of hoist scheduling problems.

Note that a similar scheduling problem also exists in more general manufacturing cells without work-in-process buffers. In such manufacturing cells, the parts are allowed to wait on the machine infinitely upon completion of their processing. This problem is often called robotic cells scheduling problem in the literature (Crama and van de Klundert 1997; Ioachim and Soumis 1995; Kamoun et al. 1999; Matsuo et al. 1991; Sethi et al. 1992; Sriskandarajah et al. 1998). Detailed description and classification of robotic cells scheduling problem can be found in (Crama et al. 2000; Dawande et al. 2005; Hall 1999). The computational complexity of these and related problems can be found in Hall et al. (1998). All the related problems deal with scheduling of a production system in which material handling among machines is executed by robots or hoists. For cyclic scheduling of more general flow shop or job shop without robots, please refer to (Hall et al. 2002; Lee and Posner 1997; Lee 2000; McCormick et al. 1989).

This paper is organized as follows. The “Problem description and formulation” section describes and presents an analytical model for the single-hoist scheduling problem considered in this paper. Properties of optimal solutions are analyzed in the “Property analysis of the optimal solution” section. Based on the presented model, an efficient branch-and-bound algorithm is proposed in the “Branch-and-bound algorithm” section. The “Computational results” section presents computational results on some well-known benchmark and real-life instances. The “Conclusion” section concludes the paper.

Problem description and formulation

Definitions, notations and assumptions

The production line considered is composed of N processing stages, S 1, S 2, ..., S N . Let stages S 0 and S N+1 be the loading station and the unloading station, respectively. A single type of part is to be processed in this production line. The part flow can be described as follows. After a part is removed from S 0, it is processed successively through stages S 1, S 2, ..., S N , and finally leaves the system from S N+1.

To define the problem, the following problem parameters are given.

N :

The number of processing stages in the production line, not including the loading stage (stage 0) and the unloading stage (stage N+1)

K :

The total number of tanks available in the line

G i :

The set of indices of tanks used to execute the process of stage i, i=0, 1, ..., N+1. By definition, ∣G i ∣ is the number of available processing tanks at stage i. If ∣G i ∣=1, stage i has a single tank; Otherwise, stage i has ∣G i ∣ tanks. We assume ∣G 0∣=1 and ∣G N+1∣=1, i.e., there are no duplicates for the loading and the unloading stations

a i :

The lower bound on the processing time of a part at stage i, i=0, 1, ..., N

b i :

The upper bound on the processing time of a part at stage i, i=0, 1, ..., N

move i :

The hoist move of transporting a part from S i to S i+1, i=0, 1, ..., N. Move i consists of three operations: unloading a part from S i , transporting the part from S i to S i+1, and loading the part into S i+1

θ i :

The constant time required for the hoist to perform move i, not including the pausing time, i=0, 1, ..., N

δ i,j :

The time for an empty hoist to travel from S i to S j , 0≤ i, jN+1. δ i,j satisfies the triangular inequality.

The decision variables of the considered problem include:

T :

The cycle time

s i :

The starting time of move i relative to the start of a cycle, i.e., the amount of time that elapses after the start of the cycle before move i is performed, i=0, 1, ..., N

w i :

The pausing time of the hoist during execution of move i, i=0, 1, ..., N. As a result, execution of move i takes θ i +w i , for any 0≤ iN

m i :

The actual number of duplicate tanks to be used at stage i, 1≤m i ≤ ∣G i ∣, i=1, 2, ..., N.

To facilitate the development of the mathematical model, we define the following auxiliary variables:

t i :

The processing time of a part at stage i, i=0, 1, ..., N

c i :

0–1 variable, c i =0 if s i >s i−1, i.e., unloading of a part from stage i happens after loading a part into the stage within a cycle; c i =1 if s i <s i−1, i.e., unloading of a part from stage i happens before loading another part into the stage within a cycle, i=0, 1, ..., N.

The physical meaning of the above variables is illustrated in Fig. 2. This figure gives a cyclic schedule for a system with three stages. The processing of parts at stages 1, 2, and 3 are performed in tanks 1, 2, and 3, respectively. Tank 0 represents the loading and unloading station. For this example, we have c 1=0, c 2=1, c 3=0, i.e., at the beginning of a cycle, tanks 1 and 3 are empty, while tank 2 contains a part introduced in the previous cycle.

Fig. 2
figure 2

A cyclic hoist schedule for an electroplating line with three tanks

As shown in Fig. 2, without loss of generality, we assume s 0=0, i.e., move 0 happens exactly at the start of a cycle, which also implies that a part is introduced into the system at the start of a cycle. Note that if s 0>0, we can change the origin of the time axis such that s 0=0. With this assumption, c 0 is always equal to 1. As shown in Fig. 2, for this example, tank 0 is the loading/unloading station. For such line, for which the loading and the unloading stations are the same, because the loading and the unloading operations are often performed manually in real industrial environment, there must be sufficient time between unloading and loading operations on the same loading/unloading station. To formulate this constraint, we assume a fictitious processing time at stage 0, denoted by t 0, which is bounded from below by a 0 and from above by b 0. By definition, a 0 is the minimum time interval between unloading and loading operations on the same loading/unloading station. In most cases, b 0 is set to +∞. The physical meaning of t 0 is illustrated in Fig. 2.

Before proceeding, let us introduce some basic ideas behind a multi-tank stage. For a multi-tank stage, each part is processed in only one of the duplicate tanks, and exactly one part is sent to and one part is removed from a multi-tank stage in a cycle. Hence, if there are m i tanks used for stage i, then each of these duplicate tanks will process one part in m i cycles.

Figure 3 shows an example of multi-tank stage i with m i =3 (s i >s i−1). In the first cycle, a part is moved into the upper tank, while the other two tanks are processing parts that were moved into them in previous cycles. Later in this cycle, the middle tank completes its processing and a new part is moved into the middle tank in the second cycle. At a later time in the second cycle, the lower tank completes processing, and another part is moved into that tank in the third cycle. Later in the third cycle, the upper tank completes processing. The state in the fourth cycle is the same as that in the first cycle. For this example, each duplicate tank processes one part in three cycles.

Fig. 3
figure 3

Multi-tank stage i with m i =3

When several duplicate tanks are used at stage i, the hoist move times δ i,j , θ i , θ i−1 vary from cycle to cycle, depending on which tanks are used in the cycle. As we consider a cyclic schedule, to keep the schedule of all cycles the same, δ i,j , θ i , θ i−1 must be chosen as the largest value they can assume for any duplicate tank for stage i, as is the case in all the previous research addressing multi-tank stages. Hence, δ i,i becomes non-zero for any multi-tank stage i. It is the time for the hoist to travel between the two most distant duplicate tanks for stage i. In practical electroplating lines, the duplicate tanks for a stage are usually placed very closely, even a group of duplicate tanks correspond to a physical tank with the production capacity larger than one. Considering this fact, this approximation is quite reasonable.

In this paper, we assume that a multi-function tank cannot be a duplicate tank at the same time. This assumption is quite reasonable, as such a tank can be divided into two separate tanks to avoid the multi-function problem. For any two stages i and j using a multi-function tank, i.e., G i =G j , without loss of generality, we assume that ij+2.

Mathematical model

In this section, we formulate our problem as a linear programming problem (LPP) provided that the sequence of hoist movements and the number of duplicate tanks used at each stage are given. In this case, the optimal values of the decision variables T, s i , w i , i=0, 1, ..., N, can be derived by solving this LPP. Then, in the “Branch-and-bound algorithm” section, a branch-and-bound procedure will be proposed to enumerate the sequence of hoist movements and the number of duplicate tanks used at each stage.

The hoist scheduling problem considered in this paper can be formulated as follows, as will be described in more detail later.

Problem P: Minimize T

subject to

Time window constraints on processing times

$$a_{i} \leqslant t_{i} \leqslant b_{i} ,{\text{ for all }}i = 1,2, \cdots ,N$$
(1)
$$t_{i} = {\left( {m_{i} - 1} \right)}T + s_{i} + c^{T}_{i} - S_{{i - 1}} \theta _{{i - 1}} - w_{{i - 1}} ,1 \leqslant {\left| {G_{i} } \right|},i = 1,2, \cdots ,N.$$
(2)
$$a_{0} \leqslant T - s_{N} - \theta _{N} - w_{N} \leqslant b_{0} \,{\text{if}}\,G_{{N + 1}} = G_{0} .$$
(3)

Hoist traveling time constraints

$$s_{i} + \,\theta _{i} + w_{i} + \delta _{{i + 1,j}} \leqslant s_{j} ,{\text{for all }}s_{i} \leqslant s_{j} ,i \ne j,i,j = {\text{ }}1,{\text{ 2,}} \cdots ,{\text{ }}N.$$
(4)
$$s_{i} \geqslant s_{0} + \theta _{0} + w_{0} + \delta _{{1,i}} ,{\text{ for all }}i = 1,{\text{ 2, }} \cdots ,N$$
(5)
$$s_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,0}} \leqslant T,{\text{ for all }}i = 0,{\text{ }}1,{\text{ }} \cdots ,{\text{ }}N$$
(6)

Multi-function tank constraints

$$s_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,j - 1}} + \theta _{{j - 1}} + w_{{j - 1}} + t_{j} \leqslant s_{j} ,{\text{ for all }}G_{i} = G_{j} {\text{, }}s_{i} \leqslant s_{j} ,i \ne j,{\text{ }}i,j = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}N$$
(7)
$$s_{j} + \theta _{j} + w_{j} + \delta _{{j + 1,i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} + t_{i} \leqslant T + s_{i} ,{\text{ for all }}G_{i} = G_{j} {\text{, }}s_{i} \leqslant s_{j} ,i \ne j,{\text{ }}i,j = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}N$$
(8)

Non-negativity constraints

$$T \geqslant 0,s_{i} \geqslant 0,w_{i} \geqslant 0,{\text{for}}\,{\text{all}}\,i = 0,1, \cdots ,N.$$
(9)

The objective of problem P is to minimize the cycle time. Constraint (1) means that the processing times of parts at stages must fall into the prescribed time windows. Constraint (2) gives the processing times of parts. When deriving the processing time of parts at stage i, depending on the values of c i , two cases should be considered.

Case 1

c i =0, i.e., s i s i-1 . In this case, unloading of a part from stage i happens after loading a part into the stage within a cycle. As mentioned above, if there are m i tanks used for stage i, then each of the duplicate tanks will process one part in m i cycles. Hence, in this case, a part entering stage i in any cycle l will leave from stage i in cycle (l+m i −1). In Fig. 3, for the multi-tank stage with m i =3, the part starting its processing on the upper tank in the first cycle finishes the processing and leaves from stage i in the third cycle. Note that a part enters stage i at time s i−1 i -1+w i−1, which is the ending time of move i−1, relative to the start of any cycle, and the part leaves from stage i at time s i , as shown in Fig. 3. So, we have

$$t_{i} = {\left( {m_{i} - 1} \right)}T + s_{i} - s_{{i - 1}} - \theta _{{i - 1}} - w_{{i - 1}} ,1 \leqslant i \leqslant N.$$
(10)

Case 2

c i =1, i.e., s i <s i−1. In this case, unloading of a part from stage i happens before loading another part into the stage within a cycle. Similarly, as each duplicate tank processes one part in m i cycles, a part entering stage i in any cycle l will leave from stage i in cycle (l+m i ). Hence, we have

$$t_{i} = m_{i} T + s_{i} - s_{{i - 1}} - \theta _{{i - 1}} - w_{{i - 1}} ,1 \leqslant i \leqslant N$$
(11)

In view of Eqs. (10) and (11), in either case, we have (2).

Constraint (3) ensures the time window constraint for stage 0, if the loading and the unloading stations are the same. As mentioned above, as the loading and the unloading operations are often performed manually in real industrial environment, there must be sufficient time between unloading and loading operations on the same unloading/loading station. Note that the transportation of a part from stage N to stage N+1 (i.e., move N) finishes at time s N +θ N +w N , and the loading of another part from stage 0 (i.e., move 0) after move N takes place at time T, as can be observed from Fig. 2. Therefore, we have t 0=Ts N θ N w N . As a consequence, we have Eq. (3).

Constraint (4) ensures that the empty hoist has sufficient time to travel between successive moves. For any pair of moves (i, j), if move j is performed after move i, i.e., s i s j , then the empty hoist should arrive at S j no later than s j upon completion of move i. Note that move i finishes at time s i +θ i +w i , and the time for the empty hoist to travel from S i+1 to S j is δ i+1,j . We thus have Eq. (4). Constraint (5) ensures the hoist traveling time constraints between move 0 and other moves, as we assume s 0=0. Constraint (6) says that the hoist has sufficient time to return to S 0 for the beginning of the next cycle upon completion of moves.

Relations (7) and (8) are concerned with the multi-function tank constraints. Due to the fact that each tank can process at most one part at a time, there must be sufficient time interval between the processing of any two stages i and j using the same multi-function tank. Due to the uniqueness of the hoist for material handling, if move j is performed after move i, as shown in Fig. 4, then move j can start only after the following operations are completed: (1) the hoist performs move i; (2) the hoist travels to S j−1 and transports a part from S j−1 to S j (performs move j−1); and (3) processing of the part at S j . Thus we have Eq. (7). Similarly, relations (8) are concerned with the multi-function tank constraints between move j and move i of the next cycle, as shown in Fig. 4. Note that this formulation of the multi-function tank capacity constraint is more general and simplified than that proposed by Liu et al., as their formulation has to consider four possible conflicting cases for any two stages using the multi-function tank.

Fig. 4
figure 4

Multi-function tank constraints

Property analysis of the optimal solution

In this section, we perform a property analysis for the optimal solution of the problem. We develop lower bounds on the optimal cycle time, lower and upper bounds on the optimal number of duplicate tanks to be used at a multi-tank stage, and upper bound on the number of parts processed simultaneously in a production line. The developed lower bounds and upper bounds will be used to eliminate dominated or infeasible solutions in the branch-and-bound procedure proposed in the next section.

Lower bounds on the optimal cycle time

As the hoist has to perform all the moves during a cycle, a lower bound of the cycle time is given by

$${\text{LB}}_{1} = {\sum\limits_{i = 0}^N {{\left( {\theta _{i} + \beta _{i} } \right)}} },$$
(12)

where β i is the shortest time for the hoist to be ready for the next move upon completion of move i. When computing β i , depending on the next move executed immediately after move i, two cases are possible.

Case 1

if the hoist performs move i+1 immediately after move i, then the hoist has to wait at stage i+1 for completion of processing of the part. In this case, we have β i =t i+1a i+1.

Case 2

if the hoist performs move j such that ji+1 immediately after move i, then γ i \({\mathop {\min }\limits_{{\mathop {j \ne i + 1}\limits_{0 \leqslant j \leqslant N} }} }\delta _{{i + 1,j}}\), which is the shortest time required for the empty robot to travel to perform any move after move i.

In short, we have β i =min \({\mathop {\min }\limits_{{\mathop {j \ne i + 1}\limits_{0 \leqslant j \leqslant N} }} }\delta _{{i + 1,j}}\), a i+1}. We note that a similar lower bound was given in (Lee et al. 2004; Perkinson et al. 1996) for scheduling of cluster tools, where the move/traveling times of the robot are assumed to be a constant and the second argument in the above formula of computing β i was not considered, as in cluster tools scheduling, the processing times of wafers are usually longer than the move/traveling times of the robot. Hence, the lower bound presented in this paper is more general in this sense.

As mentioned above, if there are m i tanks used for stage i, then each of the duplicate tanks will process one part in m i cycles. As each tank can process at most one part at a time, T must be large enough to guarantee that the processing of two successive parts in the same tank will not overlap in time. We now derive a lower bound on m i T. If c i = 0, i.e., s i >s i−1, it follows from (10) that

$$m_{i} T = t_{i} + {\left( {T - s_{i} } \right)} + s_{{i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} \forall 1 \leqslant i \leqslant N.$$

According to Eqs. (5) and (6), this leads to

$$m_{i} T \geqslant t_{i} + {\left( {\theta _{i} + w_{i} + \delta _{{i + 1,0}} } \right)} + {\left( {s_{0} + \theta _{0} + w_{0} + \delta _{{1,i - 1}} } \right)} + \theta _{{i - 1}} + w_{{i - 1}} \geqslant t_{i} + \theta _{i} + w_{i} + {\left( {\delta _{{i + 1,0}} + \delta _{{0,1}} + \delta _{{1,i - 1}} } \right)} + \theta _{{i - 1}} + w_{{i - 1}} .$$

As δ i,j satisfies the triangular inequality, it is obvious that the above inequality can lead to:

$$m_{i} T \geqslant t_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} \begin{array}{*{20}c} {{{\text{, }}}} \\\end{array} {\text{for all }}i = 1,{\text{ }}2,{\text{ }} \cdots ,{\text{ }}N.$$
(13)

Similarly, If c i =1, i.e., s i < s i-1, Eq. (11) can also lead to Eq. (13). In either case, Eq. (13) must hold. Due to w i ≥0 for any 0 ≤ iN, it follows from Eq. (13) that

$$m_{i} T \geqslant t_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} {\text{, for all }}i = 1,{\text{ }}2,{\text{ }} \cdots ,{\text{ }}N.$$
(14)

From Eqs. (1) and (14), another lower bound of the cycle time can be obtained by

$${\text{LB}}_{2} = {\mathop {\max }\limits_{1 \leqslant i \leqslant N} }\frac{{a_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} }} {{{\left| {G_{i} } \right|}}}$$
(15)

We note that a similar lower bound was given in Lee et al. (2004) and Perkinson et al. (1996) for scheduling of cluster tools, where the move/traveling times of the robot are assumed to be a constant. The lower bound presented here is more general in this sense.

If stages τ 1, τ 2..., τ l using the same multi-function tank, due to the multi-function tank capacity and the uniqueness of the hoist for material handling, another lower bound of the cycle time is

$${\text{LB}}_{3} = {\sum\limits_{i = 1}^l {{\left( {\theta _{{\tau _{i} - 1}} + a_{{\tau _{i} + 1}} + \theta _{{\tau _{i} + 1}} {\mathop {\min \delta _{{\tau _{i} + 1,\tau _{j} }} }\limits_{{\mathop {1 \leqslant j \leqslant l}\limits_{j \ne i} }} }} \right)}} }.$$
(16)

This relation comes from the fact that the processing of stages τ 1, τ 2..., τ l in the multi-function tank cannot be overlapped in time and when the hoist performs moves τ 1−1, τ 2−1, ..., τ l −1 and moves τ 1, τ 2..., τ l , the multi-function tank must be empty due to the uniqueness of the hoist. Perkinson et al. (1996) gave a rough bound on the cycle time for cluster tools with reentrant flow. Once again, the lower bound presented here is more general.

Lower and upper bounds on the optimal number of duplicate tanks

We first derive a lower bound on the optimal number of duplicate tanks. It follows from Eqs. (1) and (14) that

$$m_{i} \geqslant \frac{{a_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} }}{T} \geqslant \frac{{a_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} }}{{\overline{T} }},{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N,$$

where \(\overline{T} \) is the upper bound of T. Thus, a lower bound of m i is

$$\underline{m} _{i} = {\left[ {\frac{{a_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} }}{{\overline{T} }}} \right]},{\text{for}}\,{\text{all}}\;i = 1,2, \cdots ,N,$$

where the notation ⌈x⌉ denotes the smallest integer greater than or equal to x.

We now derive an upper bound on the optimal number of duplicate tanks. As mentioned above, if there are m i tanks used for stage i, then each tank at the stage will process one part in m i cycles. Hence, for a given value of T, an upper bound of m i must exist. To be more specific, If c i =0, i.e., s i >s i−1, it follows from Eq. (10) that

$${\left( {m_{i} - 1} \right)}T = t_{i} - s_{i} + s_{{i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} ,\forall 1 \leqslant i \leqslant N.$$
(17)

As s i >s i-1, it follows from Eq. (4) that

$$s_{i} \geqslant s_{{i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} + \delta _{{i,i}} $$
(18)

From Eqs. (17) and (18), we must have

$${\left( {m_{i} - 1} \right)}T \leqslant t_{i} - \delta _{{i,i}} ,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N.$$
(19)

Similarly, if c i =1, i.e., s i <s i−1, Eq. (11) can lead to Eq. (19). In either case, Eq. (19) must hold. From Eqs. (1) and (19), we have

$$m_{i} \leqslant \frac{{{\left( {b_{i} - \delta _{{i,i}} } \right)}}} {T} + 1 \leqslant \frac{{{\left( {b_{i} - \delta _{{i,i}} } \right)}}} {{\underline{T} }} + 1$$

, where \(\underline{T}\) is the lower bound of T. Therefore, an upper bound of m i is

$$\overline{m} _{i} = {\left\lfloor {\frac{{{\left( {b_{i} - \delta _{{i,i}} } \right)}}}{{\underline{T} }}} \right\rfloor } + 1,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N,$$

where the notation ⌊x⌋ denotes the integer part of x.

When deriving the lower and the upper bounds on the optimal number of duplicate tanks, we let \(\underline{T}\)=max (LB1, LB2, LB3). It is obvious that a feasible cycle can always be obtained by processing only one part in a cycle. Hence, an obvious upper bound of the cycle time is \({\sum\limits_{i = 1}^N {{\left( {a_{i} + \theta _{{i{\text{ - 1,}}i}} } \right)}} }\). Initially, we let \(\overline{T} = {\sum\limits_{i = 1}^N {{\left( {a_{i} + \theta _{{i{\text{ - 1,}}i}} } \right)}} }\) and update \(\overline{T} \) once we find a better feasible solution for the problem.

Upper bound on the number of parts processed simultaneously in the production line

Typically, more than one part is processed in a production line at any given time of a cycle. The number of parts that can be processed simultaneously in a production line depends on the input data for the production line. Let k be the number of parts processed simultaneously in the production line at the beginning of a cycle. If c i =0, then loading a part into stage i happens before unloading of a part from the stage within the same cycle. This implies that one tank of stage i must be empty at the beginning of a cycle, as shown in Fig. 3. As a result, in this case (i.e., c i =0), stage i contains (m i −1) parts at the beginning of a cycle. Similarly, if c i =1, then unloading a part from stage i happens before loading of another part into the stage within the same cycle. This implies that all duplicated tanks for stage i are occupied at the beginning of a cycle. Hence, in this case (i.e., c i =1), stage i contains m i parts at the beginning of a cycle time. In either case, stage i contains (c i +m i −1) parts at the beginning of a cycle. Thus, \(k = {\sum\limits_{i = 0}^N {{\left( {c_{i} + m_{i} - 1} \right)}} } = {\sum\limits_{i = 1}^N {{\left( {c_{i} + m_{i} - 1} \right)} + 1} }\).

In the following, we will first derive the relations that any feasible k must satisfy, based on the mathematical model developed in the “Problem description and formulation” section. We then derive an upper bound on k from these relations and perform a complexity analysis. The developed upper bound on k will be used to eliminate infeasible solutions in the branch-and-bound algorithm in the next section.

Theorem 1

The number of parts processed simultaneously in a production line at the beginning of a cycle satisfies the following inequalities:

$$T \geqslant \max {\left( {{\text{LB}}_{1} ,{\text{LB}}_{2} ,{\text{LB}}_{3} } \right)}.$$
(20)
$$kT \geqslant {\sum\limits_{i = 0}^N {\theta _{i} } } + {\sum\limits_{i = 1}^N {t_{i} + \delta _{{N + 1,0}} } }$$
(21)
$$kT \geqslant {\sum\limits_{i = 0}^N {\theta _{i} } } + {\sum\limits_{i = 1}^N {t_{i} + a_{0} ,{\text{ if }}G_{{N + 1}} = G_{0} } }.$$
(22)
$${\text{(}}k - 2{\text{)}}T \leqslant {\sum\limits_{i = 1}^{N - 1} {\theta _{i} } } + {\sum\limits_{i = 1}^N {t_{i} - \delta _{{1,N}} - LB_{1} } }$$
(23)
$${\left( {k - 1} \right)}T \leqslant {\sum\limits_{i = 0}^N {\theta _{i} } } + {\sum\limits_{i = 1}^N {t_{i} + b_{0} - LB_{1} } },{\text{ if }}G_{{N + 1}} = G_{0} .$$
(24)
$$a_{i} \leqslant t_{i} \leqslant b_{i} ,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N.$$
(25)
$$\overline{m} _{i} T \geqslant t_{i} + \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} ,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots N.\,$$
(26)

ProofFrom Eq. (2), we have

$${\left( {c_{i} + m_{i} - 1} \right)}T = t_{i} - s_{i} + s_{{i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} ,{\text{for all }}i = 1,{\text{ }}2,{\text{ }} \cdots ,{\text{ }}N$$
(27)

By summing both sides of Eq. (27) from i=1 to N, we obtain

$${\left( {k - 1} \right)}T = {\sum\limits_{i = 1}^N {t_{i} } } + {\sum\limits_{i = 0}^{N - 1} {{\left( {\theta _{i} + w_{i} } \right)}} } - s_{N} .$$
(28)

Due to the fact that s N +θ N +w N +δ N+1,0T, it follows from Eq. (28) that

$$kT \geqslant {\sum\limits_{i = 0}^N {{\text{(}}\theta _{i} + w_{i} {\text{)}}} } + {\sum\limits_{i = 1}^N {t_{i} + \delta _{{N + 1,0}} } }$$
(29)

As \({\sum\limits_{i = 0}^N {w_{i} } } \geqslant 0\), Eq. (21) must hold according to Eq. (29).

According to Eq. (3), we must have

$$s_{N} + \theta _{N} + w_{N} + a_{0} \leqslant T,{\text{ if }}G_{{N + 1}} = G_{0} .$$
(30)

From Eqs. (28) and (30), we have Eq. (22).

Due to s N θ 0+w 0+δ 1,N , it follows from Eq. (28) that

$${\left( {k - 1} \right)}T \leqslant {\sum\limits_{i = 1}^{N - 1} {{\left( {\theta _{i} + w_{i} } \right)}} } + {\sum\limits_{i = 1}^N {t_{i} - \delta _{{1,N}} .} }$$
(31)

As LB1 is the minimum move/traveling time of the hoist in a cycle, the following inequality must hold

$${\sum\limits_{i = 0}^N {w_{i} } } \leqslant T - LB_{1} $$
(32)

Relations (31) and (32) lead to (23).

From Eq. (3), we have

$$s_{N} \geqslant T - \theta _{N} - w_{N} - b_{0} $$
(33)

Relations (28), (32), and (33) lead to Eq. (24). Relation (25) concerns the time window constraints. Relation (26) is derived from Eq. (14). We, thus, have Theorem 1.

Let k max be the upper bound on the number of parts processed simultaneously in a production line at the beginning of a cycle. By Theorem 1, Eqs. (20, 21, 22, 23, 24, 25, 26) are constraints that any k must satisfy. In Eqs. (20, 21, 22, 23, 24, 25, 26), (T, t 1, t 2, ..., t N ) are decision variables of the problem and, thus, are unknown. For a given value of k, say k 0, if there exists at least one solution (T, t 1, t 2, ..., t N ) such that Eqs. (20, 21, 22, 23, 24, 25, 26) satisfy, then k 0 is said to be feasible. Otherwise, k 0 is said to be infeasible. As k ∈{1, 2, ..., K}, k max can be obtained by solving Eqs. (20, 21, 22, 23, 24, 25, 26) successively for k = K, K−1, ..., until the first feasible k is obtained. This value of k is k max. To determine k max, this needs to solve K linear inequality problems (20, 21, 22, 23, 24, 25, 26) in the worst case. For simplicity, the process of solving Eqs. (20, 21, 22, 23, 24, 25, 26) for a given value of k is called the feasibility detecting for this value of k. As described below, the feasibility detecting for a given value of k can be transformed into the cycle time evaluation problem in a bi-valued graph and, thus, can be implemented using a graph-based polynomial algorithm.

In what follows, we first give a definition for the cycle time evaluation problem in a bi-valued graph. A bi-valued graph can be defined by a two-tuple (V, E), where V and E are the set of vertices and the set of edges, respectively. Each edge eE is associated with not only a length l(e) but also a weight w(e). Let h(e) and t(e) be the head and the tail of edge eE, respectively [i.e., edge e goes from vertex t(e) to vertex h(e)]. Let π v denote the potential of vertex vV. With this notation, in a bi-valued graph, edge e represents a constraint π h(e)π t(e)l(e)−w(e)T.

The cycle time of a bi-valued graph is defined as the optimal objective value T * of the following problem, if it has a solution.

Problem CTE: Minimize T

subject toL(γ)–T×H(γ)≤0, ∀γΓ, Γ being the set of directed circuits in a bi-valued graph,

$$T \geqslant 0.$$

where L(γ) and H(γ), respectively, denote the length and the height of circuit γ. The length (resp. height) of a circuit is the sum of the lengths (resp. heights) of the arcs in the circuit. Note that if all circuits have positive heights, then \(T^{*} = \max _{{\gamma \in \Gamma }} {\text{\{ }}L{\left( \gamma \right)}{\text{/}}H{\left( \gamma \right)}{\text{\} }}\). However, for a bi-valued graph with negative heights, problem CTE may have no solutions, as there may exist circuits with negative heights.

Theorem 2

The upper bound k max can be derived in O(K 2 N 3 ) time in the worst case.

ProofFirst, we show that Eqs. (20, 21, 22, 23, 24, 25, 26) can be represented by a bi-valued graph. For this purpose, by defining auxiliary variable \(D_{i} \equiv {\sum\limits_{j = 1}^i {t_{j} } }\), 0 ≤ iN, where D 0=0, Eqs. (20, 21, 22, 23, 24, 25, 26) can be equivalently expressed as

$$T \geqslant \max {\left( {{\text{LB}}_{1} ,{\text{LB}}_{2} ,{\text{LB}}_{3} } \right)}.$$
(34)
$$D_{0} - D_{N} \geqslant {\sum\limits_{i = 0}^N {\theta _{i} } } + \delta _{{N + 1,0}} - kT.$$
(35)
$$D_{0} - D_{N} \geqslant {\sum\limits_{i = 0}^N {\theta _{i} } } + a_{0} - kT,{\text{ if }}G_{{N + 1}} = G_{0} .$$
(36)
$$D_{N} - D_{0} \geqslant - {\sum\limits_{i = 1}^{N - 1} {\theta _{i} + \delta _{{1,N}} } } + {\text{LB}}_{1} + {\left( {k - 2} \right)}T.$$
(37)
$$D_{N} - D_{0} \geqslant - {\sum\limits_{i = 0}^N {\theta _{i} } } - b_{0} + {\text{LB}}_{1} + {\left( {k - 1} \right)}T,{\text{ if }}G_{{N + 1}} = G_{0} .$$
(38)
$$D_{i} - D_{{i - 1}} \geqslant a_{i} \,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N.,$$
(39)
$$D_{{i - 1}} - D_{i} \geqslant - b_{i} ,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N.$$
(40)
$$D_{{i - 1}} - D_{i} \geqslant \theta _{i} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} - \overline{m} _{i} T,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,N.$$
(41)

Each linear inequality among Eqs. (34, 35, 36, 37, 38, 39, 40, 41) can be expressed in the form of D j D i l i,j h i,j T, where h i,j is an integer and l i,j is a real number. Due to this structure, we can construct a bi-valued graph for Eqs. (34, 35, 36, 37, 38, 39, 40, 41). The bi-valued graph corresponding to Eqs. (34, 35, 36, 37, 38, 39, 40, 41) contains N+1 vertices 0, 1, ..., N, the potentials of which are D 0, D 1, ..., D N , respectively. Each linear inequality among Eqs. (34, 35, 36, 37, 38, 39, 40, 41), in the form of D j D i l i,j h i,j T, corresponds to an edge from vertex i to vertex j with length l i,j and weight h i,j . Thus, Eqs. (34, 35, 36, 37, 38, 39, 40, 41) are equivalently represented as

$$D_{j} - D_{i} \geqslant l_{{i,j}} - h_{{i,j}} T,\forall {\left( {i,j} \right)}E.$$
(42)

With the constructed directed graph, for a given value of k, any solution (T, t 1, t 2, ..., t N ) satisfies Eqs. (20, 21, 22, 23, 24, 25, 26) or equivalently Eqs. (34, 35, 36, 37, 38, 39, 40, 41), if and only if all the arcs on the graph satisfy Eq. (42). Let γ be a directed circuit on the graph, then by Eq. (42),

$${\sum\limits_{\forall (i,j) \in \gamma } {{\left( {D_{j} - D_{i} } \right)} \geqslant {\sum\limits_{\forall (i,j) \in \gamma } {l_{{i,j}} - h_{{i,j}} T} }} }.$$

As \({\sum\limits_{\forall (i,j) \in \gamma } {{\left( {D_{j} - D_{i} } \right)}} }\)=0, we have\({\sum\limits_{\forall (i,j) \in \gamma } {l_{{i,j}} - h_{{i,j}} T} } \leqslant 0\), for any γ.

Thus, for a given value of k, if there are no positive circuits in the associated directed graph for some T, then there must exist a feasible solution (T, t 1, t 2, ..., t N ) for Eqs. (20, 21, 22, 23, 24, 25, 26) or equivalently Eqs. (34, 35, 36, 37, 38, 39, 40, 41) and consequently this value of k is feasible, and vice versa. In fact, as soon as T is determined, the corresponding values of D 1, D 2, ..., D N (or equivalently t 1, t 2, ..., t N ) can be determined by solving the longest path problem in the associated bi-valued graph (Chen et al. 1998). From this analysis, the feasibility of a given value of k is dependent on the value of T and independent of t 1, t 2, ..., t N (or equivalently D 1, D 2, ..., D N ). The feasibility detecting for a given value of k using Eqs. (34, 35, 36, 37, 38, 39, 40, 41) can be, thus, described as: whether there exists a T, such that the corresponding graph contains no positive circuits. The latter problem is equivalent to the cycle time evaluation problem defined above. If problem CTE has a solution, then we must have found a feasible solution (T, t 1, t 2, ..., t N ) for a given value of k, and this value of k is feasible. Otherwise, if problem CTE has no solutions, any solution (T, t 1, t 2, ..., t N ) cannot lead to a graph without positive circuits, and, consequently, there exists no solutions for Eqs. (34, 35, 36, 37, 38, 39, 40, 41) for the given value of k. Such a value of k is infeasible.

From this analysis, the feasibility detecting for a given value of k using Eqs. (20, 21, 22, 23, 24, 25, 26) or equivalently Eqs. (34, 35, 36, 37, 38, 39, 40, 41) can be transformed to the cycle time evaluation problem in a bi-valued graph, which can be solved in O(|V|2|E|w max) time in the worst case (Kats and Levner 1998), where w max is the maximum absolute value of weights. For our problem, |V|=N+1, O(|E|)=N, w max=K−1. This means that Eqs. (20, 21, 22, 23, 24, 25, 26) can be solved in O(KN 3) time in the worst case. To obtain k max, we need to solve at most K linear inequality problems (20, 21, 22, 23, 24, 25, 26). Consequently, k max can be obtained in O(K 2 N 3) time in the worst case.

Branch-and-bound algorithm

In the “Mathematical model” subsection, we formulate our problem as a LPP, provided that the sequence of hoist movements and the number of duplicate tanks used at each stage are given. In this section, we propose a branch-and-bound procedure to enumerate the sequence of hoist movements and the number of duplicate tanks used at each stage. The feasibility of each enumeration and the optimal values of the decision variables T, s i , w i , i=0, 1, ..., N, can be derived by solving the corresponding relaxed LPP.

Each node in the search tree is associated with a set of partial precedence relations between hoist moves, denoted by O. For any pair of moves (i, j), if s i < s j , we say (i, j) ∈ O. Note that by the definition of c i , 1 ≤ iN, enumerating the values of c i is equivalent to enumerating the sequence between moves i−1 and i.

As will be described in the following, the branching from a node at levels 0, 1, ..., N−1 is different from that from a node at levels N, N+1, .... The branching from a node at level n−1, for any 1 ≤ nN, consists of enumerating the values of c n and the values of m n for processing stage S n , as shown in Fig. 5. In Fig. 5, a node at level n, 1 ≤ nN, with label (0, i) means that c n =0 and m n =i for stage S n . Conversely, a node at level n, 1 ≤ nN, with label (1, i) means that c n =1 and m n =i for stage S n .

Fig. 5
figure 5

Enumeration tree for the branch-and-bound algorithm

With this branching scheme, a node at level n, for any 1 ≤ nN, is associated with a path from the root node to that node {(c 0, m 0), (c 1, m 1), ...(c n , m n )} whose values are determined. Thus, a lower bound of the cycle time can be obtained by solving the following relaxed linear programming problem:

P n : Minimize T

subject to

$$\begin{array}{*{20}c} {{a_{i} \leqslant s_{i} - s_{{i - 1}} - \theta _{{i - 1}} - w_{{i - 1}} + {\text{(}}c_{i} + m_{i} - 1{\text{)}}T \leqslant b_{i} ,{\text{ for all }}i = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}n.}} \\ {{{\text{s}}_{{\text{i}}} + \theta _{i} + \delta _{{i + 1,1 - 1}} , \leqslant s_{{i - 1}} ,{\text{for}}\,{\text{all}}\,c_{i} = 1,i = 1,2, \cdots ,n.}} \\ {{s_{i} \geqslant s_{0} + \theta _{0} + w_{0} + \delta _{{1,i}} ,{\text{for}}\,{\text{all}}\,i = 1,2, \cdots ,n.}} \\ {{s_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,0}} \leqslant T,{\text{for}}\,{\text{all}}\,i = 0,1, \cdots ,n.}} \\ {{T \geqslant 0,s_{i} \geqslant 0,w_{i} \geqslant 0,{\text{for}}\,{\text{all}}\,i = 0,1, \cdots ,n.}} \\\end{array} {\text{ }}$$

If there is no solution to this problem, or if there is a solution but the lower bound is greater than a known upper bound, then the corresponding node can be eliminated. Otherwise, the optimal value of the problem gives a lower bound of the cycle time.

As mentioned above, the branching from a node at level n−1, for any 1 ≤ nN, consists of enumerating the values of c n and the values of m n for S n . As c n can take either 0 or 1 and m n ∈{1, 2, ..., ∣G n ∣}, a node at level n−1, 1 ≤ nN, has at most 2∣G n ∣ sub-nodes. However, the lower bounds and upper bounds developed in the “Property analysis of the optimal solution” section can be used to eliminate some infeasible nodes. Let k n =\({\sum\limits_{i = 0}^n {{\left( {c_{i} + m_{i} - 1} \right)}} }\). If a node is associated with a path {(c 0 , m 0), (c 1 , m 1), ...(c n , m n )}, such that k n is greater than k max, then the node is eliminated. Similarly, if (c n , m n ) related to a node at level n, 1 ≤ nN, is such that m n < \(\underline{m} _{n}\)or m n >\(\overline{m} _{n} \), then the corresponding node can also be eliminated. As a multi-function tank can process one part at a time, for all stages using the tank, say stages τ 1, τ 2..., τ l , we must have c τ1+c τ2+...+c τ l =1. As a result, if \(c_{{\tau _{k} }}\)=1 for some 1≤ kl, we must have c j =0 for all j=τ 1, τ 2..., τ l except τ k .

The branching from a node at levels N, N+1, N+2, ..., is a binary search, which continues to enumerate the sequences of hoist moves. As mentioned above, each node in the tree is associated with a set of partial precedence relations between hoist moves, denoted by O. The lower bound of the cycle time corresponding to node O at levels N, N+1, N+2, ..., can be obtained by solving the following linear programming problem:

P o : Minimize T

subject to

$$\begin{array}{*{20}c} {{a_{i} \leqslant s_{i} - s_{{i - 1}} - \theta _{{i - 1}} - w_{{i - 1}} + {\left( {c_{i} + m_{i} - 1} \right)}T \leqslant b_{i} ,{\text{ for all }}i = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}N.}} \\ {{s_{i} \geqslant s_{0} + \theta _{0} + w_{0} + \delta _{{1,i}} ,{\text{ for all }}i = 1,{\text{ 2, }} \cdots ,N.}} \\ {{s_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,0}} \leqslant T,{\text{ for all }}i = 1,{\text{ 2}},{\text{ }} \cdots ,N.}} \\ {{s_{i} + \theta _{i} + w_{i} + \delta _{{i + 1,j}} \leqslant s_{j} ,{\text{ for all (}}i,j{\text{)}} \in O.}} \\ {{s_{j} + \theta _{j} + w_{j} + \delta _{{i + 1,i - 1}} + \theta _{{i - 1}} + w_{{j - 1}} + t_{j} \leqslant + s_{i} ,{\text{ for all (}}i,j{\text{)}} \in O,{\text{ }}G_{i} = G_{j} .}} \\ {{s_{j} + \theta _{j} + w_{j} + \delta _{{j + 1,i - 1}} + \theta _{{i - 1}} + w_{{i - 1}} + t_{i} \leqslant T + s_{i} ,{\text{ for all (}}i,j{\text{)}} \in O,{\text{ }}G_{i} = G_{j} .}} \\ {{T \geqslant 0,s_{i} \geqslant 0,w_{i} \geqslant 0,{\text{for}}\,{\text{all}}\;i = 0,1, \cdots ,N.}} \\\end{array}$$

The branching from a node at levels N, N+1, N+2, ..., is dependent on the solution of problem P o , say [T(O), s(O), w(O)]. If [T(O), s(O), w(O)] satisfies constraints (4), (7), and (8), then a feasible schedule is obtained and no further branching from this node is needed, as any further branching from this node cannot lead to a better solution. Otherwise, there must be a pair of (i *, j *), such that one of the following conditions holds:

$$s_{{i^{*} }} {\left( O \right)} + \theta _{{i^{*} }} + w_{{i^{*} }} {\left( O \right)} + \delta _{{i^{*} + 1,j^{*} }} > s_{{j^{ * } }} {\left( O \right)},s_{{i^{*} }} {\left( O \right)} \leqslant s_{{j^{*} }} {\left( O \right)}s_{{i^{*} }} {\text{(}}O{\text{)}} \leqslant s_{{j^{*} }} {\left( O \right)}$$

 

$$s_{{i^{*} }} {\left( O \right)} + \theta _{{i^{*} }} + w_{{i^{*} }} {\left( O \right)} + \delta _{{i^{*} + 1,j^{*} - 1}} + \theta _{{j^{*} - 1}} + w_{{j^{*} - 1}} {\left( O \right)} + t_{{j^{*} }} > s_{{j^{*} }} {\left( {\text{O}} \right)}{\text{,}}s_{{i^{*} }} {\left( O \right)} \leqslant s_{{j^{*} }} {\left( O \right)},{\text{if}}\,G_{{i^{*} }} = G_{{j^{*} }}$$
$$s_{{j^{*} }} {\left( O \right)} + \theta _{{j^{*} }} + w_{{j^{*} }} {\left( O \right)} + \delta _{{j^{*} + 1,i^{*} - 1}} + \theta _{{i^{*} - 1}} + w_{{i^{*} - 1}} {\left( O \right)} + t_{{i^{*} }} > T + s_{{i^{*} }} {\left( O \right)}{\text{,}}s_{{i^{*} }} {\left( O \right)} \leqslant s_{{j^{*} }} {\left( O \right)},\,{\text{if }}G_{{i^{*} }} = G_{{j^{*} }}$$

Such a pair of moves (i *, j *) is called a pair of overlapping ones. The branching from the node consists of enumerating two precedence relations between this pair of overlapping moves (i *, j *). Two subnodes and their associated partial precedence relation sets are generated by adding to O either a precedence constraint (i *, j *) or (j *, i *), as shown in Fig. 5, wherein a label, such as (i 1, j 1) for a node at levels N, N+ 1, N+2, ..., means that move i 1 happens before move j 1.

In the branch-and-bound algorithm, we use the depth first plus the best lower bound rule to select the node that should be considered next.

The computation of lower bounds in the branch-and-bound procedure requires the solution of specific linear programming problems (LPPs), i.e., P n and P o . We show that problems P n and P o can be also transformed into the cycle time evaluation problem in a bi-valued graph due to their specific structure. We take problem P o as an example. By defining Y i+1s i +w i , for all 0≤iN, problem P o can be rewritten as

Problem \(P\prime _{O} \): Minimize T

subject to

$$\begin{array}{*{20}c} {{s_{i} - Y_{i} \geqslant a_{i} - {\left( {c_{i} + m_{i} - 1} \right)}T,{\text{ for all }}i = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}N.}} \\ {{{\text{Y}}_{{\text{i}}} - s_{i} \geqslant - b_{i} + {\left( {c_{i} + m_{i} - 1} \right)}T,for\,all\,i = 1,2, \cdots ,N.}} \\ {{s_{0} - Y_{{i + 1}} \geqslant \delta _{{i + 1,0}} + T,{\text{ for all }}i = 1,{\text{ 2}},{\text{ }} \cdots ,{\text{ }}N.}} \\ {{s_{j} - Y_{{i + 1}} \geqslant \delta _{{i + 1,j}} ,{\text{ for all (}}i,j{\text{)}} \in O.}} \\ {{s_{{j - 1}} - Y_{{i + 1}} \geqslant \delta _{{i + 1,j - 1}} + c_{j} T,{\text{ for all (}}i,j{\text{)}} \in O,{\text{ }}G_{i} = G_{j} .}} \\ {{s_{{i - 1}} - Y_{{j + 1}} \geqslant \delta _{{j + 1,i - 1}} + {\text{(}}c_{i} - 1{\text{)}}T,{\text{ for all (}}i,j{\text{)}} \in O,{\text{ }}G_{i} = G_{j} .}} \\ {{Y_{{i + 1}} - s_{i} \geqslant \theta _{i} ,i = 0,{\text{ }}1,{\text{ }} \cdots ,{\text{ }}N.}} \\ {{s_{i} - Y_{1} \geqslant \delta _{{1,i}} ,i = 1,{\text{ 2, }} \cdots ,N.}} \\\end{array}$$

Each linear inequality of Problem \(P\prime _{O} \) can be expressed in the form of u j v i l i,j h i,j T, where h i,j is an integer and l i,j is a real number. Due to this structure, it can be easily seen that Problem \(P\prime _{O} \) can be transformed into the cycle time evaluation problem in a bi-valued graph and solved by using a graph-based polynomial algorithm.

Computational results

We have solved five benchmark instances available in the literature called Phillips, Black oxide 1, Black oxide 2, Copper, Zinc, and four real-life instances from actual industrial applications, Ligne 1, Ligne 2, Ligne 3, and Ligne 4. The data for these benchmark and real-life instances can be found in Manier 1994. Table 1 shows the instance sizes and features for the test instances. We will compare the proposed branch-and-bound algorithm with the mixed-integer programming (MIP) approach proposed by Liu et al. 2002 using commercial optimization software CPLEX (version 6.0.0). The computations were done on an HP J-5000.

Table 1 Problem sizes and features for the test instances

Table 2 gives the optimal properties for the test instances. We find from Table 2 that the upper bound on the number of parts that can be processed simultaneously in a production line, k max, developed in this paper is very tight. For example, for Ligne 3 and Ligne 4, both with 31 tanks, if the number of parts processed in the production lines are greater than 17 and 11, respectively, then the corresponding solutions must be infeasible. This greatly reduces the size of the branch-and-bound tree.

Table 2 Optimal properties for the test instances

The computational results on the test instances, using our approach, are listed in Table 3, wherein the columns “solution times”, “B and B size”, and “Average time for one LPP”, respectively, give the computation time, the number of nodes of the branch-and-bound tree, and the average time required for solving one LPP for these instances. We find from Table 3 that even for large-size test instances like Ligne 3 and Ligne 4, with 18 and 35 processing stages, respectively, the solution times are within one  hour and are considerably shorter than the days required for manual generation of a feasible schedule.

Table 3 Computational results on the test instances using our approach

On the other hand, we would like to compare the optimal solutions obtained by using our approach with those reported in the literature to find out if new results have been obtained by this work. For the benchmark instances Phillips, Black oxide 1, Black oxide 2, Copper, and Zinc, the optimal cycle time found in this work is exactly the same as that reported in Shapiro and Nuttle 1998. For Ligne1 and Ligne 2, the optimal cycle times reported in Manier 1994 are 425 and 712, respectively. To the best of our knowledge, the optimal cycle time for Ligne 3 and Ligne 4 has never been reported in literature. Hence, we have found a better solution for Ligne 1 and report for the first time the optimal cycle time for Ligne 3 and Ligne 4. For interested readers, the optimal cyclic schedule for Ligne 1, Ligne 3, and Ligne 4 can be given by the authors upon request.

We also modeled these test instances using the mixed-integer programming (MIP) approach proposed by Liu et al. (2002) and solved them by using commercial optimization software CPLEX (version 6.0.0). Note that CPLEX also uses a branch-and-bound approach to solve the MIP problems. There is a sub-problem at each node of the tree, and each node is explored by solving the associated sub-problem. Table 4 gives the mixed-integer programming problem sizes and parameters for the test instances.

Table 4 MIP problem sizes and parameters for the test instances

The computational results on these instances, by using the CPLEX-based MIP approach, are listed in Table 5. For Ligne 3 and Ligne 4, computations were terminated because the system ran out of memory. In this case, the best feasible solutions are listed.

Table 5 Computational results on the test instances using MIP approach

We can find from Tables 3 and 5 that both the computation times and the sizes of B and B tree using our approach are much less than those using the CPLEX-based MIP approach. For large-size test instances (e.g., Ligne3 and Ligne4), our approach found the optimal solutions in a relatively reasonable computation time, while CPLEX failed to find the optimal solutions because it ran out of memory. On the other hand, we are also concerned about the performance of the graph-based algorithm over classical linear program solver, such as the simplex method. It is observed from Tables 3 and 5 that the former are always much better than the latter, especially for solving the large-size linear programming problems (LPPs).

We note that the advantage of our approach over the MIP approach comes from two sides. One is the analytical properties developed in this paper, which allow us to considerably eliminate dominated or infeasible solutions in the branch-and-bound procedure. Another is that we use a graph-based polynomial algorithm to solve the LPPs required for the computation of lower bounds in the branch-and-bound procedure due to their specific structure.

Conclusion

This paper proposed an efficient branch-and-bound algorithm for cyclic hoist scheduling in large real-life electroplating lines where a part visits some processing tanks more than once and multiple duplicate tanks are used at some production stages having long processing times. Computational results show that the algorithm is very efficient in scheduling large electroplating lines. We believe that this is mainly due to the developed analytical properties, which allow us to considerably eliminate dominated or infeasible solutions in the proposed branch-and-bound procedure, and the utilization of the graph-based polynomial algorithm.