# Mixed-Integer Linear Programming Model and Heuristic for Short-Term Scheduling of Pressing Process in Multi-Layer Printed Circuit Board Manufacturing

^{1}

^{2}

^{*}

## Abstract

**:**

## 1. Introduction

- The laminate sheets are cut to the required size in the cutting process.
- The circuit pattern is created on the cut laminate in the etching process.
- A number of etched laminates (or cores) are stacked together with a prepreg inserted between each pair of them. The stack (or panel) is pressed using heat and pressure in the pressing process.
- Holes will be drilled in the pressed board in the drilling process and the circuit pattern will be made on the outer surfaces.
- The remaining steps are the quality control and labeling processes.

#### Novelties of the Paper

- This paper proposes a novel mixed integer linear programming (MILP) model for the pressing process scheduling that can find an optimal schedule to meet the objective of maximizing the resource utilization, while the times are continuous values.
- This paper presents a three-phase-PCB-pressing heuristic algorithm (3P-PCB-PH) for solving the pressing process scheduling, based on the proposed MILP, which can find a near-optimal solution within a reasonable computational time and is practical for real-life applications.

## 2. Problem Description

- Lay-up process phase: The panels are arranged on a selected stainless-steel template (SST), where the number of panels on the SST depends on the size of the SST, the gap between each panel on the SST, and the pattern layout of arrangement. The final arrangement of panels on a SST is called a book. Then, each book is loaded into slots (openings) of a press machine. The number of loaded books is equal to the number of openings of the press machine. This phase takes 120 min.
- Pressing process phase: The press machine that is already loaded with books is sent into an oven, where the books are heated and pressed. After 120 min, the press machine is removed from the oven.
- Cool-down process phase: The pressed books in the press machine are cooled down for 120 min. Finally, the books will be removed from the press machine to complete one cycle of the press machine.

- The three phases of a press machine cycle must be performed continuously (no idle time between phases).
- The number of press machines and ovens are known, and the number of ovens is less than the number of press machines. This is because the cost of an oven is very high, and hence the company usually has a small number of ovens.
- Each press machine has the same number of openings.
- There are many types of panels to press and the demand of each type of panel is given. The type of panel depends on the customer’s design.
- All panels can be finished within the given due date and resources, i.e., the demands of panels, which are inputs from the customer, yield a feasible schedule.
- The maximum number of available cycles of each press machine to be operated within the due date is the same and this value is given. In practice, the production planning department can estimate this value from the order of the customers and the available resources.
- There are many sizes of SSTs, and each size is unlimitedly available.
- The inner gap is the minimal gap among two panels in a book and the outer gap is the minimal gap between each panel and the borders of the SST. The inner gap ($g$) and outer gap ($G$) of an arrangement of panels on a SST depend on the type of panel and these values are known.

- Only one type of panel can be arranged and pressed in a cycle of a press machine.
- The books that are inserted in the same press machine must have the same layout and the same SST size.
- Each oven can be used by only one press machine at a time to operate the pressing process phase.
- The number of finished goods of each type of panel must be greater than or equal to the demand.

## 3. Proposed Mathematical Model

## 4. Proposed 3P-PCB-PH Algorithm

- $A={\left[{A}_{pt}\right]}_{P\times T}$: the matrix that collects the starting time of cycle $t$ of press machine $p$ (the starting time of the lay-up process phase). Initially, $A$ is set to be ${\left[0\right]}_{P\times T\text{}}$.
- $C={\left[{C}_{pt}\right]}_{P\times T}$: the matrix that collects the completion time of cycle $t$ of press machine $p$. Initially, $C$ is set to be ${\left[0\right]}_{P\times T\text{}}$.
- $Can$: the candidate list represents the next earliest available cycle number to use each press machine. Initially, $Can$ is set to be ${\left[1\right]}_{1\times P}$, i.e., for each press machine, the cycle that is ready to start is cycle 1.
- $\left(start\_time,\text{}end\_time,\text{}press\_machine,\text{}cycle\right)$: A scheduled pressing job which collects the starting and end times of the pressing process phase of a press machine at a cycle, where the $start\_time$, $end\_time$, $press\_machine$, and $cycle$ are the starting time, end time, press machine number, and cycle number, respectively. For example, if we have a scheduled pressing job (240, 360, 1, 1), it means that the pressing job occurs from time 240 to 360 min and is the task of press machine 1 at cycle 1.
- $Oven\_Schedule\_List$: the list of scheduled pressing jobs to use in each oven in a sequential order. Each element in the $Oven\_Schedule\_List$ is also a list, which collects the scheduled pressing job tuples that are assigned in the corresponding oven. Figure 6 shows an example of an $Oven\_Schedule\_List$ when the number of ovens $\left(O\right)$ is three and the processing time of the pressing process phase $\left(n\right)\text{}$ is 120 min. The first list in $Oven\_Schedule\_List$ contains the scheduled pressing jobs that are already assigned to oven 1. There are two pressing jobs in the first list. The first is (120, 240, 1, 1), which means oven 1 has to press from 120 to 240 min and is the task of press machine 1 at cycle 1, while the second is (480, 600, 1, 2) which means oven 1 has to press from 480 to 600 min and is the task of press machine 1 at cycle 2. Similarly, the list for oven 2 has only one job that is already assigned, and there is no job that is currently assigned to oven 3 since the third list is empty. Note that, initially, the list $Oven\_Schedule\_List$ is set to be the list of $O$ empty lists ${\left[\text{}\left[\hspace{1em}\right]\text{}\right]}_{1\times O}$. The algorithm for Phase 2 will later populate this list with suitable jobs.
- $Oven\_Idle\_time\_List$: the list of idle time intervals of each oven in a sequential order. Each element in the $Oven\_Idle\_time\_List$ is also a list which collects all the idle time intervals in the corresponding oven. Initially, each oven has only one idle time interval $\left[0,\infty \right)$, indicating that no task had been assigned to it yet.

