1 Introduction

Cyclic operation is characterized by the repetition of worksteps in a periodic scheme. This contribution considers cyclically operated plants, where the sequence and timing of worksteps is identical for all cycles. A usually large number of entities (batches) is processed successively in an identical time scheme. This can be advantageous or even compulsory for robot production lines or chemical batch processes as well as for transportation systems and in many other areas. A new field of application for cyclic operation methods are so-called screening plants, where a large number of substances are analyzed with respect to their benefit for chemical or pharmaceutical purposes. Determining the sequence and timing of the worksteps for a cyclic screening run is a scheduling problem (Brucker 2004; Pinedo 1995; Parker 1995) that is characterized by a specific combination of requirements:

  • Cyclic operation: all batches pass the plant in an identical time scheme. For Strictly cyclic operation, the time offset between the start of consecutive batches is always constant. For screening plants, the requirement of identical time schemes for all batches is mandatory in order to receive comparable analysis results.

  • Due dates: the time scheme for the batch may be restricted, involving lower as well as upper bounds (time window constraints).

  • General precedence network structure: the sequence of worksteps for the single batch includes points of split-up and synchronization as well as parallel branches.

  • Revisited resources: along the process, the same resource may be visited several times by the same batch.

  • Overtaking: batches will overlap in time. Worksteps for batch ρ may take place prior to other worksteps for previous batches, even on the same resource.

  • Deterministic workstep durations: the time needed for each workstep is predefined and deterministic. Batch sizes and workstep recipies are fixed. Nevertheless, entities may keep resources allocated during additional waiting intervals that succeed the worksteps.

  • No buffers: after a workstep on one resource is finished, the resource will not be released before the resource for the next workstep is allocated (blocking). Thus, a batch will normally allocate two resources simultaneously while being transferred. This may apply for some or all of the system’s resources.

  • No preemption: worksteps cannot be interrupted by other worksteps on the same resource.

  • Globally optimal solution: we are interested in systematic approaches such that a globally optimal solution can be guaranteed.

The set of worksteps which is necessary for a screening task as well as the sequence of worksteps is specific for the substances and the tests to be performed. Thus, a new instance of the scheduling problem has to be solved for every screening task. This is performed in advance before the start of the screening run. The general objective of scheduling is to maximize throughput, i.e. to process as many batches per time as possible (high throughput screening) or, more generally, to finish a run of a fixed number of batches as fast as possible.

A large variety of cyclic scheduling problems have been considered in the literature. Major applications include manufacturing systems (e.g. Levner et al. 1997; Crama et al. 2000; Seo and Lee 2002; Hall et al. 2002; Karimi et al. 2004) traffic and transportation (e.g. Odijk 1996) or chemical batch plants (e.g. Pinto and Grossmann 1998; Alle et al. 2004; Pinto and Grossmann 1994; Shah et al. 1993). For the latter, additional degrees of freedom arise from recipies and material balances. For screening processes, material balancing does not play a role since materials are carried in the wells of microplates, which are always handled as one elementary unit.

Solution methods for cyclic scheduling are problem specific. If the sequence of all worksteps (activities) is fixed, the minimum possible cycle time (i.e. a schedule with maximum throughput) can be found using max-plus algebra (e.g. Lee 2000; Seo and Lee 2002) or algorithms with polynomial complexity (e.g. Lee and Posner 1997; Levner and Kats 1998). If batches do not overlap on any single resource, i.e. all activities of a batch are finished on a resource prior to the start of the first activity of the following batch (no overtaking), the problem of scheduling is reduced to fixing the optimal sequence and timing such that the single batch can be processed and repeated as fast as possible (e.g. Hall et al. 2002; Lee and Posner 1997; Levner and Kats 1998). Many of the cyclic scheduling methods in the literature address cycle shop problems (Middendorf and Timkovsky 2002), which do not cover the case of a general precedence network structure. Often, this is restricted further if resources are only visited once by each batch (flow shop) or revisiting of resources is limited to a single robot (e.g. Chen et al. 1998; Crama et al. 2000; Levner et al. 1997). The absence of buffers may reduce the complexity of the scheduling problem (Crama et al. 2000; Chen et al. 1998; Levner et al. 1997), but this is an additional requirement if buffers exist for some of the resources but not for all of them, as it is the case for screening plants. Another additional requirement is the demand for due dates resp. time window constraints (e.g. Crama et al. 2000; Levner and Kats 1998; Chen et al. 1998), which makes it necessary to set up additional constraints in the scheduling problem.

For many of these cyclic scheduling problems, an algorithm with polynomial complexity has not been found. Such problems may nevertheless be efficiently solved by formulating them as (mixed integer) optimization problems. Acceptable calculation times for globally optimal solutions can then be achieved by use of problem-specific formulations and branch-and-bound techniques (e.g. Chen et al. 1998; Roundy 1992; Seo and Lee 2002).

Although many of the approaches from the literature can be transferred to other applications, they do not meet all the requirements listed above. For strictly cyclic operation under these requirements, the maximum throughput problem has been solved in Mayer and Raisch (2004) for problem instances from the pharmaceutical industries. Several extensions, such as sequence dependent switching times or resources with multiple capacity, have also been studied (Mayer and Raisch 2003). The method presented there is not limited to screening plants but can be applied to any cyclically operated system with the same (or less) requirements.

This contribution provides a thorough discussion of the modeling and solution steps for the strictly cyclic maximum throughput problem. It then addresses the extension of the strictly cyclic case to a more general hierarchical cyclic structure, where cycles are nested in two levels. For specific task structures, this allows for considerably increased throughput.

This paper is arranged as follows: In Section 2, we present a timed discrete event model for cyclic processes with activities and resources. The constraints for the scheduling problem are derived. In Section 3, it is shown that the scheduling problem can be cast into a mixed integer linear program (MILP). A number of additional constraints are provided which allow to reduce computation time of the globally optimal solution.

In Section 4, the method is extended from the basic strictly cyclic case to the hierarchical cyclic case. It is shown that, by an appropriate modeling approach, the hierarchical cyclic problem can be formulated as a nonlinear mixed-integer program. A transformation to a mixed-integer linear program is presented, which again allows effective solution of the scheduling problem. In Section 5, both, the strictly cyclic and the hierarchical cyclic method, are illustrated by a small illustrating example and finally in Section 6, both methods are applied to a standard problem instance from high throughput screening.

2 Discrete event modeling of cyclic systems for scheduling

2.1 General setup

The general modeling approach for cyclic processes is described in Mayer and Raisch (2004), Mayer (2007) and will therefore only be outlined in this paper.

Using a system with m resources of capacity 1, a set of n worksteps (a batch) is executed a large number of times. The single batch represents one job or a fixed group of jobs. The worksteps (activities) for the batch are given in the batch definition, together with sequence and timing constraints. The duration needed for the workstep within any activity is predefined and deterministic. Also, the resource allocated by the activity during execution is well defined.

For the basic cyclic scheduling problem, a strictly cyclic operating scheme is applied. Batches are started repeatedly with a fixed time offset, called cycle time T. The activities of the batch as well as their sequence and timing are identical for all batches. Usually, the overall processing time of the single batch exceeds the time distance between the start of consecutive batches. Therefore batches may overlap, i.e. at any instant of time, several batches may be in process simultaneously.

The model for the cyclic process therefore consists of two ingredients: the cycle time T and the single batch time scheme, which is valid for all batches:

$$\begin{array}{l}o_i \in \mathbb{R} \;\ldots \;\;\; \mbox{time, when activity $i$ starts.} \\ r_i \in \mathbb{R} \;\ldots \;\;\; \mbox{time, when activity $i$ ends,} \\ \lefteqn{\mbox{ }r_i>o_i}\\ \lefteqn{\mbox{ }i=1\ldots n} \end{array}$$
(1)

Each activity allocates precisely one resource, denoted by J i .

$$\begin{array}{ll}J_i \;\ldots \;\;\; \mbox{resource allocated by activity $i$,}\\ \lefteqn{\mbox{ }J_i \in \{1\ldots m\}.} \end{array}$$

