1 Introduction

In this paper, we study a scheduling problem related to the two-component jobs. Let \({\mathcal {J}}=\{{{J}_{1}},{{J}_{2}},\ldots ,{{J}_{n}}\}\) be a set of n jobs, to be non-preemptively processed on a single machine. Each job \({{J}_{j}}\) has two components: a standard component \(O_{j}^{(1)}\) and a specific component \(O_{j}^{(2)}\). The two components of \({{J}_{j}}\) have processing times \(p_{j}^{(1)}\) and \(p_{j}^{(2)}\), respectively. On the machine, the specific components are processed individually, and the standard components are processed in batches with a setup time s incurred for each batch. (Since setups for specific components depend on the particular jobs, the processing times of the specific components are assumed to include the relevant setup times.) We assume batch availability of the standard components (Santos and Magazine 1985) in this paper. That is, a standard component is available (i.e., ready for delivery to the next production stage) only when the batch it belongs to is completed. On the other hand, a specific component is available when its processing is completed. A job is completed when both its standard and specific components have been processed and are available.

The problem of scheduling two-component jobs is introduced in Baker (1988) and has a variety of applications (Baker 1988; Yang 2004). Consider a production environment where a fabrication machine manufactures two-component products (jobs). Usually there is an assembly machine which subsequently assembles the manufactured components into end products. Since the components are all processed on the fabrication machine, this machine is a bottleneck facility in the production process. Therefore, as in most studies, we assume that the assembly stage is not a bottleneck and can be ignored.

In the area of production management, timeliness of product delivery is usually crucial to meeting market demands and customer satisfaction. As a result, due date constraints are introduced and extensively studied (Brucker 2007). In this paper, each job \({{J}_{j}}\) is associated with a due date \({{d}_{j}}\), representing the interest of a decision-maker, e.g., the completion time expected by the consumer or the producer. Given a schedule, let \({{C}_{j}}\) and \({{L}_{j}}={{C}_{j}}-{{d}_{j}}\) denote the completion time and lateness of \({{J}_{j}}\) in this schedule. Let \({{C}_{\max }}={{\max }_{j}}\{{{C}_{j}}\}\) and \({{L}_{\max }}={{\max }_{j}}\{{{L}_{j}}\}\) denote the makespan and maximum lateness of the schedule.

The problem studied in this paper is to simultaneously minimize makespan \({{C}_{\max }}\) and maximum lateness \({{L}_{\max }}\) by enumerating all Pareto optimal points and finding a corresponding Pareto optimal schedule for each Pareto optimal point. Following (Brucker 2007; Hoogeveen 2005; T’Kindt and Billaut 2006), it can be denoted by \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\), where “\((p_{j}^{(1)},p_{j}^{(2)})\)” means “two-component jobs”, and “batch” means “batch availability”.

A feasible schedule \(\sigma \) is Pareto optimal with respect to \({{C}_{\max }}\) and \({{L}_{\max }}\) if there is no feasible schedule \({\sigma }'\) such that \({{C}_{\max }}({\sigma }')\le {{C}_{\max }}(\sigma )\) and \({{L}_{\max }}({\sigma }')\le {{L}_{\max }}(\sigma )\), where at least one of the inequalities is strict. When \(\sigma \) is Pareto optimal, the objective vector \(({{C}_{\max }}(\sigma ),{{L}_{\max }}(\sigma ))\) is called a Pareto optimal point (Hoogeveen 2005).

The paper is organized as follows. In Sect. 2, we provide a literature review. In Sect. 3, an \(O({{n}^{3}})\)-time algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\) is presented. In Sect. 4, the time complexity of the obtained algorithm is improved to \(O({{n}^{2}}\log n)\). Finally, some concluding remarks are drawn in Sect. 5.

2 Literature review

Multicriteria scheduling has been extensively studied in the last decades. The fundamental notations, principles and methodologies can be found in Hoogeveen (2005), T’Kindt and Billaut (2006), Herzel et al. (2021). Scheduling with batching and/or with setups has also been widely studied in the literature. We refer the reader to the surveys (Potts and Kovalyov 2000; Allahverdi et al. 2008). We next only mention the results on fabrication scheduling of two-component jobs.

Baker (1988) initiated problem \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert \sum {{{C}_{j}}}\) (minimizing total completion time of the jobs). Under the agreeability assumption (i.e., the jobs can be ordered such that the standard and specific components both appear in non-decreasing order of their processing times), he designed an \(O({{n}^{2}})\)-time dynamic programming algorithm. Coffman et al. (1990) further improved the complexity to \(O(n\log n)\). Aneja and Singh (1990) later extended Baker’s work to a more general case, where each job has a specific component and M standard components (each requiring a separate setup). Gerodimos et al. (2000) presented an \(O({{n}^{2}})\)-time dynamic programming algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert {{L}_{\max }}\). They also proved that \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert \sum {{{U}_{j}}}\) (minimizing total number of late jobs) is NP-hard and gave a pseudo-polynomial time dynamic programming algorithm for it, where \({{U}_{j}}=1\) if \({{C}_{j}}>{{d}_{j}}\) and \({{U}_{j}}=0\) otherwise. Moreover, for \(1\vert (p_{j}^{(1)}=p,p_{j}^{(2)}),batch\vert \sum {{{U}_{j}}}\) (all standard components have equal processing times), they obtained an \(O({{n}^{4}}\log n)\)-time dynamic programming algorithm. Wagelmans and Gerodimos (2000) gave an improved algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert {{L}_{\max }}\) which runs in \(O(n\log n)\) time.