## 5. Numerical Experiments

#### 5.1. Data

#### 5.2. Test Problems

#### 5.2.1. Small-Sized Test Problems

#### 5.2.2. Medium-Sized Test Problems

#### 5.2.3. Large-Sized Test Problems

#### 5.3. Result of the Test Problems Using the Proposed MILP Model

#### 5.3.1. Results of the Small-Sized Test Problems Using the Proposed MILP Model

#### 5.3.2. Results of the Medium-Sized Test Problems Using the Proposed MILP Model

#### 5.3.3. Results of the Large-Sized Test Problems Using the Proposed MILP Model

#### 5.4. Result of the Test Problems Using the Proposed 3P-PCB-PH Algorithm

#### 5.4.1. Results of the Small-Sized Test Problems Using the Proposed 3P-PCB-PH Algorithm

#### 5.4.2. Results of the Medium-Sized Test Problems Using the Proposed 3P-PCB-PH Algorithm

#### 5.4.3. Results of the Large-Sized Test Problems Using the Proposed 3P-PCB-PH Algorithm

## 6. Discussion

## 7. Conclusions

## Author Contributions

## Funding

## Acknowledgments

## Conflicts of Interest

## References

- Khandpur, R.S. Printed Circuit Boards: Design, Fabrication, Assembly and Testing; McGraw-Hill: New York, NY, USA, 2006. [Google Scholar]
- Gilmore, P.C.; Gomory, R.E. Multistage cutting stock problems of two and more dimensions. Oper. Res.
**1965**, 13, 94–120. [Google Scholar] [CrossRef] - Macedo, R.; Alves, C.; de Carvalho, J.M.V. Arc-flow model for the two-dimensional guillotine cutting stock problem. Comput. Oper. Res.
**2010**, 37, 991–1001. [Google Scholar] [CrossRef] - Mrad, M.; Meftahi, I.; Haouari, M. A branch-and-price algorithm for the two-stage guillotine cutting stock problem. J. Oper. Res. Soc.
**2013**, 64, 629–637. [Google Scholar] [CrossRef] - Alvarez-Valdes, R.; Parajon, A.; Tamarit, J.M. A computational study of LP-based heuristic algorithms for two-dimensional guillotine cutting stock problems. OR Spectr.
**2002**, 24, 179–192. [Google Scholar] [CrossRef] - Furini, F.; Malaguti, E.; Duran, R.M.; Persiani, A.; Toth, P. A column generation heuristic for the two-dimensional two-staged guillotine cutting stock problem with multiple stock size. Eur. J. Oper. Res.
**2012**, 218, 251–260. [Google Scholar] [CrossRef] - Tieng, K.; Sumetthapiwat, S.; Dumrongsiri, A.; Jeenanunta, C. Heuristics for two-dimensional rectangular guillotine cutting stock. Thail. Stat.
**2016**, 14, 147–164. [Google Scholar] - Sumetthapiwat, S.; Intiyot, B.; Jeenanunta, C. A column generation on two-dimensional cutting stock problem with fixed-size usable leftover and multiple stock sizes. Int. J. Logist. Manag.
**2020**, 35, 273–288. [Google Scholar] [CrossRef] - Onwubolu, G.C.; Clerc, M. Optimal path for automated drilling operations by a new heuristic approach using particle swarm optimization. Int. J. Prod. Res.
**2004**, 42, 473–491. [Google Scholar] [CrossRef] - Saealal, M.S.; Abidin, A.F.; Adam, A.; Mukred, J.; Khalil, K.; Yusof, Z.M.; Ibrahim, Z.; Nordin, N. An ant colony system for routing in PCB holes drilling process. IJIMIP
**2013**, 4, 50–56. [Google Scholar] - Lim, W.C.E.; Kanagaraj, G.; Ponnambalam, S.G. PCB drill path optimization by combinatorial cuckoo search algorithm. Sci. World J.
**2014**, 264518. [Google Scholar] [CrossRef] - Kanagaraj, G.; Ponnambalam, S.G.; Lim, W.C.E. Application of a hybridized cuckoo search-genetic algorithm to path optimization for PCB holes drilling process. In Proceedings of the IEEE International Conference on Automation Science and Engineering, Taipei, Taiwan, 18–22 August 2014; pp. 18–22. [Google Scholar]
- Ji, P.; Sze, M.T.; Lee, W.B. A genetic algorithm of determining cycle time for printed circuit board assembly lines. Eur. J. Oper. Res.
**2001**, 128, 175–184. [Google Scholar] [CrossRef] - Kodek, D.M.; Krisper, M. Optimal algorithm for minimizing production cycle time of a printed circuit board assembly line. Int. J. Prod. Res.
**2004**, 42, 5031–5048. [Google Scholar] [CrossRef] - Emet, S.; Knuutila, T.; Alhoniemi, E.; Maier, M.; Johnsson, M.; Nevalainen, O.S. Workload balancing in printed circuit board assembly. Int. J. Adv. Manuf. Technol.
**2010**, 50, 1175–1182. [Google Scholar] [CrossRef] - He, T.; Li, D.; Yoon, S.W. A heuristic algorithm to balance workloads of high-speed SMT machines in a PCB assembly line. Procedia Manuf.
**2017**, 11, 1790–1797. [Google Scholar] [CrossRef] - Damodaran, P.; Srihari, K.; Lam, S.S. Scheduling a capacitated batch-processing machine to minimize makespan. Robot. Comput. Integr. Manuf.
**2007**, 23, 208–216. [Google Scholar] [CrossRef] - Damodaran, P.; Diyadawagamage, D.A.; Ghrayeb, O.; Velez-Gallego, M.C. A particle swarm optimization algorithm for minimizing makespan of nonidentical parallel batch processing machines. Int. J. Adv. Manuf. Technol.
**2012**, 58, 1131–1140. [Google Scholar] [CrossRef] - Noroozi, A.; Mokhtari, H. Scheduling of printed circuit board (PCB) assembly systems with heterogeneous processors using simulation-based intelligent optimization methods. Neural. Comput. Appl.
**2015**, 26, 857–873. [Google Scholar] [CrossRef] - Hulett, M.; Damodaran, P.; Amouie, M. Scheduling non-identical parallel batch processing machines to minimize total weighted tardiness using particle swarm optimization. Comput. Ind. Eng.
**2017**, 113, 425–436. [Google Scholar] [CrossRef] - Ozguven, C.; Ozbakir, L.; Yavuz, Y. Mathematical models for job-shop scheduling problems with routing and process plan flexibility. Appl. Math. Model.
**2010**, 34, 1539–1548. [Google Scholar] [CrossRef] - Zhang, G.; Gao, L.; Shi, Y. An effective genetic algorithm for the flexible job-shop scheduling problem. Expert Syst. Appl.
**2011**, 38, 3563–3573. [Google Scholar] [CrossRef] - Li, X.; Gao, L. An effective hybrid genetic algorithm and tabu search for flexible job shop scheduling problem. Int. J. Prod. Econ.
**2016**, 174, 93–110. [Google Scholar] [CrossRef] - Luan, F.; Cai, Z.; Wu, S.; Liu, S.Q.; He, Y. Optimizing the low-carbon flexible job shop scheduling problem with discrete whale optimization algorithm. Mathematics
**2019**, 7, 688. [Google Scholar] [CrossRef] [Green Version] - Pan, C.H. A study of integer programming formulations for scheduling problems. Int. J. Syst. Sci.
**1997**, 28, 33–41. [Google Scholar] [CrossRef]

