<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">40505</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2023.040505</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Research on Optimization of Dual-Resource Batch Scheduling in Flexible Job Shop</article-title>
<alt-title alt-title-type="left-running-head">Research on Optimization of Dual-Resource Batch Scheduling in Flexible Job Shop</alt-title>
<alt-title alt-title-type="right-running-head">Research on Optimization of Dual-Resource Batch Scheduling in Flexible Job Shop</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Liu</surname><given-names>Qinhui</given-names></name></contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western"><surname>Gao</surname><given-names>Zhijie</given-names></name></contrib>
<contrib id="author-3" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Li</surname><given-names>Jiang</given-names></name><email>li_jiang@hrbeu.edu.cn</email></contrib>
<contrib id="author-4" contrib-type="author">
<name name-style="western"><surname>Li</surname><given-names>Shuo</given-names></name></contrib>
<contrib id="author-5" contrib-type="author">
<name name-style="western"><surname>Zhu</surname><given-names>Laizheng</given-names></name></contrib>
<aff><institution>College of Mechanical and Electrical Engineering, Harbin Engineering University</institution>, <addr-line>Harbin, 150001</addr-line>, <country>China</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Jiang Li. Email: <email>li_jiang@hrbeu.edu.cn</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2023</year></pub-date>
<pub-date date-type="pub" publication-format="electronic"><day>30</day><month>8</month><year>2023</year></pub-date>
<volume>76</volume>
<issue>2</issue>
<fpage>2503</fpage>
<lpage>2530</lpage>
<history>
<date date-type="received"><day>21</day><month>3</month><year>2023</year>
</date>
<date date-type="accepted"><day>09</day><month>6</month><year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2023 Liu et al.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Liu et al.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMC_40505.pdf"></self-uri>
<abstract>
<p>With the rapid development of intelligent manufacturing and the changes in market demand, the current manufacturing industry presents the characteristics of multi-varieties, small batches, customization, and a short production cycle, with the whole production process having certain flexibility. In this paper, a mathematical model is established with the minimum production cycle as the optimization objective for the dual-resource batch scheduling of the flexible job shop, and an improved nested optimization algorithm is designed to solve the problem. The outer layer batch optimization problem is solved by the improved simulated annealing algorithm. The inner double resource scheduling problem is solved by the improved adaptive genetic algorithm, the double coding scheme, and the decoding scheme of Automated Guided Vehicle (AGV) scheduling based on the scheduling rules. The time consumption of collision-free paths is solved with the path planning algorithm which uses the Dijkstra algorithm based on a time window. Finally, the effectiveness of the algorithm is verified by actual cases, and the influence of AGV with different configurations on workshop production efficiency is analyzed.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Dual resource scheduling</kwd>
<kwd>batch optimization</kwd>
<kwd>genetic algorithm</kwd>
<kwd>simulated annealing</kwd>
<kwd>time window</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>With the rapid development and application of automated production workshops and intelligent manufacturing models, automated production has been realized gradually in traditional flexible workshops. In the actual production process of flexible automated production workshops, in addition to some large or special product parts, the processing and transfer process of most parts is carried out according to a certain batch, and the task of workpiece transfer is mainly undertaken by AGV, so the quality of a batch division of workpieces and the transfer efficiency of AGV will have a huge impact on the production efficiency of workshops [<xref ref-type="bibr" rid="ref-1">1</xref>]. For the traditional flexible job shop scheduling problem (FJSP), only machine and process constraints were considered, and only machine allocation and process sequencing were needed to optimize without involving workpiece batching, workpiece transfer time, and AGV paths planning, which can no longer meet the actual production needs [<xref ref-type="bibr" rid="ref-2">2</xref>]. Therefore, based on traditional FJSP, the dual-resource batch scheduling in the flexible job shop studied in this paper comprehensively considers workpiece batching and workpiece transfer time and integrates the two resources of machine and AGV for scheduling, which has important theoretical significance and practical application value.</p>
<p>Scholars have carried out a lot of research on the dual resource scheduling problem of the flexible job shop. He et al. [<xref ref-type="bibr" rid="ref-3">3</xref>] considered the huge impact of AGV and machine resource scheduling on the production cycle, established a dual-resource scheduling mathematical model, and used a hybrid genetic algorithm to solve it. To solve the FJSP problem of integrated AGV, Xu et al. [<xref ref-type="bibr" rid="ref-4">4</xref>] proposed a cooperative hybrid evolutionary algorithm, which is more competitive than other algorithms in solving the FJSP problem with AGV. Li et al. [<xref ref-type="bibr" rid="ref-5">5</xref>] established an integrated optimization model of the flexible job shop machine and AGV designed the whale optimization algorithm and verified the feasibility of the optimization scheme through test cases. Aiming at the flexible job shop scheduling problem of segmented AGV, Liu et al. [<xref ref-type="bibr" rid="ref-6">6</xref>] established a dual-resource scheduling mathematical model of machine tool and AGV with the minimum completion time as the optimization objective, designed an improved genetic algorithm to solve it, and then verified the superiority of the algorithm through a standard case. Chen et al. [<xref ref-type="bibr" rid="ref-7">7</xref>] established a mathematical optimization model for the automated flexible workshop scheduling problem with AGV as the main means of transportation and improved the efficiency of problem-solving by improving the discrete particle swarm algorithm. By solving the cases on the benchmark data set, it was found that the efficiency improvement of the production system by the number of AGVs conformed to the law of diminishing marginal effects. When Paksi et al. [<xref ref-type="bibr" rid="ref-8">8</xref>] analyzed the workshop production process, they believed that the task configuration of the two production resources, the machine, and the worker, would affect the processing cycle. They solved the problem by using an improved genetic algorithm and achieved better results. Scholars such as Li et al. [<xref ref-type="bibr" rid="ref-9">9</xref>] believed that workers in flexible workshops, as flexible production resources like machines, would have a huge impact on the production environment, so they proposed a water wave optimization decision-making method with the lowest total energy consumption as the optimization goal, which was verified by a large number of simulation experiments. Zhang et al. [<xref ref-type="bibr" rid="ref-10">10</xref>] considered the different loading and unloading times of workers due to individual factors and improved the quantum genetic algorithm through strategies such as niche, adaptive rotation angle, and quantum mutation, which improved the computational efficiency of the algorithm.</p>
<p>Although there are some achievements in the dual resource scheduling problem, the huge impact of the batch division of the workpiece on the overall production cycle is ignored. Xu et al. [<xref ref-type="bibr" rid="ref-11">11</xref>] believed that the randomness of batch division resulted in a too large search space of the optimization scheme, so they proposed a tentative strategy to guide the search direction of the batch scheme and then proposed a parallel process for different batches, which effectively improved the production management capability of the workshop. Xu et al. [<xref ref-type="bibr" rid="ref-12">12</xref>] comprehensively considered factors such as workpiece batching, machine failure, and preprocessing time, established a robust model for batch scheduling optimization of multi-objective flexible job shops, and solved the problem through an improved Non-dominated Ranked Genetic Algorithm (NRGA) algorithm. And the superiority of this algorithm was verified by calculation. Liu et al. [<xref ref-type="bibr" rid="ref-13">13</xref>] established a scheduling model and a corresponding disjunctive graph model for the variable batch scheduling and used the improved migratory bird algorithm to solve the model. Tan et al. [<xref ref-type="bibr" rid="ref-14">14</xref>] established an integrated optimization model for batching and scheduling of flexible job shops and used an improved genetic algorithm to numerically solve problems of different scales, proving the superiority of the algorithm, and analyzing the effect of different batching strategies on scheduling results. The research results have certain guiding significance for factories to improve their production management level. Bozek et al. [<xref ref-type="bibr" rid="ref-15">15</xref>] proposed a two-stage optimization algorithm to solve the flexible workshop batch scheduling optimization problem with variable batching and verified the effectiveness of the two-stage optimization algorithm. Huang et al. [<xref ref-type="bibr" rid="ref-16">16</xref>] proposed an improved hybrid ant colony algorithm to solve the multi-objective batch scheduling problem of batch division, batch cost, and completion time. Wu et al. [<xref ref-type="bibr" rid="ref-17">17</xref>] proposed an improved multi-objective optimization algorithm, combined with the idea of reverse scheduling, for the variable batch scheduling problem of the flexible job shop, and finally verified the effectiveness of the algorithm through a set of experiments. Jia et al. [<xref ref-type="bibr" rid="ref-18">18</xref>] proposed a dual-objective ant colony optimization algorithm, in which the user&#x2019;s preference is incorporated into the solution construction. Numerical experiments show that the algorithm is more excellent at solving large-scale problems. Zeng et al. [<xref ref-type="bibr" rid="ref-19">19</xref>] and other scholars used refined scheduling technology and combined it with the NSGA-II algorithm to solve the dual-resource batch scheduling problem with manufacturing cost and production cycle as optimization goals, and verified the effectiveness of the algorithm through cases.</p>
<p>To sum up, scholars have carried out many studies on the flexible job shop scheduling problem with AGV. The research methods are mainly divided into two categories. One is to assume that the path planning of AGV is known in the scheduling process, without considering the AGV path conflict and collision. Such problems are usually solved by intelligent optimization algorithms. The other is to allocate tasks and plan paths for AGV when the optimal scheduling order of tasks is known. This kind of problem mainly adopts a dynamic programming method. The above two methods do not achieve real dual resource integrated scheduling, because job scheduling and AGV path planning are not completely independent parts, they will affect each other, and it is not realistic to solve them separately. In addition, for the batch scheduling optimization problem of the flexible job shop, most scholars use intelligent optimization algorithms to solve the batch partitioning problem and the sequencing problem of processes on the machine. This problem has become an NP-hard problem, and few scholars can solve the AGV path planning and collision problem together. This is because the flexible job shop dual resource batch scheduling optimization problem has the characteristics of complex constraints, very difficult modeling, and exponentially increasing difficulty in solving problems as the production batch increases. Most scholars have separated the relationship between the batch demand of products in the production process and the dual resource constraints. However, the research on machine and AGV dual resource integrated scheduling considering workpiece batching is more in line with the actual production, and the solution to this complex problem is more universal.</p>
<p>Therefore, according to the coupling relationship and sequence relationship among batch optimization, dual-resource scheduling, and path planning, this paper designs an improved nested optimization algorithm to solve the dual-resource batch scheduling optimization problem of the flexible job shop. The algorithm consists of the outer batch optimization algorithm and the inner dual resource scheduling algorithm. The batch optimization scheme solved by the outer batch optimization algorithm is used as the construction basis of the inner dual-resource scheduling algorithm, and the optimization result of the dual-resource scheduling scheme is also used as the evaluation index of the outer batch optimization algorithm. In addition, the batch optimization scheme and the dual-resource scheduling scheme are used as the decision-making basis for path planning, and the path planning algorithm is also used as the evaluation index of the batch optimization algorithm and the dual-resource scheduling algorithm. Finally, the effectiveness of the algorithm in this paper is verified through the actual case, and the influence of different configurations of AGVs on the scheduling results is analyzed. The specific flow of the improved nested optimization algorithm is shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>Flow chart of dual-resource batch scheduling optimization in flexible job shop</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-1.tif"/>
</fig>
</sec>
<sec id="s2">
<label>2</label>
<title>Problem Description and Modeling</title>
<p>The dual-resource batch scheduling problem of the flexible job shop can be described as follows: a flexible workshop has <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> processing machines, <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula> AGVs and <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> types of workpieces to be processed, and each type of workpiece <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:msub><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> has a certain production batch <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:msub><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> Different machines can be selected for processing, and the processing time will be different depending on the selected processing machine. Each type of workpiece is divided into several sub-batches according to the production batch during processing, and each sub-batch is processed as a whole.</p>
<p>Assumptions:
<list list-type="order">
<list-item>
<p>A single machine can only process one sub-batch at any time. Similarly, a single sub-batch can only be processed by one machine at any time;</p></list-item>
<list-item>
<p>The workpiece processed by the machine tool takes a single sub-batch as the processing unit, and cannot be interrupted after starting processing, and the processing time includes the preparation time;</p></list-item>
<list-item>
<p>The buffer capacity of each machine tool is infinite, and only one AGV is allowed to be parked at the same time;</p></list-item>
<list-item>
<p>There is no process sequence constraint between different sub-batches;</p></list-item>
<list-item>
<p>Any batch can only be processed when all batches being processed on the selected machine have been processed;</p></list-item>
<list-item>
<p>AGV transfers workpieces in one batch as the transfer unit, and cannot be interrupted after the transfer begins;</p></list-item>
<list-item>
<p>The AGV path system is a bidirectional single channel.</p></list-item>
</list></p>
<p>To facilitate the establishment of mathematical models, the symbols introduced are defined in <xref ref-type="table" rid="table-1">Table 1</xref> according to the above assumptions.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>Symbols and their definitions</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th>Symbols</th>
<th>Definitions</th>
</tr>
</thead>
<tbody>
<tr>
<td><inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The number of workpiece types.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The number of machines.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The number of AGVs.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The set of job categories <inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The set of machines <inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The set of AGVs <inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The production batch of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The total number of operations of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:msub><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The number of sub-batches of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:msub><mml:mrow><mml:mi mathvariant="italic">N</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The batch of jobs in the j-th batch of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The k-th process of the j-th batch of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:msub><mml:mrow><mml:mi mathvariant="italic">M</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The set of optional machines for the k-th process of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:msub><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>A processing machine representing the k-th process selection of the j-th batch of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The processing time of the k-th process of the i-th workpiece on machine <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The time consumed by the v-th AGV to perform the transshipment task of process <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The transfer task of process <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula> is performed by the v-th AGV.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The no-load start time of the transfer task of the v-th AGV execution process <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The no-load end time of the transfer task of the v-th AGV execution process <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The load start time of the transfer task of the v-th AGV execution process <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The load end time of the transfer task of the v-th AGV execution process <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The processing start time of process <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula> on machine tool <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>The end time of process <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:mrow><mml:mi mathvariant="italic">O</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula> on machine tool <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">a</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The maximum carrying capacity of AGV.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msub><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The completion time of the i-th type of workpiece.</td>
</tr>
<tr>
<td><inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mrow><mml:mi mathvariant="italic">M</mml:mi><mml:mi mathvariant="italic">I</mml:mi><mml:mi mathvariant="italic">N</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>A sufficiently large positive integer.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Decision variables:</p>
<p><disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:msub><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mi>s</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>c</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>o</mml:mi><mml:mi>n</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>o</mml:mi><mml:mi>t</mml:mi><mml:mi>h</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>c</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:msub><mml:mrow><mml:mi>&#x03B8;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mi>s</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi><mml:mi>p</mml:mi><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>b</mml:mi><mml:mi>y</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>o</mml:mi><mml:mi>t</mml:mi><mml:mi>h</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>c</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:msub><mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mi>s</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>c</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>o</mml:mi><mml:mi>n</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mi>b</mml:mi><mml:mi>e</mml:mi><mml:mi>f</mml:mi><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>o</mml:mi><mml:mi>t</mml:mi><mml:mi>h</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>c</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mrow><mml:mi>&#x03B3;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mi>s</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi><mml:mi>p</mml:mi><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>b</mml:mi><mml:mi>y</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mtext>&#x00A0;</mml:mtext><mml:mi>b</mml:mi><mml:mi>e</mml:mi><mml:mi>f</mml:mi><mml:mi>o</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mi>o</mml:mi><mml:mi>t</mml:mi><mml:mi>h</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mtext>&#x00A0;</mml:mtext><mml:mi>c</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>where, <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>Aiming at the optimization of dual-resource batch scheduling in the flexible job shop, the following mathematical model is established with the minimum production cycle as the optimization objective.</p>
<p>Objective function:</p>
<p><disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:mrow><mml:mi mathvariant="italic">f</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo movablelimits="true" form="prefix">min</mml:mo></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mo movablelimits="true" form="prefix">max</mml:mo></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Constraint conditions:</p>
<p><disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:msubsup><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi mathvariant="italic">N</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p><disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">N</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x003C;</mml:mo><mml:mrow><mml:mo movablelimits="true" form="prefix">min</mml:mo></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">C</mml:mi><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">B</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:mrow><mml:mi mathvariant="italic">M</mml:mi><mml:mi mathvariant="italic">I</mml:mi><mml:mi mathvariant="italic">N</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x2265;</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></disp-formula></p>
<p><disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:mrow><mml:mi mathvariant="italic">M</mml:mi><mml:mi mathvariant="italic">I</mml:mi><mml:mi mathvariant="italic">N</mml:mi><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x03B3;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x2265;</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></disp-formula></p>
<p><disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:msubsup><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:msubsup><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-12"><label>(12)</label><mml:math id="mml-eqn-12" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">N</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p><disp-formula id="eqn-13"><label>(13)</label><mml:math id="mml-eqn-13" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p><disp-formula id="eqn-14"><label>(14)</label><mml:math id="mml-eqn-14" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x2265;</mml:mo><mml:mrow><mml:mo movablelimits="true" form="prefix">max</mml:mo></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x00D7;</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x03B2;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">z</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-15"><label>(15)</label><mml:math id="mml-eqn-15" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x2265;</mml:mo><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-16"><label>(16)</label><mml:math id="mml-eqn-16" display="block"><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x003C;</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">s</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msubsup></mml:math></disp-formula></p>
<p><disp-formula id="eqn-17"><label>(17)</label><mml:math id="mml-eqn-17" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">M</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula>where, <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:mrow><mml:mi mathvariant="italic">z</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">S</mml:mi><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:mrow><mml:mi mathvariant="italic">x</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">w</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">C</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:mrow><mml:mi mathvariant="italic">v</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">a</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>; <xref ref-type="disp-formula" rid="eqn-5">Eq. (5)</xref> is the optimization objective of the mathematical model, namely the minimum production cycle min(Makespan); <xref ref-type="disp-formula" rid="eqn-6">Eq. (6)</xref> indicates that the sum of the batches of each sub-batch of each type of workpiece is equal to the production batch of the workpiece; <xref ref-type="disp-formula" rid="eqn-7">Eq. (7)</xref> stipulates the batch division range of sub-batches; <xref ref-type="disp-formula" rid="eqn-8">Eq. (8)</xref> indicates that the machine tool can only process a batch of workpieces at the same time; <xref ref-type="disp-formula" rid="eqn-9">Eq. (9)</xref> indicates that AGV can only transport a batch of workpieces at the same time; <xref ref-type="disp-formula" rid="eqn-10">Eq. (10)</xref> indicates that a process of each sub-batch can only be processed by one machine tool; <xref ref-type="disp-formula" rid="eqn-11">Eq. (11)</xref> indicates that a process of each sub-batch can only be transported by one AGV; <xref ref-type="disp-formula" rid="eqn-12">Eq. (12)</xref> indicates that the process of a batch of workpieces is not allowed to be interrupted once processing begins; <xref ref-type="disp-formula" rid="eqn-13">Eq. (13)</xref> indicates that the process of a batch of workpieces is not allowed to be interrupted once it begins to be transported; <xref ref-type="disp-formula" rid="eqn-14">Eq. (14)</xref> indicates that the earliest start processing time of the process is the maximum completion time of the current processing process on the machine tool q and the end time of the AGV load; <xref ref-type="disp-formula" rid="eqn-15">Eq. (15)</xref> represents the constraint condition of the load start time of the task; <xref ref-type="disp-formula" rid="eqn-16">Eq. (16)</xref> indicates that each process between each batch of each type of workpiece needs to comply with the process flow; <xref ref-type="disp-formula" rid="eqn-17">Eq. (17)</xref> represents the machining machine selection constraint of the process.</p>
</sec>
<sec id="s3">
<label>3</label>
<title>Design of Improved Nested Optimization Algorithm</title>
<sec id="s3_1">
<label>3.1</label>
<title>Design of Outer Layer Batch Optimization Algorithm</title>
<p>The outer batch optimization algorithm is an improved design based on the simulated annealing algorithm (SA), using the improved SA to solve the batch scheme. The concept of the Boltzmann selection function of the genetic algorithm is introduced into the design of the traditional SA acceptance function, which establishes a Boltzmann acceptance function. At the same time, the concept of perturbation operator in variable neighborhood search algorithm is introduced. When the improved SA iterates to a certain threshold <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula>, if the optimal solution has not changed, a new neighborhood solution will be generated by perturbing the current solution, and then the optimal solution is further searched from the neighborhood solution.</p>
<p>The batch of jobs is equally divided, and the batch scheme of each division is expressed in the form of an array <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:mrow><mml:mo fence="false" stretchy="false">{</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo>&#x2026;</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>. The length of the array is consistent with the number of job types, and the job number corresponds to the subscript of the array one by one. The value in the array represents the number of sub-batches corresponding to the job division, that is, the <inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula> in the array represents the number of specific batches divided by the i-th job according to the equal batching method.</p>
<p>In the search process of the improved SA algorithm, the candidate batch scheme <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula> is generated in each iteration of the algorithm as follows: an element <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula> is randomly selected in the current batch scheme <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula>, and is replaced by a new number of batch partitions which is randomly selected in the neighborhood set of the element, while other elements in the current batch scheme <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula> remain unchanged. Like the generation of the candidate solution, the perturbation action of the optimal solution randomly selects two elements from the current batch scheme <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula>, and replaces these two elements with a neighborhood solution, with the other elements in the current batch scheme <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula> unchanged. This results in the perturbation action of the current batch scheme.</p>
<p>The solution process of the outer layer batch optimization algorithm is shown in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>, and the specific steps are as follows:</p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>Flow chart of the outer batch optimization algorithm</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-2.tif"/>
</fig>
<p>Step 1: Initialize the iteration number <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> and the disturbance threshold <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> of the improved simulated annealing algorithm, and calculate the divisible batch set of various workpieces.</p>
<p>Step 2: Let <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:math></inline-formula>, the initial batching scheme <inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:math></inline-formula> is randomly generated according to the divisible batch set of various workpieces, and let <inline-formula id="ieqn-72"><mml:math id="mml-ieqn-72"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
<p>Step 3: Calculate the target value of the initial batching scheme through the inner dual resource scheduling algorithm, and let <inline-formula id="ieqn-73"><mml:math id="mml-ieqn-73"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
<p>Step 4: Determine whether <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:mrow><mml:mtext>k</mml:mtext></mml:mrow></mml:math></inline-formula> is equal to the total number of iterations. If <inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, the iteration ends, and the optimal batching scheme and the scheduling scheme under the batching scheme are output. Otherwise, jump to Step 5.</p>
<p>Step 5: The candidate batching scheme <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> is generated according to <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula>, and the target value <inline-formula id="ieqn-78"><mml:math id="mml-ieqn-78"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> of <inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> is calculated by using the inner dual resource scheduling algorithm.</p>
<p>Step 6: Determine the size of <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-81"><mml:math id="mml-ieqn-81"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:math></inline-formula>. If <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:math></inline-formula>, let <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, and jump to Step 9. Otherwise, jump to Step 7.</p>
<p>Step 7: Determine the size of <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula>, if <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula>, let <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:math></inline-formula> remain unchanged, and jump to Step 9; otherwise, jump to Step 8.</p>
<p>Step 8: Generate a random number <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:mrow><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:math></inline-formula> between 0 and 1, calculate the receiving probability function <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:math></inline-formula> of the candidate batching scheme <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, and determine the size relationship between <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:mrow><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:math></inline-formula>; if <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:mrow><mml:mi mathvariant="italic">p</mml:mi></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:mrow><mml:mi mathvariant="italic">P</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">p</mml:mi></mml:mrow></mml:math></inline-formula>, then receive <inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, let <inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula>, and jump to Step 9; otherwise, reject <inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:mrow><mml:mi mathvariant="italic">B</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> and jump to Step 9.</p>
<p>Step 9: Determine whether the threshold <inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> is reached. If the disturbance threshold is reached, the variable neighborhood perturbation action is performed on the current solution, and the <inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mrow><mml:mi mathvariant="italic">F</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">r</mml:mi></mml:mrow></mml:math></inline-formula> of the new current solution is calculated. Otherwise, directly execute Step 10.</p>
<p>Step 10: <inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:math></inline-formula>, execute Step 4.</p>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Design of Inner Dual Resource Scheduling Optimization Algorithm</title>
<p>The inner dual resource scheduling optimization algorithm is an improved design based on an adaptive genetic algorithm. The details are as follows.</p>
<sec id="s3_2_1">
<label>3.2.1</label>
<title>Coding</title>
<p>Each chromosome is coded in two layers: Order Select (OS) and Machine Select (MS). Among them, the process layer coding adopts the decimal coding method. The elements of the process layer represent the workpiece number and the workpiece batch, and the order of the same elements represents the order of the process. The machine layer adopts the real number coding method, and each element of the machine layer represents the machine selected according to the total process sequence. <xref ref-type="fig" rid="fig-3">Fig. 3</xref> shows a complete coding scheme example.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>Example of the coding scheme</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-3.tif"/>
</fig>
</sec>
<sec id="s3_2_2">
<label>3.2.2</label>
<title>Decoding</title>
<p>According to the above coding scheme, the activity of the chromosome is decoded, and the AGV is scheduled based on the first-come-first-served rule and the AGV workload balancing rule during the decoding process. The specific decoding steps designed in this paper are as follows:</p>
<p>Step 1: Initialize the processing time record table <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:msub><mml:mrow><mml:mi mathvariant="italic">M</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each machine, the processing time record table <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:msub><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each process, the driving position record vector <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each AGV, the no-load driving time record table <inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">K</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each AGV, the load driving time record table <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">F</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each AGV, the working time record vector <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each AGV, the idle AGV set <inline-formula id="ieqn-112"><mml:math id="mml-ieqn-112"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, and the time window record table <inline-formula id="ieqn-113"><mml:math id="mml-ieqn-113"><mml:msub><mml:mrow><mml:mi mathvariant="italic">W</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each road section;</p>
<p>Step 2: According to the order from left to right, take out the OS layer in the chromosome gene, get the workpiece, batch, and process information, namely <inline-formula id="ieqn-114"><mml:math id="mml-ieqn-114"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>. The completion time of the previous process <inline-formula id="ieqn-115"><mml:math id="mml-ieqn-115"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is obtained by comparing it with <inline-formula id="ieqn-116"><mml:math id="mml-ieqn-116"><mml:msub><mml:mrow><mml:mi mathvariant="italic">J</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>;</p>
<p>Step 3: Compare the completion time of the immediate process <inline-formula id="ieqn-117"><mml:math id="mml-ieqn-117"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> with the <inline-formula id="ieqn-118"><mml:math id="mml-ieqn-118"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">K</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-119"><mml:math id="mml-ieqn-119"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">F</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of each AGV, and add the AGV with no transportation task after the completion of the immediate process <inline-formula id="ieqn-120"><mml:math id="mml-ieqn-120"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> to the idle AGV set <inline-formula id="ieqn-121"><mml:math id="mml-ieqn-121"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>;</p>
<p>Step 4: Determine if <inline-formula id="ieqn-122"><mml:math id="mml-ieqn-122"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is empty; if <inline-formula id="ieqn-123"><mml:math id="mml-ieqn-123"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is empty, the AGV with the shortest AGV cumulative working time is selected from all AGV sets <inline-formula id="ieqn-124"><mml:math id="mml-ieqn-124"><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow></mml:math></inline-formula> for transportation tasks; otherwise, select the AGV with the shortest cumulative working hours from <inline-formula id="ieqn-125"><mml:math id="mml-ieqn-125"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">K</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> for the transportation task; clear <inline-formula id="ieqn-126"><mml:math id="mml-ieqn-126"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">x</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>;</p>
<p>Step 5: Determine whether the <inline-formula id="ieqn-127"><mml:math id="mml-ieqn-127"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:math></inline-formula> of the process <inline-formula id="ieqn-128"><mml:math id="mml-ieqn-128"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is equal to 1, that is, whether it is the first process of batch <inline-formula id="ieqn-129"><mml:math id="mml-ieqn-129"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:math></inline-formula> of workpiece <inline-formula id="ieqn-130"><mml:math id="mml-ieqn-130"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>; if <inline-formula id="ieqn-131"><mml:math id="mml-ieqn-131"><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:math></inline-formula>, the starting node <inline-formula id="ieqn-132"><mml:math id="mml-ieqn-132"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the no-load path of AGV is the node at the current position of AGV recorded in <inline-formula id="ieqn-133"><mml:math id="mml-ieqn-133"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, the target node <inline-formula id="ieqn-134"><mml:math id="mml-ieqn-134"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the node at the location of the warehouse, the starting node <inline-formula id="ieqn-135"><mml:math id="mml-ieqn-135"><mml:msub><mml:mrow><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the load path is the node at the location of the warehouse, and the target node <inline-formula id="ieqn-136"><mml:math id="mml-ieqn-136"><mml:msub><mml:mrow><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the node at the location of the processing machine <inline-formula id="ieqn-137"><mml:math id="mml-ieqn-137"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula> of the process. Otherwise, the starting node <inline-formula id="ieqn-138"><mml:math id="mml-ieqn-138"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the no-load path of AGV is the node of the current position of the AGV recorded in <inline-formula id="ieqn-139"><mml:math id="mml-ieqn-139"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, the target node <inline-formula id="ieqn-140"><mml:math id="mml-ieqn-140"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the node of the position of the processing machine of the immediately preceding process <inline-formula id="ieqn-141"><mml:math id="mml-ieqn-141"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, the starting node <inline-formula id="ieqn-142"><mml:math id="mml-ieqn-142"><mml:msub><mml:mrow><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the load path is the node of the position of the processing machine of the immediately preceding process <inline-formula id="ieqn-143"><mml:math id="mml-ieqn-143"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, and the target node <inline-formula id="ieqn-144"><mml:math id="mml-ieqn-144"><mml:msub><mml:mrow><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the node of the position of the processing machine <inline-formula id="ieqn-145"><mml:math id="mml-ieqn-145"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula> of the process;</p>
<p>Step 6: The no-load start time of AGV is the end time of the last transportation task of AGV. The information of AGV no-load start node, target node, no-load start time and <inline-formula id="ieqn-146"><mml:math id="mml-ieqn-146"><mml:msub><mml:mrow><mml:mi mathvariant="italic">W</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is taken as the input of the Dijkstra algorithm based on the time window. The no-load driving path and no-load driving time of AGV without collision are calculated. The no-load end time of AGV is the sum of the no-load start time and no-load driving time, and <inline-formula id="ieqn-147"><mml:math id="mml-ieqn-147"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is updated;</p>
<p>Step 7: Comparing the AGV no-load end time with the completion time of the immediate pre-process <inline-formula id="ieqn-148"><mml:math id="mml-ieqn-148"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, the AGV&#x2019;s load start time is the larger of the two. The starting node, target node, load start time and <inline-formula id="ieqn-149"><mml:math id="mml-ieqn-149"><mml:msub><mml:mrow><mml:mi mathvariant="italic">W</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">h</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the AGV load are used as the input of the Dijkstra algorithm based on the time window. The load travel path and load travel time of the collision-free AGV are calculated. The load end time of the AGV is the sum of the load start time and the load travel time. Update <inline-formula id="ieqn-150"><mml:math id="mml-ieqn-150"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>;</p>
<p>Step 8: Update <inline-formula id="ieqn-151"><mml:math id="mml-ieqn-151"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-152"><mml:math id="mml-ieqn-152"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">K</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-153"><mml:math id="mml-ieqn-153"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">F</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> to complete a complete transportation task of AGV;</p>
<p>Step 9: Decode the activity of the machine, take out the processing machine <inline-formula id="ieqn-154"><mml:math id="mml-ieqn-154"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula> of the gene position corresponding to the MS layer process <inline-formula id="ieqn-155"><mml:math id="mml-ieqn-155"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> in the chromosome, and calculate the processing time <inline-formula id="ieqn-156"><mml:math id="mml-ieqn-156"><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of <inline-formula id="ieqn-157"><mml:math id="mml-ieqn-157"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> according to the single processing time and sub-batch;</p>
<p>Step 10: Determine whether the process <inline-formula id="ieqn-158"><mml:math id="mml-ieqn-158"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the first process on machine <inline-formula id="ieqn-159"><mml:math id="mml-ieqn-159"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula>; if it is the first process of machine processing, perform Step 11; otherwise, perform Step 12;</p>
<p>Step 11: Process <inline-formula id="ieqn-160"><mml:math id="mml-ieqn-160"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the first process of machine <inline-formula id="ieqn-161"><mml:math id="mml-ieqn-161"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula> processing, then the process <inline-formula id="ieqn-162"><mml:math id="mml-ieqn-162"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> start processing time is AGV load end time;</p>
<p>Step 12: According to the load end time and processing time of the process, find the idle time period that allows the process to insert the job in the machine <inline-formula id="ieqn-163"><mml:math id="mml-ieqn-163"><mml:mrow><mml:mi mathvariant="italic">q</mml:mi></mml:mrow></mml:math></inline-formula> job cycle in <inline-formula id="ieqn-164"><mml:math id="mml-ieqn-164"><mml:msub><mml:mrow><mml:mi mathvariant="italic">M</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>. If the idle time period is obtained, Step 13 is performed; otherwise, perform Step 14;</p>
<p>Step 13: Compare the AGV load end time with the start time of the idle time period, the start processing time of the process <inline-formula id="ieqn-165"><mml:math id="mml-ieqn-165"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the larger value of the two;</p>
<p>Step 14: Comparing the completion time with the load end time of the current process of the machine tool, the starting processing time of the process <inline-formula id="ieqn-166"><mml:math id="mml-ieqn-166"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the larger of the two;</p>
<p>Step 15: According to the start processing time and processing time of the process <inline-formula id="ieqn-167"><mml:math id="mml-ieqn-167"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, calculate the completion time of the process, and update <inline-formula id="ieqn-168"><mml:math id="mml-ieqn-168"><mml:msub><mml:mrow><mml:mi mathvariant="italic">M</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi>&#x03B1;</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>;</p>
<p>Step 16: Determine whether the process <inline-formula id="ieqn-169"><mml:math id="mml-ieqn-169"><mml:msub><mml:mrow><mml:mi mathvariant="italic">O</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">j</mml:mi><mml:mi mathvariant="italic">k</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is the last gene on the chromosome, not the last gene transferred to Step 2; otherwise, the calculation is terminated and the maximum completion time and the decoding result are output.</p>
</sec>
<sec id="s3_2_3">
<label>3.2.3</label>
<title>Initialize the Population</title>
<p>For the OS layer of the chromosome in the initial population, a completely random generation strategy is first used, and then the hill-climbing algorithm is used to further select the OS layer of the initial population. For the MS layer of the chromosome, random selection (RS), local selection (LS), and world selection (WS) are combined to select the processing machine for each process.</p>
</sec>
<sec id="s3_2_4">
<label>3.2.4</label>
<title>Selection, Mutation, and Crossover Operation</title>
<p>For the selection of the population, this paper adopts the binary tournament selection method. Two individuals are randomly selected from the population each time and the fitness value is calculated, and then the individual with the best fitness value is selected to enter the next generation population. Repeat the above operation until the new population size reaches the original population size.</p>
<p>The precedence Operation Crossover (POX) operator and Multi-point crossover (MPX) operator are used for the OS layer and MS layer of chromosome respectively. The crossover process of POX and MPX is shown in <xref ref-type="fig" rid="fig-4">Figs. 4</xref> and <xref ref-type="fig" rid="fig-5">5</xref>. In the figure, P1 and P2 represent the parent chromosome, and C1 and C2 represent the offspring chromosome.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>POX crossover process</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-4.tif"/>
</fig><fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>MPX crossover process</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-5.tif"/>
</fig>
<p>The specific steps of POX crossover are as follows:</p>
<p>Step1: The job set is randomly divided into two non-empty subsets S1 and S2;</p>
<p>Step2: Copy the genes contained in S1 in P1 to C1, copy the genes contained in S2 in P2 to C2, and keep their gene positions unchanged;</p>
<p>Step 3: Replicate the genes contained in S1 in P1 to C2, and the genes contained in S2 in P2 to C1, and keep their gene order unchanged.</p>
<p>When performing MPX crossover, multiple crossover points are randomly selected on the parent chromosome, and then the genes on the corresponding crossover points are exchanged.</p>
<p>For the OS layer and MS layer of chromosomes, interchange mutation operation and multipoint mutation operation are used respectively. The interchange mutation operation is shown in <xref ref-type="fig" rid="fig-6">Fig. 6</xref>, that is, two gene loci are randomly selected from the OS layer of the chromosome for gene exchange. The multi-point mutation operation is shown in <xref ref-type="fig" rid="fig-7">Fig. 7</xref>, that is, multiple gene loci are randomly selected in the MS layer of the chromosome, and then one other machine tool is randomly selected from the set of optional machine tools on each gene locus to replace the current machine tool.</p>
<fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>Interchange mutation operation</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-6.tif"/>
</fig><fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>Multi-point mutation operation</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-7.tif"/>
</fig>
</sec>
<sec id="s3_2_5">
<label>3.2.5</label>
<title>Adaptive Crossover and Mutation Probability</title>
<p><xref ref-type="disp-formula" rid="eqn-18">Eqs. (18)</xref> and <xref ref-type="disp-formula" rid="eqn-19">(19)</xref> are respectively used to solve the adaptive crossover probability and mutation probability:</p>
<p><disp-formula id="eqn-18"><label>(18)</label><mml:math id="mml-eqn-18" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">c</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x00D7;</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mi>cos</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x03C0;</mml:mi></mml:mrow><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mfrac><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo mathvariant="italic">/</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p><disp-formula id="eqn-19"><label>(19)</label><mml:math id="mml-eqn-19" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">P</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">3</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">4</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">3</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x00D7;</mml:mo><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mi>sin</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">(</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x03C0;</mml:mi></mml:mrow><mml:mo>&#x00D7;</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mi>&#x03C0;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo mathvariant="italic">/</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo mathvariant="italic">/</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:math></disp-formula>where <inline-formula id="ieqn-170"><mml:math id="mml-ieqn-170"><mml:mrow><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:math></inline-formula> represents the number of iterations of the algorithm; <inline-formula id="ieqn-171"><mml:math id="mml-ieqn-171"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:math></inline-formula> represents the total number of iterations of the algorithm; <inline-formula id="ieqn-172"><mml:math id="mml-ieqn-172"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-173"><mml:math id="mml-ieqn-173"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-174"><mml:math id="mml-ieqn-174"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">3</mml:mn></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-175"><mml:math id="mml-ieqn-175"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">4</mml:mn></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> represent custom parameters, generally based on experience: <inline-formula id="ieqn-176"><mml:math id="mml-ieqn-176"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">3</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">0</mml:mn></mml:mrow><mml:mrow><mml:mo mathvariant="italic">.</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="italic">5</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-177"><mml:math id="mml-ieqn-177"><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mn mathvariant="italic">4</mml:mn></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">1</mml:mn></mml:mrow></mml:math></inline-formula>.</p>
</sec>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Design of Path Planning Algorithm</title>
<p>The path planning algorithm in this paper is an improved design of the Dijkstra algorithm based on the time window. The specific contents are as follows:</p>
<p>AGV may have the following conflicts when driving in the workshop: intersection conflict, node occupancy conflict, and opposite conflict. As shown in <xref ref-type="fig" rid="fig-8">Figs. 8</xref>, <xref ref-type="fig" rid="fig-9">9</xref>, and <xref ref-type="fig" rid="fig-10">10</xref>.</p>
<fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>Intersection conflict</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-8.tif"/>
</fig><fig id="fig-9">
<label>Figure 9</label>
<caption>
<title>Node occupancy conflict</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-9.tif"/>
</fig><fig id="fig-10">
<label>Figure 10</label>
<caption>
<title>Opposite conflict</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-10.tif"/>
</fig>
<p>For the above three types of conflicts, the conflict resolution strategies adopted are speed control adjustment strategy and re-planning strategy. Determine which strategy to choose, according to <xref ref-type="disp-formula" rid="eqn-20">Eq. (20)</xref>. If <xref ref-type="disp-formula" rid="eqn-20">Eq. (20)</xref> is satisfied, choose the speed control and regulation strategy; otherwise, choose the re-planning strategy.</p>
<p><disp-formula id="eqn-20"><label>(20)</label><mml:math id="mml-eqn-20" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mrow><mml:mtext>&#x0394;</mml:mtext></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p>When there is an extreme situation in the opposite conflict, that is, the re-planning strategy fails. First, all the drivable sections are obtained according to the re-planning strategy, and then the time consumed by each driving section is obtained according to the speed control adjustment strategy. Determine the section selection, according to <xref ref-type="disp-formula" rid="eqn-21">Eq. (21)</xref>.</p>
<p><disp-formula id="eqn-21"><label>(21)</label><mml:math id="mml-eqn-21" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mrow><mml:mtext>&#x0394;</mml:mtext></mml:mrow></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mrow><mml:mtext>&#x0394;</mml:mtext></mml:mrow></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula>where, <inline-formula id="ieqn-178"><mml:math id="mml-ieqn-178"><mml:mrow><mml:mi mathvariant="italic">N</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">R</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow></mml:math></inline-formula> is the set of all new road segments generated by the replanning strategy and <inline-formula id="ieqn-179"><mml:math id="mml-ieqn-179"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">N</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">R</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2260;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x2205;</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula id="ieqn-180"><mml:math id="mml-ieqn-180"><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-181"><mml:math id="mml-ieqn-181"><mml:msub><mml:mrow><mml:mi mathvariant="italic">T</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> in <xref ref-type="disp-formula" rid="eqn-21">Eq. (21)</xref> are respectively the travel time of AGVs on road segment <inline-formula id="ieqn-182"><mml:math id="mml-ieqn-182"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula> and road segment <inline-formula id="ieqn-183"><mml:math id="mml-ieqn-183"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-184"><mml:math id="mml-ieqn-184"><mml:mrow><mml:mrow><mml:mtext>&#x0394;</mml:mtext></mml:mrow></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-185"><mml:math id="mml-ieqn-185"><mml:mrow><mml:mrow><mml:mtext>&#x0394;</mml:mtext></mml:mrow></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> are the time consumed by AGVs respectively on road segment <inline-formula id="ieqn-186"><mml:math id="mml-ieqn-186"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula> and road segment <inline-formula id="ieqn-187"><mml:math id="mml-ieqn-187"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:math></inline-formula> when the speed control regulation strategy is adopted. If <xref ref-type="disp-formula" rid="eqn-21">Eq. (21)</xref> is satisfied, section <inline-formula id="ieqn-188"><mml:math id="mml-ieqn-188"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula> is selected, otherwise, section <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:math></inline-formula> is selected.</p>
<p>The model for the time window of the road segment can be represented by <xref ref-type="disp-formula" rid="eqn-22">Eq. (22)</xref>.</p>
<p><disp-formula id="eqn-22"><label>(22)</label><mml:math id="mml-eqn-22" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="italic">W</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">G</mml:mi><mml:mi mathvariant="italic">V</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">d</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></disp-formula>where, <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2208;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">R</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">d</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x2260;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x2205;</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:msub><mml:mrow><mml:mi mathvariant="italic">W</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">w</mml:mi><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the time window of section <inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-193"><mml:math id="mml-ieqn-193"><mml:msub><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the node number when driving into the section, <inline-formula id="ieqn-194"><mml:math id="mml-ieqn-194"><mml:msub><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">d</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the node number when driving out of the section, <inline-formula id="ieqn-195"><mml:math id="mml-ieqn-195"><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">n</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the time node when driving into the section, <inline-formula id="ieqn-196"><mml:math id="mml-ieqn-196"><mml:msub><mml:mrow><mml:mi mathvariant="italic">t</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">m</mml:mi><mml:mi mathvariant="italic">e</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the time node when driving out of the section, and <inline-formula id="ieqn-197"><mml:math id="mml-ieqn-197"><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi><mml:mi mathvariant="italic">G</mml:mi><mml:mi mathvariant="italic">V</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">d</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> denotes the AGV driving on the section during this period. <inline-formula id="ieqn-198"><mml:math id="mml-ieqn-198"><mml:mrow><mml:mi mathvariant="italic">R</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">a</mml:mi><mml:mi mathvariant="italic">d</mml:mi></mml:mrow></mml:math></inline-formula> represents the set of all sections of the workshop path system.</p>
<p>According to the above time window model and conflict resolution strategy, the conflict resolution process designed in this paper is shown in <xref ref-type="fig" rid="fig-11">Fig. 11</xref>.</p>
<fig id="fig-11">
<label>Figure 11</label>
<caption>
<title>AGV conflict resolution process</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-11.tif"/>
</fig>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Case Studies</title>
<sec id="s4_1">
<label>4.1</label>
<title>Algorithm Verification</title>
<p>To verify the solution effect of the algorithm designed in this paper, the algorithm is tested with the actual production case 1: A machine shop has 9 machine tools and 2 AGVs which are responsible for the processing and transfer of production tasks, in which the driving speed of the AGV is 20m/min and the carrying capacity is 20 pieces. The layout of the shop and the nodes on the guide path is shown in <xref ref-type="fig" rid="fig-12">Fig. 12</xref>. The shop needs to produce 6 kinds of workpieces and the production batch of each workpiece is shown in <xref ref-type="table" rid="table-2">Table 2</xref>. The process flow of each workpiece is shown in <xref ref-type="table" rid="table-3">Table 3</xref>, and &#x201C;&#x2014;&#x201D; in the table means that this process cannot be processed on the corresponding machine.</p>
<fig id="fig-12">
<label>Figure 12</label>
<caption>
<title>Workshop layout and guidance path diagram</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-12.tif"/>
</fig><table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>The production batch of each workpiece</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
<th>J6</th>
</tr>
</thead>
<tbody>
<tr>
<td>Production quantity</td>
<td>40</td>
<td>30</td>
<td>45</td>
<td>36</td>
<td>25</td>
<td>25</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-3">
<label>Table 3</label>
<caption>
<title>Workpiece process flow min</title>
</caption>
<table frame="hsides">
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>Workpiece</th>
<th>Process</th>
<th>M1</th>
<th>M2</th>
<th>M3</th>
<th>M4</th>
<th>M5</th>
<th>M6</th>
<th>M7</th>
<th>M8</th>
<th>M9</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">J1</td>
<td>1</td>
<td>4</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>8</td>
<td>10</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>6</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>4</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>7</td>
</tr>
<tr>
<td rowspan="4">J2</td>
<td>1</td>
<td>5</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>7</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>4</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>6</td>
</tr>
<tr>
<td rowspan="3">J3</td>
<td>1</td>
<td>7</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>4</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>7</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="4">J4</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>15</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
</tr>
<tr>
<td>4</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="5">J5</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>7</td>
</tr>
<tr>
<td>4</td>
<td>6</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>5</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="5">J6</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>10</td>
</tr>
<tr>
<td>2</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>5</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>4</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>15</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>5</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>(1) Parameter Sensitivity Analysis</p>
<p>To obtain the best performance of the multi-layer optimization algorithm, it is necessary to analyze the sensitivity of the disturbance threshold <inline-formula id="ieqn-199"><mml:math id="mml-ieqn-199"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> of the algorithm and test the effectiveness of the optimization algorithm. The initial parameters of the algorithm are set below. The number of iterations of the outer algorithm of the improved nested optimization algorithm is 60, and the disturbance threshold <inline-formula id="ieqn-200"><mml:math id="mml-ieqn-200"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> is 3. The number of iterations of the inner layer algorithm is 80, and the population size is 40. Different disturbance thresholds <inline-formula id="ieqn-201"><mml:math id="mml-ieqn-201"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> are set under the initial parameter conditions, 10 consecutive calculations are set each time, and the best results of 10 times are taken to complete the sensitivity analysis of the parameters. <xref ref-type="fig" rid="fig-13">Fig. 13</xref> is the iterative curve when the disturbance threshold <inline-formula id="ieqn-202"><mml:math id="mml-ieqn-202"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> is 2, 3, 4, 5, respectively.</p>
<fig id="fig-13">
<label>Figure 13</label>
<caption>
<title>Iteration curves of different disturbance threshold <inline-formula id="ieqn-203"><mml:math id="mml-ieqn-203"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula></title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-13.tif"/>
</fig>
<p>It can be seen from the iterative curves of different disturbance thresholds <inline-formula id="ieqn-204"><mml:math id="mml-ieqn-204"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> that when <inline-formula id="ieqn-205"><mml:math id="mml-ieqn-205"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> takes different values, it has little effect on the results of the optimal scheme, but has a great influence on the convergence speed of the optimization algorithm. It can be seen from the figure that when <inline-formula id="ieqn-206"><mml:math id="mml-ieqn-206"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">2</mml:mn></mml:mrow></mml:math></inline-formula>, the algorithm completes convergence in about 36 generations; when <inline-formula id="ieqn-207"><mml:math id="mml-ieqn-207"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">3</mml:mn></mml:mrow></mml:math></inline-formula>, the algorithm completes convergence in about 48 generations; when <inline-formula id="ieqn-208"><mml:math id="mml-ieqn-208"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">4</mml:mn></mml:mrow></mml:math></inline-formula>, the algorithm completes convergence in about 29 generations, and when <inline-formula id="ieqn-209"><mml:math id="mml-ieqn-209"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">5</mml:mn></mml:mrow></mml:math></inline-formula>, the algorithm completes convergence in about 39 generations. It can be seen that when <inline-formula id="ieqn-210"><mml:math id="mml-ieqn-210"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mn mathvariant="italic">4</mml:mn></mml:mrow></mml:math></inline-formula>, the optimization effect of the algorithm is better, so when solving the optimization scheme for subsequent production cases, the disturbance threshold <inline-formula id="ieqn-211"><mml:math id="mml-ieqn-211"><mml:mrow><mml:mi mathvariant="italic">m</mml:mi></mml:mrow></mml:math></inline-formula> of the optimization algorithm is set to 4.</p>
<p>In addition, to obtain better solution results, the following sensitivity analysis is performed on the size of the population size. The above cases are solved by setting different population sizes. The experimental results are shown in <xref ref-type="fig" rid="fig-14">Fig. 14</xref>. The experimental results show that with the increase in population size, the global search ability of the algorithm is enhanced, and the possibility of finding the global optimal solution is increased. However, when the population size exceeds 50, as the population size continues to increase, the global optimal solution searched remains stable, but the evolutionary algebra of the algorithm is reduced, which indicates that when the population size is set to 50, the algorithm has been able to find the global optimal solution in the solution space. Therefore, the optimal population size of this paper is set to 50.</p>
<fig id="fig-14">
<label>Figure 14</label>
<caption>
<title>The influence of population size on algorithm performance</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-14.tif"/>
</fig>
<p>(2) Algorithm effectiveness test</p>
<p>The system solves the above case batching, scheduling, and path planning schemes with the minimum production cycle as the optimization objective. The number of iterations of the outer batch optimization algorithm is set to 80, and the perturbation threshold is set to 4; the number of iterations of the inner dual-resource scheduling algorithm is set to 100, and the population size is set to 50. The system solves the optimization results as follows: The completion time of the optimal solution is 1329 min. <xref ref-type="table" rid="table-4">Table 4</xref> shows the iteration results of the batch optimization solution; <xref ref-type="table" rid="table-5">Table 5</xref> is the optimal batching scheme; <xref ref-type="table" rid="table-6">Table 6</xref> shows the processing sequence of the three sub-batches of workpiece 2 in the optimal solution. <xref ref-type="fig" rid="fig-15">Fig. 15</xref> shows the iterative curve of the algorithm&#x2019;s optimization target, and <xref ref-type="fig" rid="fig-16">Fig. 16</xref> shows the load time of the two production resources, machine tool, and AGV, in the optimal solution.</p>
<table-wrap id="table-4">
<label>Table 4</label>
<caption>
<title>Iterative results of the batch optimization scheme</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
<th>J6</th>
<th>Completion time (min)</th>
<th>Iterations</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>Batching scheme</td>
<td>4<break/>10<break/>10<break/>&#x2026;&#x2026;<break/>2<break/>2<break/><bold>2</bold><break/>2<break/>&#x2026;&#x2026;<break/>2</td>
<td>6<break/>6<break/>6<break/>&#x2026;&#x2026;<break/>3<break/>3<break/><bold>3</bold><break/>6<break/>&#x2026;&#x2026;<break/>6</td>
<td>15<break/>15<break/>5<break/>&#x2026;&#x2026;<break/>9<break/>9<break/><bold>5</bold><break/>5<break/>&#x2026;&#x2026;<break/>9</td>
<td>2<break/>2<break/>2<break/>&#x2026;&#x2026;<break/>6<break/>3<break/><bold>3</bold><break/>3<break/>&#x2026;&#x2026;<break/>2</td>
<td>5<break/>5<break/>5<break/>&#x2026;&#x2026;<break/>5<break/>5<break/><bold>5</bold><break/>5<break/>&#x2026;&#x2026;<break/>5</td>
<td>5<break/>5<break/>5<break/>&#x2026;&#x2026;<break/>5<break/>5<break/><bold>5</bold><break/>5<break/>&#x2026;&#x2026;<break/>5</td>
<td>2220<break/>2220<break/>2051<break/>&#x2026;&#x2026;<break/>1380<break/>1380<break/><bold>1329</bold><break/>1329<break/>&#x2026;&#x2026;<break/>1329</td>
<td>1<break/>2<break/>3<break/>&#x2026;&#x2026;<break/>41<break/>42<break/><bold>43</bold><break/>44<break/>&#x2026;&#x2026;<break/>80</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-5">
<label>Table 5</label>
<caption>
<title>Optimal workpiece batching scheme</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
<th>J6</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>Production quantity</td>
<td>40</td>
<td>30</td>
<td>45</td>
<td>36</td>
<td>25</td>
<td>25</td>
</tr>
<tr>
<td>Batch divided</td>
<td>2</td>
<td>3</td>
<td>5</td>
<td>3</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>Number of workpieces per batch</td>
<td>20</td>
<td>10</td>
<td>9</td>
<td>12</td>
<td>5</td>
<td>5</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-6">
<label>Table 6</label>
<caption>
<title>The processing arrangement sequence of workpiece 2</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Batch</th>
<th>Process</th>
<th>Task<break/> order</th>
<th>Machine</th>
<th>AGV</th>
<th>Processing start time</th>
<th>Processing<break/> end time</th>
<th>Transport<break/> start time</th>
<th>Transport<break/> end time</th>
</tr>
<tr>
<th/>
<th/>
<th/>
<th/>
<th/>
<th align="center" colspan="4">min</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>3</td>
<td>1</td>
<td>10</td>
<td>1</td>
<td>2</td>
<td>133</td>
<td>178</td>
<td>120</td>
<td>133</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>24</td>
<td>5</td>
<td>1</td>
<td>133</td>
<td>381</td>
<td>316</td>
<td>333</td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td>28</td>
<td>2</td>
<td>2</td>
<td>393</td>
<td>441</td>
<td>382</td>
<td>393</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>32</td>
<td>8</td>
<td>2</td>
<td>448</td>
<td>528</td>
<td>399</td>
<td>404</td>
</tr>
<tr>
<td>3</td>
<td>2</td>
<td>39</td>
<td>6</td>
<td>2</td>
<td>537</td>
<td>609</td>
<td>526</td>
<td>537</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>64</td>
<td>8</td>
<td>2</td>
<td>811</td>
<td>891</td>
<td>800</td>
<td>811</td>
</tr>
<tr>
<td>3</td>
<td>3</td>
<td>65</td>
<td>7</td>
<td>1</td>
<td>829</td>
<td>901</td>
<td>804</td>
<td>829</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>80</td>
<td>2</td>
<td>2</td>
<td>1037</td>
<td>1109</td>
<td>1017</td>
<td>1037</td>
</tr>
<tr>
<td>1</td>
<td>3</td>
<td>86</td>
<td>1</td>
<td>1</td>
<td>1119</td>
<td>1167</td>
<td>1103</td>
<td>1119</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td>91</td>
<td>5</td>
<td>1</td>
<td>1181</td>
<td>1237</td>
<td>1165</td>
<td>1181</td>
</tr>
<tr>
<td>1</td>
<td>4</td>
<td>94</td>
<td>4</td>
<td>1</td>
<td>1233</td>
<td>1305</td>
<td>1221</td>
<td>1233</td>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>96</td>
<td>9</td>
<td>2</td>
<td>1256</td>
<td>1304</td>
<td>1243</td>
<td>1256</td>
</tr>
</tbody>
</table>
</table-wrap><fig id="fig-15">
<label>Figure 15</label>
<caption>
<title>Iteration curve</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-15.tif"/>
</fig><fig id="fig-16">
<label>Figure 16</label>
<caption>
<title>Equipment load duration</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-16.tif"/>
</fig>
<p>From the test results of the above example, it can be seen that the improved nested optimization algorithm designed in this paper can effectively solve the flexible workshop dual resource batch scheduling optimization problem. And the batch optimization scheme, dual resource scheduling scheme, and path scheme obtained from the solution can well guide the workshop production activities.</p>
<p>To verify the superiority of the improved nested optimization algorithm, the experimental analysis is carried out through the actual production case 2. Case 2 contains 5 kinds of workpieces. The production batch of each workpiece is shown in <xref ref-type="table" rid="table-7">Table 7</xref>. The process flow of the workpiece is still shown in <xref ref-type="table" rid="table-3">Table 3</xref>. The layout of the workshop is still shown in <xref ref-type="fig" rid="fig-12">Fig. 12</xref>. There are 9 machine tools and 3 AGVs in the workshop to perform production tasks. The driving speed of AGV is 20 m/min, and the maximum single carrying capacity is 20 pieces.</p>
<table-wrap id="table-7">
<label>Table 7</label>
<caption>
<title>The production batch of each workpiece</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
<th>J6</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>Production quantity</td>
<td>40</td>
<td>30</td>
<td>40</td>
<td>40</td>
<td>30</td>
<td>30</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The improved nested optimization algorithm (INOA) and the unimproved basic nested optimization algorithm (BNOA) were used to solve case 2 for 10 times respectively. The parameter settings of IBOA are the same as those of case 1. The crossover probability and mutation probability of BNOA are set at 0.95 and 0.05, and other basic parameters are consistent with INOA. The experimental results are shown in <xref ref-type="table" rid="table-8">Table 8</xref>, and the result statistics of the two algorithms running 10 times are shown in <xref ref-type="table" rid="table-9">Table 9</xref> and <xref ref-type="fig" rid="fig-17">Fig. 17</xref>. The optimal batching scheme of INOA and BNOA running 10 times each is shown in <xref ref-type="table" rid="table-10">Table 10</xref>, and the optimal dual resource scheduling scheme is shown in <xref ref-type="fig" rid="fig-18">Figs. 18</xref> and <xref ref-type="fig" rid="fig-19">19</xref>, respectively.</p>
<table-wrap id="table-8">
<label>Table 8</label>
<caption>
<title>Experimental results min</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th rowspan="2">Experimental times</th>
<th align="center" colspan="2">INOA</th>
<th align="center" colspan="2">BNOA</th>
</tr>
<tr>
<th>Optimal solution</th>
<th>Convergence generations</th>
<th>Optimal solution</th>
<th>Convergence generations</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>1</td>
<td>1113</td>
<td>61</td>
<td>1239</td>
<td>40</td>
</tr>
<tr>
<td>2</td>
<td>1081</td>
<td>50</td>
<td>1256</td>
<td>39</td>
</tr>
<tr>
<td>3</td>
<td>1162</td>
<td>53</td>
<td>1297</td>
<td>42</td>
</tr>
<tr>
<td>4</td>
<td>1153</td>
<td>47</td>
<td>1317</td>
<td>53</td>
</tr>
<tr>
<td>5</td>
<td>1126</td>
<td>59</td>
<td>1231</td>
<td>34</td>
</tr>
<tr>
<td>6</td>
<td>1163</td>
<td>53</td>
<td>1246</td>
<td>46</td>
</tr>
<tr>
<td>7</td>
<td>1236</td>
<td>48</td>
<td>1283</td>
<td>29</td>
</tr>
<tr>
<td>8</td>
<td>1091</td>
<td>40</td>
<td>1148</td>
<td>56</td>
</tr>
<tr>
<td>9</td>
<td>1200</td>
<td>43</td>
<td>1316</td>
<td>49</td>
</tr>
<tr>
<td>10</td>
<td>1193</td>
<td>49</td>
<td>1263</td>
<td>45</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-9">
<label>Table 9</label>
<caption>
<title>Statistics of experimental results</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Algorithm name</th>
<th>The minimum value of the optimal solution</th>
<th>The maximum value of the optimal solution</th>
<th>The average value of the optimal solution</th>
<th>Minimum convergence generations</th>
<th>Maximum convergence generations</th>
<th>Average convergence generations</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>INOA</td>
<td>1081</td>
<td>1236</td>
<td>1151.8</td>
<td>40</td>
<td>61</td>
<td>50.3</td>
</tr>
<tr>
<td>BNOA</td>
<td>1148</td>
<td>1317</td>
<td>1259.6</td>
<td>29</td>
<td>56</td>
<td>43.3</td>
</tr>
</tbody>
</table>
</table-wrap><fig id="fig-17">
<label>Figure 17</label>
<caption>
<title>Optimal solution distribution scatter plot</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-17.tif"/>
</fig><table-wrap id="table-10">
<label>Table 10</label>
<caption>
<title>The optimal batching scheme of the two algorithms</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Algorithm name</th>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
<th>J6</th>
</tr>
<tr>
<th/>
<th>Production quantity</th>
<th>40</th>
<th>30</th>
<th>40</th>
<th>40</th>
<th>30</th>
<th>30</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>INOA</td>
<td>Batch divided</td>
<td>2</td>
<td>3</td>
<td>5</td>
<td>2</td>
<td>3</td>
<td>2</td>
</tr>
<tr>
<td>BNOA</td>
<td>Batch divided</td>
<td>2</td>
<td>3</td>
<td>5</td>
<td>5</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
</table-wrap><fig id="fig-18">
<label>Figure 18</label>
<caption>
<title>Gantt chart of the optimal dual resource scheduling scheme obtained by the INOA algorithm</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-18.tif"/>
</fig><fig id="fig-19">
<label>Figure 19</label>
<caption>
<title>Gantt chart of the optimal dual resource scheduling scheme obtained by the BNOA algorithm</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-19.tif"/>
</fig>
<p>It can be seen from the above experimental results that the minimum value of the optimal solution of the INOA running 10 times is 1081 min, and the average value of the optimal solution is 1151.8 min. The minimum value of the optimal solution of the BNOA is 1148 min, and the average value of the optimal solution is 1259.6 min. The average value of the optimal solution of the INOA decreased by 8.6% compared to the BNOA, indicating that the solution effect of the INOA is significantly better than that of the unimproved BNOA. The convergence speed of the BNOA is faster than that of the INOA. This is because the BNOA is easy to fall into the local optimal solution in the iterative process, resulting in a relatively poor solving effect.</p>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Analysis of AGV Configuration Quantity</title>
<p>The actual production case 3 is used to analyze the influence of the number of AGV configurations on production efficiency. Case 3 contains 5 kinds of workpieces. The production batch of each workpiece is shown in <xref ref-type="table" rid="table-11">Table 11</xref>; the process flow of the workpieces is shown in <xref ref-type="table" rid="table-12">Table 12</xref>; the layout of the workshop is still shown in <xref ref-type="fig" rid="fig-12">Fig. 12</xref>. The logistics solution of this workshop adopts a self-unloading backpacking roller-type AGV with a driving speed of 20 m/min and a carrying capacity of 20 pieces. By changing the configuration number of AGVs in case 3, the influence of different configuration numbers of AGVs on the workshop production cycle and equipment utilization rate is analyzed.</p>
<table-wrap id="table-11">
<label>Table 11</label>
<caption>
<title>The production batch of each workpiece</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Workpiece</th>
<th>J1</th>
<th>J2</th>
<th>J3</th>
<th>J4</th>
<th>J5</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>Production quantity</td>
<td>40</td>
<td>40</td>
<td>40</td>
<td>40</td>
<td>40</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-12">
<label>Table 12</label>
<caption>
<title>Workpiece process flow min</title>
</caption>
<table frame="hsides">
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead valign="top">
<tr>
<th>Workpiece</th>
<th>Process</th>
<th>M1</th>
<th>M2</th>
<th>M3</th>
<th>M4</th>
<th>M5</th>
<th>M6</th>
<th>M7</th>
<th>M8</th>
<th>M9</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">J1</td>
<td>1</td>
<td>7</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>11</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>12</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>11</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>12</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="3">J2</td>
<td>1</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>5</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>2</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>11</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>7</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
</tr>
<tr>
<td rowspan="3">J3</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>7</td>
</tr>
<tr>
<td>2</td>
<td>12</td>
<td>11</td>
<td>&#x2014;</td>
<td>10</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>11</td>
<td>10</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="3">J4</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>9</td>
</tr>
<tr>
<td>2</td>
<td>7</td>
<td>&#x2014;</td>
<td>8</td>
<td>&#x2014;</td>
<td>9</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>6</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>8</td>
<td>7</td>
<td>&#x2014;</td>
</tr>
<tr>
<td rowspan="3">J5</td>
<td>1</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>12</td>
<td>&#x2014;</td>
<td>13</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>14</td>
</tr>
<tr>
<td>2</td>
<td>14</td>
<td>&#x2014;</td>
<td>11</td>
<td>&#x2014;</td>
<td>15</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
</tr>
<tr>
<td>3</td>
<td>&#x2014;</td>
<td>11</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>&#x2014;</td>
<td>15</td>
<td>12</td>
<td>&#x2014;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="fig" rid="fig-20">Figs. 20</xref>&#x2013;<xref ref-type="fig" rid="fig-22">22</xref> respectively show the Gantt charts of the optimal dual-resource scheduling scheme for the cases with the number of AGV configurations of 2, 4, and 8, and the corresponding production cycles of 1340, 1107, and 916 min. It can be seen from the figures, as the number of AGVs increases, the Gantt chart of the transfer task of AGVs is gradually sparse throughout the production cycle, while the Gantt chart of the machine tool processing task is gradually compact throughout the production cycle, which indicates that with the increase of the number of AGVs, the machine tool utilization is significantly improved and the production cycle is significantly shortened.</p>
<fig id="fig-20">
<label>Figure 20</label>
<caption>
<title>Scheduling scheme with 2 AGVs</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-20.tif"/>
</fig><fig id="fig-21">
<label>Figure 21</label>
<caption>
<title>Scheduling scheme with 4 AGVs</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-21.tif"/>
</fig><fig id="fig-22">
<label>Figure 22</label>
<caption>
<title>Scheduling scheme with 8 AGVs</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-22.tif"/>
</fig>
<p><xref ref-type="table" rid="table-13">Tables 13</xref> and <xref ref-type="table" rid="table-14">14</xref> show the statistical results of various types of data in the workshop with different numbers of AGV configurations. Five simulations are performed for each AGV configuration. The completion time is taken as the result of the optimal solution; the average machine load is the average load of the 9 machines of the optimal solution in the 5 simulations; the utilization rate is the percentage of the average load and the completion time. The average load and the utilization rate of AGVs are the same as the machine statistics method.</p>
<table-wrap id="table-13">
<label>Table 13</label>
<caption>
<title>Data statistics for configuring different AGV quantities</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Number of AGVs</th>
<th>Completion time (min)</th>
<th>Average machine load (min)</th>
<th>Average machine utilization (%)</th>
<th>Average AGV load (min)</th>
<th>Average AGV utilization (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>2</td>
<td>1340</td>
<td>602.67</td>
<td>44.98</td>
<td>508.50</td>
<td>37.95</td>
</tr>
<tr>
<td>3</td>
<td>1213</td>
<td>610.49</td>
<td>50.33</td>
<td>411.09</td>
<td>33.89</td>
</tr>
<tr>
<td>4</td>
<td>1107</td>
<td>619.11</td>
<td>55.93</td>
<td>336.25</td>
<td>30.37</td>
</tr>
<tr>
<td>5</td>
<td>1018</td>
<td>616.95</td>
<td>60.60</td>
<td>232.71</td>
<td>22.86</td>
</tr>
<tr>
<td>6</td>
<td>946</td>
<td>618.90</td>
<td>65.42</td>
<td>180.12</td>
<td>19.04</td>
</tr>
<tr>
<td>7</td>
<td>928</td>
<td>621.95</td>
<td>67.02</td>
<td>174.56</td>
<td>18.81</td>
</tr>
<tr>
<td>8</td>
<td>916</td>
<td>623.78</td>
<td>68.10</td>
<td>169.50</td>
<td>18.50</td>
</tr>
</tbody>
</table>
</table-wrap><table-wrap id="table-14">
<label>Table 14</label>
<caption>
<title>Data statistics for configuring different AGV quantities</title>
</caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead valign="top">
<tr>
<th>Number of AGVs</th>
<th>Completion time (min)</th>
<th>Maximum machine utilization (%)</th>
<th>Minimum machine utilization (%)</th>
<th>Maximum AGV utilization (%)</th>
<th>Minimum AGV utilization (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td>2</td>
<td>1340</td>
<td>54.93</td>
<td>37.29</td>
<td>39.25</td>
<td>36.64</td>
</tr>
<tr>
<td>3</td>
<td>1213</td>
<td>59.14</td>
<td>41.54</td>
<td>35.26</td>
<td>32.10</td>
</tr>
<tr>
<td>4</td>
<td>1107</td>
<td>61.43</td>
<td>43.36</td>
<td>33.15</td>
<td>27.19</td>
</tr>
<tr>
<td>5</td>
<td>1018</td>
<td>69.73</td>
<td>53.25</td>
<td>24.55</td>
<td>21.37</td>
</tr>
<tr>
<td>6</td>
<td>946</td>
<td>71.38</td>
<td>56.45</td>
<td>20.69</td>
<td>17.53</td>
</tr>
<tr>
<td>7</td>
<td>928</td>
<td>74.23</td>
<td>58.96</td>
<td>20.40</td>
<td>17.16</td>
</tr>
<tr>
<td>8</td>
<td>916</td>
<td>75.98</td>
<td>59.83</td>
<td>20.20</td>
<td>16.70</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="fig" rid="fig-23">Fig. 23</xref> shows the influence of AGV configuration quantity on completion time and equipment utilization.</p>
<fig id="fig-23">
<label>Figure 23</label>
<caption>
<title>Influence diagram of AGV configuration quantity</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_40505-fig-23.tif"/>
</fig>
<p>From <xref ref-type="table" rid="table-13">Tables 13</xref>, <xref ref-type="table" rid="table-14">14</xref>, and <xref ref-type="fig" rid="fig-23">Fig. 23</xref>, it can be seen that as the number of AGVs increases, the production cycle of the workshop is gradually shortened; the utilization rate of machine tools gradually increases, but the utilization rate of AGVs gradually decreases; and after the number of AGVs reaches 6, the increasing the number of AGVs has negligible effects on the completion time, machine tools and utilization rate of AGVs. The relationship between the number of AGVs and the production efficiency of the workshop is consistent with the law of diminishing border effect. Therefore, the workshop needs to consider the impact of maintenance cost and completion time of the different numbers of AGVs on the workshop efficiency when facing the different scales of production.</p>

</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Conclusion</title>
<p>In this paper, the batch optimization of workshop products, dual resource scheduling optimization, and collision-free path planning problem of AGVs are studied; a mathematical model is established with the minimum production cycle as the optimization objective; and an improved nested optimization algorithm is designed based on a variety of improved optimization algorithms. The algorithm is tested through actual cases, and the impact of different AGV configuration quantities on production efficiency is analyzed through case simulation, and the number of AGV configurations and the workshop production efficiency are in line with the boundary decreasing law. The test results show that the improved nested optimization algorithm designed in this paper can effectively achieve the solution of integrated optimization problems of batch optimization, dual resource scheduling optimization, and AGV collision-free path optimization for the flexible workshop, and can provide intellectual support for the decision-making service of the intelligent workshop.</p>
<p>Although this paper has completed the solution of the dual-resource batch scheduling optimization problem for the flexible job shop and the iterative optimization of the designed improved nested optimization algorithm that can solve the optimized scheduling scheme, several aspects are simplified in building the model. Further optimization can be solved according to the actual workshop production process in the future by considering various optimization objectives such as equipment utilization, production energy consumption, processing cost, etc. Moreover, emergency order insertion, equipment failure, and other unexpected disturbance events may occur in the workshop during processing, and it is necessary to study rescheduling or dynamic scheduling to solve the disturbance events occurring in the production process.</p>
</sec>
</body>
<back>
<sec><title>Funding Statement</title>
<p>The authors received no specific funding for this study.</p>
</sec>
<sec sec-type="COI-statement"><title>Conflicts of Interest</title>
<p>The authors declare that they have no conflicts of interest to report regarding the present study.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>T.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>C. S.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>H. W.</given-names> <surname>Liang</surname></string-name>, <string-name><given-names>P.</given-names> <surname>Li</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> &#x201C;<article-title>Current trends in the development of intelligent unmanned autonomous systems</article-title>,&#x201D; <source>Frontiers of Information Technology &#x0026; Electronic Engineering</source>, vol. <volume>18</volume>, no. <issue>1</issue>, pp. <fpage>68</fpage>&#x2013;<lpage>85</lpage>, <year>2017</year>. </mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>Z. M.</given-names> <surname>Wu</surname></string-name> and <string-name><given-names>Q.</given-names> <surname>Gan</surname></string-name></person-group>, &#x201C;<article-title>Integrated scheduling of machines and AGVs in flexible manufacturing environment</article-title>,&#x201D; <source>China Mechanical Engineering</source>, vol. <volume>12</volume>, no. <issue>4</issue>, pp. <fpage>447</fpage>&#x2013;<lpage>450</lpage>, <year>2001</year>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C. Z.</given-names> <surname>He</surname></string-name>, <string-name><given-names>Y. C.</given-names> <surname>Song</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Lei</surname></string-name>, <string-name><given-names>X. F.</given-names> <surname>Lyu</surname></string-name>, <string-name><given-names>R. X.</given-names> <surname>Liu</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> &#x201C;<article-title>Integrated scheduling of multiple AGVs and machines in flexible job shops</article-title>,&#x201D; <source>China Mechanical Engineering</source>, vol. <volume>30</volume>, no. <issue>4</issue>, pp. <fpage>438</fpage>&#x2013;<lpage>447</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y. Q.</given-names> <surname>Xu</surname></string-name>, <string-name><given-names>C. M.</given-names> <surname>Ye</surname></string-name> and <string-name><given-names>L.</given-names> <surname>Cao</surname></string-name></person-group>, &#x201C;<article-title>Research on flexible job-shop scheduling problem with AGV constraints</article-title>,&#x201D; <source>Application Research of Computers</source>, vol. <volume>35</volume>, no. <issue>11</issue>, pp. <fpage>3271</fpage>&#x2013;<lpage>3275</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X. X.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>D. M.</given-names> <surname>Yang</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>R.</given-names> <surname>Wu</surname></string-name></person-group>, &#x201C;<article-title>Flexible job shop AGV fusion scheduling method based on HGWOA</article-title>,&#x201D; <source>China Mechanical Engineering</source>, vol. <volume>32</volume>, no. <issue>8</issue>, pp. <fpage>938</fpage>&#x2013;<lpage>950&#x002B;986</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Q. H.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>N. J.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>T. T.</given-names> <surname>Ma</surname></string-name>, <string-name><given-names>F. P.</given-names> <surname>Li</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> &#x201C;<article-title>Research on flexible job shop scheduling optimization based on segmented AGV</article-title>,&#x201D; <source>Computer Modeling in Engineering &#x0026; Sciences</source>, vol. <volume>134</volume>, no. <issue>3</issue>, pp. <fpage>2073</fpage>&#x2013;<lpage>2091</lpage>, <year>2023</year>. </mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>K.</given-names> <surname>Chen</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Bi</surname></string-name> and <string-name><given-names>W. Y.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Research on integrated scheduling of AGV and machine in flexible job shop</article-title>,&#x201D; <source>Journal of System Simulation</source>, vol. <volume>34</volume>, no. <issue>3</issue>, pp. <fpage>461</fpage>&#x2013;<lpage>469</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>A. B. N.</given-names> <surname>Paksi</surname></string-name> and <string-name><given-names>A.</given-names> <surname>Ma&#x2019;Ruf</surname></string-name></person-group>, &#x201C;<article-title>Flexible job-shop scheduling with dual-resource constraints to minimize tardiness using genetic algorithm</article-title>,&#x201D; <source>IOP Conference Series Materials Science and Engineering</source>, vol. <volume>114</volume>, no. <issue>1</issue>, pp. <fpage>012060</fpage>, <year>2016</year>. </mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H. C.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>H. D.</given-names> <surname>Zhu</surname></string-name></person-group>, &#x201C;<article-title>Modified water wave optimization for energy-conscious dual-resource constrained flexible job shop scheduling</article-title>,&#x201D; <source>International Journal of Performability Engineering</source>, vol. <volume>16</volume>, no. <issue>6</issue>, pp. <fpage>916</fpage>&#x2013;<lpage>929</lpage>, <year>2020</year>. </mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>H. T.</given-names> <surname>Du</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Borucki</surname></string-name>, <string-name><given-names>S. F.</given-names> <surname>Jin</surname></string-name>, <string-name><given-names>T. T.</given-names> <surname>Hou</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> &#x201C;<article-title>Dual resource constrained flexible job shop scheduling based on improved quantum genetic algorithm</article-title>,&#x201D; <source>Machines</source>, vol. <volume>9</volume>, no. <issue>6</issue>, pp. <fpage>108</fpage>, <year>2021</year>. </mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>B. Z.</given-names> <surname>Xu</surname></string-name>, <string-name><given-names>X. L.</given-names> <surname>Fei</surname></string-name> and <string-name><given-names>X. L.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>Batch division and parallel scheduling optimization of flexible job shop</article-title>,&#x201D; <source>Computer Integrated Manufacturing Systems</source>, vol. <volume>22</volume>, no. <issue>8</issue>, pp. <fpage>1953</fpage>&#x2013;<lpage>1964</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J. P.</given-names> <surname>Xu</surname></string-name>, <string-name><given-names>G. M.</given-names> <surname>Lu</surname></string-name>, <string-name><given-names>P.</given-names> <surname>Yu</surname></string-name> and <string-name><given-names>Q. R.</given-names> <surname>He</surname></string-name></person-group>, &#x201C;<article-title>Robust multi-objective flexible job shop scheduling with batch startup time</article-title>,&#x201D; <source>Modern Manufacturing Engineering</source>, vol. <volume>10</volume>, pp. <fpage>28</fpage>&#x2013;<lpage>34</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X. H.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>C.</given-names> <surname>Duan</surname></string-name> and <string-name><given-names>L.</given-names> <surname>Wang</surname></string-name></person-group>, &#x201C;<article-title>Flexible job shop scheduling with lot streaming based on improved migrating birds optimization algorithm</article-title>,&#x201D; <source>Computer Integrated Manufacturing Systems</source>, vol. <volume>27</volume>, no. <issue>11</issue>, pp. <fpage>3185</fpage>&#x2013;<lpage>3195</lpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C.</given-names> <surname>Tan</surname></string-name>, <string-name><given-names>J. H.</given-names> <surname>Zhang</surname></string-name> and <string-name><given-names>T.</given-names> <surname>Guo</surname></string-name></person-group>, &#x201C;<article-title>Multi-objective flexible job shop scheduling considering lot-splitting</article-title>,&#x201D; <source>Modern Manufacturing Engineering</source>, vol. <volume>12</volume>, pp. <fpage>25</fpage>&#x2013;<lpage>35</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>A.</given-names> <surname>Bozek</surname></string-name> and <string-name><given-names>F.</given-names> <surname>Werner</surname></string-name></person-group>, &#x201C;<article-title>Flexible job shop scheduling with lot streaming and sublot size optimization</article-title>,&#x201D; <source>International Journal of Production Research</source>, vol. <volume>56</volume>, no. <issue>19</issue>, pp. <fpage>6391</fpage>&#x2013;<lpage>6411</lpage>, <year>2018</year>. </mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>R. H.</given-names> <surname>Huang</surname></string-name> and <string-name><given-names>T. H.</given-names> <surname>Yu</surname></string-name></person-group>, &#x201C;<article-title>An effective ant colony optimization algorithm for multi-objective job-shop scheduling with equal-size lot-splitting</article-title>,&#x201D; <source>Applied Soft Computing Journal</source>, vol. <volume>57</volume>, pp. <fpage>642</fpage>&#x2013;<lpage>656</lpage>, <year>2017</year>. </mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X. L.</given-names> <surname>Wu</surname></string-name>, <string-name><given-names>J. J.</given-names> <surname>Peng</surname></string-name>, <string-name><given-names>Z. R.</given-names> <surname>Xie</surname></string-name>, <string-name><given-names>N.</given-names> <surname>Zhao</surname></string-name> and <string-name><given-names>S. M.</given-names> <surname>Wu</surname></string-name></person-group>, &#x201C;<article-title>An improved multi-objective optimization algorithm for solving flexible job shop scheduling problem with variable batches</article-title>,&#x201D; <source>Journal of Systems Engineering and Electronics</source>, vol. <volume>32</volume>, no. <issue>2</issue>, pp. <fpage>272</fpage>&#x2013;<lpage>285</lpage>, <year>2021</year>. </mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Z. H.</given-names> <surname>Jia</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>C.</given-names> <surname>Wu</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Yang</surname></string-name>, <string-name><given-names>X. Y.</given-names> <surname>Zhang</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> &#x201C;<article-title>Multi-objective energy-aware batch scheduling using ant colony optimization algorithm</article-title>,&#x201D; <source>Computers and Industrial Engineering</source>, vol. <volume>131</volume>, no. <issue>4</issue>, pp. <fpage>41</fpage>&#x2013;<lpage>56</lpage>, <year>2019</year>. </mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Q.</given-names> <surname>Zeng</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Shen</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Ren</surname></string-name> and <string-name><given-names>L. Y.</given-names> <surname>Wu</surname></string-name></person-group>, &#x201C;<article-title>Multi-objective scheduling method for batch production FJSP with dual-resource</article-title>,&#x201D; <source>Computer Engineering and Applications</source>, vol. <volume>51</volume>, no. <issue>1</issue>, pp. <fpage>250</fpage>&#x2013;<lpage>256</lpage>, <year>2015</year>.</mixed-citation></ref>
</ref-list>
</back></article>