Vickson et al. (1993) studied problem \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{C}_{j}}}\)( item availability of the standard components: a standard component is available immediately after the completion of its processing). Under the assumption that all standard components have equal processing times, they presented an \(O({{n}^{3}})\)-time algorithm. Rana and Singh (1994) presented a scheme for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert Lex(\sum {{{C}_{j}}},{{C}_{\max }},HC)\) which can obtain all optimal scheduling alternatives efficiently with minimization of total completion time, makespan, and total holding cost (HC denotes the total holding cost of all jobs) being primary, secondary and tertiary criteria respectively. Lin (2002) presented an \(O({{n}^{5}})\)-time dynamic programming algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert {{T}_{\max }}\), where \({{T}_{\max }}={{\max }_{j}}\{\max \{{{C}_{j}}-{{d}_{j}},0\}\}\) denotes the maximum tardiness of all jobs. He also showed NP-hardness proof and designed a pseudo-polynomial time dynamic programming algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{U}_{j}}}\). Gerodimos et al. (2001) studied problems \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{C}_{j}}}\), \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert {{L}_{\max }}\) and \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{U}_{j}}}\). They gave an \(O(n\log n)\)-time algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{C}_{j}}}\) under the agreeability assumption, and an \(O({{n}^{2}})\)-time algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert {{L}_{\max }}\). They also proved that \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert \sum {{{U}_{j}}}\) is NP-hard and gave a pseudo-polynomial time dynamic programming algorithm for it. Moreover, for \(1\vert (p_{j}^{(1)}=p,p_{j}^{(2)}),item\vert \sum {{{U}_{j}}}\), they obtained an \(O({{n}^{5}}\log n\log P)\)-time dynamic programming algorithm, where P is the sum of processing times of all specific components. Wagelmans and Gerodimos (2000) gave an improved algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),item\vert {{L}_{\max }}\) which runs in \(O(n\log n)\) time.

3 The algorithm

In this section we will present an \(O({{n}^{3}})\)-time algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\).

From now on, we assume that all jobs have been reindexed according to EDD (earliest due date) rule such that \({{d}_{1}}\le {{d}_{2}}\le \cdots \le {{d}_{n}}\).

Since \({{C}_{\max }}\) and \({{L}_{\max }}\) are regular functions (i.e., non-decreasing functions of the job completion times), following (Gerodimos et al. 2000), we get:

Lemma 1

For each Pareto optimal point of \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\), there exists a corresponding Pareto optimal schedule in which the standard component of each job appears in the batch immediately preceding the specific component.

Proof

Consider a Pareto optimal schedule. If there is a job \({{J}_{j}}\) such that its specific component \(O_{j}^{(2)}\) precedes the standard component \(O_{j}^{(1)}\), then we move \(O_{j}^{(2)}\) to be the first specific component after the batch containing \(O_{j}^{(1)}\). Clearly, the two objective function values \({{C}_{\max }}\) and \({{L}_{\max }}\) keep unchanged. Therefore, the modified schedule is also Pareto optimal. Repetition of this argument shows that for each Pareto optimal point, there is a corresponding Pareto optimal schedule in which the standard component of each job precedes its specific component.

Consider such a Pareto optimal schedule. If there are other batches of standard components processed between the batch containing \(O_{j}^{(1)}\) and \(O_{j}^{(2)}\), then we move \(O_{j}^{(1)}\) into the last batch of standard components preceding \(O_{j}^{(2)}\). Clearly, the modified schedule is also Pareto optimal. Repetition of this argument shows that for each Pareto optimal point, there is a corresponding Pareto optimal schedule in which the standard component of each job appears in the batch immediately preceding the specific component. \(\square \)

Lemma 2

For each Pareto optimal point of \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\), there exists a corresponding Pareto optimal schedule in which the jobs are sequenced in EDD order.

Proof

