<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="case-report">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Bohr. Omrp.</journal-id>
<journal-title>BOHR International Journal of Operations Management Research and Practices</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Bohr. Omrp.</abbrev-journal-title>
<issn pub-type="epub">2583-6420</issn>
<publisher>
<publisher-name>BOHR</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.54646/bijomrp.2023.14</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Case Report</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Application of GATS, a hybrid mega-heuristic model, and DOE, to solve flexible flow shop scheduling problems: a case study</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Nhu</surname> <given-names>Phong Nguyen</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x002A;</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Le</surname> <given-names>Thu Trang Nguyen</given-names></name>
</contrib>
</contrib-group>
<aff><institution>Industrial Systems Engineering, HCM University of Technology</institution>, <addr-line>Th&#x00E0;nh ph&#x1ED1; H&#x1ED3; Ch&#x00ED; Minh</addr-line>, <country>Vietnam</country></aff>
<author-notes>
<corresp id="c001">&#x002A;Correspondence: Phong Nguyen Nhu, <email>nnphong@hcmut.edu.vn</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>14</day>
<month>08</month>
<year>2023</year>
</pub-date>
<volume>2</volume>
<issue>1</issue>
<fpage>28</fpage>
<lpage>35</lpage>
<history>
<date date-type="received">
<day>17</day>
<month>07</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>26</day>
<month>07</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x00A9; 2023 Nhu and Le.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Nhu and Le</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by-nc-nd/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Flexible flow shop scheduling (FFSS) is an NP-hard combinatorial optimization problem. Solving this problem using mathematical modeling approaches is very difficult. Mega-heuristic algorithms, such as the genetic algorithm (GA) and tabu search (TS), are powerful tools for finding near-optimal solutions to problems of this type. This paper develops a GATS model by combining GA and TS for solving FFSS problems. In the model, GA is used as the platform for global search, and TS is used to support GA in local search. This paper also uses the design of experiments (DOE) to optimize the parameters of the GATS model. The performance of the models, GATS and GATS with DOE, is compared with traditional heuristics being used. The result indicates that the models are good approaches for FFSS problems.</p>
</abstract>
<kwd-group>
<kwd>genetic algorithm</kwd>
<kwd>tabu search</kwd>
<kwd>design of experiment</kwd>
<kwd>flexible flow shop scheduling</kwd>
<kwd>mathematical modeling</kwd>
<kwd>parallel machine scheduling</kwd>
<kwd>setup time</kwd>
<kwd>batch production</kwd>
<kwd>hybrid mega heuristic model</kwd>
</kwd-group>
<counts>
<fig-count count="6"/>
<table-count count="12"/>
<equation-count count="26"/>
<ref-count count="8"/>
<page-count count="8"/>
<word-count count="5360"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="intro">
<title>Introduction</title>
<p>Scheduling problems define the sequence in which a group of orders is efficiently processed through several machines. Flow shop scheduling (FSS) problems consider <italic>m</italic> machines and <italic>n</italic> orders, and all orders are processed in the same sequence. Parallel machine scheduling (PMS) problems involve sending <italic>n</italic> jobs to <italic>m</italic> parallel machines. An order can be processed on any machine. Machines can be homogeneous or heterogeneous. Machines are homogenous when they have the same processing time for each job. Machines are heterogeneous when the times to process the same job on different machines are different.</p>
<p>Flow shop scheduling problems are problems that combine FFS problems and PMS problems. So, FFSS problems are more complicated than FFS problems and PMS problems. FFSS problems include dispatching n jobs across w stations; each station has several parallel machines. Each job is executed sequentially through the stations in the same sequence, and only one machine at each station is selected for execution.</p>
<p>The problem to be solved is an FFSS problem, with the assumption that the orders are ready at the start of the scheduling process. The objective of the problem is to minimize the total tardiness of orders. The constraints are on the sequence of orders, on the sequence of operations in each order, on the allocation of orders on parallel machines in each station, on machine changeover time, and on batches produced in each machine.</p>
<p>The model of the problem is built based on the above assumptions, objectives, and constraints. The GATS algorithm is a combination of GA and TS, with the foundation of GA. Based on the model of the problem, the GATS algorithm will find a good solution for the problem. Design of experiment (DOE) is used to optimize the parameters of the GATS model. The solutions of GATS and GATS with DOE are compared with the solutions of the traditional heuristics being used to evaluate their effectiveness.</p>
</sec>
<sec id="S2">
<title>Literature review</title>
<sec id="S2.SS1">
<title>Flexible flow shop scheduling</title>
<p>Flow shop scheduling is renowned and classified as an NP-hard optimization problem (Berlinska and Przybylski, 2021), and several algorithms have been developed to overcome this problem (<xref ref-type="bibr" rid="B1">1</xref>, Lee and Loong, 2019). Palmer et al. and Gupta et al. proposed heuristic methods to solve <italic>n</italic>-job problems on <italic>m</italic>-machines (<xref ref-type="bibr" rid="B2">2</xref>). Chen et al. applied GA to these problems. However, the problem solving time of GAs is quite long.</p>
<p>The PMS problem has two distinct decisions: allocation and sequencing. Allocation is a decision concerning the assignment of jobs to machines, while sequencing is to order the jobs assigned to each machine (<xref ref-type="bibr" rid="B3">3</xref>). When the number of machines is large, mega-heuristic algorithms such as GA and TS are usually used instead of optimal methods to solve the problem. To reduce the time to solve the problem, one solution is to coordinate between GA and TS (where GA is used for global search and TS is used for local search).</p>
</sec>
<sec id="S2.SS2">
<title>Genetic algorithm</title>
<p>Genetic algorithm, first introduced by Holland in 1975, is a powerful search engine to solve optimization problems using evolution and natural selection of selected individuals called chromosomes. Feasible solutions to the problem are modeled by chromosomes. The population of chromosomes represents the solution space of the problem. Chromosomes are represented by strings. A method of coding is used to define the string format for the chromosomes.</p>
<p>Each chromosome has a corresponding fitness value. The fitness function is a measure of the extent to which the objective of the problem is achieved. The fitness function is derived from the objective function of the problem.</p>
<p>An initial population is made up of several chromosomes. The next population is created by applying genetic operators to the chromosomes of the current generation. Genetic operators include selection, crossover, mutation, and replacement. The algorithm creates a new population from the existing population. The next population is probably better than the current population. This process is repeated until a specified stopping condition is met.</p>
</sec>
<sec id="S2.SS3">
<title>Tabu search</title>
<p>Tabu search, introduced by Glover and Laguna in 1997, is also an effective search engine to solve optimization problems. Feasible solutions to the problem are modeled by strings. The population of strings represents the solution space of the problem. Strings are represented by codes. A method of coding is used to define the string format for the codes.</p>
<p>Each string has a corresponding evaluation value. The evaluation function is a measure of the extent to which the objective of the problem is achieved. The evaluation function is derived from the objective function of the problem. The F-best value is the best evaluation value found during the search.</p>
<p>Tabu search explores the solution space beyond local optimality. The properties of the search path are memorized, and choices are made to guide the search out of the local optimum and into different regions. Some moves to previously explored areas are prohibited to avoid local optimization. Recent moves are taboo and stored in the tabu list. The tabu list identifies all moves that do not apply to the current solution. The size of the tabu list is an algorithm parameter that needs to be determined.</p>
<p>An initial solution is identified. The neighborhood operator will determine the neighborhood region for the current solution. The next solution, which may not be as good as the current solution, is determined by applying the selection operator to select the best solution in the current neighborhood region. The selected solution must not violate the tabu list. The process is repeated until a specified stopping condition is met.</p>
</sec>
</sec>
<sec id="S3">
<title>The flexible flow shop scheduling problem</title>
<p>The problem to be solved is an FFSS problem with nine orders, O<italic><sub><italic>i</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9, and scheduling on four stations, S<italic><sub><italic>j</italic></sub></italic>, <italic>j</italic> = 1 &#x00F7; 4. Each order consists of many products, manufactured in batches at each machine in the stations. Each station has three homogeneous machines. The due time D<italic><sub><italic>i</italic></sub></italic>, the processing time P<italic><sub><italic>ij</italic></sub></italic>, and the batch time B<italic><sub><italic>ij</italic></sub></italic> for order <italic>i</italic>, <italic>i</italic> = 1 &#x00F7; 9, on station <italic>j</italic>, <italic>j</italic> = 1 &#x00F7; 4, are estimated in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap position="float" id="T1">
<label>TABLE 1</label>
<caption><p>Input data for model.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left"><italic>I</italic></td>
<td valign="top" align="center">D<italic><sub><italic>j</italic></sub></italic> (<italic>h</italic>)</td>
<td valign="top" align="center">P<italic><sub><italic>i</italic></sub></italic><sub>1</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">P<sub><italic>i2</italic></sub> (<italic>h</italic>)</td>
<td valign="top" align="center">P<italic><sub><italic>i</italic></sub></italic><sub>3</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">P<italic><sub><italic>i</italic></sub></italic><sub>4</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">B<italic><sub><italic>i</italic></sub></italic><sub>1</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">B<italic><sub><italic>i</italic></sub></italic><sub>2</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">B<italic><sub><italic>i</italic></sub></italic><sub>3</sub> (<italic>h</italic>)</td>
<td valign="top" align="center">B<italic><sub><italic>i</italic></sub></italic><sub>4</sub> (<italic>h</italic>)</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">21</td>
<td valign="top" align="center">20.04</td>
<td valign="top" align="center">12.14</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">13.74</td>
<td valign="top" align="center">1.33</td>
<td valign="top" align="center">4.83</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2.5</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">12</td>
<td valign="top" align="center">6.83</td>
<td valign="top" align="center">10.62</td>
<td valign="top" align="center">7.63</td>
<td valign="top" align="center">1.33</td>
<td valign="top" align="center">0.92</td>
<td valign="top" align="center">1.75</td>
<td valign="top" align="center">1.57</td>
<td valign="top" align="center">0.67</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">15</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">4.58</td>
<td valign="top" align="center">1.65</td>
<td valign="top" align="center">7.04</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">1.17</td>
<td valign="top" align="center">1.31</td>
<td valign="top" align="center">0.09</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">11</td>
<td valign="top" align="center">23.05</td>
<td valign="top" align="center">7.42</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0.28</td>
<td valign="top" align="center">0.12</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">5</td>
<td valign="top" align="center">21</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">5.39</td>
<td valign="top" align="center">9.18</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0.31</td>
<td valign="top" align="center">0.68</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">6</td>
<td valign="top" align="center">25</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2.67</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">7</td>
<td valign="top" align="center">18</td>
<td valign="top" align="center">9</td>
<td valign="top" align="center">13</td>
<td valign="top" align="center">14.67</td>
<td valign="top" align="center">3.67</td>
<td valign="top" align="center">1.35</td>
<td valign="top" align="center">1.95</td>
<td valign="top" align="center">2.2</td>
<td valign="top" align="center">0.55</td>
</tr>
<tr>
<td valign="top" align="left">8</td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">3.12</td>
<td valign="top" align="center">3.63</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">1.81</td>
<td valign="top" align="center">2.1</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">9</td>
<td valign="top" align="center">18</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">1.17</td>
<td valign="top" align="center">1.53</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2.33</td>
<td valign="top" align="center">3.06</td>
<td valign="top" align="center">0</td>
</tr>
</tbody>
</table></table-wrap>
<p>The setup times of the machines in station j are estimated in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap position="float" id="T2">
<label>TABLE 2</label>
<caption><p>Setup times of machine stations.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left"><italic>j</italic></td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">4</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">S<italic><sub><italic>j</italic></sub></italic> (<italic>h</italic>)</td>
<td valign="top" align="center">0.15</td>
<td valign="top" align="center">0.2</td>
<td valign="top" align="center">0.15</td>
<td valign="top" align="center">0.1</td>
</tr>
</tbody>
</table></table-wrap>
<p>The model is set up with variables. TS<italic><sub><italic>ijk</italic></sub></italic> being the time to start order O<italic><sub><italic>i</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9 on station S<italic><sub><italic>j</italic></sub></italic>, <italic>j</italic> = 1 &#x00F7; 4, machine <italic>k</italic>, <italic>k</italic> = 1 &#x00F7; 3; X<italic><sub><italic>ijk</italic></sub></italic> being the binary variable, whether order O<italic><sub><italic>i</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9 will process on station S<italic><sub><italic>j</italic></sub></italic>, <italic>j</italic> = 1 &#x00F7; 4, machine <italic>k</italic>, <italic>k</italic> = 1 &#x00F7; 3 or not; TE<italic><sub><italic>ijk</italic></sub></italic> being the time to end order O<italic><sub><italic>i</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9 on station S<italic><sub><italic>j</italic></sub></italic>, <italic>j</italic> = 1 &#x00F7; 4, machine <italic>k</italic>, <italic>k</italic> = 1 &#x00F7; 3; T<italic><sub><italic>i</italic></sub></italic> being the tardiness time of job <italic>i</italic>. The model of the problem is as follows:</p>
<disp-formula id="S3.Ex1">
<mml:math id="M1">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mi>MinT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mi mathvariant="normal">&#x03A3;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mpadded width="+3.3pt">
<mml:mi>i</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x00F7;</mml:mo>
<mml:mn>9</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>St.</p>
<list list-type="simple">
<list-item>
<label>&#x2013;</label>
<p>TE<italic><sub><italic>ijk</italic></sub></italic> = TS<italic><sub><italic>ijk</italic></sub></italic> + (S<italic><sub><italic>j</italic></sub></italic> + P<italic><sub><italic>ij</italic></sub></italic>) &#x002A; X<italic><sub><italic>ijk</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4, <italic>k</italic> = 1 &#x00F7; 3</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>T<italic><sub><italic>i</italic></sub></italic> = max (TE<italic><sub><italic>i</italic></sub></italic><sub>4</sub><italic><sub><italic>k</italic></sub></italic> &#x2013; D<italic><sub><italic>i</italic></sub></italic>, 0), <italic>i</italic> = 1 &#x00F7; 9, <italic>k</italic> = 1 &#x00F7; 3</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>&#x03A3;<italic><sub><italic>k</italic></sub></italic>X<italic><sub><italic>ijk</italic></sub></italic> = 1, &#x03A3;<italic><sub><italic>i</italic></sub></italic>X<italic><sub><italic>ijk</italic></sub></italic> = 1, <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4, <italic>k</italic> = 1 &#x00F7; 3</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>TS<italic><sub><italic>ijk</italic></sub></italic> &#x2265; Max (TS<italic><sub><italic>i</italic></sub></italic><sub>(</sub><italic><sub><italic>j</italic></sub></italic><sub>&#x2013;1)</sub><italic><sub><italic>k</italic></sub></italic> + B<italic><sub><italic>i</italic></sub></italic><sub>(</sub><italic><sub><italic>j</italic></sub></italic><sub>&#x2013;1)</sub>, TE<sub>(</sub><italic><sub><italic>i</italic></sub></italic><sub>&#x2013;1)</sub><italic><sub><italic>jk</italic></sub></italic>), <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4, <italic>k</italic> = 1 &#x00F7; 3</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>TS<italic><sub><italic>ij</italic></sub></italic><sub>1</sub> = max(0, min(TE<sub>(</sub><italic><sub><italic>i</italic></sub></italic><sub>&#x2013;1),</sub><italic><sub><italic>j</italic></sub></italic><sub>1</sub>)), <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>TS<italic><sub><italic>ijk</italic></sub></italic> = max(min(TE<sub>(</sub><italic><sub><italic>i</italic></sub></italic><sub>&#x2013;1)</sub><italic><sub><italic>jk</italic></sub></italic>), TS<italic><sub><italic>ij</italic></sub></italic><sub>(</sub><italic><sub><italic>k</italic></sub></italic><sub>&#x2013;1)</sub> + B<italic><sub><italic>ij</italic></sub></italic>), <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4, <italic>k</italic> = 2 &#x00F7; 3</p>
</list-item>
<list-item>
<label>&#x2013;</label>
<p>TS<italic><sub><italic>ijk</italic></sub></italic>, TE<italic><sub><italic>ijk</italic></sub></italic> &#x2265; 0; X<italic><sub><italic>ijk</italic></sub></italic> = {0,1}, <italic>i</italic> = 1 &#x00F7; 9, <italic>j</italic> = 1 &#x00F7; 4, <italic>k</italic> = 1&#x00F7;3</p>
</list-item>
</list>
<p>The company is currently using the LPT dispatching method. The objective value of <italic>T</italic> is 46.93 (<italic>h</italic>).</p>
</sec>
<sec id="S4">
<title>The GATS model for the Flexible flow shop scheduling problem</title>
<p>The above FFSS problem is a non-linear problem with a solution space of 4&#x002A;9!, or 1,451,520. The GATS model is used to solve the problem. In the model, GA is used to perform a global search of the solution space, and TS is used to perform a local search to refine the solution found by GA. The GATS procedure is as follows:</p>
<list list-type="simple">
<list-item><p>Step 1: Initialize the GATS model.</p>
</list-item>
<list-item><p>Step 2: Generate the initial population, <bold>P<sup>(0)</sup></bold>. Set <italic>k</italic> to 0.</p>
</list-item>
<list-item><p>Step 3: Generate elite population <bold>P<sub><italic>E</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>.</p>
</list-item>
<list-item><p>Step 4: Generate the genetic population <bold>P<sub><italic>G</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>.</p>
</list-item>
<list-item><p>Step 5: Generate the neighborhood population <bold>P<sub><italic>N</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>.</p>
</list-item>
<list-item><p>Step 6: Generate the next population <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>+1)</sup></bold>. Set <italic>k</italic> = <italic>k</italic> + 1.</p>
</list-item>
<list-item><p>Step 7: Check the termination rule. If not, return to Step 3. If yes, finish the loop.</p>
</list-item>
<list-item><p>Step 8: Run the algorithm a number of times to choose the best scheduling result.</p>
</list-item>
</list>
<p><bold>Step 1: Initialize the GATS model.</bold></p>
<p>This step sets up factors in GATS models, including the method of coding, the GA parameters, the TS parameters, and the termination rule.</p>
<p><italic><bold>The method of coding:</bold></italic> Each chromosome C is a string of four sub-chromosomes, S<italic><sub><italic>j</italic></sub></italic>, <italic>j</italic> = 1 &#x00F7; 4, corresponding to four stations. The orders are numbered from 1 to 9. Each sub-chromosome is a string of nine genes, G<italic><sub><italic>i</italic></sub></italic>, <italic>i</italic> = 1 &#x00F7; 9, corresponding to nine orders. The sequence of genes in a sub-chromosome represents the sequence of orders scheduled in the corresponding station:</p>
<disp-formula id="S4.Ex2">
<mml:math id="M3">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">C</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mn>1</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mn>2</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mn>3</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mmultiscripts>
<mml:mo stretchy="false">]</mml:mo>
<mml:mprescripts/>
<mml:mn>4</mml:mn>
<mml:none/>
</mml:mmultiscripts>
</mml:mrow>
<mml:mo>;</mml:mo>
<mml:mpadded width="-2.3pt">
<mml:mi mathvariant="normal">S</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo>=</mml:mo>
<mml:mprescripts/>
<mml:mi mathvariant="normal">j</mml:mi>
<mml:none/>
</mml:mmultiscripts>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex3">
<mml:math id="M5">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>1</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>2</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>3</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>4</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>5</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>6</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>7</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo>,</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>8</mml:mn>
<mml:none/>
</mml:mmultiscripts>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mmultiscripts>
<mml:mo stretchy="false">)</mml:mo>
<mml:mprescripts/>
<mml:mi>j</mml:mi>
<mml:none/>
<mml:mn>9</mml:mn>
<mml:none/>
</mml:mmultiscripts>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mpadded width="+3.3pt">
<mml:mi>j</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x00F7;</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p><italic><bold>The GA parameters</bold></italic> include fitness function, population size, and the parameters of GA operators, including selection, crossover, mutation, and replacement operators. The fitness function F is defined as F<italic><sub><italic>i</italic></sub></italic> = T<sub><italic>max</italic></sub> &#x2013; T<italic><sub><italic>i</italic></sub></italic>, where F<italic><sub><italic>i</italic></sub></italic> and T<italic><sub><italic>i</italic></sub></italic> are the fitness and objective values of chromosome <italic>i</italic> and T<sub><italic>max</italic></sub> is the maximum objective value in the population. The crossover method is <italic>POX (precedence operation crossover)</italic>, the mutation method is <italic>REM (reciprocal exchange mutation)</italic>, and the replacement method is acceptance threshold. The model parameters <italic>P</italic>, <italic>P</italic><sub><italic>c</italic></sub>, <italic>P</italic><sub><italic>m</italic></sub>, and <italic>K</italic> are chosen as follows:</p>
<disp-formula id="S4.Ex4">
<mml:math id="M7">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi>P</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>9</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi>P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+2.3pt">
<mml:mi>c</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.8</mml:mn>
<mml:mo>;</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi>P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+2.3pt">
<mml:mi>m</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="+3.3pt">
<mml:mi>K</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p><italic><bold>The TS parameters</bold></italic> include the <italic>neighborhood operator</italic> and the <italic>tabu list</italic>. The neighborhood operator uses the SWAP method to find the neighborhood chromosomes of a chromosome. The <italic>tabu list</italic> contains the chromosomes found in the previous iterations. At the end of each iteration, chromosomes moving into the next population must not be on the <italic>tabu list</italic>.</p>
<p><italic><bold>The termination rule:</bold></italic> The best objective value of the population T<sub><italic>min</italic></sub> does not improve or decrease after 10 consecutive iterations.</p>
<p><bold>Step 2: Generate the initial population P<sup>(0)</sup> and set <italic>k</italic> = 0.</bold></p>
<p>The initial population consists of nine chromosomes. There are four chromosomes generated from four heuristic rules: EDD, ERD, SPT, and LPT. The remaining chromosomes R1, &#x2026;, R5 are randomly generated. The chromosomes in the initial population, arranged in descending order of their objective values with their corresponding objective and fitness values, are shown in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<disp-formula id="S4.Ex5">
<mml:math id="M9">
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:none/>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mmultiscripts>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R5</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>LPT</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T3">
<label>TABLE 3</label>
<caption><p>The initial population <bold>P<sup>(0)</sup>.</bold></p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">P<sup>(0)</sup></td>
<td valign="top" align="center">S1</td>
<td valign="top" align="center">S2</td>
<td valign="top" align="center">S3</td>
<td valign="top" align="center">S4</td>
<td valign="top" align="center">T<italic><sub><italic>i</italic></sub></italic> (<italic>h</italic>)</td>
<td valign="top" align="center">F<italic><sub><italic>i</italic></sub></italic> (<italic>h</italic>)</td>
<td valign="top" align="center">P<italic><sub><italic>i</italic></sub></italic></td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">EDD</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">9.41</td>
<td valign="top" align="center">37.52</td>
<td valign="top" align="center">0.215</td>
</tr>
<tr>
<td valign="top" align="left">ERD</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">13.68</td>
<td valign="top" align="center">33.25</td>
<td valign="top" align="center">0.191</td>
</tr>
<tr>
<td valign="top" align="left">R2</td>
<td valign="top" align="center">741295863</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">15.21</td>
<td valign="top" align="center">31.72</td>
<td valign="top" align="center">0.182</td>
</tr>
<tr>
<td valign="top" align="left">SPT</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">968354217</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">16.34</td>
<td valign="top" align="center">30.59</td>
<td valign="top" align="center">0.176</td>
</tr>
<tr>
<td valign="top" align="left">R1</td>
<td valign="top" align="center">247195683</td>
<td valign="top" align="center">512637894</td>
<td valign="top" align="center">856724913</td>
<td valign="top" align="center">436215879</td>
<td valign="top" align="center">30.32</td>
<td valign="top" align="center">16.61</td>
<td valign="top" align="center">0.095</td>
</tr>
<tr>
<td valign="top" align="left">R4</td>
<td valign="top" align="center">546298173</td>
<td valign="top" align="center">342156879</td>
<td valign="top" align="center">874256913</td>
<td valign="top" align="center">236194567</td>
<td valign="top" align="center">33.87</td>
<td valign="top" align="center">13.06</td>
<td valign="top" align="center">0.075</td>
</tr>
<tr>
<td valign="top" align="left">R3</td>
<td valign="top" align="center">146295873</td>
<td valign="top" align="center">372651489</td>
<td valign="top" align="center">372456918</td>
<td valign="top" align="center">136254897</td>
<td valign="top" align="center">39.32</td>
<td valign="top" align="center">7.61</td>
<td valign="top" align="center">0.044</td>
</tr>
<tr>
<td valign="top" align="left">R5</td>
<td valign="top" align="center">826495173</td>
<td valign="top" align="center">649153872</td>
<td valign="top" align="center">124736985</td>
<td valign="top" align="center">631294758</td>
<td valign="top" align="center">43.15</td>
<td valign="top" align="center">3.78</td>
<td valign="top" align="center">0.022</td>
</tr>
<tr>
<td valign="top" align="left">LPT</td>
<td valign="top" align="center">417235689</td>
<td valign="top" align="center">712453869</td>
<td valign="top" align="center">756283914</td>
<td valign="top" align="center">137245689</td>
<td valign="top" align="center">46.93</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
</tr>
</tbody>
</table></table-wrap>
<p>This step also initializes the tabu list, TL, containing the chromosomes in <bold>P<sup>(0)</sup></bold>.</p>
<disp-formula id="S4.Ex6">
<mml:math id="M11">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi>TL</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R5</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>LPT</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p><bold>Step 3: Generate an elite population P<sub><italic>E</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup>.</bold></p>
<p>This step uses the selection operator to generate the elite population <bold>P<sub><italic>E</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> from <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>. Each chromosome in the current population has a corresponding fitness value F<italic><sub><italic>i</italic></sub></italic> and is selected for inclusion in the elite population <bold>P<sub><italic>E</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>, with the selection probability P<italic><sub><italic>i</italic></sub></italic> determined as follows:</p>
<disp-formula id="S4.Ex7">
<mml:math id="M13">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x03A3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x00F7;</mml:mo>
<mml:mn>9</mml:mn>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The selection probabilities P<italic><sub><italic>i</italic></sub></italic> are calculated as shown in <xref ref-type="table" rid="T3">Table 3</xref>. Random numbers are generated nine times based on P<italic><sub><italic>i</italic></sub></italic>; the chromosomes in <bold>P<sup>(0)</sup></bold> selected into the population <bold>P<sub><italic>E</italic></sub><sup>(0)</sup></bold> are as follows:</p>
<disp-formula id="S4.Ex8">
<mml:math id="M15">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msubsup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p><bold>Step 4: Generate the genetic population P<sub><italic>G</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup>.</bold></p>
<p>This step uses the crossover and mutation operators to generate the genetic population <bold>P<sub><italic>G</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> from the elite population <bold>P<sub><italic>E</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>. The genetic population <bold>P<sub><italic>G</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> includes the new chromosome generated from the crossover and mutation operators. The chromosomes of <bold>P<sub><italic>E</italic></sub><sup>(0)</sup></bold> are selected to be included in the crossover list P<sub><italic>c</italic></sub> with a crossover probability of 0.8. After generating nine random numbers, the set P<sub><italic>c</italic></sub> is determined as follows:</p>
<disp-formula id="S4.Ex9">
<mml:math id="M17">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:msub>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo rspace="5.8pt">,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo rspace="5.8pt">,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo rspace="5.8pt">,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Each pair of chromosomes in <bold>P<sub><italic>c</italic></sub></bold> is selected to cross over by the POX method, resulting in two new chromosomes in population <bold>P<italic><sup>C</sup></italic></bold>. R2 and ERD are crossed over to each other and generate two children, C1 and C2. SPT and R4 are crossed over to each other and generate two children, C3 and C4. The chromosomes in <bold>P<italic><sup>C</sup></italic></bold> and their objective values are shown in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<disp-formula id="S4.Ex10">
<mml:math id="M19">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">C</mml:mi>
</mml:msup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>C1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C4</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T4">
<label>TABLE 4</label>
<caption><p>The crossover population P<italic><sup>C</sup></italic>.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">P<italic><sup>C</sup></italic></td>
<td valign="top" align="center">S1</td>
<td valign="top" align="center">S2</td>
<td valign="top" align="center">S3</td>
<td valign="top" align="center">S4</td>
<td valign="top" align="center">T</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">C1</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">28.16</td>
</tr>
<tr>
<td valign="top" align="left">C2</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">32.05</td>
</tr>
<tr>
<td valign="top" align="left">C3</td>
<td valign="top" align="center">426958713</td>
<td valign="top" align="center">367254819</td>
<td valign="top" align="center">137245698</td>
<td valign="top" align="center">326548971</td>
<td valign="top" align="center">12.84</td>
</tr>
<tr>
<td valign="top" align="left">C4</td>
<td valign="top" align="center">136589274</td>
<td valign="top" align="center">983651427</td>
<td valign="top" align="center">493826517</td>
<td valign="top" align="center">146589273</td>
<td valign="top" align="center">21.29</td>
</tr>
</tbody>
</table></table-wrap>
<p>The chromosomes of <bold>P<sub><italic>E</italic></sub><sup>(0)</sup></bold> are also selected to be included in the mutation list P<sub><italic>m</italic></sub>, with a mutation probability of 0.2. After generating nine random numbers, the set P<sub><italic>m</italic></sub> is determined as follows:</p>
<disp-formula id="S4.Ex11">
<mml:math id="M21">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:msub>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo rspace="5.8pt">,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p>Each chromosome in <bold>P<sub><italic>m</italic></sub></bold> is selected to mutate by the REM method, resulting in one new chromosome in population <bold>P<italic><sup>M</sup></italic></bold>. R3 is mutated and generates M1. SPT is mutated and generates M2. The chromosomes in <bold>P<italic><sup>M</sup></italic></bold> and their objective values are shown in <xref ref-type="table" rid="T5">Table 5</xref>:</p>
<disp-formula id="S4.Ex12">
<mml:math id="M23">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
</mml:msup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>M1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M2</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T5">
<label>TABLE 5</label>
<caption><p>The mutation population P<italic><sup>M</sup></italic>.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">P<italic><sup>M</sup></italic></td>
<td valign="top" align="center">S1</td>
<td valign="top" align="center">S2</td>
<td valign="top" align="center">S3</td>
<td valign="top" align="center">S4</td>
<td valign="top" align="center">T</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">M1</td>
<td valign="top" align="center">741259863</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">17.15</td>
</tr>
<tr>
<td valign="top" align="left">M2</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">968453217</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">27.03</td>
</tr>
</tbody>
</table></table-wrap>
<p>After crossover and mutation, six new chromosomes are created in the population <bold>P<sub><italic>G</italic></sub><sup>(0)</sup></bold>. Their chromosomes and objective values are shown in <xref ref-type="table" rid="T5">Table 5</xref>:</p>
<disp-formula id="S4.Ex13">
<mml:math id="M25">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msubsup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>C1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M2</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p><bold>Step 5: Generate the neighborhood population P<sub><italic>N</italic></sub><sup>(k)</sup>.</bold></p>
<p>The populations <bold>P<sup>(k)</sup></bold> and <bold>P<sub><italic>G</italic></sub><sup>(k)</sup></bold> form the union population <bold>P<sub><italic>U</italic></sub><sup>(k)</sup> = P<sup>(k)</sup> &#x222A; P<sub><italic>G</italic></sub><sup>(k)</sup></bold>. This step uses the neighborhood operator to generate the neighborhood population <bold>P<sub><italic>N</italic></sub><sup>(k)</sup></bold> from the union population <bold>P<sub><italic>U</italic></sub><sup>(k)</sup></bold>. For the first iteration, <bold>P<sub><italic>U</italic></sub><sup>(0)</sup></bold> includes 15 chromosomes, of which 9 are in <bold>P<sup>(0)</sup></bold> and 6 are in <bold>P<sub><italic>G</italic></sub><sup>(0)</sup></bold>:</p>
<disp-formula id="S4.Ex14">
<mml:math id="M27">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msubsup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">U</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mmultiscripts>
<mml:mo>&#x222A;</mml:mo>
<mml:mprescripts/>
<mml:none/>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mmultiscripts>
<mml:mpadded width="+3.3pt">
<mml:msubsup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex15">
<mml:math id="M29">
<mml:mrow>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R5</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>LPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>M2</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The neighborhood operator swaps adjacent sub-chromosomes in each chromosome to generate neighborhood chromosomes. Each chromosome in <bold>P<sub><italic>U</italic></sub><sup>(0)</sup></bold> will have three neighborhood chromosomes. The best chromosome will be selected to move into <bold>P<sub><italic>N</italic></sub><sup>(0)</sup></bold> to go forward. Population <bold>P<sub><italic>N</italic></sub><sup>(0)</sup></bold> includes the best neighborhood chromosomes, as shown in <xref ref-type="table" rid="T6">Table 6</xref>:</p>
<disp-formula id="S4.Ex16">
<mml:math id="M31">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:msubsup>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>N1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N5</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N6</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N7</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N8</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N9</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N10</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex17">
<mml:math id="M33">
<mml:mrow>
<mml:mi>N11</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N12</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N13</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N14</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N15</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T6">
<label>TABLE 6</label>
<caption><p>The neighborhood population P<sub><italic>N</italic></sub><sup>(0)</sup>.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">P<sub><italic>N</italic></sub><sup>(0)</sup></td>
<td valign="top" align="center">S1</td>
<td valign="top" align="center">S2</td>
<td valign="top" align="center">S3</td>
<td valign="top" align="center">S4</td>
<td valign="top" align="center">T</td>
<td valign="top" align="center">Tabu</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">N1</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">9.41</td>
<td valign="top" align="center">Yes</td>
</tr>
<tr>
<td valign="top" align="left">N2</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">13.68</td>
<td valign="top" align="center">Yes</td>
</tr>
<tr>
<td valign="top" align="left">N3</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">741295863</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">14.11</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N4</td>
<td valign="top" align="center">968354217</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">15.02</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N5</td>
<td valign="top" align="center">546298173</td>
<td valign="top" align="center">342156879</td>
<td valign="top" align="center">236194587</td>
<td valign="top" align="center">874256913</td>
<td valign="top" align="center">25.94</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N6</td>
<td valign="top" align="center">247195683</td>
<td valign="top" align="center">512637894</td>
<td valign="top" align="center">436215879</td>
<td valign="top" align="center">856724913</td>
<td valign="top" align="center">26.71</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N7</td>
<td valign="top" align="center">146295873</td>
<td valign="top" align="center">372456918</td>
<td valign="top" align="center">372651489</td>
<td valign="top" align="center">136254897</td>
<td valign="top" align="center">38.79</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N8</td>
<td valign="top" align="center">826495173</td>
<td valign="top" align="center">124736985</td>
<td valign="top" align="center">649153872</td>
<td valign="top" align="center">631294758</td>
<td valign="top" align="center">39.17</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N9</td>
<td valign="top" align="center">712453869</td>
<td valign="top" align="center">417235689</td>
<td valign="top" align="center">756283914</td>
<td valign="top" align="center">137245689</td>
<td valign="top" align="center">42.13</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N10</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">421356789</td>
<td valign="top" align="center">28.16</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N11</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">327498156</td>
<td valign="top" align="center">32.05</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N12</td>
<td valign="top" align="center">367254819</td>
<td valign="top" align="center">426958713</td>
<td valign="top" align="center">137245698</td>
<td valign="top" align="center">326548971</td>
<td valign="top" align="center">11.25</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N13</td>
<td valign="top" align="center">136589274</td>
<td valign="top" align="center">493826517</td>
<td valign="top" align="center">983651427</td>
<td valign="top" align="center">146589273</td>
<td valign="top" align="center">75.00</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N14</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">741259863</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">33.91</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top" align="left">N15</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">968453217</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">18.55</td>
<td valign="top" align="center">No</td>
</tr>
</tbody>
</table></table-wrap>
<p>In <bold>P<sub><italic>N</italic></sub><sup>(0)</sup>,</bold> there are two chromosomes, N1 and N2, in the tabu list; the rest are not.</p>
<p><bold>Step 6: Generate the next population P<sup>(</sup><italic><sup>k</sup></italic><sup>+1)</sup>.</bold></p>
<p>The step uses the replacement operator to generate the next population <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>+1)</sup></bold> from the populations <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup> and P<sub><italic>N</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold>. The chromosomes from <bold>P<sub><italic>N</italic></sub><sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> will be added to the current population <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> to make the next population <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>+1)</sup></bold>, if they are not in the current tabu list and their objective values exceed an acceptable threshold, defined by the objective value of the threshold chromosome. The threshold chromosome is a chromosome in <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> with position n defined by population size <italic><bold>P</bold></italic> and threshold parameter <italic><bold>k</bold></italic> as follows:</p>
<disp-formula id="S4.Ex18">
<mml:math id="M35">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">n</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>With a population size of nine and a threshold parameter of two chosen, the threshold chromosome is the fourth chromosome of <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> in the top-down ranking. In order to keep the next population size constant, chromosomes in <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>)</sup></bold> with the lowest values are removed from the next population. This step also updates the tabu list by adding the chromosomes moved into the next population <bold>P<sup>(</sup><italic><sup>k</sup></italic><sup>+1)</sup></bold>.</p>
<p>In this iteration, the threshold chromosome is SPT, with a threshold value of 16.34. Chromosomes N3, N4, and N12 move into, and R3, R5, and LPT move out of the population. The chromosomes in the next population, <bold>P<sup>(1)</sup>,</bold> are shown in <xref ref-type="table" rid="T7">Table 7</xref>:</p>
<disp-formula id="S4.Ex19">
<mml:math id="M37">
<mml:mrow>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:none/>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mmultiscripts>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N12</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T7">
<label>TABLE 7</label>
<caption><p>The next population <bold>P<sup>(1)</sup></bold>.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">P<sup>(1)</sup></td>
<td valign="top" align="center">S1</td>
<td valign="top" align="center">S2</td>
<td valign="top" align="center">S3</td>
<td valign="top" align="center">S4</td>
<td valign="top" align="center">T</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">EDD</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">423798156</td>
<td valign="top" align="center">9.41</td>
</tr>
<tr>
<td valign="top" align="left">N12</td>
<td valign="top" align="center">367254819</td>
<td valign="top" align="center">426958713</td>
<td valign="top" align="center">137245698</td>
<td valign="top" align="center">326548971</td>
<td valign="top" align="center">11.25</td>
</tr>
<tr>
<td valign="top" align="left">ERD</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">123456789</td>
<td valign="top" align="center">13.68</td>
</tr>
<tr>
<td valign="top" align="left">N3</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">741295863</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">14.11</td>
</tr>
<tr>
<td valign="top" align="left">N4</td>
<td valign="top" align="center">968354217</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">15.02</td>
</tr>
<tr>
<td valign="top" align="left">R2</td>
<td valign="top" align="center">741295863</td>
<td valign="top" align="center">172635498</td>
<td valign="top" align="center">876425913</td>
<td valign="top" align="center">238915674</td>
<td valign="top" align="center">15.21</td>
</tr>
<tr>
<td valign="top" align="left">SPT</td>
<td valign="top" align="center">356892714</td>
<td valign="top" align="center">968354217</td>
<td valign="top" align="center">149382657</td>
<td valign="top" align="center">456892731</td>
<td valign="top" align="center">16.34</td>
</tr>
<tr>
<td valign="top" align="left">R1</td>
<td valign="top" align="center">247195683</td>
<td valign="top" align="center">512637894</td>
<td valign="top" align="center">856724913</td>
<td valign="top" align="center">436215879</td>
<td valign="top" align="center">30.32</td>
</tr>
<tr>
<td valign="top" align="left">R4</td>
<td valign="top" align="center">546298173</td>
<td valign="top" align="center">342156879</td>
<td valign="top" align="center">874256913</td>
<td valign="top" align="center">236194567</td>
<td valign="top" align="center">33.87</td>
</tr>
</tbody>
</table></table-wrap>
<p>The tabu list is updated after iteration 1 as follows:</p>
<disp-formula id="S4.Ex20">
<mml:math id="M39">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi>TL</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mi>EDD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>ERD</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R2</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>SPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R1</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>R5</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex21">
<mml:math id="M41">
<mml:mrow>
<mml:mi>LPT</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N3</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N4</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>N12</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p><bold>Step 7: Check the termination rule.</bold></p>
<p>After iteration 1, EDD is again the best chromosome with the best objective value of 9.41, appearing twice. The termination rule is not satisfied, so iteration 2 is executed. The results after 14 iterations are shown in <xref ref-type="table" rid="T8">Table 8</xref>.</p>
<table-wrap position="float" id="T8">
<label>TABLE 8</label>
<caption><p>The results after 21 iterations.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">Iterations</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">7</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">9</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">11</td>
<td valign="top" align="center">12</td>
<td valign="top" align="center">&#x2026;</td>
<td valign="top" align="center">21</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>T</italic>(<italic>h</italic>)</td>
<td valign="top" align="center">9.41</td>
<td valign="top" align="center">8.89</td>
<td valign="top" align="center">8.89</td>
<td valign="top" align="center">6.11</td>
<td valign="top" align="center">6.11</td>
<td valign="top" align="center">5.55</td>
<td valign="top" align="center">5.55</td>
<td valign="top" align="center">5.12</td>
<td valign="top" align="center">5.12</td>
<td valign="top" align="center">3.82</td>
<td valign="top" align="center">3.82</td>
<td valign="top" align="center">2.37</td>
<td valign="top" align="center">&#x2026;</td>
<td valign="top" align="center">2.37</td>
</tr>
</tbody>
</table></table-wrap>
<p>From the 12th iteration to the 21st iteration, the best objective value remains the same, the termination rule is satisfied, and the algorithm ends. The scheduling result for this run is as follows:</p>
<disp-formula id="S4.Ex22">
<mml:math id="M43">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">C</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>413296857</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>413297856</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>142379856</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>472319856</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex23">
<mml:math id="M45">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mn>2.37</mml:mn>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p><bold>Step 8: Run the algorithm a number of times to choose the best scheduling result.</bold></p>
<p>The algorithm is run 10 times with the results as shown in <xref ref-type="table" rid="T9">Table 9</xref>.</p>
<table-wrap position="float" id="T9">
<label>TABLE 9</label>
<caption><p>The results after 10 runs.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">Runs</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">7</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">9</td>
<td valign="top" align="center">10</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>T</italic>(<italic>h</italic>)</td>
<td valign="top" align="center">2.37</td>
<td valign="top" align="center">5.98</td>
<td valign="top" align="center">4.86</td>
<td valign="top" align="center">3.71</td>
<td valign="top" align="center">3.63</td>
<td valign="top" align="center">5.01</td>
<td valign="top" align="center">4.12</td>
<td valign="top" align="center">2.88</td>
<td valign="top" align="center">3.96</td>
<td valign="top" align="center">3.82</td>
</tr>
</tbody>
</table></table-wrap>
<p>The best scheduling result is found on the first run. The scheduling sequence <italic>C</italic> and the objective value <italic>T</italic> are as follows:</p>
<disp-formula id="S4.Ex24">
<mml:math id="M47">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">C</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>423981756</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>498132756</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>982713546</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>439782156</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S4.Ex25">
<mml:math id="M49">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mn>2.37</mml:mn>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The Gantt chart for the GATS model is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption><p>The Gantt chart by GATS model.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g001.tif"/>
</fig>
<p>The objective value according to the GATS model (2.37<italic>h</italic>) is less than the objective value according to the LPT model currently used (46.93<italic>h</italic>).</p>
</sec>
<sec id="S5">
<title>The GATS with DOE to solve the FFSS problem</title>
<p>The parameters of the above GATS model were selected empirically, so the results are not very good. Experimental design is used to determine the model parameters. Firstly, a binary experiment is conducted with the model parameters <italic>P</italic>, <italic>P</italic><sub><italic>c</italic></sub>, and <italic>P</italic><sub><italic>m</italic></sub> chosen as the input factors and the total tardiness time <italic>T</italic> chosen as the output factor. The levels of the input factors are chosen as in <xref ref-type="table" rid="T10">Table 10</xref>.</p>
<table-wrap position="float" id="T10">
<label>TABLE 10</label>
<caption><p>The binary levels of the input factors.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">Factors</td>
<td valign="top" align="center" colspan="2">Levels</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>P</italic></td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">12</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>c</italic></sub></td>
<td valign="top" align="center">0.6</td>
<td valign="top" align="center">0.8</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>m</italic></sub></td>
<td valign="top" align="center">0.2</td>
<td valign="top" align="center">0.3</td>
</tr>
</tbody>
</table></table-wrap>
<p>Each combination of input factors is tested five times. The total number of experiments is 40. The experimental results are collected. From the data, Analysis of variance is performed as in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption><p>The ANOVA of the binary experiment.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g002.tif"/>
</fig>
<p>From the above ANOVA table, with &#x03B1; of 0.05, the affected factors are factors <italic>P</italic> and <italic>P</italic><sub><italic>c</italic></sub>. The values of parameters to give the minimum objective value are shown in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<disp-formula id="S5.Ex26">
<mml:math id="M51">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>12</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.8</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">m</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.2</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption><p>The values of parameters to give the minimum objective value.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g003.tif"/>
</fig>
<p>A further experiment is conducted with the two affected factors chosen as the input factors and the total tardiness time <italic>T</italic> chosen as the output factor. The mutation probability P<sub><italic>m</italic></sub> is kept at 0.2. The levels of the input factors are chosen as in <xref ref-type="table" rid="T11">Table 11</xref>.</p>
<table-wrap position="float" id="T11">
<label>TABLE 11</label>
<caption><p>The multilevels of the input factors.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">Factors</td>
<td valign="top" align="center" colspan="5">Levels</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>P</italic></td>
<td valign="top" align="center">11</td>
<td valign="top" align="center">12</td>
<td valign="top" align="center">13</td>
<td valign="top" align="center">14</td>
<td valign="top" align="center">15</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>c</italic></sub></td>
<td valign="top" align="center">0.5</td>
<td valign="top" align="center">0.6</td>
<td valign="top" align="center">0.7</td>
<td valign="top" align="center">0.8</td>
<td valign="top" align="center">0.9</td>
</tr>
</tbody>
</table></table-wrap>
<p>There are 25 combinations of input factors. Each combination is experimented with four times. The total number of experiments is 100. The experimental results are collected. From the data, analysis of variance is performed as in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption><p>The ANOVA of the multilevels experiment.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g004.tif"/>
</fig>
<p>From the ANOVA shown in <xref ref-type="fig" rid="F4">Figure 4</xref>, with &#x03B1; of 0.05, the most affected factor is population size P. The values of parameters to give the minimum objective value are shown in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p>
<disp-formula id="S5.Ex27">
<mml:math id="M53">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>15</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.9</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption><p>The values of parameters must give the minimum objective value.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g005.tif"/>
</fig>
<p>The GATS model with DOE is run 10 times with the parameters defined by the experiment as follows:</p>
<disp-formula id="S5.Ex28">
<mml:math id="M55">
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mn>15</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.9</mml:mn>
<mml:mo>,</mml:mo>
<mml:mpadded width="-3.3pt">
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mpadded>
<mml:mmultiscripts>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mprescripts/>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">m</mml:mi>
</mml:mpadded>
<mml:none/>
</mml:mmultiscripts>
<mml:mn>0.2</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The results of the GATS model with DOE are shown in <xref ref-type="table" rid="T12">Table 12</xref>.</p>
<table-wrap position="float" id="T12">
<label>TABLE 12</label>
<caption><p>The results of the GATS with DOE after 10 runs.</p></caption>
<table cellspacing="5" cellpadding="5" frame="hsides" rules="groups">
<thead>
<tr>
<td valign="top" align="left">Runs</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">7</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">9</td>
<td valign="top" align="center">10</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>T</italic>(<italic>h</italic>)</td>
<td valign="top" align="center">0.86</td>
<td valign="top" align="center">0.04</td>
<td valign="top" align="center">0.65</td>
<td valign="top" align="center">5.57</td>
<td valign="top" align="center">3.18</td>
<td valign="top" align="center">1.18</td>
<td valign="top" align="center">0.04</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2.45</td>
<td valign="top" align="center">3.82</td>
</tr>
</tbody>
</table></table-wrap>
<p>The best scheduling result is found on the 8th run. The scheduling sequence <italic>C</italic> and the objective value <italic>T</italic> are as follows:</p>
<disp-formula id="S5.Ex29">
<mml:math id="M57">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">C</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>394218756</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>394127586</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>342791856</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>432198756</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S5.Ex30">
<mml:math id="M59">
<mml:mrow>
<mml:mrow>
<mml:mpadded width="+3.3pt">
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mpadded>
<mml:mo rspace="5.8pt">=</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The Gantt chart for the GATS model with DOE is shown in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption><p>The Gantt chart for the GATS model with DOE.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="bijomrp-2023-14-g006.tif"/>
</fig>
<p>The objective value according to the GATS model with DOE (0<italic>h</italic>) is less than the objective value according to the GATS model without DOE (2.37<italic>h</italic>).</p>
</sec>
<sec id="S6" sec-type="conclusion">
<title>Conclusion</title>
<p>The GATS model has been used to solve the FFSS problem with nine orders on four stations and three homogeneous parallel machines. In the model, GA is used as the platform to perform a global search of the solution space, and TS is used to perform a local search to refine the solution found by GA. The results show that the GATS model gives a better objective value of tardiness time than the heuristic LPT method being used.</p>
<p>Design of experiments has been used to optimize the parameters of the GATS model. The results show that the GATS model with DOE gives a better objective value of tardiness time than the GATS model without DOE. The GATS models without and with DOE have been used to solve the FFSS problem with small sizes. Future research will use the models to solve real-world problems.</p>
</sec>
<sec id="S7" sec-type="author-contributions">
<title>Author contributions</title>
<p>PN is the thesis advisor for TL. PN has developed the research models for the thesis. TL has collected the data and written a program to run the algorithms based on the models. PN has composed the research article based on the thesis. Both authors contributed to the article and approved the submitted version.</p>
</sec>
</body>
<back>
<ack><p>We extend our heartfelt appreciation to everyone who has contributed to the completion of this research article, especially our families, the HCMC University of Technology, and the scientific community for their invaluable support. We endorse the fact that your contributions have been instrumental in the successful completion of this work.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Umam</surname> <given-names>M</given-names></name> <name><surname>Mustafid</surname> <given-names>M</given-names></name> <name><surname>Suryono</surname> <given-names>S</given-names></name></person-group>. <article-title>A hybrid genetic algorithm and tabu search for minimizing makespan in flow shop scheduling problem.</article-title> <source><italic>J King Saud Univ Comput Inform Sci.</italic></source> (<year>2022</year>) <volume>34</volume>:<fpage>7459</fpage>&#x2013;<lpage>67</lpage>.</citation></ref>
<ref id="B2"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Etiler</surname> <given-names>O</given-names></name> <name><surname>Toklu</surname> <given-names>B</given-names></name> <name><surname>Atak</surname> <given-names>M</given-names></name> <name><surname>Wilson</surname> <given-names>J</given-names></name></person-group>. <article-title>A genetic algorithm for flow shop scheduling problems.</article-title> <source><italic>J Operat Res Soc.</italic></source> (<year>2004</year>) <volume>55</volume>:<fpage>830</fpage>&#x2013;<lpage>5</lpage>.</citation></ref>
<ref id="B3"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kim</surname> <given-names>S</given-names></name> <name><surname>Choi</surname> <given-names>H</given-names></name> <name><surname>Lee</surname> <given-names>D</given-names></name></person-group>. <article-title>Tabu search heuristics for parallel machine scheduling with sequence-dependent setup and ready times.</article-title> <source><italic>Proceedings of the International Conference on Computational Science and its Applications, vol Part III, Glasgow, UK, May 8-11, 2006.</italic></source> <publisher-loc>Glasgow</publisher-loc>: (<year>2006</year>). p. <fpage>728</fpage>&#x2013;<lpage>37</lpage>.</citation></ref>
<ref id="B4"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Helal</surname> <given-names>M</given-names></name> <name><surname>Rabadi</surname> <given-names>G</given-names></name> <name><surname>Al-Salem</surname> <given-names>A</given-names></name></person-group>. <article-title>A tabu search algorithm to minimize the makespan for the unrelated parallel machines scheduling problem with setup times.</article-title> <source><italic>Int J Operat Res.</italic></source> (<year>2006</year>) <volume>3</volume>:<fpage>182</fpage>&#x2013;<lpage>92</lpage>.</citation></ref>
<ref id="B5"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bilge</surname> <given-names>&#x00DC;</given-names></name> <name><surname>Kirac</surname> <given-names>F</given-names></name> <name><surname>Kurtulan</surname> <given-names>M</given-names></name> <name><surname>Pekgun</surname> <given-names>P</given-names></name></person-group>. <article-title>A tabu search algorithm for parallel machine total tardiness problem.</article-title> <source><italic>Comput Operat Res.</italic></source> (<year>2002</year>) <volume>31</volume>:<fpage>397</fpage>&#x2013;<lpage>414</lpage>.</citation></ref>
<ref id="B6"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kolahan</surname> <given-names>F</given-names></name> <name><surname>Tavakoli</surname> <given-names>A</given-names></name> <name><surname>Tajdin</surname> <given-names>B</given-names></name> <name><surname>Hosayni</surname> <given-names>M</given-names></name></person-group>. <article-title>Analysis of neighborhood generation and move selection strategies on the performance of Tabu Search.</article-title> <source><italic>Proceedings of the 6th WSEAS International Conference on Applied Computer Science, Tenerife, Canary Islands, Spain, December 16-18, 2006.</italic></source> <publisher-loc>Tenerife</publisher-loc>: (<year>2006</year>).</citation></ref>
<ref id="B7"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gupta</surname> <given-names>J</given-names></name> <name><surname>Palanimuthu</surname> <given-names>N</given-names></name> <name><surname>Chen</surname> <given-names>C-L</given-names></name></person-group>. <article-title>Designing a tabu search algorithm for the two-stage flow shop problem with secondary criterion.</article-title> <source><italic>Product Plann Control Manag Operat.</italic></source> (<year>1999</year>) <volume>10</volume>:<fpage>251</fpage>&#x2013;<lpage>65</lpage>.</citation></ref>
<ref id="B8"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Burduk</surname> <given-names>A</given-names></name> <name><surname>Musia&#x0142;</surname> <given-names>K</given-names></name> <name><surname>Kocha&#x0144;ska</surname> <given-names>J</given-names></name> <name><surname>G&#x00F3;rnicka</surname> <given-names>D</given-names></name> <name><surname>Stetsenko</surname> <given-names>A</given-names></name></person-group>. <article-title>Tabu Search and genetic algorithm for production process scheduling problem.</article-title> <source><italic>Logforum.</italic></source> (<year>2019</year>) <volume>15</volume>:<fpage>181</fpage>&#x2013;<lpage>9</lpage>.</citation></ref>
</ref-list>
</back>
</article>