**Figure 9.**Gantt chart of the press machines for Problem 1 of the large-sized problems using the proposed MILP model.

**Figure 10.**Gantt chart of the ovens for Problem 1 of the large-sized problems using the proposed MILP model.

**Figure 11.**Gantt chart of the press machines for Problem 1 of the large-sized problems using the proposed 3P-PCB-PH algorithm.

**Figure 12.**Gantt chart of the ovens for Problem 1 of the large-sized problems using the proposed 3P-PCB-PH algorithm.

Panel | $\mathbf{Warp}\text{}\left(\mathit{a}\right)$ | $\mathbf{Fill}\text{}\left(\mathit{b}\right)$ | $\mathbf{Inner}\text{}\mathbf{Gap}\text{}\left(\mathit{g}\right)$ | $\mathbf{Outer}\text{}\mathbf{Gap}\text{}\left(\mathit{G}\right)$ |
---|---|---|---|---|

1 | 20.5 | 24 | 0.5 | 0.25 |

2 | 25.65 | 22.25 | 1 | 0.5 |

3 | 26 | 24 | 0.5 | 0.25 |

4 | 26.5 | 22.5 | 1 | 0.5 |

5 | 19 | 22.25 | 0.5 | 0.25 |

6 | 15 | 23.8 | 0.5 | 0.25 |

7 | 27.75 | 20.5 | 0.5 | 0.25 |

Stainless-Steel | $\mathbf{Warp}\text{}\left(\mathit{X}\right)$ | $\mathbf{Fill}\text{}\left(\mathit{Y}\right)$ |
---|---|---|

1 | 50 | 44 |

2 | 50 | 53 |

3 | 50 | 56 |

4 | 50 | 58 |

5 | 43 | 25.5 |

6 | 43 | 27 |

**Table 3.**Formulas for computing the number of panels of type $i$ per opening using SST size $k$ and layout $\left({a}_{ikl}\right)$.