Consider a Pareto optimal schedule described in Lemma 1. If there are two consecutive jobs \({{J}_{j}}\) and \({{J}_{k}}\) such that \({{d}_{j}}<{{d}_{k}}\) but the components of \({{J}_{k}}\) precedes those of \({{J}_{j}}\) in the schedule, then we move the components of \({{J}_{k}}\) immediately after the relevant components of \({{J}_{j}}\) (the standard components of \({{J}_{j}}\) and \({{J}_{k}}\) are thus in the same batch). Only \({{J}_{k}}\) is completed later as a result of the move. Since \({{d}_{j}}<{{d}_{k}}\), the maximum lateness of \({{J}_{j}}\) and \({{J}_{k}}\) is no-worse in the modified schedule. Clearly, the modified schedule is also Pareto optimal. Repetition of this argument shows that for each Pareto optimal point, there is a corresponding Pareto optimal schedule in which the jobs are sequenced in EDD order. \(\square \)

The above two lemmas reveal the structure of Pareto optimal schedules we are searching for. By the two lemmas, a feasible schedule can be simply represented as a sequence of job-blocks \({{F}_{1}},{{F}_{2}},\ldots ,{{F}_{n}}\), where job-block \({{F}_{i}}=\{{{J}_{{{j}_{i}}}},{{J}_{{{j}_{i}}+1}},\ldots ,{{J}_{{{j}_{i+1}}-1}}\}\) consists of the jobs in the i-th batch of the schedule, \(i=1,2,\ldots ,n\), \(1={{j}_{1}}<{{j}_{2}}<\cdots <{{j}_{n+1}}=n+1\). The last l job-blocks \({{F}_{n-l+1}},{{F}_{n-l+2}},\ldots ,{{F}_{n}}\) are nonempty, and the first \(n-l\) job-blocks \({{F}_{1}},{{F}_{2}},\ldots ,{{F}_{n-l}}\) are empty.

The last job \({{J}_{{{j}_{i+1}}-1}}\) of \({{F}_{i}}\) is called the decision job of this job-block. Clearly, a schedule is specified by the decision jobs of its job-blocks. Further, the sub-schedule for the jobs in \({{F}_{i}}\) can be represented as \({{\alpha }_{i}}{{\beta }_{i}}\), where \({{\alpha }_{i}}\) is a batch consisting of the standard components of the jobs in \({{F}_{i}}\), and \({{\beta }_{i}}\) is a specific-block consisting of the specific components of the jobs in \({{F}_{i}}\), \(i=1,2,\ldots ,n\).

In the schedule, the standard components in each batch and the specific components in each specific-block are processed in EDD order respectively. Let \(p({{\alpha }_{i}})=\sum \nolimits _{j\in {{F}_{i}}}{p_{j}^{(1)}}\) and \(p({{\beta }_{i}})=\sum \nolimits _{j\in {{F}_{i}}}{p_{j}^{(2)}}\) denote the processing times of the batch and the specific-block of \({{F}_{i}}\), respectively. Let \(p({{F}_{i}})=p({{\alpha }_{i}})+p({{\beta }_{i}})\) denote the processing time of \({{F}_{i}}\). Moreover, the processing time of any empty job-block is zero.

Let \(s({{\alpha }_{i}})\) denote the setup time of batch \({{\alpha }_{i}}\), which is s if \({{\alpha }_{i}}\) is nonempty, and 0 otherwise. Let \(S({{F}_{i}})\) and \(C({{F}_{i}})\) denote the start time and completion time of \({{F}_{i}}\), respectively. We have: \(C({{F}_{i}})=S({{F}_{i}})+p({{F}_{i}})\).

Since both criteria \({{C}_{\max }}\) and \({{L}_{\max }}\) are regular, we can consider only the schedules without idle times. Therefore, we have:

Lemma 3

In a feasible schedule \(\sigma =\left( {{F}_{1}},{{F}_{2}},\ldots ,{{F}_{n}} \right) \), \(S({{F}_{1}})=s({{\alpha }_{1}})\), \(S({{F}_{i}})=C({{F}_{i-1}})+s({{\alpha }_{i}})\), \(i=2,\ldots ,n\).

In Algorithm EDD-MoveLeft, to search for the Pareto optimal schedules for constructing Pareto set \(\Omega ({\mathcal {J}})\), we will apply the following well-known generic approach for multicriteria scheduling (Hoogeveen 2005).

Lemma 4

(Hoogeveen 2005) Let y be the optimal value of problem \(\alpha \vert f\le {\hat{x}}\vert g\), and let x be the optimal value of problem \(\alpha \vert g\le y\vert f\). Then (xy) is a Pareto optimal point for problem \(\alpha \vert \vert (f,g)\).