Of course, any resource may be allocated subsequently by different activities. Within the single batch time scheme, the number of activities allocating resource j is

$$n_j= \sum_{i=1}^{n} \delta_{J_i j} \;,\;\; j=1\ldots m\;,$$
(2)
$$\mbox{where }\delta_{J_i j}=\left\{\begin{array}{ll} 0&\quad\mbox{for } J_i\neq j\\ 1&\quad\mbox{for } J_i=j. \end{array}\right.$$

Together with the cycle time T, the single batch time scheme defines the timing for the entire cyclic schedule: the times for the ρ-th batch are given by:

$$\begin{array}{*{20}ll}o^{(\rho)}_i&=o_i+\rho\cdot T \\ r^{(\rho)}_i&=r_i+\rho \cdot T ,\;\;\; \rho \in \mathbb{Z} ,\;\; i=1\ldots n.\end{array}$$
(3)

Note that the cyclic model does not account for the overall number of batches: in principle, the cyclic process could be repeated infinitely often. Figure 1 shows an example for a simple single batch time scheme involving n = 4 activities on m = 2 resources. The optimal strictly cyclic schedule for this single batch time scheme is pictured as a Gantt chart in Fig. 2.

Fig. 1
figure 1

Example for a single batch time scheme (Gantt chart)

Fig. 2
figure 2

Optimal cyclic schedule for the single batch time scheme from Fig. 1

The batch definition given by the user identifies the set of activities together with their resources J i . If the values for the variables o i and r i , i = 1...n, were predetermined, the cycle time T would remain as the only degree of freedom. The problem would then be reduced to the problem of determining the optimal value for T and could be solved by simple algorithms in polynomial time. The optimal value for T could for example be found by successively excluding all forbidden intervals from the range of possible values for T. These intervals can be directly derived from the fact that two activities cannot allocate the same resource simultaneously. The number of forbidden intervals for n activities is O(n 2).

However, in most cases the user will not fix the entire batch time scheme but will only provide a number of (usually) linear constraints for the set of possible values for the variables o i and r i . These constraints, together with a number of problem-intrinsic constraints, will be discussed in Section 2.2.

Often, the mathematical formulation can be substantially simplified by suitably parameterizing the time instants o i and r i . We represent the o i and r i as affine functions of K time variables θ k  ∈ ℝ, where normally K < < 2 n:

$$\begin{array}{*{20}ll}o_i&=\chi_{i,0}+\sum_{k=1}^K ( \chi_{i,k} \cdot \theta_k) \quad\dots\quad \mbox{time, when activity $i$ starts}\;, \\ r_i&=\psi_{i,0}+\sum_{k=1}^K ( \psi_{i,k} \cdot \theta_k) \quad\dots\quad \mbox{time, when activity $i$ ends}. \end{array}$$
(4)

Thus, the single batch time scheme is defined by the fixed parameters χ i,0, ψ i,0, χ i,k , and ψ i,k , i = 1...n, k = 1 ...K and yet unknown variables θ k , k = 1...K.

The reparametrization (4) allows to reduce the number of degrees of freedom in the timing of the single batch. Often, a parametrization can be found such that the variables θ k can simply be interpreted as an artificial delay that is either inserted between two activities of the single batch time scheme or within an activity just before the entity is transferred to a subsequent resource. The number K of variables θ k depends on the sequence structure of the activities in the batch definition. It is always possible to find a parametrization (4) with K < 2 n. A formal method to derive the parameters χ i,0, ψ i,0, χ i,k and ψ i,k from a raw graph description of the batch definition can be found in Mayer (2007).

2.2 Constraints

There are three types of constraints that have to be met by the cyclic schedule.

First, a number of user defined constraints for the single batch time scheme, i.e. the variables o i and r i , i = 1...n, ensure

  1. 1.

    That activities last long enough to allow finishing of the required operations

  2. 2.

    That certain sequence constraints hold (for example, a batch may not be allowed to allocate the next resource before the activity in the previous resource is completed)

  3. 3.

    That certain time window constraints (e.g. maximum admissible durations for chemical reactions) hold.

After applying parametrization (4), these constraints for the variables o i and r i are represented by upper bounds for the time variables θ k :

$$\theta_k \le \theta_{k,\max} \;,\; k=1\ldots K\;,\;\theta_k \in \mathbb{R}_0^+$$
(5)

and by P additional linear constraints of the form

$$\sum_{k=1}^K (\kappa_{p,k} \cdot \theta_k) \le \vartheta_p \;,\; p=1\ldots P.$$
(6)

Second, there is the problem intrinsic constraint that the cycle time T can never be smaller than the sum of activity durations on any resource during the single batch time scheme:

$$T \ge \sum_{i=1}^{n} ( r_i - o_i ) \delta_{J_i j} \;,\;\; j=1\ldots m.$$
(7)

Substituting Eq. 4 into Eq. 7 results in

$$\gamma_{j,0} +\sum_{k=1}^K ( \gamma_{j,k} \cdot \theta_k ) - T \le 0 \;,\;\; j=1\ldots m \;,$$
(8)

where

$$\begin{array}{*{20}ll}\gamma_{j,0}&=\sum_{i=1}^{n} (\psi_{i,0} - \chi_{i,0}) \delta_{J_i j}\\ \gamma_{j,k}&=\sum_{i=1}^{n} ( \psi_{i,k} - \chi_{i,k} ) \delta_{J_i j}. \end{array}$$

Third, there is the requirement that no two activities are allowed to allocate the same resource simultaneously (disjunctive constraints).

This requirement is met if the mutual exclusion condition

$$o^{(\rho_{2})}_{i_{1}} \ge r^{(\rho_{1})}_{i_{2}} \; \mbox{ XOR } \; o^{(\rho_{1})}_{i_{2}} \ge r^{(\rho_{2})}_{i_{1}}$$
(9)

holds for any pair of activities using the same resource, i.e. for all i 1,i 2 ∈ {1 ...n}, ρ 1,ρ 2 ∈ ℤ, i 1 < i 2, \(J_{i_{1}}=J_{i_{2}}\). Due to symmetry in Eq. 9, it is sufficient to demand Eq. 9 for i 1 < i 2. The special case i 1 = i 2, ρ 1 ≠ ρ 2 is already ensured by Eq. 7.

For strictly cyclic operation, it has been shown in Mayer and Raisch (2004) that the following condition correctly models the constraint (9):

$$\begin{array}{lr}\forall (i_{1},i_{2}),\;i_{1}<i_{2},\;J_{i_{1}}=J_{i_{2}}\;\; \exists\; z_{(i_{1},i_{2})} \in \mathbb{Z} \mbox{ s.t.} \\ z_{(i_{1},i_{2})} \cdot T - ( o_{i_{2}}-r_{i_{1}} )\le 0 \end{array}$$
(10)
$$\Bigm( z_{(i_{1},i_{2})}+1 \Bigm) \cdot T - (r_{i_{2}}-o_{i_{1}}) \ge 0.$$
(11)

Thus, an integer variable \(z_{(i_{1},i_{2})}\) is introduced for each pair of activities within the single batch time scheme that use the same resource. For \(o_{i_{2}}>o_{i_{1}}\) and \(z_{(i_{1},i_{2})}\ge 0\), this allows for the following physical interpretation for the integer variable \(z_{(i_{1},i_{2})}\):

between activity i 1 for a batch ρ 1 and activity i 2 for the same batch, the resource is used for exactly \(z_{(i_{1},i_{2})}\) activities of type i 1 of subsequent batches, i.e. for batches \(\rho_{2} \in \{\rho_{1}+1 \ldots \rho_{1}+z_{(i_{1},i_{2})}\}\).

By introducing the integer variables, the infinite number of XOR conditions (9) is replaced by a finite number of requirements of the form (10), (11).

In order to formulate the scheduling problem as a mixed integer optimization problem with compact notation, some abbreviations are introduced.

Each possible pair of indices (i 1,i 2), i 2 > i 1, \(J_{i_{1}}=J_{i_{2}}\), is denoted by a single number ι,

$$\iota=1\ldots \iota_{\max}\;,\;\; \iota_{\max}=\sum_{j=1}^m \frac{n_j (n_j-1)}{2} \;\;.$$
(12)

Hence, each value for ι signifies a pair of activities (within the single batch time scheme) using the same resource.

Substituting Eq. 4 into Eqs. 10 and 11 results in

$$z_{\iota} \cdot T - v_{\iota,0} -\sum_{k=1}^K (v_{\iota,k} \cdot \theta_k) \le 0$$
(13)
$$\left( z_{\iota}+1 \right) \cdot T - w_{\iota,0} - \sum\limits_{k=1}^K ( w_{\iota,k} \cdot \theta_k) \ge 0$$
(14)

with the following abbreviations:

$$v_{\iota,k}=\chi_{i_{2},k} - \psi_{i_{1},k}$$
(15)
$$w_{\iota,k}=\psi_{i_{2},k} - \chi_{i_{1},k}$$
(16)
$$v_{\iota,0}=\chi_{i_{2},0} - \psi_{i_{1},0}$$
(17)
$$w_{\iota,0}=\psi_{i_{2},0} - \chi_{i_{1},0}.$$
(18)

Constraints (13) and (14) have to hold for all ι = 1 ...ι max.

3 Optimization problem

The objective of the scheduling problem is to maximize throughput. For strictly cyclic processes, this is equivalent to minimizing the cycle time T. Formulating the scheduling problem as an optimization problem, we have to take the cycle time T as the objective function to be minimized under the constraints given by Eqs. 13 and 14 as well as Eqs. 5, 6, and 8. The search space for the optimization problem is defined by the following variables:

  • Cycle time T ∈ ℝ + ,

  • Time variables θ k  ∈ ℝ,

  • Integer variables z ι  ∈ ℤ .

Hence, the basic cyclic scheduling problem can be written as the following mixed integer nonlinear program:

Min T subject to

$$z_{\iota} \cdot T - v_{\iota,0} -\sum_{k=1}^K (v_{\iota,k} \cdot \theta_k) \le 0 \quad\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(19a)
$$\left( z_{\iota}+1 \right) \cdot T - w_{\iota,0} - \sum\limits_{k=1}^K ( w_{\iota,k} \cdot \theta_k) \ge 0 \quad\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(19b)
$$\theta_k \le \theta_{k,\max} \quad\mbox{ for } {k}={1}\ldots{K}$$
(19c)
$$\sum_{k=1}^K (\kappa_{p,k} \cdot \theta_k) \le \vartheta_{\!p} \quad\mbox{ for } {p}={1}\ldots{P}$$
(19d)
$$\gamma_{j,0}+\sum_{k=1}^K (\gamma_{j,k} \cdot \theta_k ) - T \le 0 \quad\mbox{ for } {j}={1}\ldots{m}$$
(19e)

In general, problem (19a) to (19e) has more than one unique globally optimal solution. Of course, any of its globally optimal solutions constitutes a throughput-optimal cyclic schedule for the underlying problem instance. However, non-convex mixed-integer optimization problems, especially of this size, are in general very difficult to solve in a globally optimal way. Fortunately, it turns out that Eqs. 19a to 19e can be reformulated in mixed-integer linear form. Along the way, stricter bounds for some variables are derived, which reduces computation time.

3.1 Strengthening the formulation

For batches, where some resources have to be shared by a large number of activities, the optimization problem (19a) to (19e) may become very large (for n j activities on a resource j, the number of pairs and therefore the number ι max of integer variables z is \(\frac{n_j (n_j-1)}{2}\), see Eq. 12). Therefore it can be helpful to add additional bounds for the variables in Eqs. 19a to 19e, hence reducing the computation time for the optimization algorithm.

A lower bound for the cycle time T can be derived from the fact that if each single activity is finished as fast as possible and the busiest resource is allocated non-stop, no further reduction of cycle time is possible:

$$T \ge T_{\min}=\max_j \left( \min_{\theta_1 \ldots \theta_K} \sum_{i=1}^{n} ( r_i - o_i ) \delta_{J_i j} \right).$$
(20)

An upper bound T max for the cycle time T can be prescribed by the user. Alternatively, such a bound can be deduced from the trivial case in which no batch is started before the previous batch is finished:

$$T \le T_{\max}=\max_{\theta_1 \ldots \theta_K} \left(\max_i r_i - \min_i o_i\right)\;\;.$$
(21)

A tighter bound can be derived if, in addition to Eq. 21, the single batch is required to be finished as fast as possible. This corresponds to solving the optimization problem (19a) to (19e) with z ι  ∈ { − 1,0}, which usually can be solved significantly faster than the optimization problem with nominally unbounded variables z ∈ ℤ and always has a solution if Eqs. 19a to 19e have a solution. Note that this upper bound for T reduces the feasible region. Nevertheless, the feasible region does not become empty. Since the objective is to minimize T, at least one globally optimal solution is preserved in the formulation.

In addition to the bounds for T, lower and upper bounds for the integer variables z ι can be introduced as follows:

$$z_{\iota, \min}\le z_\iota \le z_{\iota, \max},\;\;\;\iota=1 \ldots \iota_{\max}\;,$$
(22)

where z ι, min and z ι, max are retrieved from solving the relaxation of Eqs. 19a, 19b, 19c, 19d, and 19e, together with Eqs. 20 and 21 with the objective of minimizing respectively maximizing z ι (the relaxation of an optimization problem is obtained by allowing the integer variables to take any value from ℝ). A faster, but less strict way to find lower and upper bounds z ι, min, z ι, max is as follows:

$$z_{\iota,\min} := \left\{ \begin{array}{r@{\;\;\mbox{for}\;\;}l} \lceil \frac{\underline{W}\;_\iota}{ T_{\min}} \rceil -1 & \underline{W}\;_\iota < 0 \\ \lceil \frac{\rule{0mm}{4mm}\underline{W}\;_\iota}{T_{\max}} \rceil -1 & \underline{W}\;_\iota \ge 0 \\ \end{array} \right. $$
$$z_{\iota,\max} := \left\{ \begin{array}{r@{\;\;\mbox{for}\;\;}l} \lfloor \frac{\bar{V}_{\iota}}{ T_{\max}} \rfloor & \bar{V}_{\iota} \le 0 \\ \lfloor \frac{\rule{0mm}{4mm}\bar{V}_{\iota}}{T_{\min}} \rfloor \par & \bar{V}_{\iota} > 0 \\ \par \end{array} \right. $$
$$\underline{W}\;_\iota = \min_{\theta_1 \ldots \theta_K} \left( w_{\iota,0}+\sum_{k=1}^K w_{\iota,k}\cdot \theta_k \right)$$
$$\bar{V}_{\iota} = \max_{\theta_1 \ldots \theta_K} \left( v_{\iota,0}+\sum_{k=1}^K v_{\iota,k}\cdot \theta_k \right).$$

(\(\lfloor x \rfloor\) denotes the floor-function, i.e. the largest integer number that is less or equal to x. ⌈x ⌉ denotes the ceil-function, i.e. the smallest integer number that is greater or equal to x). These conditions can be derived directly from Eq. 19a resp. Eq. 19b, together with Eqs. 20 and 21.

Conditions (22) can be interpreted as Gomory cuts (Bertsimas and Weismantel 2005) in the original system. Introducing such cuts does not reduce the feasible region of the optimization problem. In other words, the introduction of the additional bounds only removes values for the integer variables, for which at least one of conditions (19a) to (19e) is not satisfied.

3.2 Transformation to MILP

The nonlinear mixed-integer optimization problem (19a) to (19e), together with the bounds derived in Section 3.1, can be transformed to a linear problem: the feasible region is reparameterized by introducing

$$\bar{T}:=\frac{1}{T}\;\;,\;\; \bar{\theta}_k:=\frac{\theta_k}{T},\;k=1 \ldots K.$$
(23)

This is an exact reformulation of the problem. The set of globally optimal solutions remains unchanged. Note that the property of nonlinearity has been eliminated without paying the cost of additional variables. The resulting linear reformulation of the optimization problem reads as follows:

Max \(\bar{T}\) subject to

$$z_{\iota} - v_{\iota,0} \cdot \bar{T} -\sum_{k=1}^K \left(v_{\iota,k} \cdot \bar{\theta}_k\right) \le 0 \quad\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(24a)
$$z_{\iota}+1 - w_{\iota,0} \cdot \bar{T} - \sum\limits_{k=1}^K \left( w_{\iota,k} \cdot \bar{\theta}_k\right) \ge 0 \quad\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(24b)
$$z_{\iota,\min} \le z_{\iota} \le z_{\iota,\max} \quad\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(24c)
$$\bar{\theta}_k \le \theta_{k,\max} \cdot \bar{T} \quad\mbox{ for } {k}={1}\ldots{K}$$
(24d)
$$\sum_{k=1}^K \left(\kappa_{p,k} \cdot \bar{\theta}_k\right) \le \vartheta_{\!p} \cdot \bar{T} \quad\mbox{ for } {p}={1}\ldots{P}$$
(24e)
$$\frac{1}{T_{\max}} \le \bar{T} \le \frac{1}{T_{\min}}$$
(24f)
$$\gamma_{j,0} \cdot \bar{T} +\sum_{k=1}^K \left( \gamma_{j,k} \cdot \bar{\theta}_k \right) - 1 \le 0 \quad\mbox{ for } {j}={1}\ldots{m}$$
(24g)

Equations 24a to 24g state a mixed integer linear program (MILP). This optimization problem can be efficiently solved using standard methods of mathematical programming (e.g. Branch and Cut). For a comprehensive discussion of solution techniques for MILPs see Bertsimas and Weismantel (2005).

4 Extension: hierarchical cyclic structure

4.1 General framework

The scheduling problem for strictly cyclic operation can be solved in a globally optimal way by solving the mixed-integer linear optimization problem presented in Section 3. However, a strictly cyclic timetable, i.e. a strictly cyclic timetable with a constant time offset between all consecutive entities is often unnecessarily restrictive and a cyclic requirement may be sufficient. For a specific class of high throughput screening tasks, a two-level hierarchical nesting of cycles allows for a throughput rate higher than in the strictly cyclic case.

Again, the task is to process a (theoretically infinite) number of entities, which all need the same set of worksteps (activities). In the hierarchical cyclic framework, we use the term ‘job’ for such an entity. Together with their timing, the corresponding set of activities is called the ‘job time scheme’.

For a hierarchical cyclic structure, a finite number of such jobs are grouped together to form one batch. Within a batch, these individual jobs are also processed in a cyclic scheme (‘inner cycles’). The batches itself are, again, periodically repeated in a strictly cyclic scheme (‘outer cycles’). For the outer cyclic scheme the rules are the same as for the strictly cyclic case described in Section 2:

  • The time distance between the start of consecutive batches is always constant.

  • The processing time scheme is identical for all batches.

  • The cyclic time scheme does allow for infinite repetition.

For the inner cyclic scheme the following rules apply:

  • The time distance between the start of consecutive jobs is constant.

  • All individual jobs have to be processed in the same time scheme (‘job time scheme’).

Figure 3 shows a schedule with hierarchical cyclic structure for the single batch time scheme from Fig. 1. The schedule shown in Fig. 3 is said to be four-periodic, i.e. the time offset between an activity for entity i and its counterpart for entity i + 4 is constant for all entities and all activities. Compared to the strictly cyclic solution from Fig. 2, this four-periodic schedule obviously allows for an improved throughput rate.

Fig. 3
figure 3

Schedule with hierarchical cyclic structure (four-periodic)

If the number of jobs in the inner cycle, i.e. the number of jobs for one batch is fixed a-priori, the problem is, again, reduced to the strictly cyclic scheduling problem described in Section 2: the jobs in the inner cycle can be grouped into one batch, where the parametrization (4), together with the linear constraints (5) and (6) ensure identical time distance between the start of the jobs and identical processing time schemes for all jobs.

However, the optimal number of jobs per batch is usually not known a-priori, but has to be determined simultaneously with the optimal values for the other variables (i.e. the single batch time scheme and the cycle time T). This is done by formulating the scheduling problem for the hierarchical cyclic structure as an optimization problem which, in addition to the timing of the single batch time scheme and the cycle time for the outer cycle, also includes the number of jobs within the single batch time scheme as a variable Y ∈ ℕ.

4.2 Batch time scheme

In our hierarchical setting, the set of activities in the single batch time scheme is not fixed but depends on the value of the decision variable Y.

The time scheme for the individual jobs within the single batch is identical for all jobs. It consists of n * activities, which are described by their starting times and end times, parameterized by K * time variables θ k  ∈ ℝ:

$$\begin{array}{*{20}ll}{o}^*_i&={\chi}^*_{i,0}+\sum_{k=1}^{{K}^*} \left( {\chi}^*_{i,k} \cdot \theta_k\right)\quad \dots\quad \mbox{time, when activity $i$ starts}\;,\\ {r}^*_i&={\psi}^*_{i,0}+\sum_{k=1}^{{K}^*} \left( {\psi}^*_{i,k} \cdot \theta_k\right)\quad \dots\quad \mbox{time, when activity $i$ ends}.\end{array}$$
(25)
$$\begin{array}{*{20}lr}\lefteqn{\mbox{ }{r}^*_i>{o}^*_i}\\ \lefteqn{\mbox{ }i=1\ldots {n}^*.}\end{array}$$
(26)

Each activity i allocates one resource \({J}^*_i \in \{1\ldots m\}\).

Again, user-defined constraints ensure that the activity durations allow for finishing the required operations and that the sequence and time window constraints for the individual jobs within the job time scheme hold. These constraints are represented by upper bounds for the time variables θ k

$$\theta_k \le {\theta}^*_{k,\max} \;,\; k=1\ldots {K}^*\;,\;\theta_k \in \mathbb{R}_0^+$$
(27)

and by P additional linear constraints of the form

$$\sum_{k=1}^{{K}^*} \left({\kappa}^*_{p,k} \cdot \theta_k\right) \le {\vartheta}^*_p \;,\; p=1\ldots P.$$
(28)

It is natural to assume that an upper bound Y max for the variable Y is prescribed by the user.

Thus, the single batch time scheme consists of at most Y max jobs and \(n=Y_{\max} \cdot {n}^*\) activities. Within the batch, jobs are started cyclically with cycle time T *. As all jobs follow the time scheme given in Eq. 25, the activity start and end times for job h ∈ {1 ...Y max} are

$$\begin{array}{*{20}ll}{{o}^*}_{i}^{(h)}&= {\chi}^*_{i,0}+\sum_{k=1}^{{K}^*} \left( {\chi}^*_{i,k} \cdot \theta_k\right) + (h-1) \cdot {T}^* \;\;\mbox{ for }i=1\ldots {n}^* \\ {{r}^*}_{i}^{(h)}&= {\psi}^*_{i,0}+\sum_{k=1}^{{K}^*} \left( {\psi}^*_{i,k} \cdot \theta_k\right) + (h-1) \cdot {T}^* \;\;\mbox{ for }i=1\ldots {n}^*\end{array}$$
(29)

As the cycle time of the inner cycle T * is a decision variable that is part of the single batch time scheme, notation \(\theta_K:={T}^*\), K = K * + 1 will be used. Therefore the constraints for the variables θ k  ∈ ℝ, k = 1 ...K, are

$$\theta_k \le \theta_{k,\max} \;,\; k=1\ldots K\;,\;\theta_k$$
(30)

and

$$\sum_{k=1}^K (\kappa_{p,k} \cdot \theta_k) \le \vartheta_{p} \;,\; p=1\ldots P\;,$$
(31)

where

$$\theta_{k,\max}={\theta^*_{k,\max}}\;,\;\;k=1 \ldots {K}^*$$
(32)
$$\theta_{k,\max}=\infty\;,\;\;k=K$$
(33)
$$\kappa_{p,k}={\kappa}^*_{p,k}\;,\;\; p=1\ldots P\;,\;k=1 \ldots {K}^*$$
(34)
$$\kappa_{p,k}=0\;,\;\; p=1\ldots P\;,\;k=K$$
(35)
$$\vartheta_{p}={\vartheta}^*_{p}\;,\;\; p=1\ldots P.$$
(36)

To simplify notation, the activities of all Y max jobs are subsumed in one set and are serially numbered by a common index i. Thus, the single batch time scheme for the hierarchical cyclic structure is defined as follows:

$$\begin{array}{*{20}ll}o_{i}&=\chi_{i,0}+\sum_{k=1}^K ( \chi_{i,k} \cdot \theta_k)\;,\;\;i=1 \ldots n \\ r_{i}&=\psi_{i,0}+\sum_{k=1}^K ( \psi_{i,k} \cdot \theta_k)\;,\;\;i=1 \ldots n \end{array}$$
(37)
$$\begin{array}{*{20}ll}\psi_{i,0}&={\psi}^*_{i^*,0}\;,\;\;i=1\ldots n\\ \chi_{i,0}&={\chi}^*_{i^*,0}\;,\;\;i=1\ldots n\\ \psi_{i,k}&={\psi}^*_{i^*,k}\;,\;\;i=1\ldots n\;,\;\;k=1 \ldots {K}^*\\ \psi_{i,k}&=\lfloor (i-1)\mbox{ / }{n}^*\rfloor \;,\;\;i=1\ldots n\;,\;\;k=K={K^*}+1\\ \chi_{i,k}&={\chi}^*_{i^*,k}\;,\;\;i=1\ldots n\;,\;\;k=1 \ldots {K}^*\\ \chi_{i,k}&=\lfloor (i-1)\mbox{ / }{n^*}\rfloor \;,\;\;i=1\ldots n\;,\;\;k=K={K^*}+1 \end{array}$$

where n = n *·Y max and \(i^* = (i-1) \mbox{ mod } {n^*} +1\).

The resources allocated by the activities are

$$J_{i} = {J}^*_{i^*} \;,\;\;i=1\ldots n.$$
(38)

As only the first Y jobs are part of the single batch time scheme, only activities i, \(y_i=\lfloor (i-1) \mbox{ / } {n^*} \rfloor +1 \le Y\) take place:

$$Y \ge y_i \ldots \mbox{activity $i$ is part of the single batch time scheme (=`effective')}$$
(39)
$$Y < y_i \ldots \mbox{activity $i$ is not part of the single batch time scheme (=`ineffective').}$$
(40)

4.3 Constraints

Since the outer cyclic structure is identical to the standard strictly cyclic case described in Section 2, the constraints for the optimization problem are derived in the same way. However, the set of activities in the single batch time scheme is not fixed but depends on the number of jobs per batch (Y). The set of constraints for the optimization problem therefore depends on the value of the decision variable Y.

First, a lower bound for the cycle time T can be set up equivalently to Constraint (7). For the hierarchical cyclic case, this constraint needs to account for the number of effective activities in the single batch time scheme: for a certain value of Y, only activities i that are effective (i.e. y i  ≤ Y) contribute to the sum of activity durations in the single batch time scheme. Hence, a lower bound for the cycle time T is

$$T \ge \sum_{i=1}^{n} ( r_i - o_i ) \delta_{J_i j} \Delta_{y_i Y} \;,\;\; j=1\ldots m$$
(41)
$$\mbox{where }\Delta_{y_i Y}=\left\{\begin{array}{ll} 0&\;\;\mbox{for } y_i > Y\\ 1&\;\;\mbox{for } y_i \le Y. \end{array}\right.$$

Substituting Eq. 4 into Eq. 41 results in

$$\gamma_{j,0,Y} +\sum_{k=1}^K ( \gamma_{j,k,Y} \cdot \theta_k ) - T \le 0 \;,\;\; j=1\ldots m \;,$$
(42)

where

$$\begin{array}{*{20}ll}\gamma_{j,0,Y}&=\sum_{i=1}^{n} (\psi_{i,0} - \chi_{i,0}) \delta_{J_i j} \Delta_{y_i Y} \\ \gamma_{j,k,Y}&=\sum_{i=1}^{n} ( \psi_{i,k} - \chi_{i,k} ) \delta_{J_i j} \Delta_{y_i Y}. \end{array}$$
(43)

This set of constraints depends on the value of the decision variable Y. In order to have a fixed number of constraints, Eq. 42 can be transformed to the following set of ‘OR’ statements:

$$\gamma_{j,0,Y'} + \sum_{k=1}^K ( \gamma_{j,k,Y'} \cdot \theta_k ) - T \le 0 \mbox{ OR } Y \not= Y'$$
(44)
$$\mbox{for } j=1\ldots m \;,Y'=1 \ldots Y_{\max}.$$

Due to the definition of γ j,0,Y and γ j,k,Y , Eqs. 43, 37 together with Eq. 26, the following always holds for Y1 ≥ Y2:

$$\gamma_{j,0,Y1} + \sum_{k=1}^K ( \gamma_{j,k,Y1} \cdot \theta_k ) \ge \gamma_{j,0,Y2} + \sum_{k=1}^K ( \gamma_{j,k,Y2} \cdot \theta_k ).$$
(45)

Therefore, Eq. 44 can be finally given as follows:

$$\gamma_{j,0,Y'} + \sum_{k=1}^K ( \gamma_{j,k,Y'} \cdot \theta_k ) - T \le 0 \mbox{ OR } Y \le Y'-1$$
(46)
$$\mbox{for } j=1\ldots m \;,Y'=1 \ldots Y_{\max}.$$

The second set of constraints for the optimization problem is given by the linear constraints on the variables θ k , k = 1 ...K, given in Eqs. 30 and 31.

The third type of constraints are the disjunctive constraints (9) that have to be met for all pairs of effective activities belonging to the single batch time scheme. Therefore, Eqs. 10 and 11 have to hold for all pairs (i 1, i 2) for which

$$y_{i_{1}} \le Y \;\mbox{ and }\; y_{i_{2}} \le Y.$$
(47)

Accordingly, Constraints (13), (14) have to come into effect if Eq. 47 holds for the indices i 1, i 2 associated to the index ι. A variable g ι is used to formulate this condition: constraints (13), (14) have to hold if

$$Y>g_{\iota}\;,$$
(48)
$$\mbox{with } g_{\iota}=\max(y_{i_{1}},y_{i_{2}})-1.$$
(49)

In other words,

$$z_{\iota} \cdot T - v_{\iota,0} -\sum_{k=1}^K (v_{\iota,k} \cdot \theta_k) \le 0 \mbox{ OR } Y \le g_{\iota} \;,\;\;\iota=1 \ldots \iota_{\max}$$
(50)
$$( z_{\iota}+1 ) \cdot T - w_{\iota,0} - \sum\limits_{k=1}^K ( w_{\iota,k} \cdot \theta_k) \ge 0 \mbox{ OR } Y \le g_{\iota} \;,\;\;\iota=1 \ldots \iota_{\max}\;,$$
(51)

where ι max has to be determined for the case Y = Y max.

4.4 Optimization problem

The objective is to process a maximum number of jobs per time. As Y jobs are grouped into one batch, the objective function for throughput maximization is to minimize the cycle time of the outer cycles divided by the number of jobs per batch:

$$\mbox{minimize } \frac{T}{Y}.$$

This term represents the inverse of the job throughput, i.e. the mean time offset between consecutive jobs.

This function has to be minimized subject to constraints (30), (31), (46), (50), and (51).

Lower and upper bounds for the cycle time T as well as for the integer variables z ι can be included in the optimization problem as detailed for the model in Section 3.1.

Additionally, a lower and an upper bound can be prescribed for the objective function term:

$$T_{\rm lo} \le \frac{T}{Y} \le T_{\rm up}.$$
(52)

The lower bound T lo can be determined by evaluating Eq. 20 for Y = 1, i.e. for one job:

$$T_{\rm lo}=\max_j \left( \min_{\theta_1 \ldots \theta_{{K}^*}} \sum_{i=1}^{{n}^*} \left({r}^*_i - {o}^*_i\right) \delta_{{J}^*_i j} \right).$$
(53)

An upper bound T up can be derived by solving the strictly cyclic scheduling problem with one single job per batch.

To sum up, the following optimization problem describes the cyclic scheduling problem with hierarchical cyclic structure:

$$( T \in \mathbb{R}^+ ,\; \theta_k \in \mathbb{R}^+_0 ,\; z_{\iota} \in \mathbb{Z} ,\; Y \in \mathbb{N}, Y>0 )$$

Min \(\frac{T}{Y}\) subject to

$$z_{\iota} \cdot T - v_{\iota,0} -\sum_{k=1}^{K}(v_{\iota,k} \cdot \theta_k) \le 0 \mbox{ OR } Y \le g_{\iota} \quad \mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(54a)
$$( z_{\iota}+1) \cdot T - w_{\iota,0} - \sum_{k=1}^{K}( w_{\iota,k} \cdot \theta_k) \ge 0 \mbox{ OR } Y \le g_{\iota} \quad s\mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(54b)
$$z_{\iota,\min} \le z_{\iota} \le z_{\iota,\max} \quad \mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(54c)
$$\theta_k \le \theta_{k,\max} \quad \mbox{ for } {k}={1}\ldots{K}$$
(54d)
$$\sum_{k=1}^K (\kappa_{p,k} \cdot \theta_k) \le \vartheta_{\!p} \quad \mbox{ for } {p}={1}\ldots{P}$$
(54e)
$$T_{\min} \le T \le T_{\max}$$
(54f)
$$T_{\rm lo} \le \frac{T}{Y} \le T_{\rm up}$$
(54g)
$$\begin{array}{*{20}lr}\gamma_{j,0,Y'} + \sum_{k=1}^K ( \gamma_{j,k,Y'} \cdot \theta_k ) - T \le 0 \mbox{ OR } Y \le Y'-1 \\ \mbox{for } j=1\ldots m, \quad Y'=1 \ldots Y_{\max}\end{array}$$
(54h)
$$Y \le Y_{\max}$$
(54i)

This problem can once again be transformed into a linear one, albeit we need to expend some more effort because of the nonlinear objective function; it should also be noted that an increase in the number of values allowed for Y influences the size of the resulting linear problem and makes it worse from a complexity theoretic point of view. However, in the typically occurring instances, Y has a small range.

The linear reformulation can be split into 5 steps.

  1. 1.

    Reformulation of the objective function

    Instead of minimizing T/Y we can maximize Y/T, since T,Y > 0. This obviously changes the objective function value, but any optimal solution for the minimization problem will be optimal for the maximization problem, and vice versa.

  2. 2.

    Reparametrization of T

    As in the previous model we will reparameterize T by substituting \(\bar T=\tfrac{1}{T}\), and \(\bar\theta_k=\tfrac{\theta_k}{T}\) for k = 1,...,K. This leads to a set of constraints that is of the same form as in Eqs. 24a to 24g, except for the disjunctions in Eqs. 54a, 54b and 54h.

  3. 3.

    Removal of Eq. 54h

    The inequalities (54h) can be subsumed under Eqs. 54a and 54b, by introducing m ·Y max new indices \(\iota_{1},\dots,\iota_{m \cdot Y_{\max} }\) after ι max, fixing the associated variables \(z_{\iota_i}\) to 0, setting the new coefficients \(v_{\iota_i}=0\) and \(w_{\iota_i,\{0,k\}}= \gamma_{ [(i-1) \mbox{\footnotesize mod } m] +1 , \{0,k\}, \lfloor (i-1)\mbox{\footnotesize / }m \rfloor +1 } \), and limiting Y by \(g_{\iota_i}= (i-1) \mbox{ mod } m\) for Y′ = 1,...,Y max. The associated inequalities of type (54a) are then no restriction, while those of type (54b) take the place of Eq. 54h.

  4. 4.

    Modeling of the disjunctions (54a) and (54h)

    The disjunctions (54a) and (54b) with enlarged ι max, i.e. including Eq. 54h from the application of step 3, can be modeled by introducing decision variables x ι  ∈ {0,1} for ι = 1,...,ι max, which are to be equal to 1 whenever Y ≤ g ι , and 0 otherwise. We can then model the disjunctions (54a) and (54b), already rewritten according to the reparametrization step above, by a family of 3 inequalities for each ι = 1,...,ι max:

    $$Y-g_\iota \leq U_\iota^Y \cdot x_\iota\quad\mbox{with constant}\quad U_\iota^Y\geq Y_{\max} -g_\iota,$$
    $$z_\iota - v_{\iota,0}\cdot\bar{T} - \sum_{k=1}^K v_{\iota,k}\cdot\bar{\theta_k} \leq (1-x_\iota)\cdot U^z_\iota$$

    with constant

    $$U^z_\iota\geq z_{\iota,\max} + |v_{\iota,0}|\frac{1}{T_{\min}} + \sum_{k=1}^K|v_{\iota,k}|\cdot\theta_{k,\max}\frac{1}{T_{\min}},$$

    and finally

    $$z_\iota + 1 - w_{\iota,0}\cdot\bar{T} - \sum_{k=1}^K w_{\iota,k}\cdot\bar{\theta_k} \geq (1-x_\iota)\cdot L^z_\iota$$

    with constant

    $$L^z_\iota\leq z_{\iota,\min} + 1 - |w_{\iota,0}|\frac{1}{T_{\min}} - \sum_{k=1}^K|w_{\iota,k}|\cdot\theta_{k,\max}\frac{1}{T_{\min}}.$$

    In this formulation the choice of the three constants \(U^Y_\iota\), \(U^z_\iota\), and \(L^z_\iota\) ensures that the respective inequality is not a restriction whenever the decision variable x ι is not forcing the right hand side to 0.

  5. 5.

    Linear formulation of the objective \(\max Y\cdot\bar T\)

    For each possible value q of Y in the range of 1,...,Y max we introduce a binary variable \(Y_{\not= q}\), which is 1 whenever Y does not attain the value q:

    $$\begin{array}{*{20}rrl}Y_{\not= q} &\geq (Y-q)/(Y_{\max}-1) &&q=1,\dots,Y_{\max}\\ Y_{\not= q} &\geq (q-Y)/(Y_{\max}-1) &&q=1,\dots,Y_{\max}\\ \sum_{q=1}^{Y_{\max}} Y_{\not= q}&= Y_{\max}-1. \end{array}$$

    Then we can replace the objective \(\max Y\cdot\bar T\) by max γ, where γ is a variable modeling the supremum of \(Y\cdot\bar T\) over the feasible region:

    $$\gamma \le q\cdot\bar{T}+ M \cdot Y_{\not= q} \qquad \qquad\quad\; q=1,\dots,Y_{\max}$$

    where the constant \(M\ge Y_{\max}\cdot\frac{1}{T_{\min}}\), ensures that only one of these restrictions is binding.

After applying steps 1 to 5, we obtain a linear reformulation of the problem that has the same set of globally optimal solutions. Nevertheless, this time, the advantage of linearity comes at the cost of ι max additional binary variables x ι , Y max additional binary variables \(Y_{\not= q}\), and the additional variable γ ∈ ℝ + . The linear reformulation finally reads as follows:

Max γ subject to

$$\gamma \le q\cdot\bar{T}+ M \cdot Y_{\not= q} \quad \mbox{ for } q=1 \dots Y_{\max}$$
(55a)
$$Y_{\not= q} \geq (Y-q)/(Y_{\max}-1) \quad \mbox{ for } q=1\dots Y_{\max}$$
(55b)
$$Y_{\not= q} \geq (q-Y)/(Y_{\max}-1) \quad \mbox{ for } q=1\dots Y_{\max}$$
(55c)
$$\sum_{q=1}^{Y_{\max}} Y_{\not= q}= Y_{\max}-1$$
(55d)
$$Y-g_\iota \leq U_\iota^Y \cdot x_\iota \quad \mbox{ for } \iota=1\dots\iota_{\max}$$
(55e)
$$z_\iota - v_{\iota,0}\cdot\bar{T} - \sum_{k=1}^K v_{\iota,k}\cdot\bar{\theta_k} \leq (1-x_\iota)\cdot U^z_\iota \quad \mbox{ for } \iota=1\dots\iota_{\max}$$
(55f)
$$z_\iota + 1 - w_{\iota,0}\cdot\bar{T} - \sum_{k=1}^K w_{\iota,k}\cdot\bar{\theta_k} \geq (1-x_\iota)\cdot L^z_\iota \quad \mbox{ for } \iota=1\dots\iota_{\max}$$
(55g)
$$z_{\iota,\min} \leq z_{\iota} \le z_{\iota,\max} \quad \mbox{ for } {\iota}={1}\ldots{\iota_{\max}}$$
(55h)
$$\bar{\theta}_k \leq \theta_{k,\max} \cdot \bar{T} \quad \mbox{ for } {k}={1}\ldots{K}$$
(55i)
$$\sum_{k=1}^K (\kappa_{p,k} \cdot \bar{\theta}_k) \leq \vartheta_{\!p} \cdot \bar{T} \quad \mbox{ for } {p}={1}\ldots{P}$$
(55j)
$$\frac{1}{T_{\max}} \leq \bar{T} \leq \frac{1}{T_{\min}}$$
(55k)
$$Y\leq Y_{\max}$$
(55l)

5 Illustrating example

In order to illustrate the modeling and solution procedure proposed in Sections 2 to 4, we describe all necessary steps for the strictly cyclic case as well as for the hierarchical cyclic structure, both for the very simple example from Fig. 1. The batch definition consists of n = 4 activities on m = 2 resources. Each single batch passes through the following sequence:

Inserting any artificial waiting times between the worksteps and the transfers will not allow for increased throughput. The interval between activity 2 and 3 therefore constitutes the only degree of freedom within the single batch time scheme. We assume that the batch definition allows this interval to vary by a maximum of 6 time units.

In this case, the parametrization (4) can be found straightforward. It incorporates one variable θ 1 (i.e. K = 1) and is chosen such that this variable represents the additional waiting time between activity 2 and 3, up to a maximum of 6 time units. This results in the following values for the parameters χ i,0, ψ i,0, χ i,k , and ψ i,k :

$$\begin{array}{*{20}llll}\chi_{1,0}&=0 \qquad\quad\chi_{1,1}=0 \qquad\quad\psi_{1,0}= 8 \qquad\quad\;\;\psi_{1,1}=0\\ \chi_{2,0}&=4 \qquad\quad\chi_{2,1}=0 \qquad\quad\psi_{2,0}= 14 \qquad\quad\psi_{2,1}=0\\ \chi_{3,0}&= 56 \qquad\quad\chi_{3,1}=1 \qquad\quad\psi_{3,0}= 64 \qquad\quad\psi_{3,1}=1\\ \chi_{4,0}&= 60 \qquad\quad\chi_{4,1}=1 \qquad\quad{\kern1pt}\psi_{4,0}= 72 \qquad\quad\psi_{4,1}=1 \end{array}$$
(56)

Figure 1 illustrates the single batch time scheme for θ 1 = 0.

Condition (5) gives

$$0\le \theta_1 \le \theta_{1,\max}=6.$$
(57)

Since there is only one degree of freedom in the single batch time scheme, there are no constraints of form (6) necessary for this example.

With values (56), Condition (8) results in

$$T \ge 18, \;\;\;\;\; T \ge 20.$$
(58)

There are two pairs of activities (i 1,i 2), \(i_{2}>i_{1}, J_{i_{1}}=J_{i_{2}}\) for which constraints (10) and (11) need to be considered:

$$(i_{1},i_{2}) \in \{(2,3),(1,4)\}\;\;.$$

This means we need to introduce the integer variables z 1 = z (2,3) and z 2 = z (1,4). The abbreviations (15) to (18) provide the following notation:

$$\begin{array}{*{20}ll}v_{1,0}&=42 \qquad v_{1,1}=1 \\ w_{1,0}&=60 \qquad w_{1,1}=1 \\ v_{2,0}&=52 \qquad v_{2,1}=1 \\ w_{2,0}&=72 \qquad w_{2,1}=1\end{array}$$
(59)

Hence, we get two pairs of constraints of the form (13) resp. (14):

$$\begin{array}{r@{\cdot T - (\;}ll@{\;)\;\;}l@{\;\;0}} z_{1} & 42&+\theta_1&\le \\ ( z_{1}+1 ) & 60&+\theta_1&\ge \\ z_{2} & 52&+\theta_1&\le \\ ( z_{2}+1 ) & 72&+\theta_1&\ge \\ \end{array}$$
(60)

To sum up, the mixed integer nonlinear program, which has to be solved in order to obtain a globally optimal solution to the scheduling problem is the following:

Min T over \(\bigm( T \in \mathbb{R}^+,\;\) θ 1 ∈ ℝ, z ι  ∈ ℤ, ι ∈ {1, 2} \(\bigm)\) such that conditions (60), as well as conditions (57) and (58) hold.

The solution to this problem can be found using a MINLP solver or, of course, by transforming the problem into a mixed integer linear program using Eq. 23. A globally optimal solution is

$$T=36,\;\; \theta_1=0,\;\; z_{1}=1,\; z_{2}=1.$$

A graphical representation of the resulting strictly cyclic schedule can be found in Fig. 2.

To illustrate the extension from Section 4, we now allow for a hierarchical cyclic structure with a maximum number of Y max = 5 identical jobs in one batch. The job time scheme matches the batch time scheme from the strictly cyclic case and involves n * = 4 activities and the time variable θ 1 with 0 ≤ θ 1 ≤ θ 1, max = 6. The batch time scheme involves up to 5 such jobs and therefore n = 5·4 = 20 activities. An additional time variable θ 2 is introduced to represent the cycle time of the inner cycle T *. This results in the following values for the parameters χ i,0, ψ i,0, χ i,k , and ψ i,k in the parametrization (37):

$$\begin{array}{l@{} l@{} l@{} l@{} l@{} l} \chi_{1,0}= 0&\chi_{1,1}=0&\chi_{1,2}=0& \psi_{1,0}= 8&\psi_{1,1}=0&\psi_{1,2}=0\\ \chi_{2,0}= 4&\chi_{2,1}=0&\chi_{2,2}=0& \psi_{2,0}= 14&\psi_{2,1}=0&\psi_{2,2}=0\\ \chi_{3,0}= 56&\chi_{3,1}=1&\chi_{3,2}=0& \psi_{3,0}= 64&\psi_{3,1}=1&\psi_{3,2}=0\\ \chi_{4,0}= 60&\chi_{4,1}=1&\chi_{4,2}=0& \psi_{4,0}= 72&\psi_{4,1}=1&\psi_{4,2}=0\\ \chi_{5,0}= 0&\chi_{1,1}=0&\chi_{1,2}=1& \psi_{5,0}= 8&\psi_{1,1}=0&\psi_{1,2}=1\\ \chi_{6,0}= 4&\chi_{2,1}=0&\chi_{2,2}=1& \psi_{6,0}= 14&\psi_{2,1}=0&\psi_{2,2}=1\\ \chi_{7,0}= 56&\chi_{3,1}=1&\chi_{3,2}=1& \psi_{7,0}= 64&\psi_{3,1}=1&\psi_{3,2}=1\notag\\ \chi_{8,0}= 60&\chi_{4,1}=1&\chi_{4,2}=1& \psi_{8,0}= 72&\psi_{4,1}=1&\psi_{4,2}=1\\ \multicolumn{6}{c}{\vdots}\\ \chi_{17,0}= 0&\chi_{1,1}=0&\chi_{1,2}=4& \psi_{17,0}= 8&\psi_{1,1}=0&\psi_{1,2}=4\\ \chi_{18,0}= 4&\chi_{2,1}=0&\chi_{2,2}=4& \psi_{18,0}= 14&\psi_{2,1}=0&\psi_{2,2}=4\\ \chi_{19,0}= 56& \chi_{3,1}=1&\chi_{3,2}=4& \psi_{19,0}= 64&\psi_{3,1}=1&\psi_{3,2}=4\\ \chi_{20,0}= 60& \chi_{4,1}=1&\chi_{4,2}=4& \psi_{20,0}= 72&\psi_{4,1}=1&\psi_{4,2}=4\\ \end{array}\phantom{0000}$$
(61)

together with

$$0\le \theta_1 \le \theta_{1,\max}=6.$$
(62)

Constraints (46) read as follows (constraints for j = 1 are redundant and therefore omitted):

$$\begin{array}{*{20}c} {20 - T \le 0} & {\text{OR}} & {Y \le 0} \\ {40 - T \le 0} & {\text{OR}} & {Y \le 1} \\ {} & \vdots & {} \\ {100 - T \le 0} & {\text{OR}} & {Y \le 4.} \\ \end{array}$$
(63)

The batch time scheme involves n j  = 10 activities for each of two resources, thus resulting in ι max = 90 integer variables z ι (Eq. 12). Constraints (50), (51) for 68 out of 90 variables z ι turn out to be redundant. Omitting the corresponding 136 redundant lines, constraints (50) and (51) result in

(64)

The following lower and upper bounds for the mean job cycle time T/Y respectively the batch cycle time T can be added to the optimization problem:

$$T_{\rm lo}=T_{\min, Y=1}=20$$
(65)
$$T_{\rm up}=T_{\rm opt\mbox{ (strictly cyclic)}}=36$$
(66)
$$T_{\min}=T_{\rm lo}=20$$
(67)
$$T_{\max}=Y_{\max}\cdot T_{\max\mbox{ (strictly cyclic)}}=360.$$
(68)

Constraints (62) to (68) build up the problem formulations (54a) to (54i), which can be reformulated to linear form according to Eqs. 55a to 55l, following steps 1 to 5 in Section 4.4.

The globally optimal solution results in

$$Y=4\;,\;\;T=72\;,\;\;\theta_1=0\;,\;\;\theta_2={T^*}=12\;$$

and is pictured in Fig. 3. The mean job cycle time for this four-periodic schedule is T/Y = 18. Compared to the strictly cyclic solution, throughput is improved by 100%.

6 Application example

As a second example, we apply the proposed method to the ELISA test, which is a typical problem instance from high throughput screening. The example is adapted from Murray and Anderson (1996). It involves all requirements listed in Section 1. A compact illustration of the example is provided by the Gantt chart for the single batch time scheme in Fig. 4, which consists of four distinct parts. The resources of this example include not only machines for liquid handling, incubation and reading etc. but also transport units: three robots are used to move the entities (microplates) between the machine resources. The time an empty robot needs to move to the next resource after having transferred a plate to its destination is neglected.

Fig. 4
figure 4

Job time scheme for the ELISA assay (Gantt chart). Note that the problem specification also includes lower and upper bounds for time intervals, which cannot be visualized here

The time distances between the four parts are restricted by lower and upper bounds (time window constraints). Apart from these restrictions, all activities may be arbitrarily prolonged by inserting an idle time interval before the end of the activity, causing the follow-up activity on the next resource to start later. Altogether, these degrees of freedom are used to find a globally optimal timing for the activities, hence allowing for a schedule with maximum throughput.

Following the modeling process of Sections 2 and 3, a mathematical program can be established for the strictly cyclic case. The basic MILP consists of 28 continuous and 78 integer variables and includes 195 constraints (apart from lower and upper bounds for variables). The solution of the mathematical program provides a strictly cyclic schedule with globally optimal throughput. During the modeling process, an upper bound T max = 2350 for T can be found by solving the problem for the fixed single batch time scheme from Fig. 4, i.e. without allowing for any change in the timing. A lower bound T min = 1150 can be established by solving the relaxed MILP.

After adding bounding constraints for the variables and cuts as described in Section 3.1, a globally optimal solution to the mathematical program is found within less than 1 second on a 2 GHz Linux PC. The optimal cycle time turns out to be T opt = 2260 and therefore allows for an increase in throughput of 4% compared to the originally known solution T max = 2350. Information about the model size and the size of the mathematical program as well as computation times are given in Table 1 below.

Table 1 ELISA problem instances

We now drop the prerequisite of strictly cyclic operation and allow for hierarchical nesting of cycles as described in the extension in Section 4: while all entities still have to be processed within the same time scheme, the distance between the start of consecutive entities is not required to be constant any more. A maximum number of Y max = 4 entities form one batch and are processed in an inner cyclic scheme. Following the modeling steps of Section 4, the scheduling problem is cast into a mixed integer linear program of the form (55a) to (55l) with 30 continuous, 528 integer variables, and 1079 constraints.

The resulting mixed-integer linear programs can be solved using standard integer programming software like CPLEX (ILOG 2006). Since the range of Y is small, it is worth to require branching on Y first. This can be achieved by supplying suitable priority-order files to the small CPLEX solver, and allows significant problem compactification in the Branch-and-Cut tree on subsequent nodes.

Optimization results in a globally optimal solution with Y opt = 3 and T opt = 4150: three jobs have to be grouped to one batch in the inner cycle; a new batch is started every 4150 time units. Hence, the mean cycle time results in \(4150/3=1383\frac{1}{3}\), which is significantly better than the best possible cycle time 2260 for the strictly cyclic case.

Table 1 provides data about the basic ELISA problem (strictly cyclic case) and the extended version (hierarchical cyclic structure). For both problems, the table gives the size of the underlying scheduling problem as well as the following data about the MILP:

  • The number of variables, i.e. the number of columns in the MILP (#var),

  • The number of constraints, i.e. the number of rows in the MILP (#constr), and

  • The number of integer variables in the MILP (#integer).

Additionally, the globally optimal objective function value is given, which is equivalent to the mean cycle time, i.e. the inverse of the best possible throughput. Finally, the last column of Table 1 shows the time needed to compute the globally optimal solution of the MILP on a 2 GHz Linux PC (*) resp. a Sun-Fire-V440 with 1.28 GHz Ultrasparc-IIIi processors (**).

To show the applicability of the strictly cyclic scheduling method to problems of different size, Table 2 provides analogue figures for three other problem instances from high throughput screening. Globally optimal strictly cyclic schedules have been calculated for all problems within reasonable computation time. For the hierarchical cyclic approach, the computation time furthermore depends on the value for Y max. From Table 1, it can be seen that the computation of the globally optimal hierarchical cyclic schedule takes much more time then the computation of the globally optimal strictly cyclic schedule. Nevertheless, due to large numbers of batches, this will normally be worthwhile since throughput is considerably increased.

Table 2 Problem instances from high throughput screening

7 Conclusion

In this paper, we have addressed the problem of finding throughput-optimal sequences for a class of cyclic discrete event systems. We are interested in systematic approaches that guarantee globally optimal solutions. For the case of strictly cyclic operation, it has been shown that globally optimal solutions can be found by casting the cyclic scheduling problem into a mixed integer linear program (MILP). The method has been very successful in computing strictly cyclic schedules for a large number of high throughput screening problems from the pharmaceutical industries.

Additionally, a new extension towards a more general case of cyclicity has been presented: for some systems, hierarchical nesting of cycles allows for schedules with improved throughput rates. For this extension, it is still possible to solve the problem in a globally optimal way by casting it into an MILP. However, nesting of cycles demands for a more advanced modeling approach and thus results in more complex mathematical programs.

The extended method has been applied to an example from high throughput screening, showing its applicability to real-sized problem instances. Clearly, the computation time for the solution of the resulting mathematical program suffers from combinatoric explosion, as the size of the problem is increased. Further mathematical programming methods are needed to improve computation times and to solve large problem instances. Such methods are currently under investigation.