$\mathbf{Layout}\text{}\left(\mathit{l}\right)$ | ${\mathit{a}}_{\mathit{i}\mathit{k}\mathit{l}}$ |
---|---|

1 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor \times \lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor $ |

2 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor \times \lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor $ |

3 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor +\left(\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor \times \lfloor \frac{Y-b-G-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor \right)$ |

4 | $\lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor +\left(\lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor \times \lfloor \frac{X-b-G-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor \right)$ |

5 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor +\left(\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor \times \lfloor \frac{Y-a-G-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor \right)$ |

6 | $\lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor +\left(\lfloor \frac{Y-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor \times \lfloor \frac{X-a-G-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor \right)$ |

7 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{a+g}\rfloor $ |

8 | $\lfloor \frac{X-2\left(G-\frac{g}{2}\right)}{b+g}\rfloor $ |

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}},\text{}\mathit{i}\in \left\{1,2,\dots ,\mathit{I}\right\}\text{}$ |
---|---|---|---|---|---|---|---|

1 | 3 | 6 | 8 | 3 | 2 | 6 | 110, 150, 125 |

2 | 3 | 6 | 8 | 3 | 2 | 8 | 200, 220, 230 |

3 | 3 | 6 | 8 | 3 | 2 | 12 | 270, 250, 210 |

4 | 3 | 6 | 8 | 4 | 2 | 6 | 110, 150, 125 |

5 | 3 | 6 | 8 | 4 | 3 | 6 | 110, 150, 125 |

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}},\text{}\mathit{i}\in \left\{1,2,\dots ,\mathit{I}\right\}\text{}$ |
---|---|---|---|---|---|---|---|

1 | 3 | 6 | 8 | 6 | 3 | 6 | 300, 300, 300 |

2 | 3 | 6 | 8 | 6 | 3 | 8 | 450, 480, 500 |

3 | 3 | 6 | 8 | 6 | 3 | 12 | 720, 900, 600 |

4 | 4 | 6 | 8 | 6 | 3 | 6 | 200, 300, 400, 100 |

5 | 4 | 6 | 8 | 6 | 3 | 8 | 300, 400, 200, 500 |

6 | 4 | 6 | 8 | 6 | 3 | 12 | 500, 700, 700, 500 |

7 | 5 | 6 | 8 | 6 | 3 | 6 | 200, 250, 200, 250, 200 |

8 | 5 | 6 | 8 | 6 | 3 | 8 | 400, 300, 200, 250, 300 |

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}},\text{}\mathit{i}\in \left\{1,2,\dots ,\mathit{I}\right\}\text{}$ |
---|---|---|---|---|---|---|---|

1 | 5 | 6 | 8 | 6 | 3 | 12 | 500, 500, 500, 500, 500 |

2 | 5 | 6 | 8 | 7 | 3 | 12 | 500, 500, 500, 500, 500 |

3 | 5 | 6 | 8 | 6 | 4 | 12 | 500, 500, 500, 500, 500 |

4 | 6 | 6 | 8 | 6 | 3 | 12 | 500, 360, 220, 180, 380, 720 |

5 | 6 | 6 | 8 | 7 | 3 | 12 | 500, 360, 220, 180, 380, 720 |

6 | 6 | 6 | 8 | 6 | 4 | 12 | 500, 360, 220, 180, 380, 720 |

7 | 7 | 6 | 8 | 6 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 |

8 | 7 | 6 | 8 | 7 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 |

9 | 7 | 6 | 8 | 6 | 4 | 12 | 300, 325, 290, 425, 450, 475, 200 |

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Model Size | Results | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Binary | Continuous | Constraint | Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | ||||||||

1 | 3 | 6 | 8 | 3 | 2 | 6 | 110, 150, 125 | 3060 | 128 | 3741 | 120, 160, 160 | 2.31 s | 1440 ^{a} |

2 | 3 | 6 | 8 | 3 | 2 | 8 | 200, 220, 230 | 4272 | 170 | 5373 | 200, 240, 240 | 2.48 s | 2160 ^{a} |

3 | 3 | 6 | 8 | 3 | 2 | 12 | 270, 250, 210 | 6984 | 254 | 9213 | 280, 280, 240 | 3.21 s | 2520 ^{a} |

4 | 3 | 6 | 8 | 4 | 2 | 6 | 110, 150, 125 | 4368 | 170 | 5563 | 120, 160, 160 | 8.15 s | 1200 ^{a} |

5 | 3 | 6 | 8 | 4 | 3 | 6 | 110, 150, 125 | 4824 | 218 | 6499 | 120, 160, 160 | 3.18 s | 1080 ^{a} |

^{a}Optimal solution.

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Model Size | Results | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Binary | Continuous | Constraint | Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | ||||||||

1 | 3 | 6 | 8 | 6 | 3 | 6 | 300, 300, 300 | 8532 | 326 | 12,339 | 320, 320, 320 | 32.81 s | 1560 ^{a} |

2 | 3 | 6 | 8 | 6 | 3 | 8 | 450, 480, 500 | 12,816 | 434 | 19,335 | 480, 480, 520 | 16.79 s | 2520 ^{a} |