Let \(\Pi \left( {\mathcal {J}} \right) \) denote the set of all feasible schedules for \({\mathcal {J}}\). We concentrate our attention to the schedules in \(\Pi \left( {\mathcal {J}} \right) \) which have the properties described in Lemmas 1, 2 and 3. Let \(\Pi \left( {\mathcal {J}},y \right) \) denote the set of the schedules in \(\Pi \left( {\mathcal {J}} \right) \) with \({{L}_{\max }}\) less than y. We have \(\Pi \left( {\mathcal {J}},+\infty \right) =\Pi \left( {\mathcal {J}} \right) \).

In the forthcoming algorithm, the cyclic queue data structure will be used. Please refer to (Cormen et al. 2009) for cyclic queue and its elementary operations DEQUEUE and ENQUEUE.

figure a

Remark 1

About Step 1: In schedule \({{\sigma }^{(h)}}\), for \(i=1,2,\ldots ,n\), the standard components of the jobs in \(F_{i}^{(h)}\) are first processed as a batch in EDD order, and the specific components of the jobs in \(F_{i}^{(h)}\) are then processed individually in EDD order (by Lemma 1).

Remark 2

About Step 2.1: When the rightmost, i.e., the last, empty job-block becomes non-empty, the lateness values of all jobs need to be updated. Otherwise, only the lateness values of the jobs in \(F_{i}^{(h)}\) and \(F_{i-1}^{(h)}\) need to be updated.

Step 1 of Algorithm EDD-MoveLeft can be implemented in \(O(n\log n)\) time. Step 2 can be done in O(n) time for each inequality violation adjustment. Steps 3 and 4 can be done in O(1) time in each iteration.

In each inequality violation adjustment, there is at least one job which has to be moved to the left. Actually, it is worth stressing that in Algorithm EDD-MoveLeft we never move a job to the right. Later, we will prove that any job can only be moved to the left; no job can be moved to the right (Lemma 6). Hence, the total number of inequality violation adjustments is \(O({{n}^{2}})\). The running time of Algorithm EDD-MoveLeft is \(O({{n}^{3}})\).

Given a schedule \(\sigma =({{F}_{1}},{{F}_{2}},\ldots ,{{F}_{n}})\), for any job \({{J}_{j}}\in {\mathcal {J}}\) let \(O(j,\sigma )=i\) denote the ordinal number of job \({{J}_{j}}\) if \({{J}_{j}}\in {{F}_{i}}\) in \(\sigma \). We have:

Lemma 5

Let \({{\sigma }^{(h)}}=(F_{1}^{(h)},F_{2}^{(h)},\ldots ,F_{n}^{(h)})\) be the schedule obtained at iteration h (\(h=0,1,\ldots \)) of Algorithm EDD-MoveLeft, where the last \({{l}_{h}}\) job-blocks \(F_{n-{{l}_{h}}+1}^{(h)},F_{n-{{l}_{h}}+2}^{(h)},\ldots ,F_{n}^{(h)}\) are nonempty. Let \(\sigma =({{F}_{1}},{{F}_{2}},\ldots ,{{F}_{n}})\) be any feasible schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \), where the last l job-blocks \({{F}_{n-l+1}},{{F}_{n-l+2}},\ldots ,{{F}_{n}}\) are nonempty. Then the following properties hold:

  1. (1)

    \({{l}_{h}}\le l\);

  2. (2)

    \(S(F_{i}^{(h)})\le S({{F}_{i}})\), \(i=1,2,\ldots ,n\);

  3. (3)

    \(C(F_{i}^{(h)})\le C({{F}_{i}})\), \(i=1,2,\ldots ,n\);

  4. (4)

    \(\forall {{J}_{j}}\in {\mathcal {J}}\), \(O(j,{{\sigma }^{(h)}})\ge O(j,\sigma )\);

  5. (5)

    \(\forall {{J}_{j}}\in {\mathcal {J}}\), if \(O(j,{{\sigma }^{(h)}})=O(j,\sigma )\), then \({{C}_{j}}({{\sigma }^{(h)}})\le {{C}_{j}}(\sigma )\).

Proof

We prove the lemma by induction on h.

The base case trivially holds, which can be checked by comparing \({{\sigma }^{(0)}}=(\varnothing ,\varnothing ,\ldots ,{\mathcal {J}})\) with any schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(0)}} \right) =\Pi \left( {\mathcal {J}} \right) \).

Now assume that for \({{\sigma }^{(h)}}\) and any schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \), the lemma holds. We consider \({{\sigma }^{(h+1)}}\) and any schedule \(\sigma \in \Pi \left( {\mathcal {J}},{{y}^{(h+1)}} \right) \). Since \({{y}^{(h+1)}}<{{y}^{(h)}}\), \(\sigma \in \Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). By the inductive assumption, the lemma holds for \({{\sigma }^{(h)}}\) and \(\sigma \).