3 | 3 | 6 | 8 | 6 | 3 | 12 | 720, 900, 600 | 23,544 | 650 | 37,647 | 720, 920, 600 | 1 min 28 s | 3600 ^{a} |

4 | 4 | 6 | 8 | 6 | 3 | 6 | 200, 300, 400, 100 | 10,260 | 326 | 14,068 | 200, 320, 400, 120 | 20.65 s | 1800 ^{a} |

5 | 4 | 6 | 8 | 6 | 3 | 8 | 300, 400, 200, 500 | 15,120 | 434 | 21,640 | 320, 400, 200, 520 | 3 min 59 s | 2280 ^{a} |

6 | 4 | 6 | 8 | 6 | 3 | 12 | 500, 700, 700, 500 | 27,000 | 650 | 41,104 | 520, 720, 720, 520 | 4 min 2 s | 3960 ^{a} |

7 | 5 | 6 | 8 | 6 | 3 | 6 | 200, 250, 200, 250, 200 | 11,988 | 326 | 15,797 | 200, 280, 200, 280, 200 | 9 min 31 s | 1920 ^{a} |

8 | 5 | 6 | 8 | 6 | 3 | 8 | 400, 300, 200, 250, 300 | 17,424 | 434 | 23,945 | 400, 320, 200, 280, 320 | 49.31 s | 2520 ^{a} |

^{a}Optimal solution.

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Model size | Results | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Binary | Continuous | Constraint | Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | ||||||||

1 | 5 | 6 | 8 | 6 | 3 | 12 | 500, 500, 500, 500, 500 | 30,456 | 650 | 44,561 | 520, 520, 520, 520, 520 | 44 min 38 s | 4080 ^{a} |

2 | 5 | 6 | 8 | 7 | 3 | 12 | 500, 500, 500, 500, 500 | 38,556 | 758 | 58,035 | 520, 520, 520, 520, 520 | 23 min 42 s | 3600 ^{a} |

3 | 5 | 6 | 8 | 6 | 4 | 12 | 500, 500, 500, 500, 500 | 34,848 | 794 | 53,417 | 520, 520, 520, 520, 520 | 2 h | 4080 ^{b} |

4 | 6 | 6 | 8 | 6 | 3 | 12 | 500, 360, 220, 180, 380, 720 | 33,912 | 650 | 48,018 | 520, 360, 240, 200, 400, 770 | 48 min 14 s | 3360 ^{a} |

5 | 6 | 6 | 8 | 7 | 3 | 12 | 500, 360, 220, 180, 380, 720 | 42,588 | 758 | 62,068 | 520, 360, 240, 200, 400, 770 | 2 h | 3000 ^{b} |

6 | 6 | 6 | 8 | 6 | 4 | 12 | 500, 360, 220, 180, 380, 720 | 38,304 | 794 | 56,874 | 520, 360, 240, 200, 400, 770 | 2 h | 3360 ^{b} |

7 | 7 | 6 | 8 | 6 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 | 37,368 | 650 | 51,475 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3720 ^{b} |

8 | 7 | 6 | 8 | 7 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 | 46,620 | 758 | 66,101 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3360 ^{b} |

9 | 7 | 6 | 8 | 6 | 4 | 12 | 300, 325, 290, 425, 450, 475, 200 | 41,760 | 794 | 60,331 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3720 ^{b} |

^{a}Optimal solution.

^{b}The best-known solution from the proposed MILP model.

**Table 10.**List of non-zero ${x}_{iklpt}$ values in the solution of Problem 1 of the large-sized problems using the proposed MILP model.

Press Machine | Non-Zero ${\mathit{x}}_{\mathit{i}\mathit{k}\mathit{l}\mathit{p}\mathit{t}}$ |
---|---|

1 | ${x}_{13111},{x}_{51212},{x}_{24213},{x}_{51214},{x}_{33215},\text{}{x}_{51216},{x}_{51217},{x}_{24218},{x}_{43219},{x}_{3221,10},{x}_{4321,11}$ |

2 | ${x}_{14621},{x}_{53622},{x}_{53223},{x}_{54524},{x}_{32225},\text{}{x}_{12626},{x}_{43227},{x}_{44228},{x}_{32229},{x}_{1222,10},{x}_{3222,11}$ |

3 | ${x}_{23431},{x}_{51532},{x}_{44233},{x}_{43234},{x}_{43235},\text{}{x}_{43236},{x}_{12437},{x}_{34238},{x}_{12239},{x}_{2343,10},{x}_{4423,11}$ |

4 | ${x}_{14141},{x}_{43242},{x}_{32243},{x}_{24244},{x}_{13445},\text{}{x}_{32246},{x}_{32247},{x}_{32248},{x}_{24649},{x}_{5414,10},{x}_{5134,11}$ |

5 | ${x}_{12151},{x}_{14352},{x}_{54553},{x}_{23454},{x}_{32255},\text{}{x}_{23656},{x}_{42257},{x}_{32258},{x}_{43259},{x}_{2365,10}$ |