Assume that there is a job \({{J}_{j}}\in \bigcup _{a=i+1}^{n}F_{a}^{(h)}\) but \({{J}_{j}}\in F_{i}^{(h+1)}\). Then we can find a truly moved job \({{J}_{k}}\in F_{i+1}^{(h)}\) in (modified) \({{\sigma }^{(h)}}\) which violates its inequality \(L_{k}^{(h)}<{{y}^{(h+1)}}\). We know that \({{J}_{j}}\) and \({{J}_{k}}\) are in the same job-block \(F_{i+1}^{(h)}\) in (modified) \({{\sigma }^{(h)}}\) and \({{J}_{j}}\) precedes \({{J}_{k}}\). If \(O(k,\sigma )=i+1\), since \(L_{k}^{(h)}\ge {{y}^{(h+1)}}\) and \({{C}_{k}}({{\sigma }^{(h)}})\le {{C}_{k}}(\sigma )\) (by the inductive assumption, the fifth Property), we have: \({{L}_{k}}(\sigma )\ge L_{k}^{(h)}\ge {{y}^{(h+1)}}\). If \(O(k,\sigma )>i+1\), certainly we also have: \({{L}_{k}}(\sigma )\ge L_{k}^{(h)}\ge {{y}^{(h+1)}}\). Hence, it must be true that \({{J}_{k}}\notin \bigcup _{a=i+1}^{n}{{F}_{a}}\) in \(\sigma \), i.e., \(O(k,\sigma )\le i\). We get: \(O(j,\sigma )\le i=O(j,{{\sigma }^{(h+1)}})\). By the principle of induction, we have proved the fourth property of the lemma.

In fact, we have shown that for \(i=n,n-1,\ldots ,1\), \(\bigcup _{a=i}^{n}{{F}_{a}}\subseteq \bigcup _{a=i}^{n}F_{a}^{(h)}\) holds, \(h=0,1,\ldots \). Equivalently we get: for \(i=1,2,\ldots ,n\), \(\bigcup _{a=1}^{i}F_{a}^{(h)}\subseteq \bigcup _{a=1}^{i}{{F}_{a}}\). Hence the first four properties of the lemma are proved easily.

Let us continue to prove the fifth property of the lemma. Assume that there is a job \({{J}_{j}}\) such that \(O(j,{{\sigma }^{(h+1)}})=O(j,\sigma )=i\). Clearly, the decision job of \(F_{i}^{(h+1)}\) has an index \(\lambda _{i}^{h+1}\) no more than the index \({{\lambda }_{i}}\) of the decision job of \({{F}_{i}}\). The number \(\mu _{i}^{h+1}\) of nonempty job-blocks in \(\{F_{1}^{(h+1)},F_{2}^{(h+1)},\ldots ,F_{i}^{(h+1)}\}\) is no more than the number \({{\mu }_{i}}\) of nonempty job-blocks in \(\{{{F}_{1}},{{F}_{2}},\ldots ,{{F}_{i}}\}\). Since \({{C}_{j}}({{\sigma }^{(h+1)}})=\mu _{i}^{h+1}\cdot s+\sum \nolimits _{q=1}^{\lambda _{i}^{h+1}}{p_{q}^{(1)}}+\sum \nolimits _{q=1}^{j}{p_{q}^{(2)}}\) and \({{C}_{j}}(\sigma )={{\mu }_{i}}\cdot s+\sum \nolimits _{q=1}^{{{\lambda }_{i}}}{p_{q}^{(1)}}+\sum \nolimits _{q=1}^{j}{p_{q}^{(2)}}\), we get: \({{C}_{j}}({{\sigma }^{(h+1)}})\le {{C}_{j}}(\sigma )\). By the principle of induction, we complete the proof of the fifth property of the lemma. \(\square \)

Algorithm EDD-MoveLeft generates nonempty job-blocks every now and then. Consider the nonempty job-blocks in \({{\sigma }^{(h)}}=(F_{1}^{(h)},F_{2}^{(h)},\ldots ,F_{n}^{(h)})\) obtained at iteration h. In \({{\sigma }^{(h)}}\), for \(i=n-{{l}_{h}}+2,n-{{l}_{h}}+3,\ldots ,n\), the decision job in \(F_{i-1}^{(h)}\) cannot be included in \(F_{i}^{(h)}\) (and all the subsequent job-blocks \(F_{i+1}^{(h)},F_{i+2}^{(h)},\ldots ,F_{n}^{(h)}\)) in any feasible schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \), because this job is moved from the i-th job-block into \(F_{i-1}^{(h)}\) truly due to the inequality violation in one of the preceding iterations. When this job is moved from the i-th job-block into the left adjacent job-block, the earlier jobs in the i-th job-block also need to be moved together with it; Otherwise one of these jobs has to be completed no earlier than the former completion time of the decision job, incurring an inequality violation since its due date is no more than that of the decision job. This means that Algorithm EDD-MoveLeft does not affect the feasibility of any schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). Each such job needs a separate job-block in any feasible schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). Algorithm EDD-MoveLeft actually assigns each such job to a separate job-block and these job-blocks are all nonempty job-blocks in \({{\sigma }^{(h)}}\). By this observation, we know that after a new nonempty job-block is generated, it will never become empty, nor will its due date (which is defined to be the largest due date of the jobs in it, i.e., the due date of its decision job) decrease, since otherwise an inequality violation will occur in its left adjacent job-block. Hence, in Step 2.1 of Algorithm EDD-MoveLeft, if \({{J}_{k}}\) violates the inequality and it has the largest due date in \(F_{i}^{(h)}\), which implies \(\Pi \left( {\mathcal {J}},{{y}^{(h+1)}} \right) =\varnothing \), then we simply set \({{\sigma }^{(h+1)}}=\varnothing \).