6 | ${x}_{51361},{x}_{13362},{x}_{24663},{x}_{42264},{x}_{24665},\text{}{x}_{23466},{x}_{24467},{x}_{54468},{x}_{11269},{x}_{1126,10},{x}_{3426,11}$ |

**Table 11.**List of non-zero ${X}_{pto}$ values in the solution of Problem 1 of the large-sized problems using the proposed MILP model.

Press Machine | Non-Zero ${\mathit{X}}_{\mathit{p}\mathit{t}\mathit{o}}$ |
---|---|

1 | ${X}_{111},\text{}{X}_{122},\text{}{X}_{131},\text{}{X}_{142},\text{}{X}_{151},\text{}{X}_{161},{X}_{171},{X}_{181},{X}_{191},{X}_{1,10,3},{X}_{1,11,3}$ |

2 | ${X}_{212},\text{}{X}_{223},\text{}{X}_{233},\text{}{X}_{241},\text{}{X}_{253},\text{}{X}_{263},\text{}{X}_{272},\text{}{X}_{282},\text{}{X}_{292},\text{}{X}_{2,10,1},\text{}{X}_{2,11,1}$ |

3 | ${X}_{311},\text{}{X}_{322},\text{}{X}_{331},\text{}{X}_{341},\text{}{X}_{353},\text{}{X}_{363},\text{}{X}_{373},\text{}{X}_{383},\text{}{X}_{393},\text{}{X}_{3,10,2},\text{}{X}_{3,11,2}$ |

4 | ${X}_{412},\text{}{X}_{421},\text{}{X}_{433},\text{}{X}_{442},\text{}{X}_{451},\text{}{X}_{461},{X}_{472},{X}_{482},{X}_{491},{X}_{4,10,1},{X}_{4,11,3}$ |

5 | ${X}_{513},\text{}{X}_{522},\text{}{X}_{531},\text{}{X}_{543},\text{}{X}_{553},\text{}{X}_{563},\text{}{X}_{573},\text{}{X}_{581},\text{}{X}_{593},\text{}{X}_{5,10,2}$ |

6 | ${X}_{613},\text{}{X}_{623},\text{}{X}_{632},\text{}{X}_{643},\text{}{X}_{652},\text{}{X}_{662},\text{}{X}_{673},\text{}{X}_{681},\text{}{X}_{692},\text{}{X}_{6,10,3},\text{}{X}_{6,11,1}$ |

**Table 12.**Computational results of the small-sized test problems using the proposed 3P-PCB-PH algorithm.

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Results Using Proposed MILP Model | Results Using Proposed 3P-PCB-PH Algorithm | %gap | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | Outputs | Avg CPU Time (SD) | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | |||||||||

1 | 3 | 6 | 8 | 3 | 2 | 6 | 110, 150, 125 | 120, 160, 160 | 2.31 s | 1440 ^{a} | 120, 160, 160 | 0.00349 s (0.00085 s) | 1440 ^{a} | 0% |

2 | 3 | 6 | 8 | 3 | 2 | 8 | 200, 220, 230 | 200, 240, 240 | 2.48 s | 2160 ^{a} | 200, 240, 240 | 0.00488 s (0.00246 s) | 2160 ^{a} | 0% |

3 | 3 | 6 | 8 | 3 | 2 | 12 | 270, 250, 210 | 280, 280, 240 | 3.21 s | 2520 ^{a} | 280, 280, 240 | 0.00658 s (0.00346 s) | 2520 ^{a} | 0% |

4 | 3 | 6 | 8 | 4 | 2 | 6 | 110, 150, 125 | 120, 160, 160 | 8.15 s | 1200 ^{a} | 120, 160, 160 | 0.00598 s (0.00342 s) | 1200 ^{a} | 0% |

5 | 3 | 6 | 8 | 4 | 3 | 6 | 110, 150, 125 | 120, 160, 160 | 3.18 s | 1080 ^{a} | 120, 160, 160 | 0.00509 s (0.00371 s) | 1080 ^{a} | 0% |

^{a}Optimal solution.

**Table 13.**Computational results of the medium-sized test problems using the proposed 3P-PCB-PH algorithm.

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Results Using Proposed MILP Model | Results Using Proposed 3P-PCB-PH Algorithm | %gap | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | Outputs | Avg CPU Time (SD) | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | |||||||||

1 | 3 | 6 | 8 | 6 | 3 | 6 | 300, 300, 300 | 320, 320, 320 | 32.81 s | 1560 ^{a} | 320, 320, 320 | 0.00469 s (0.00141 s) | 1560 ^{a} | 0% |

2 | 3 | 6 | 8 | 6 | 3 | 8 | 450, 480, 500 | 480, 480, 520 | 16.79 s | 2520 ^{a} | 480, 480, 520 | 0.00519 s (0.00248 s) | 2520 ^{a} | 0% |

3 | 3 | 6 | 8 | 6 | 3 | 12 | 720, 900, 600 | 720, 920, 600 | 1 min 28 s | 3600 ^{a} | 720, 920, 600 | 0.00658 s (0.00245 s) | 3600 ^{a} | 0% |

4 | 4 | 6 | 8 | 6 | 3 | 6 | 200, 300, 400, 100 | 200, 320, 400, 120 | 20.65 s | 1800 ^{a} | 200, 320, 400, 120 | 0.00599 s (0.00266 s) | 1800 ^{a} | 0% |

5 | 4 | 6 | 8 | 6 | 3 | 8 | 300, 400, 200, 500 | 320, 400, 200, 520 | 3 min 59 s | 2280 ^{a} | 320, 400, 200, 520 | 0.00768 s (0.00342 s) | 2280 ^{a} | 0% |

6 | 4 | 6 | 8 | 6 | 3 | 12 | 500, 700, 700, 500 | 520, 720, 720, 520 | 4 min 2 s | 3960 ^{a} | 520, 720, 720, 520 | 0.00927 s (0.00509 s) | 3960 ^{a} | 0% |

7 | 5 | 6 | 8 | 6 | 3 | 6 | 200, 250, 200, 250, 200 | 200, 280, 200, 280, 200 | 9 min 31 s | 1920 ^{a} | 200, 280, 200, 280, 200 | 0.00768 s (0.00282 s) | 1920 ^{a} | 0% |

8 | 5 | 6 | 8 | 6 | 3 | 8 | 400, 300, 200, 250, 300 | 400, 320, 200, 280, 320 | 49.31 s | 2520 ^{a} | 400, 320, 200, 280, 320 | 0.00909 s (0.00331 s) | 2520 ^{a} | 0% |

^{a}Optimal solution.

**Table 14.**Computational results of the large-sized test problems using the proposed 3P-PCB-PH algorithm.

No. | $\mathit{I}$ | $\mathit{K}$ | $\mathit{L}$ | $\mathit{P}$ | $\mathit{O}$ | $\mathit{T}$ | ${\mathit{d}}_{\mathit{i}}$ | Results Using Proposed MILP Model | Results Using Proposed 3P-PCB-PH Algorithm | %gap | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Outputs | CPU Time | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | Outputs | Avg CPU Time (SD) | ${\mathit{C}}_{\mathit{m}\mathit{a}\mathit{x}}$ $\left(\mathbf{m}\mathbf{i}\mathbf{n}\right)$ | |||||||||

1 | 5 | 6 | 8 | 6 | 3 | 12 | 500, 500, 500, 500, 500 | 520, 520, 520, 520, 520 | 44 min 38 s | 4080 ^{a} | 520, 520, 520, 520, 520 | 0.00928 s (0.00346 s) | 4080 ^{a} | 0% |

2 | 5 | 6 | 8 | 7 | 3 | 12 | 500, 500, 500, 500, 500 | 520, 520, 520, 520, 520 | 23 min 42 s | 3600 ^{a} | 520, 520, 520, 520, 520 | 0.00918 s (0.00297 s) | 3600 ^{a} | 0% |

3 | 5 | 6 | 8 | 6 | 4 | 12 | 500, 500, 500, 500, 500 | 520, 520, 520, 520, 520 | 2 h | 4080 ^{b} | 520, 520, 520, 520, 520 | 0.00987 s (0.00447 s) | 4080 | 0% ^{c} |

4 | 6 | 6 | 8 | 6 | 3 | 12 | 500, 360, 220, 180, 380, 720 | 520, 360, 240, 200, 400, 770 | 48 min 14 s | 3360 ^{a} | 520, 360, 240, 200, 400, 770 | 0.00997 s (0.00326 s) | 3360 ^{a} | 0% |

5 | 6 | 6 | 8 | 7 | 3 | 12 | 500, 360, 220, 180, 380, 720 | 520, 360, 240, 200, 400, 770 | 2 h | 3000 ^{b} | 520, 360, 240, 200, 400, 770 | 0.00908 s (0.00291 s) | 3000 | 0% ^{c} |

6 | 6 | 6 | 8 | 6 | 4 | 12 | 500, 360, 220, 180, 380, 720 | 520, 360, 240, 200, 400, 770 | 2 h | 3360 ^{b} | 520, 360, 240, 200, 400, 770 | 0.00993 s (0.00575 s) | 3360 | 0% ^{c} |

7 | 7 | 6 | 8 | 6 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3720 ^{b} | 320, 360, 320, 440, 480, 490, 200 | 0.01015 s (0.00319 s) | 3720 | 0% ^{c} |

8 | 7 | 6 | 8 | 7 | 3 | 12 | 300, 325, 290, 425, 450, 475, 200 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3360 ^{b} | 320, 360, 320, 440, 480, 490, 200 | 0.01250 s (0.00504 s) | 3360 | 0% ^{c} |

9 | 7 | 6 | 8 | 6 | 4 | 12 | 300, 325, 290, 425, 450, 475, 200 | 320, 360, 320, 440, 480, 490, 200 | 2 h | 3720 ^{b} | 320, 360, 320, 440, 480, 490, 200 | 0.01057 s (0.00566 s) | 3720 | 0% ^{c} |

^{a}Optimal solution.

^{b}The best-known solution from the proposed MILP model.

^{c}The $\%gap$ between the solution from the heuristic algorithm and the best-known solution from the MILP model.