Let \({{\sigma }^{(h)}}=(F_{1}^{(h)},F_{2}^{(h)},\ldots ,F_{n}^{(h)})\)(\({{\sigma }^{(h+1)}}=(F_{1}^{(h+1)},F_{2}^{(h+1)},\ldots ,F_{n}^{(h+1)})\)) be the schedule obtained at iteration h (\(h+1\)) of Algorithm EDD-MoveLeft, where the last \({{l}_{h}}\) (\({{l}_{h+1}}\)) job-blocks are nonempty. Since \({{y}^{(h+1)}}<{{y}^{(h)}}\), \({{\sigma }^{(h+1)}}\in \Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). By Lemma 5, for \(i=1,2,\ldots ,n\), the decision job of \(F_{i}^{(h)}\) has an index \(\lambda _{i}^{h}\) no more than the index \(\lambda _{i}^{h+1}\) of the decision job of \(F_{i}^{(h+1)}\). The number \(\mu _{i}^{h}\) of nonempty job-blocks in \(\{F_{1}^{(h)},F_{2}^{(h)},\ldots ,F_{i}^{(h)}\}\) is no more than the number \(\mu _{i}^{h+1}\) of nonempty job-blocks in \(\{F_{1}^{(h+1)},F_{2}^{(h+1)},\ldots ,F_{i}^{(h+1)}\}\). By this analysis, we can prove the following lemma.

Lemma 6

In Algorithm EDD-MoveLeft, any job cannot be moved to the right.

Proof

We prove the lemma by contradiction.

In initial schedule \({{\sigma }^{(0)}}\), all jobs are in the rightmost job-block \(F_{n}^{(0)}={\mathcal {J}}\). Certainly, none of them can be moved to the right.

Suppose that at iteration h (\(h>0\)), job \({{J}_{k}}\in F_{i}^{(h-1)}\) has to be moved to the left because \(L_{k}^{(h-1)}\ge {{y}^{(h)}}\), but after iteration \({h}'\)(\({h}'\ge h\)), \({{J}_{k}}\in F_{i}^{({h}')}\). Since \({{y}^{({h}')}}<{{y}^{(h)}}\), \({{\sigma }^{({h}')}}\in \Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). From the above analysis, similarly to the proof of the fifth property of Lemma 5, we get: \({{C}_{k}}({{\sigma }^{(h-1)}})\le {{C}_{k}}({{\sigma }^{({h}')}})\). It follows that \(L_{k}^{({h}')}\ge {{y}^{(h)}}>{{y}^{({h}')}}\). Therefore, \({{J}_{k}}\notin F_{i}^{({h}')}\), a contradiction. \(\square \)

By Lemma 5, we get:

Lemma 7

Let \({{\sigma }^{(h)}}\) be the schedule obtained at iteration h (\(h=0,1,\ldots \)) of Algorithm EDD-MoveLeft. If \({{\sigma }^{(h)}}=\varnothing \), then \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) =\varnothing \); Otherwise \({{\sigma }^{(h)}}\) is a schedule which has minimum makespan among all schedules in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \).

Proof

Suppose that in Step 2.1 of Algorithm EDD-MoveLeft, we find a job \({{J}_{k}}\) such that \({{d}_{k}}=\max \{{{d}_{j}}\vert ~{{J}_{j}}\in F_{i}^{(h-1)}\wedge L_{j}^{(h-1)}\ge {{y}^{(h)}}\}\). By Lemma 2, all the jobs with due dates no more than \({{d}_{k}}\) in \(F_{i}^{(h-1)}\) need to be moved into \(F_{i-1}^{(h-1)}\). If \(i=1\), then job \({{J}_{k}}\) cannot be scheduled with its lateness less than \({{y}^{(h)}}\) in any schedule in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \), implying that \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) =\varnothing \). If \({{J}_{k}}\) has the largest due date in \(F_{i}^{(h-1)}\), then we also know that \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) =\varnothing \). The reason has been explained above (after the proof of Lemma 5). Thus, in these two cases, we simply set \({{\sigma }^{(h)}}=\varnothing \) and return.