**Table 15.**List of non-zero ${x}_{iklpt}$ values in the solution of Problem 1 of the large-sized problems using the proposed 3P-PCB-PH algorithm.

Press Machine | Non-Zero ${\mathit{x}}_{\mathit{i}\mathit{k}\mathit{l}\mathit{p}\mathit{t}}$ |
---|---|

1 | ${x}_{11211},{x}_{11212},{x}_{11213},{x}_{23214},{x}_{23215},\text{}{x}_{32216},{x}_{32217},{x}_{43218},{x}_{43219},{x}_{5121,10},{x}_{5121,11}$ |

2 | ${x}_{11221},{x}_{11222},{x}_{23223},{x}_{23224},{x}_{23225},\text{}{x}_{32226},{x}_{32227},{x}_{43228},{x}_{43229},{x}_{5122,10},{x}_{5122,11}$ |

3 | ${x}_{11231},{x}_{11232},{x}_{23233},{x}_{23234},{x}_{32235},\text{}{x}_{32236},{x}_{32237},{x}_{43238},{x}_{43239},{x}_{5123,10},{x}_{5123,11}$ |

4 | ${x}_{11241},{x}_{11242},{x}_{23243},{x}_{23244},{x}_{32245},\text{}{x}_{32246},{x}_{43247},{x}_{43248},{x}_{43249},{x}_{5124,10},{x}_{5124,11}$ |

5 | ${x}_{11251},{x}_{11252},{x}_{23253},{x}_{23254},{x}_{32255},\text{}{x}_{32256},{x}_{43257},{x}_{43258},{x}_{51259},{x}_{5125,10},{x}_{5125,11}$ |

6 | ${x}_{11261},{x}_{11262},{x}_{23263},{x}_{23264},{x}_{32265},\text{}{x}_{32266},{x}_{43267},{x}_{43268},{x}_{51269},{x}_{5126,10}$ |

**Table 16.**List of non-zero ${X}_{pto}$ values in the solution of Problem 1 of the large-sized problems using the proposed 3P-PCB-PH algorithm.

Press Machine | Non-Zero ${\mathit{X}}_{\mathit{p}\mathit{t}\mathit{o}}$ |
---|---|

1 | ${X}_{111},\text{}{X}_{121},\text{}{X}_{131},\text{}{X}_{141},\text{}{X}_{151},\text{}{X}_{161},{X}_{171},{X}_{181},{X}_{191},{X}_{1,10,1},{X}_{1,11,1}$ |

2 | ${X}_{212},\text{}{X}_{222},\text{}{X}_{232},\text{}{X}_{242},\text{}{X}_{252},\text{}{X}_{262},\text{}{X}_{272},\text{}{X}_{282},\text{}{X}_{292},\text{}{X}_{2,10,2},\text{}{X}_{2,11,2}$ |

3 | ${X}_{313},\text{}{X}_{323},\text{}{X}_{333},\text{}{X}_{343},\text{}{X}_{353},\text{}{X}_{363},\text{}{X}_{373},\text{}{X}_{383},\text{}{X}_{393},\text{}{X}_{3,10,3},\text{}{X}_{3,11,3}$ |

4 | ${X}_{411},\text{}{X}_{421},\text{}{X}_{431},\text{}{X}_{441},\text{}{X}_{451},\text{}{X}_{461},{X}_{471},{X}_{481},{X}_{491},{X}_{4,10,1},{X}_{4,11,1}$ |

5 | ${X}_{512},\text{}{X}_{522},\text{}{X}_{532},\text{}{X}_{542},\text{}{X}_{552},\text{}{X}_{562},\text{}{X}_{572},\text{}{X}_{582},\text{}{X}_{592},\text{}{X}_{5,10,2},\text{}{X}_{5,11,2}$ |

6 | ${X}_{613},\text{}{X}_{623},\text{}{X}_{633},\text{}{X}_{643},\text{}{X}_{653},\text{}{X}_{663},\text{}{X}_{673},\text{}{X}_{683},\text{}{X}_{693},\text{}{X}_{6,10,3}$ |

Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |

© 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).

## Share and Cite

**MDPI and ACS Style**

Laisupannawong, T.; Intiyot, B.; Jeenanunta, C.
Mixed-Integer Linear Programming Model and Heuristic for Short-Term Scheduling of Pressing Process in Multi-Layer Printed Circuit Board Manufacturing. *Mathematics* **2021**, *9*, 653.
https://doi.org/10.3390/math9060653

**AMA Style**

Laisupannawong T, Intiyot B, Jeenanunta C.
Mixed-Integer Linear Programming Model and Heuristic for Short-Term Scheduling of Pressing Process in Multi-Layer Printed Circuit Board Manufacturing. *Mathematics*. 2021; 9(6):653.
https://doi.org/10.3390/math9060653

**Chicago/Turabian Style**

Laisupannawong, Teeradech, Boonyarit Intiyot, and Chawalit Jeenanunta.
2021. "Mixed-Integer Linear Programming Model and Heuristic for Short-Term Scheduling of Pressing Process in Multi-Layer Printed Circuit Board Manufacturing" *Mathematics* 9, no. 6: 653.
https://doi.org/10.3390/math9060653