On the other hand, if \({{\sigma }^{(h)}}\ne \varnothing \), then by property (3) of Lemma 5, \({{\sigma }^{(h)}}\) has minimum \({{C}_{\max }}\) among all schedules in \(\Pi \left( {\mathcal {J}},{{y}^{(h)}} \right) \). \(\square \)

Combining Lemmas 4 and 7, we get:

Theorem 8

Algorithm EDD-MoveLeft solves \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\) in \(O({{n}^{3}})\) time. It returns Pareto set \(\Omega ({\mathcal {J}})\) which consists of all Pareto optimal points together with the corresponding Pareto optimal schedules. The last generated schedule \({{\pi }^{*}}\) has minimum makespan among all optimal schedules for single criterion \({{L}_{\max }}\).

4 An \(O(n^2\log n)\)-time implementation

In this section we will illustrate how to improve the time complexity of the obtained algorithm to \(O({{n}^{2}}\log n)\). The basic idea is to use AVL trees and max-heaps to store the lateness values of the jobs so that it takes only \(O(\log n)\) time to find a job violating its inequality. Please refer to Cormen et al. (2009) for AVL trees and max-heaps as well as their elementary operations.

During the implementation of Algorithm EDD-MoveLeft, we will maintain an array, Aglobal, to store the completion times of all the jobs in the current schedule. The j-th position of Aglobal stores the completion time of job \({{J}_{j}}\) (i.e., the completion time of its specific component), \(j=1,2,\ldots ,n\). Each job-block has an indicator which shows the position of its decision job in Aglobal. By these indicators, we immediately know the content of each job-block.

For each job-block, there is an AVL tree which stores the lateness values of its jobs. Let the lateness of the job-block be defined as the largest lateness value of its jobs. We use a max-heap, Hglobal, to store the lateness values of all nonempty job-blocks in the current schedule. Hence, we can extract the \({{L}_{\max }}\) value of the schedule (stored in the root of Hglobal) in \(O(\log n)\) time, ensuring to find a job violating its inequality in \(O(\log n)\) time.

Suppose that we are adjusting \({{\sigma }^{(h)}}=(F_{1}^{(h)},F_{2}^{(h)},\ldots ,F_{n}^{(h)})\) in Step 2.1 of Algorithm EDD-MoveLeft, and we find job \({{J}_{k}}\in F_{i}^{(h)}\) violating its inequality. We illustrate how to maintain the array, the AVL trees and the max-heap efficiently. Let \(F_{i,1}^{(h)}\) denote the set of the jobs to be moved from \(F_{i}^{(h)}\) to \(F_{i-1}^{(h)}\) (i.e., \(F_{i,1}^{(h)}\) is the set of all the jobs with due dates no more than \({{d}_{k}}\) in \(F_{i}^{(h)}\)). Accordingly, let \(\alpha _{i,1}^{(h)}\) and \(\beta _{i,1}^{(h)}\) denote the standard and specific components of the jobs in \(F_{i,1}^{(h)}\), respectively. Let \(p(\alpha _{i,1}^{(h)})=\sum \nolimits _{O_{j}^{(1)}\in \alpha _{i,1}^{(h)}}{p_{j}^{(1)}}\).

Consider the following two different cases.

Case 1. \(F_{i-1}^{(h)}\ne \varnothing \).

After the jobs in \(F_{i,1}^{(h)}\) are moved into \(F_{i-1}^{(h)}\), the completion times of the jobs in \(F_{i-1}^{(h)}\) (before its update), and thus their lateness values, will increase by \(p(\alpha _{i,1}^{(h)})\). The completion times and lateness values of the jobs in \(F_{i,1}^{(h)}\) will also change. All the other jobs keep their completion times and lateness values unchanged.

It is easy to update the lateness values of the jobs in \(F_{i-1}^{(h)}\). We just add a new field called increment, denoted by \(inc(F_{i-1}^{(h)})\), in the AVL tree \(T(F_{i-1}^{(h)})\) which stores the lateness values of the jobs in \(F_{i-1}^{(h)}\). The initial value of the increment is zero. At this moment, we set \(inc(F_{i-1}^{(h)})=inc(F_{i-1}^{(h)})+p(\alpha _{i,1}^{(h)})\). With the help of \(inc(F_{i-1}^{(h)})\), we can lazily update the lateness values of the jobs in \(F_{i-1}^{(h)}\) which are stored in \(T(F_{i-1}^{(h)})\); we do not change these values at all. When a value is extracted from \(T(F_{i-1}^{(h)})\) in \(O(\log n)\) time, we can get the true lateness by simply adding the amount \(inc(F_{i-1}^{(h)})\) to the extracted value.

It is also easy to update the lateness values of the jobs in \(F_{i,1}^{(h)}\), since we know the completion time of \(F_{i-1}^{(h)}\), \(C(F_{i-1}^{(h)})\), which is equal to the completion time of the decision job of \(F_{i-1}^{(h)}\) stored in Aglobal. At this moment, we update \(C(F_{i-1}^{(h)})\) to be \(C(F_{i-1}^{(h)})+inc(F_{i-1}^{(h)})\). Suppose that the jobs in \(F_{i,1}^{(h)}\) are \({{J}_{{{i}_{1}}}},{{J}_{{{i}_{1}}+1}},\ldots ,{{J}_{{{i}_{1}}+x}}\). Then, their lateness values are \(C(F_{i-1}^{(h)})+p_{{{i}_{1}}}^{(2)}-{{d}_{{{i}_{1}}}},C(F_{i-1}^{(h)}) +p_{{{i}_{1}}}^{(2)}+p_{{{i}_{1}}+1}^{(2)}-{{d}_{{{i}_{1}}+1}},\ldots ,C(F_{i-1}^{(h)})+p_{{{i}_{1}}}^{(2)}+p_{{{i}_{1}}+1}^{(2)}+\cdots +p_{{{i}_{1}}+x}^{(2)}-{{d}_{{{i}_{1}}+x}}.\) We remove from \(T(F_{i}^{(h)})\) the old lateness values of the jobs in \(F_{i,1}^{(h)}\), and insert their new lateness values minus \(inc(F_{i-1}^{(h)})\) into \(T(F_{i-1}^{(h)})\). Update \(F_{i}^{(h)}\) to be \(F_{i}^{(h)}\backslash F_{i,1}^{(h)}\). Update \(F_{i-1}^{(h)}\) to be \(F_{i-1}^{(h)}\cup F_{i,1}^{(h)}\).

Update Hglobal accordingly. Only the lateness values of \(F_{i}^{(h)}\) and \(F_{i-1}^{(h)}\) in Hglobal need to be updated. The new lateness value of \(F_{i}^{(h)}\) (\(F_{i-1}^{(h)}\), resp.) is equal to the maximum value stored in \(T(F_{i}^{(h)})\) (\(T(F_{i-1}^{(h)})\), resp.) plus the corresponding increment.

Since moving a job to the left once can be accomplished in \(O(\log n)\) time and there are \(O({{n}^{2}})\) movements, it takes \(O({{n}^{2}}\log n)\) time to deal with this case.

Case 2. \(F_{i-1}^{(h)}=\varnothing \).

After the jobs in \(F_{i,1}^{(h)}\) are moved into \(F_{i-1}^{(h)}\), the completion times of all the jobs will change, since there is a necessary setup time s in \(F_{i-1}^{(h)}\). Thus, we recalculate the completion times of all the jobs and store them in Aglobal. We build an AVL tree for storing the lateness values of the jobs in \(F_{i-1}^{(h)}\) in \(O(n\log n)\) time. Update \(inc(F_{q}^{(h)})\) to be its old value plus s, \(q=i,i+1,\ldots ,n\). Update Hglobal accordingly. The lateness values of all nonempty job-blocks need to be updated. Since this case occurs at most \(n-1\) times, it takes \(O({{n}^{2}}\log n)\) time to deal with it.

The array Aglobal and max-heap Hglobal have sizes of n. The AVL trees have n nodes in total. Hence, we get:

Theorem 9

A careful implementation of Algorithm EDD-MoveLeft leads to an \(O({{n}^{2}}\log n)\)-time algorithm for \(1\vert (p_{j}^{(1)},p_{j}^{(2)}),batch\vert ({{C}_{\max }},{{L}_{\max }})\) with O(n) memory requirements.

5 Conclusions

In this paper we studied the bicriteria problem of scheduling jobs with due dates and two components on a single fabrication machine to minimize makespan and maximum lateness simultaneously, under the assumption of batch availability of the standard components. We presented an \(O({{n}^{2}}\log n)\)-time algorithm with linear memory requirements which can generate all Pareto optimal points and find a corresponding Pareto optimal schedule for each Pareto optimal point. Note that there are several recent papers on Pareto optimization batch scheduling which dealt with makespan and maximum cost (Geng et al. 2018; He et al. 2020, 2022; Gao 2022; Gao et al. 2022). These research papers discussed the problems (such as serial batch or parallel batch) which are different from that studied in this paper. Since maximum lateness is a special case of maximum cost, for future research, a vexing problem is to consider Pareto optimization scheduling of two-component jobs for maximum cost instead of makespan, in combination with maximum cost or a general min-sum objective function.