<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Environ. Sci.</journal-id>
<journal-title>Frontiers in Environmental Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Environ. Sci.</abbrev-journal-title>
<issn pub-type="epub">2296-665X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1059451</article-id>
<article-id pub-id-type="doi">10.3389/fenvs.2022.1059451</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Environmental Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>CEA-FJSP: Carbon emission-aware flexible job-shop scheduling based on deep reinforcement learning</article-title>
<alt-title alt-title-type="left-running-head">Wang et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fenvs.2022.1059451">10.3389/fenvs.2022.1059451</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Shiyong</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1845747/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Li</surname>
<given-names>Jiaxian</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1934209/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Tang</surname>
<given-names>Hao</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Juan</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>School of Mechanical and Automotive Engineering</institution>, <institution>South China University of Technology</institution>, <addr-line>Guangzhou</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>School of Information and Communication Engineering</institution>, <institution>Hainan University</institution>, <addr-line>Haikou</addr-line>, <addr-line>Hainan</addr-line>, <country>China</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>School of Electronics and Communication</institution>, <institution>Guangdong Mechanical &#x26; Electronical Polytechnic</institution>, <addr-line>Guangzhou</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/505472/overview">Uzair Aslam Bhatti</ext-link>, Hainan University, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2040992/overview">Yongchao Luo</ext-link>, South China University of Technology, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1417148/overview">Hongyan Shi</ext-link>, Shenzhen University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1844561/overview">Tao Ku</ext-link>, Shenyang Institute of Automation (SIA) (CAS), China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Hao Tang, <email>melineth@hainanu.edu.cn</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Environmental Informatics and Remote Sensing, a section of the journal Frontiers in Environmental Science</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>04</day>
<month>11</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>10</volume>
<elocation-id>1059451</elocation-id>
<history>
<date date-type="received">
<day>01</day>
<month>10</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>19</day>
<month>10</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Wang, Li, Tang and Wang.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Wang, Li, Tang and Wang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Currently, excessive carbon emission is causing visible damage to the ecosystem and will lead to long-term environmental degradation in the future. The manufacturing industry is one of the main contributors to the carbon emission problem. Therefore, the reduction of carbon emissions should be considered at all levels of production activities. In this paper, the carbon emission as a parvenu indicator is considered parallelly with the nobleman indicator, makespan, in the flexible job-shop scheduling problem. Firstly, the carbon emission is modeled based on the energy consumption of machine operation and the coolant treatment during the production process. Then, a deep reinforcement learning-based scheduling model is proposed to handle the carbon emission-aware flexible job-shop scheduling problem. The proposed model treats scheduling as a Markov decision process, where the scheduling agent and the scheduling environment interact repeatedly via states, actions, and rewards. Next, a deep neural network is employed to parameterize the scheduling policy. Then, the proximal policy optimization algorithm is conducted to drive the deep neural network to learn the objective-oriented optimal mapping from the states to the actions. The experimental results verify that the proposed deep reinforcement learning-based scheduling model has prominent optimization and generalization abilities. Moreover, the proposed model presents a nonlinear optimization effect over the weight combinations.</p>
</abstract>
<kwd-group>
<kwd>smart manufacturing</kwd>
<kwd>production scheduling</kwd>
<kwd>deep reinforcement learning</kwd>
<kwd>carbon emission</kwd>
<kwd>multi-objective optimization</kwd>
</kwd-group>
<contract-num rid="cn001">2020YFB1708500</contract-num>
<contract-sponsor id="cn001">National Key Research and Development Program of China<named-content content-type="fundref-id">10.13039/501100012166</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Production scheduling is a subclass of combinational optimization problems aiming to sequence jobs to machines toward the optimization of one or more scheduling objectives (<xref ref-type="bibr" rid="B12">Fernandes et al., 2022</xref>). Production scheduling can be classified into many types according to its inherent properties. For example, the job-shop scheduling problem (JSSP) specifies that one operation can only be processed by one machine (<xref ref-type="bibr" rid="B42">Zhang et al., 2019</xref>), while the flexible job-shop scheduling problem (FJSP) allows multiple candidate machines to process an operation (<xref ref-type="bibr" rid="B7">Brucker and Schlie, 1990</xref>). The frequently adopted scheduling objectives related to economic benefits include makespan, tardiness, and machine utilization (<xref ref-type="bibr" rid="B1">Allahverdi et al., 2008</xref>). In recent years, the steady deterioration of environmental problems (<xref ref-type="bibr" rid="B4">Bhatti et al., 2021</xref>; <xref ref-type="bibr" rid="B3">Bhatti et al., 2022a</xref>; <xref ref-type="bibr" rid="B5">Bhatti et al., 2022b</xref>), such as pollution and climate change, has raised the awareness of environmental protection. Hence, environmental indicators, especially energy consumption and carbon emission, are a growing concern in production scheduling (<xref ref-type="bibr" rid="B13">Gao et al., 2020</xref>). Therefore, the FJSP is formulated as a multi-objective optimization problem considering both economic benefit and environmental effect.</p>
<p>The heuristic and meta-heuristic algorithms have been widely applied to achieve multi-objective scheduling. In terms of heuristic algorithms, <xref ref-type="bibr" rid="B41">Zhang et al. (2022)</xref> proposed a greedy algorithm and an elite strategy to solve FJSP with the objectives of minimizing both makespan and total energy consumption. <xref ref-type="bibr" rid="B36">Xu et al. (2021)</xref> proposed three delayed routing strategies to optimize energy efficiency and mean tardiness in dynamic FJSP. In terms of meta-heuristic algorithms, the multi-objective genetic algorithm (GA) is the most popular scheme due to its excellent global optimization ability and convergence performance (<xref ref-type="bibr" rid="B19">Li and Wang, 2022</xref>). Several GA-based algorithms have been proposed to improve search efficiency for minimizing makespan and total energy consumption (<xref ref-type="bibr" rid="B26">Mokhtari and Hasani, 2017</xref>; <xref ref-type="bibr" rid="B8">Dai et al., 2019</xref>) and to determine machine start/stop time and speed level to save energy (<xref ref-type="bibr" rid="B35">Wu and Sun, 2018</xref>). Moreover, none-GA based algorithms including the frog-leaping algorithm (<xref ref-type="bibr" rid="B18">Lei et al., 2017</xref>) and the grey wolf algorithm (<xref ref-type="bibr" rid="B25">Luo et al., 2019</xref>) are also available for multi-objective scheduling.</p>
<p>However, the above-mentioned scheduling algorithms lack generalization ability (<xref ref-type="bibr" rid="B16">Han and Yang, 2021</xref>). To solve an FJSP instance that is different from the solved ones in terms of parameters such as the number of jobs and machines, the existing heuristic algorithms generally require the development of new scheduling rules while the meta-heuristic algorithms require considerable iterative computation time to obtain high-quality scheduling solutions. In contrast, deep reinforcement learning (DRL) based (<xref ref-type="bibr" rid="B2">Arulkumaran et al., 2017</xref>) production scheduling can learn and generalize the knowledge from the training samples to new problems. Therefore, the trained DRL models can be applied to different scheduling scenarios to produce satisfactory scheduling solutions in a reasonable computation time. <xref ref-type="bibr" rid="B32">Qu et al. (2016)</xref> and <xref ref-type="bibr" rid="B34">van Ekeris et al. (2021)</xref> stated that DRL could discover basic heuristic behaviors for production scheduling from scratch, providing a kind of optimization-capable, scalable, and real-time scheduling methods.</p>
<p>Numerous studies have utilized the generalization ability of DRL to solve different-scale production scheduling problems (<xref ref-type="bibr" rid="B33">Ren et al., 2020</xref>; <xref ref-type="bibr" rid="B40">Zhang et al., 2020</xref>; <xref ref-type="bibr" rid="B27">Monaci et al., 2021</xref>; <xref ref-type="bibr" rid="B29">Ni et al., 2021</xref>; <xref ref-type="bibr" rid="B31">Park et al., 2021</xref>). However, these studies focused on either the single objective JSSP (<xref ref-type="bibr" rid="B15">Han and Yang, 2020</xref>; <xref ref-type="bibr" rid="B20">Liu et al., 2020</xref>; <xref ref-type="bibr" rid="B43">Zhao et al., 2021</xref>; <xref ref-type="bibr" rid="B39">Zeng et al., 2022</xref>) or the flow-shop scheduling problem (FSSP) (<xref ref-type="bibr" rid="B30">Pan et al., 2021</xref>; <xref ref-type="bibr" rid="B37">Yan et al., 2022</xref>). The multi-objective FJSPs have been seldom addressed (<xref ref-type="bibr" rid="B17">Lang et al., 2020</xref>; <xref ref-type="bibr" rid="B24">Luo et al., 2021</xref>). Furthermore, among the few studies addressing the DRL-based multi-objective FJSP, even fewer studies cared about environmental objectives (<xref ref-type="bibr" rid="B28">Naimi et al., 2021</xref>; <xref ref-type="bibr" rid="B9">Du et al., 2022</xref>). Therefore, the development of DRL-based methods for solving FJSP is still in the initial stage and not yet systematic (<xref ref-type="bibr" rid="B23">Luo, 2020</xref>; <xref ref-type="bibr" rid="B11">Feng et al., 2021</xref>; <xref ref-type="bibr" rid="B22">Liu et al., 2022</xref>).</p>
<p>In summary, the existing DRL-based methods for FJSP receive less attention compared with those for JSSP. Moreover, most of the studies preferred the optimization of single or multiple economic objectives to the optimization of environmental objectives. Although some studies have attempted to minimize total energy consumption or electricity cost, minimizing carbon emissions has not been yet explicitly considered. Furthermore, a few studies integrated a DRL model with a meta-heuristic algorithm to solve the multi-objective FJSP. However, the DRL model was used as an auxiliary tool to assist the meta-heuristic algorithm to improve search efficiency. To resolve the above-mentioned technical limitation, this paper proposes a DRL-based scheduling method to handle FJSP to minimize both makespan and total carbon emission. The main contributions of this study are listed as follows.<list list-type="simple">
<list-item>
<p>1) The classical FJSP is extended to a carbon emission-aware flexible job-shop scheduling problem (CEA-FJSP), where a carbon emission accounting model is formulated based on the energy consumption of machine operation and coolant treatment during the production process.</p>
</list-item>
<list-item>
<p>2) An intelligent DRL-based scheduling model is developed to directly generate feasible scheduling solutions for CEA-FJSP without extra searching. The solving process is modeled as a Markov decision process (MDP) including generic productive state features, a scheduling rule-based action space, and a composite reward function.</p>
</list-item>
<list-item>
<p>3) The scheduling policy is parameterized by a deep neural network (DNN), that is, optimized by the proximal policy optimization (PPO) algorithm to establish the mapping from the states to the actions.</p>
</list-item>
<list-item>
<p>4) The experimental results on various benchmarks demonstrate that the proposed DRL scheduling model has prominent optimization and generalization abilities. Moreover, the proposed model presents a nonlinear optimization effect over the weight combinations.</p>
</list-item>
</list>
</p>
<p>The remainder of this paper is organized as follows. The mathematical model of the CEA-FJSP is formulated in <xref ref-type="sec" rid="s2">Section 2</xref>. The DRL scheduling model is described in <xref ref-type="sec" rid="s3">Section 3</xref>. <xref ref-type="sec" rid="s4">Section 4</xref> presents the experimental results and <xref ref-type="sec" rid="s5">Section 5</xref> concludes the study.</p>
</sec>
<sec id="s2">
<title>2 Problem formulation</title>
<p>This section mathematically describes the conditions and constraints of the CEA-FJSP. There are <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> jobs belonging to a job set <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi mathvariant="bold-script">I</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> to be processed by <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> machines belonging to a machine set <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. A job <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> consists of <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> operations, where <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th operation of <inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The operations of the same job <inline-formula id="inf10">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> must be processed in a specific order, i.e., <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2192;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The operation <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be processed by one or more machines forming an operation-specific candidate machine set <inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2286;</mml:mo>
<mml:mi mathvariant="bold-script">M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The time and the power that the machine <inline-formula id="inf14">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> requires to process the operation <inline-formula id="inf15">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are denoted as <inline-formula id="inf16">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf17">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. The machine <inline-formula id="inf18">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> also requires coolant during processing and constant lower power consumption in an idle state. The scheduling for CEA-FJSP aims to obtain an optimal scheduling solution to minimize both makespan and carbon emission, by determining a machine <inline-formula id="inf19">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> from <inline-formula id="inf20">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the start time <inline-formula id="inf21">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and the completion time <inline-formula id="inf22">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for each operation <inline-formula id="inf23">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Furthermore, the following constraints and assumptions should be satisfied:<list list-type="simple">
<list-item>
<p>1) The operations of the same job should be processed following the defined operation precedence.</p>
</list-item>
<list-item>
<p>2) A machine can only process one operation at a time.</p>
</list-item>
<list-item>
<p>3) An operation should be processed without interruption.</p>
</list-item>
<list-item>
<p>4) A machine processes an operation with constant processing power.</p>
</list-item>
<list-item>
<p>5) All machines turn on at the start of the scheduling.</p>
</list-item>
<list-item>
<p>6) The transportation time of jobs and the setup time of machines are negligible.</p>
</list-item>
</list>
</p>
<p>Based on the above description, a carbon emission accounting model is formulated firstly to identify the main sources and specific computation of carbon emission in CEA-FJSP. Then, the mathematical model of the CEA-FJSP is established. <xref ref-type="table" rid="T1">Table 1</xref> lists the notations used in the models.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Notations for CEA-FJSP.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Notation</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<inline-formula id="inf24">
<mml:math id="m24">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf25">
<mml:math id="m25">
<mml:mrow>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Indices of jobs, <inline-formula id="inf26">
<mml:math id="m26">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf27">
<mml:math id="m27">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf28">
<mml:math id="m28">
<mml:mrow>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Indices of operations, <inline-formula id="inf29">
<mml:math id="m29">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf30">
<mml:math id="m30">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Index of machines, <inline-formula id="inf31">
<mml:math id="m31">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf32">
<mml:math id="m32">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Total number of jobs</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf33">
<mml:math id="m33">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Total number of machines</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf34">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="bold-script">I</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Job set</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf35">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="bold-script">M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Machine set</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf36">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Candidate machines for operation <inline-formula id="inf37">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf38">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The <inline-formula id="inf39">
<mml:math id="m39">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> job</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf40">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The <inline-formula id="inf41">
<mml:math id="m41">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> operation of job <inline-formula id="inf42">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf43">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The <inline-formula id="inf44">
<mml:math id="m44">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> machine</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf45">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The number of operations of job <inline-formula id="inf46">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf47">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The processing time of operation <inline-formula id="inf48">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> required by machine <inline-formula id="inf49">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf50">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The start time of operation <inline-formula id="inf51">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf52">
<mml:math id="m52">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The completion time of operation <inline-formula id="inf53">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf54">
<mml:math id="m54">
<mml:mrow>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The idle time of machine <inline-formula id="inf55">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf56">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The processing power of operation <inline-formula id="inf57">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> required by machine <inline-formula id="inf58">
<mml:math id="m58">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf59">
<mml:math id="m59">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Idle power of machine <inline-formula id="inf60">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf61">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The replacement cycle of coolant required by machine <inline-formula id="inf62">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf63">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The maximum usage of coolant required by machine <inline-formula id="inf64">
<mml:math id="m64">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in a cycle</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf65">
<mml:math id="m65">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The carbon emission factor of electrical energy consumption</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf66">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">The carbon emission factor of coolant energy consumption</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf67">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Carbon emission from electrical energy consumption of machine in processing state</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf68">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Carbon emission from electrical energy consumption of machine in idle state</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf69">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Total carbon emission from energy consumption of coolant treatment</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf70">
<mml:math id="m70">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Total carbon emission</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf71">
<mml:math id="m71">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Makespan</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf72">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">A binary variable, that is, equal to 1 if <inline-formula id="inf73">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is assigned to machine <inline-formula id="inf74">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and 0 otherwise</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf75">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">A binary variable, that is, equal to 1 if <inline-formula id="inf76">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a predecessor of <inline-formula id="inf77">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> on machine <inline-formula id="inf78">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and 0 otherwise</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s2-1">
<title>2.1 Carbon emission accounting model</title>
<p>Carbon emission is produced directly or indirectly by various manufacturing links, such as raw materials consumption, machine operation, transportation, and metal debris treatment (<xref ref-type="bibr" rid="B14">Gutowski et al., 2005</xref>). In this paper, the electrical energy consumption of machine operation and the energy consumption of coolant treatment are identified as the main carbon emission sources in CEA-FJSP.</p>
<sec id="s2-1-1">
<title>2.1.1 Carbon emission from machine operation</title>
<p>Generally, a machine experiences five working modes in a duty cycle: start-up, warm-up, processing, idle, and stop. Each mode requires a different power level as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. The modes of start-up, warm-up, and stop appear only once in a duty cycle and the energy consumption in these modes is only related to machine properties rather than scheduling. In contrast, the processing and idle modes tend to alternately appear multiple times. Therefore, only the carbon emission in processing and idle modes are considered in scheduling.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Power variation of five machine working modes.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g001.tif"/>
</fig>
<p>Under processing mode, the carbon emission <inline-formula id="inf79">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is calculated as:<disp-formula id="e1">
<mml:math id="m80">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf80">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the total electrical energy consumption of all machines under processing mode and is expressed as:<disp-formula id="e2">
<mml:math id="m82">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>Under idle mode, the carbon emission <inline-formula id="inf81">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is calculated as:<disp-formula id="e3">
<mml:math id="m84">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>where <inline-formula id="inf82">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the total electrical energy consumption of all machines under idle mode and is expressed as:<disp-formula id="e4">
<mml:math id="m86">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-1-2">
<title>2.1.2 Carbon emission from coolant treatment</title>
<p>The coolant is used to reduce the cutting temperature and tool wear and prevent the workpiece from being deformed by heat. The coolant needs to be replaced periodically and the treatment process consumes energy, indirectly producing carbon emissions. To simplify the calculation, it is assumed that the coolant flow rate remains unchanged for the same machine regardless of the processed operations. Hence, the carbon emission of coolant treatment <inline-formula id="inf83">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated as:<disp-formula id="e5">
<mml:math id="m88">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The total carbon emission <inline-formula id="inf84">
<mml:math id="m89">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> during scheduling adds up as:<disp-formula id="e6">
<mml:math id="m90">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
</sec>
</sec>
<sec id="s2-2">
<title>2.2 CEA-FJSP formulation</title>
<p>The CEA-FJSP is a multi-objective optimization problem, considering both economic and environmental benefits. The scheduling objectives are to simultaneously minimize <inline-formula id="inf85">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf86">
<mml:math id="m92">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Therefore, the mathematical model of CEA-FJSP is formulated as:<disp-formula id="e7">
<mml:math id="m93">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m94">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>.</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">b</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">d</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:msup>
<mml:mi>i</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:msup>
<mml:mi>j</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
<xref ref-type="disp-formula" rid="e7">Eq. 7</xref> shows that the objective function minimizes the weighted sum of <inline-formula id="inf87">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf88">
<mml:math id="m96">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, converting the multi-objective optimization problem into a single-objective optimization problem, where <inline-formula id="inf89">
<mml:math id="m97">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf90">
<mml:math id="m98">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the weights corresponding to <inline-formula id="inf91">
<mml:math id="m99">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf92">
<mml:math id="m100">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. <xref ref-type="disp-formula" rid="e8">Eq. 8</xref> shows the five constraints. Constraint (a) in <xref ref-type="disp-formula" rid="e8">Eq. 8</xref> describes the relationship between makespan and the operation completion time. Constraint (b) ensures that the operation completion time is equal to the sum of the start time and the processing time. Constraint (c) specifies that an operation can be assigned to and processed by only one machine. Constraint (d) guarantees the precedence constraint between the operations of the same job. Constraint (e) shows that a machine can process only one operation at a time.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Deep reinforcement learning scheduling modeling</title>
<p>This section proposes a DRL scheduling model for handling CEA-FJSP. <xref ref-type="fig" rid="F2">Figure 2</xref> shows the framework of the proposed DRL scheduling model. The scheduling environment is an instance of CEA-FJSP initialized with the assumptions and constraints described in <xref ref-type="sec" rid="s2">Section 2</xref>. The scheduling agent embeds a scheduling policy parameterized by a DNN and trained by a DRL algorithm. The agent interacts repeatedly with the environment. In each interaction, the scheduling agent selects an operation and assigns it to a machine, based on the information extracted from the scheduling environment.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Framework of the DRL scheduling model for CEA-FJSP.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g002.tif"/>
</fig>
<p>The determined operations are queued in a temporary scheduling solution, which is a sequence intuitively describing the precedence of operations. The temporary scheduling solution is turned into a complete and feasible scheduling solution when all operations are determined. Therefore, the scheduling process of a CEA-FJSP instance features an MDP consisting of state, action, and reward. Lastly, the MDP is optimized using a DRL algorithm resulting in a DRL scheduling model.</p>
<sec id="s3-1">
<title>3.1 Markov decision process formulation</title>
<p>An MDP mainly includes three components: state, action, and reward. A complete decision-making process of MDP is called an episode, consisting of <inline-formula id="inf93">
<mml:math id="m101">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> decision steps in CEA-FJSP, where one decision step corresponds to one interaction. At the decision step <inline-formula id="inf94">
<mml:math id="m102">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the scheduling agent perceives the state <inline-formula id="inf95">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the scheduling environment. Then, the state features are fed into the scheduling policy that in turn selects an action <inline-formula id="inf96">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. After the execution of the action <inline-formula id="inf97">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, an unscheduled operation is selected and assigned to a candidate machine. Hence, the selected operation becomes scheduled. After that, the scheduling environment releases a reward <inline-formula id="inf98">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to reflect the change of the scheduling objectives, as well as updates to a new state <inline-formula id="inf99">
<mml:math id="m107">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> ready for the next interaction.</p>
<sec id="s3-1-1">
<title>3.1.1 State representation</title>
<p>The state is the basis of decision making and should provide adequate information about the scheduling environment. The number of scheduled operations of job <inline-formula id="inf100">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at the decision step <inline-formula id="inf101">
<mml:math id="m109">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula id="inf102">
<mml:math id="m110">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. The operations of all the jobs in a scheduling instance are divided into two subsets: <inline-formula id="inf103">
<mml:math id="m111">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf104">
<mml:math id="m112">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. Therefore, the completion time <inline-formula id="inf105">
<mml:math id="m113">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be determined for the operations in the subset <inline-formula id="inf106">
<mml:math id="m114">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> while the average processing time <inline-formula id="inf107">
<mml:math id="m115">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and the average processing power <inline-formula id="inf108">
<mml:math id="m116">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-script">M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated for the operations in the subset <inline-formula id="inf109">
<mml:math id="m117">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>A statistic-based representation is adopted to define state features using the dynamic attributes of jobs and machines. <xref ref-type="table" rid="T2">Table 2</xref> lists the proposed statistic-based state features. It can be seen from the table that the state is a vector consisting of ten features <inline-formula id="inf110">
<mml:math id="m118">
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> maintaining a fixed size, which can avoid dimension disaster in large-scale problems. Moreover, the values of the state features are in the range of [0, 1], which can speed up the training process and can be generalized to problems with different configurations.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Statistic-based state features.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Production statistic information</th>
<th align="left">Index</th>
<th align="left">State feature</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="left">Completion rate of a job <inline-formula id="inf111">
<mml:math id="m119">
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>:</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mfrac>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-script">I</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf112">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf113">
<mml:math id="m121">
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf114">
<mml:math id="m122">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf115">
<mml:math id="m123">
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td rowspan="2" align="left">Machine utilization of a machine <inline-formula id="inf116">
<mml:math id="m124">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf117">
<mml:math id="m125">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>U</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-script">M</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf118">
<mml:math id="m126">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf119">
<mml:math id="m127">
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf120">
<mml:math id="m128">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf121">
<mml:math id="m129">
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td rowspan="2" align="left">Current carbon emission produced by a machine <inline-formula id="inf122">
<mml:math id="m130">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf123">
<mml:math id="m131">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munderover>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-script">M</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>; Number of operations processed on a machine <inline-formula id="inf124">
<mml:math id="m132">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf125">
<mml:math id="m133">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>N</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-script">M</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf126">
<mml:math id="m134">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf127">
<mml:math id="m135">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf128">
<mml:math id="m136">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf129">
<mml:math id="m137">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>N</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>N</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Average processing time of the current eligible operation of an uncompleted job (<inline-formula id="inf130">
<mml:math id="m138">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>): <inline-formula id="inf131">
<mml:math id="m139">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf132">
<mml:math id="m140">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>7</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf133">
<mml:math id="m141">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Average processing power of the current eligible operation of an uncompleted job (<inline-formula id="inf134">
<mml:math id="m142">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>): <inline-formula id="inf135">
<mml:math id="m143">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf136">
<mml:math id="m144">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>8</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf137">
<mml:math id="m145">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Average remaining processing time of an uncompleted job <inline-formula id="inf138">
<mml:math id="m146">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf139">
<mml:math id="m147">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:msubsup>
<mml:msub>
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf140">
<mml:math id="m148">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>9</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf141">
<mml:math id="m149">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Average remaining processing power of an uncompleted job <inline-formula id="inf142">
<mml:math id="m150">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf143">
<mml:math id="m151">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:msubsup>
<mml:msub>
<mml:mover accent="true">
<mml:mi>p</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf144">
<mml:math id="m152">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf145">
<mml:math id="m153">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-1-2">
<title>3.1.2 Action space</title>
<p>Actions are used to update the scheduling environment, playing a significant role in the quality of scheduling solutions. In the CEA-FJSP, one decision contains two parts: operation selection and machine assignment. Due to the precedence constraint, a job has at most one feasible operation that can be selected at a decision step. Hence, the operation selection can be simplified as the job selection. In this paper, six job selection rules and four machine assignment rules are adopted as shown in <xref ref-type="table" rid="T3">Table 3</xref>. Nine scheduling rules, <inline-formula id="inf146">
<mml:math id="m154">
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mn>9</mml:mn>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, are then constructed as follows: <inline-formula id="inf147">
<mml:math id="m155">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">A</mml:mi>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf148">
<mml:math id="m156">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">U</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf149">
<mml:math id="m157">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">A</mml:mi>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf150">
<mml:math id="m158">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">U</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf151">
<mml:math id="m159">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mi mathvariant="normal">R</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf152">
<mml:math id="m160">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">A</mml:mi>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf153">
<mml:math id="m161">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>7</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">U</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf154">
<mml:math id="m162">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>8</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf155">
<mml:math id="m163">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>9</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">J</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">A</mml:mi>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mi mathvariant="normal">U</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. It indicates that a scheduling rule is a couple of a job selection rule and a machine assignment rule. The scheduling rules are called actions in MDP. Thus, the action space consists of nine elements.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Job selection and machine assignment rules.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Classification</th>
<th align="left">Acronym</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="6" align="left">Job selection rule</td>
<td align="left">JSPT</td>
<td align="left">Selecting a job with the shortest processing time</td>
</tr>
<tr>
<td align="left">JLPT</td>
<td align="left">Selecting a job with the longest processing time</td>
</tr>
<tr>
<td align="left">JMOR</td>
<td align="left">Selecting a job with the most remaining operations</td>
</tr>
<tr>
<td align="left">JECT</td>
<td align="left">Selecting a job with the earliest completion time</td>
</tr>
<tr>
<td align="left">JMINP</td>
<td align="left">Selecting a job with the minimum processing power</td>
</tr>
<tr>
<td align="left">JMAXP</td>
<td align="left">Selecting a job with the maximum processing power</td>
</tr>
<tr>
<td rowspan="4" align="left">Machine assignment rule</td>
<td align="left">MSPT</td>
<td align="left">Assigning to a machine with the shortest processing time</td>
</tr>
<tr>
<td align="left">MMINP</td>
<td align="left">Assigning to a machine with the minimum processing power</td>
</tr>
<tr>
<td align="left">MMAXP</td>
<td align="left">Assigning to a machine with the maximum processing power</td>
</tr>
<tr>
<td align="left">MMINU</td>
<td align="left">Assigning to a machine with the minimum utilization rate</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-1-3">
<title>3.1.3 Reward function</title>
<p>As shown in <xref ref-type="disp-formula" rid="e7">Eq. 7</xref>, minimizing <inline-formula id="inf156">
<mml:math id="m164">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf157">
<mml:math id="m165">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are the two scheduling objectives considered in the CEA-FJSP. However, since the scheduling solution is incomplete during the scheduling, the two performance indicators cannot be resolved until the end of scheduling. In other words, the actual values of <inline-formula id="inf158">
<mml:math id="m166">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf159">
<mml:math id="m167">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated only once per episode. Consequently, if the actual makespan and carbon emission values are used as rewards, the immediate reward will be quite sparse and cause difficulties in the convergence of the DRL algorithm.</p>
<p>However, the completion time and carbon emission of the scheduled operations can be used as rewards and determined as:<disp-formula id="e9">
<mml:math id="m168">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
<disp-formula id="e10">
<mml:math id="m169">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>where: <inline-formula id="inf160">
<mml:math id="m170">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the current maximum completion time of jobs at decision step <inline-formula id="inf161">
<mml:math id="m171">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<disp-formula id="e11">
<mml:math id="m172">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>
<inline-formula id="inf162">
<mml:math id="m173">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the currently produced carbon emission at decision step <inline-formula id="inf163">
<mml:math id="m174">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<disp-formula id="e12">
<mml:math id="m175">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munderover>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>
<inline-formula id="inf164">
<mml:math id="m176">
<mml:mrow>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf165">
<mml:math id="m177">
<mml:mrow>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are reward components for makespan and carbon emission, respectively. Therefore, the reward <inline-formula id="inf166">
<mml:math id="m178">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at decision step <inline-formula id="inf167">
<mml:math id="m179">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is defined according to <xref ref-type="disp-formula" rid="e7">Eq. 7</xref>:<disp-formula id="e13">
<mml:math id="m180">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>To verify <xref ref-type="disp-formula" rid="e13">Eq. 13</xref>, the cumulative reward is calculated as:<disp-formula id="e14">
<mml:math id="m181">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>where <inline-formula id="inf168">
<mml:math id="m182">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf169">
<mml:math id="m183">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are both zero as none of the operations is determined at the initial step. Once all the operations are determined after the <inline-formula id="inf170">
<mml:math id="m184">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th decision step, i.e., <inline-formula id="inf171">
<mml:math id="m185">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>O</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is equal to <inline-formula id="inf172">
<mml:math id="m186">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf173">
<mml:math id="m187">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf174">
<mml:math id="m188">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are equal to <inline-formula id="inf175">
<mml:math id="m189">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf176">
<mml:math id="m190">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. Therefore, <xref ref-type="disp-formula" rid="e14">Eq. 14</xref> can be further simplified as:<disp-formula id="e15">
<mml:math id="m191">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e15">Eq. 15</xref> indicates that maximizing the cumulative reward can reach the optimization objectives of minimizing the weighted sum of <inline-formula id="inf177">
<mml:math id="m192">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf178">
<mml:math id="m193">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
</sec>
<sec id="s3-2">
<title>3.2 Policy network</title>
<p>The goal of the scheduling policy is to determine the best-matched action for a given state. In this paper, a DNN with parameter <inline-formula id="inf179">
<mml:math id="m194">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> consisting of six fully connected layers is employed to parameterize the scheduling policy denoted as <inline-formula id="inf180">
<mml:math id="m195">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. The input layer has ten neurons equal to the number of the state features, and the output layer outputs the probability distribution over the nine actions. Each of the first three hidden layers has sixty-four neurons while the fourth hidden layer has thirty-two neurons, and the Tanh activation function is used for all hidden neurons.</p>
<p>The PPO algorithm is adopted to train the policy network, where the state-value function <inline-formula id="inf181">
<mml:math id="m196">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is approximated by another DNN with parameter <inline-formula id="inf182">
<mml:math id="m197">
<mml:mrow>
<mml:mo>&#x2205;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, denoted as <inline-formula id="inf183">
<mml:math id="m198">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mo>&#x2205;</mml:mo>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf184">
<mml:math id="m199">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mo>&#x2205;</mml:mo>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> has the same structure as <inline-formula id="inf185">
<mml:math id="m200">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> except that the output layer consists of only one neuron, and shares the first three hidden layers with <inline-formula id="inf186">
<mml:math id="m201">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> to utilize the learned abstract features.</p>
</sec>
<sec id="s3-3">
<title>3.3 Deep reinforcement learning training process</title>
<p>DRL establishes an interaction framework between the agent and the environment using the MDP components: state, action, and reward. The agent learns to optimize its decision-making policy through the interaction, i.e., tunning its policy network <inline-formula id="inf187">
<mml:math id="m202">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. <xref ref-type="fig" rid="F3">Figure 3</xref> illustrates the PPO-based DRL training process for the CEA-FJSP, where a training cycle includes a sampling phase and an update phase. Two same policy networks <inline-formula id="inf188">
<mml:math id="m203">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf189">
<mml:math id="m204">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are set-up in the beginning of training to facilitate the training process. During a training cycle, <inline-formula id="inf190">
<mml:math id="m205">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> remains unchanged throughout the sampling and update phases, while <inline-formula id="inf191">
<mml:math id="m206">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is updated multiple times during the update phase.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>PPO-based DRL training process for CEA-FJSP.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g003.tif"/>
</fig>
<p>In the sampling phase, <inline-formula id="inf192">
<mml:math id="m207">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> interacts with the scheduling environment to collect sufficient state-action-reward tuples, <inline-formula id="inf193">
<mml:math id="m208">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and store into a memory buffer. In the update phase, <inline-formula id="inf194">
<mml:math id="m209">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is updated for several epochs with the collected data. After that, <inline-formula id="inf195">
<mml:math id="m210">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> copies <inline-formula id="inf196">
<mml:math id="m211">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and then starts the next training cycle. The surrogate objective loss function of the policy network is defined as:<disp-formula id="e16">
<mml:math id="m212">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>where <inline-formula id="inf197">
<mml:math id="m213">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes the empirical average, <inline-formula id="inf198">
<mml:math id="m214">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> is the importance sampling weight, and <inline-formula id="inf199">
<mml:math id="m215">
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the constraint function with hyperparameter <inline-formula id="inf200">
<mml:math id="m216">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to ensure the similarity between <inline-formula id="inf201">
<mml:math id="m217">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf202">
<mml:math id="m218">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf203">
<mml:math id="m219">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the generalized advantage estimation (GAE) function.</p>
<p>The value network is updated through the mean squared error (MSE) loss function:<disp-formula id="e17">
<mml:math id="m220">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mo>&#x2205;</mml:mo>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>V</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mo>&#x2205;</mml:mo>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>Due to parameter sharing, the entire network model is trained with the loss function:<disp-formula id="e18">
<mml:math id="m221">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">V</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>where <inline-formula id="inf204">
<mml:math id="m222">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the entropy bonus to encourage exploration, while <inline-formula id="inf205">
<mml:math id="m223">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf206">
<mml:math id="m224">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the coefficients.</p>
<p>The pseudo-code of the training process is presented in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>. Here, <italic>N</italic> training instances are initialized at the beginning of a training cycle to prevent the DRL scheduling model from overfitting a specific instance. The data collected from the sampling phase is used to calculate the cumulative gradients to update parameters <inline-formula id="inf207">
<mml:math id="m225">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf208">
<mml:math id="m226">
<mml:mrow>
<mml:mo>&#x2205;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for <inline-formula id="inf209">
<mml:math id="m227">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> epochs.</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>Training process for CEA-FJSP using PPO<list list-type="simple">
<list-item>
<p>
<bold>Input:</bold> training cycles <italic>L</italic>; memory buffer <italic>M</italic>; update epochs <italic>K</italic>: number of training instances <italic>N</italic>
</p>
</list-item>
<list-item>
<p>
<bold>Output:</bold> <inline-formula id="inf210">
<mml:math id="m228">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>1: Initialize policy network <inline-formula id="inf211">
<mml:math id="m229">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and value network <inline-formula id="inf212">
<mml:math id="m230">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>2: Initialize old policy network <inline-formula id="inf213">
<mml:math id="m231">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>3: <bold>for</bold> <italic>cycle</italic> &#x3d; 1, 2,..., <italic>L</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>4: Randomly initialize <italic>N</italic> CEA-FJSP instances</p>
</list-item>
<list-item>
<p>5: <bold>for</bold> <italic>instance</italic> &#x3d; 1, 2,..., <italic>N</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>6: <bold>for</bold> <italic>step</italic> &#x3d; 1, 2,..., <italic>T</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>7: Randomly sample action <inline-formula id="inf214">
<mml:math id="m232">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> based on <inline-formula id="inf215">
<mml:math id="m233">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>8: Execute action <inline-formula id="inf216">
<mml:math id="m234">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>9: Receive reward <inline-formula id="inf217">
<mml:math id="m235">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>10: Transfer to the next state <inline-formula id="inf218">
<mml:math id="m236">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>11: Store <inline-formula id="inf219">
<mml:math id="m237">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> in <italic>M</italic>
</p>
</list-item>
<list-item>
<p>12: <bold>end for</bold>
</p>
</list-item>
<list-item>
<p>13: <bold>end for</bold>
</p>
</list-item>
<list-item>
<p>14: <bold>for</bold> <italic>epoch</italic> &#x3d; 1, 2,..., <italic>K</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>15: Compute <inline-formula id="inf220">
<mml:math id="m238">
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> by Eq. 16</p>
</list-item>
<list-item>
<p>16: Compute <inline-formula id="inf221">
<mml:math id="m239">
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> by Eq. 17</p>
</list-item>
<list-item>
<p>17: Compute <inline-formula id="inf222">
<mml:math id="m240">
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>V</mml:mi>
<mml:mi>F</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> by Eq. 18</p>
</list-item>
<list-item>
<p>18: Update parameter <inline-formula id="inf223">
<mml:math id="m241">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf224">
<mml:math id="m242">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf225">
<mml:math id="m243">
<mml:mrow>
<mml:mo>&#x2207;</mml:mo>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>V</mml:mi>
<mml:mi>F</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>19: <bold>end for</bold>
</p>
</list-item>
<list-item>
<p>20: <inline-formula id="inf226">
<mml:math id="m244">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2190;</mml:mo>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>21: <bold>end for</bold>
</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s4">
<title>4 Experimental results and discussion</title>
<p>Four numerical experiments were conducted to train the DRL scheduling model, verify the optimization and generalization abilities, and explore the weight effect. The dataset used in the experiments was adapted from the benchmarks in <xref ref-type="bibr" rid="B6">Brandimarte (1993)</xref>, referred as Brandimarte&#x2019;s benchmarks hereafter.</p>
<sec id="s4-1">
<title>4.1 Experimental setting</title>
<sec id="s4-1-1">
<title>4.1.1 Dataset adaption</title>
<p>Brandimarte&#x2019;s benchmarks defined some configurations for FJSP instances, as shown in <xref ref-type="table" rid="T4">Table 4</xref>. A benchmark is an FJSP instance consisting of <inline-formula id="inf227">
<mml:math id="m245">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> jobs and <inline-formula id="inf228">
<mml:math id="m246">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> machines, where a job has a range of <inline-formula id="inf229">
<mml:math id="m247">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> operations, an operation can be processed by a range of <inline-formula id="inf230">
<mml:math id="m248">
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> candidate machines, and the processing time varies in the range denoted as <inline-formula id="inf231">
<mml:math id="m249">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Brandimarte&#x2019;s benchmarks.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Configuration code</th>
<th align="left">
<inline-formula id="inf232">
<mml:math id="m250">
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf233">
<mml:math id="m251">
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf234">
<mml:math id="m252">
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf235">
<mml:math id="m253">
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf236">
<mml:math id="m254">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Mk01</td>
<td align="left">10</td>
<td align="left">6</td>
<td align="left">[5, 7]</td>
<td align="left">3</td>
<td align="left">[1, 7]</td>
</tr>
<tr>
<td align="left">Mk02</td>
<td align="left">10</td>
<td align="left">6</td>
<td align="left">[5, 7]</td>
<td align="left">6</td>
<td align="left">[1, 7]</td>
</tr>
<tr>
<td align="left">Mk03</td>
<td align="left">15</td>
<td align="left">8</td>
<td align="left">[10, 10]</td>
<td align="left">5</td>
<td align="left">[1, 20]</td>
</tr>
<tr>
<td align="left">Mk04</td>
<td align="left">15</td>
<td align="left">8</td>
<td align="left">[3, 10]</td>
<td align="left">3</td>
<td align="left">[1, 10]</td>
</tr>
<tr>
<td align="left">Mk05</td>
<td align="left">15</td>
<td align="left">4</td>
<td align="left">[5, 10]</td>
<td align="left">2</td>
<td align="left">[5, 10]</td>
</tr>
<tr>
<td align="left">Mk06</td>
<td align="left">10</td>
<td align="left">15</td>
<td align="left">[15, 15]</td>
<td align="left">5</td>
<td align="left">[1, 10]</td>
</tr>
<tr>
<td align="left">Mk07</td>
<td align="left">20</td>
<td align="left">5</td>
<td align="left">[5, 5]</td>
<td align="left">5</td>
<td align="left">[1, 20]</td>
</tr>
<tr>
<td align="left">Mk08</td>
<td align="left">20</td>
<td align="left">10</td>
<td align="left">[10, 15]</td>
<td align="left">2</td>
<td align="left">[5, 20]</td>
</tr>
<tr>
<td align="left">Mk09</td>
<td align="left">20</td>
<td align="left">10</td>
<td align="left">[10, 15]</td>
<td align="left">5</td>
<td align="left">[5, 20]</td>
</tr>
<tr>
<td align="left">Mk10</td>
<td align="left">20</td>
<td align="left">15</td>
<td align="left">[10, 15]</td>
<td align="left">5</td>
<td align="left">[5, 20]</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Since the proposed CEA-FJSP considers energy consummation of machine operation and coolant treatment in addition to makespan. Therefore, Brandimarte&#x2019;s benchmarks are extended by adding seven additional parameters to generate CEA-FJSP scheduling instances. <xref ref-type="table" rid="T5">Table 5</xref> lists the added parameters, where Unif denotes uniform distribution of real numbers and Rand denotes random selection. The processing time was measured in seconds instead of the unit time used in the original benchmarks to calculate the specific values of carbon emission. Carbon emission factors were set according to the Hong Kong SME Carbon Audit Toolkit (<xref ref-type="bibr" rid="B21">Liu et al., 2018</xref>). The Mk<italic>i</italic> instances of Brandimarte&#x2019;s benchmarks were changed to Mk<italic>i</italic>Ex instances after adding the additional parameters.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>Parameters added to extend Brandimarte&#x2019;s benchmarks.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Parameter</th>
<th align="left">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Operation processing time (s)</td>
<td align="left">Unif (<inline-formula id="inf237">
<mml:math id="m255">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
</tr>
<tr>
<td align="left">Machine processing power (kW)</td>
<td align="left">Unif [4, 15]</td>
</tr>
<tr>
<td align="left">Machine idle power (kW)</td>
<td align="left">Unif [1, 2]</td>
</tr>
<tr>
<td align="left">Coolant replacement cycle (<inline-formula id="inf238">
<mml:math id="m256">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>s)</td>
<td align="left">Rand (80, 85, 90, 95, 100)</td>
</tr>
<tr>
<td align="left">Coolant recycling volume (L)</td>
<td align="left">Rand (200, 250, 300, 350, 400)</td>
</tr>
<tr>
<td align="left">Carbon emission factor <inline-formula id="inf239">
<mml:math id="m257">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (kg/(kWh))</td>
<td align="left">0.540</td>
</tr>
<tr>
<td align="left">Carbon emission factor <inline-formula id="inf240">
<mml:math id="m258">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (kg/L)</td>
<td align="left">5.143</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-1-2">
<title>4.1.2 Evaluation metrics</title>
<p>Average makespan, <inline-formula id="inf241">
<mml:math id="m259">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, average total carbon emission, <inline-formula id="inf242">
<mml:math id="m260">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and normalized performance, <italic>NP</italic>, were used to evaluate the performance of the proposed model. The smaller <inline-formula id="inf243">
<mml:math id="m261">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf244">
<mml:math id="m262">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> or <inline-formula id="inf245">
<mml:math id="m263">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> correspond to the better performance. These three metrics are defined as follows:<disp-formula id="e19">
<mml:math id="m264">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
<disp-formula id="e20">
<mml:math id="m265">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
<disp-formula id="e21">
<mml:math id="m266">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:munder>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:munder>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:munder>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:munder>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:munder>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:munder>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>where <inline-formula id="inf246">
<mml:math id="m267">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the total number of testing instances, <inline-formula id="inf247">
<mml:math id="m268">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf248">
<mml:math id="m269">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the makespan and total carbon emission of the <inline-formula id="inf249">
<mml:math id="m270">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th instances. Method set, <inline-formula id="inf250">
<mml:math id="m271">
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, is composed of the proposed mode and the scheduling methods used for comparison, and <inline-formula id="inf251">
<mml:math id="m272">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denotes the index of the scheduling method <inline-formula id="inf252">
<mml:math id="m273">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf253">
<mml:math id="m274">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf254">
<mml:math id="m275">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denote <inline-formula id="inf255">
<mml:math id="m276">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf256">
<mml:math id="m277">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> of <inline-formula id="inf257">
<mml:math id="m278">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively.</p>
</sec>
</sec>
<sec id="s4-2">
<title>4.2 Training dynamics</title>
<p>Five Mk03Ex instances were generated in each training cycle based on the Mk03 configuration in <xref ref-type="table" rid="T4">Table 4</xref> with the parameters in <xref ref-type="table" rid="T5">Table 5</xref>. These instances were used to train the proposed DRL scheduling model to produce the DRL-Mk03Ex scheduling solver. <xref ref-type="table" rid="T6">Table 6</xref> lists the values of hyperparameters of <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>. Both weights <inline-formula id="inf258">
<mml:math id="m279">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf259">
<mml:math id="m280">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> were set to 0.5 to equally evaluate the contribution of makespan and carbon emissions to the reward. Furthermore, reward scaling (<xref ref-type="bibr" rid="B10">Engstrom et al., 2020</xref>) was adopted to stabilize the training process. The hardware for training was a PC with a single Intel Xeon E5-2678 V3 @ 2.50&#xa0;GHz CPU and a single NVIDIA RTX A2000 GPU. <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> was implemented using Python 3.7, with PyTorch to deploy the network model.</p>
<table-wrap id="T6" position="float">
<label>TABLE 6</label>
<caption>
<p>Hyperparameter values of Algorithm 1.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Hyperparameter</th>
<th align="left">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Trian cycles <inline-formula id="inf260">
<mml:math id="m281">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">10000</td>
</tr>
<tr>
<td align="left">Number of training instances <inline-formula id="inf261">
<mml:math id="m282">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">5</td>
</tr>
<tr>
<td align="left">Update epochs <inline-formula id="inf262">
<mml:math id="m283">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">1</td>
</tr>
<tr>
<td align="left">GAE coefficient <inline-formula id="inf263">
<mml:math id="m284">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.95</td>
</tr>
<tr>
<td align="left">Discount factor <inline-formula id="inf264">
<mml:math id="m285">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.99</td>
</tr>
<tr>
<td align="left">Clipping ratio <inline-formula id="inf265">
<mml:math id="m286">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.2</td>
</tr>
<tr>
<td align="left">Value loss coefficient <inline-formula id="inf266">
<mml:math id="m287">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.5</td>
</tr>
<tr>
<td align="left">Entropy coefficient <inline-formula id="inf267">
<mml:math id="m288">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.05</td>
</tr>
<tr>
<td align="left">Learning rate <inline-formula id="inf268">
<mml:math id="m289">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.0001</td>
</tr>
<tr>
<td align="left">Optimizer</td>
<td align="left">Adam</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>
<xref ref-type="fig" rid="F4">Figure 4A&#x2013;C</xref> show the training histories of the reward, <inline-formula id="inf269">
<mml:math id="m290">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf270">
<mml:math id="m291">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. It can be seen from <xref ref-type="fig" rid="F4">Figure 4A</xref> that the reward gradually increases with the advance of the training process. <xref ref-type="fig" rid="F4">Figure 4C</xref> shows that <inline-formula id="inf271">
<mml:math id="m292">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> continuously contributes positively to the reward, as it decreases monotonously along the timeline. It can be seen from <xref ref-type="fig" rid="F4">Figure 4B</xref> that <inline-formula id="inf272">
<mml:math id="m293">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> increases till about the 2200th cycle and then decreases until the end. The results show that the contribution of <inline-formula id="inf273">
<mml:math id="m294">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to the reward surpasses <inline-formula id="inf274">
<mml:math id="m295">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in the early stage of optimization, and finally, both <inline-formula id="inf275">
<mml:math id="m296">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf276">
<mml:math id="m297">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are optimized by the DRL scheduling model. All three curves in <xref ref-type="fig" rid="F4">Figure 4</xref> begin to converge around the 7000th cycle and all of them oscillate slightly thereafter. Therefore, the training process had better stop around the 7000th cycle or the performance could get worse, exhibiting a kind of overfitting behavior.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Training histories of <bold>(A)</bold> the reward, <bold>(B)</bold> the makespan, and <bold>(C)</bold> the total carbon emission.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g004.tif"/>
</fig>
</sec>
<sec id="s4-3">
<title>4.3 Optimization ability</title>
<p>One hundred additional Mk03Ex instances different from those used in the training stage were generated to test the DRL-Mk03Ex against the proposed scheduling rules <inline-formula id="inf277">
<mml:math id="m298">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf278">
<mml:math id="m299">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>9</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and GA (<xref ref-type="bibr" rid="B38">Yin et al., 2017</xref>) respectively.</p>
<p>
<xref ref-type="fig" rid="F5">Figure 5</xref> shows the performance of DRL-Mk03Ex over the Mk03Ex instances. It can be seen from the figure that DRL-Mk03Ex outperforms all the scheduling rules and GA on the testing instances, i.e., it achieves the lowest average makespan and the lowest average total carbon emission. Although GA and some scheduling rules (<inline-formula id="inf279">
<mml:math id="m300">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf280">
<mml:math id="m301">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf281">
<mml:math id="m302">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>8</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) perform well in reducing makespan or total carbon emission, none of the scheduling rules and GA can simultaneously minimize the two objectives. Furthermore, DRL-Mk03Ex is also significantly better than the scheduling rules and GA in terms of <inline-formula id="inf282">
<mml:math id="m303">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The results confirm the superiority and optimization ability of DRL-Mk03Ex.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Performance of DRL-Mk03Ex over the Mk03Ex instances.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g005.tif"/>
</fig>
</sec>
<sec id="s4-4">
<title>4.4 Generalization ability</title>
<p>The DRL scheduling solver built on the Mk03Ex instances (DRL-Mk03Ex) was tested on the Mk01Ex, Mk02Ex, and Mk04Ex to Mk10Ex instances. That is, to say, the instances used for testing were different from the ones used for training, and the difference was significant in the sense that the testing and the training instances were sampled from different configurations. To compare the performance, <xref ref-type="table" rid="T7">Table 7</xref> shows the average results of three metrics over 100 instances for nine different instance configurations. The proposed scheduling rules <inline-formula id="inf283">
<mml:math id="m304">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf284">
<mml:math id="m305">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>9</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and GA are used as the baselines and the best values of each metric are highlighted in bold font in <xref ref-type="table" rid="T7">Table 7</xref>.</p>
<table-wrap id="T7" position="float">
<label>TABLE 7</label>
<caption>
<p>Performance of DRL-Mk03Ex over the non-Mk03Ex instances.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Configuration code</th>
<th align="left">Metric</th>
<th align="left">DRL-Mk03Ex</th>
<th align="left">
<inline-formula id="inf285">
<mml:math id="m306">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf286">
<mml:math id="m307">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf287">
<mml:math id="m308">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf288">
<mml:math id="m309">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf289">
<mml:math id="m310">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf290">
<mml:math id="m311">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf291">
<mml:math id="m312">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">7</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf292">
<mml:math id="m313">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">8</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf293">
<mml:math id="m314">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mn mathvariant="bold">9</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">GA</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="3" align="left">MK01Ex</td>
<td align="left">
<inline-formula id="inf294">
<mml:math id="m315">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">65.27</td>
<td align="left">101.29</td>
<td align="left">89.68</td>
<td align="left">103.85</td>
<td align="left">93.37</td>
<td align="left">67.42</td>
<td align="left">67.31</td>
<td align="left">91.87</td>
<td align="left">80.88</td>
<td align="left">91.33</td>
<td align="left">
<bold>52.67</bold>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf295">
<mml:math id="m316">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>0.52</bold>
</td>
<td align="left">0.74</td>
<td align="left">0.66</td>
<td align="left">0.74</td>
<td align="left">0.67</td>
<td align="left">0.56</td>
<td align="left">0.69</td>
<td align="left">0.66</td>
<td align="left">0.53</td>
<td align="left">0.66</td>
<td align="left">0.53</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf296">
<mml:math id="m317">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.12</td>
<td align="left">0.97</td>
<td align="left">0.68</td>
<td align="left">1.00</td>
<td align="left">0.74</td>
<td align="left">0.24</td>
<td align="left">0.53</td>
<td align="left">0.70</td>
<td align="left">0.30</td>
<td align="left">0.70</td>
<td align="left">
<bold>0.02</bold>
</td>
</tr>
<tr>
<td rowspan="3" align="left">MK02Ex</td>
<td align="left">
<inline-formula id="inf297">
<mml:math id="m318">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">52.86</td>
<td align="left">100.50</td>
<td align="left">90.38</td>
<td align="left">103.75</td>
<td align="left">90.12</td>
<td align="left">62.33</td>
<td align="left">63.93</td>
<td align="left">91.10</td>
<td align="left">62.62</td>
<td align="left">93.86</td>
<td align="left">
<bold>49.05</bold>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf298">
<mml:math id="m319">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">0.44</td>
<td align="left">0.82</td>
<td align="left">0.68</td>
<td align="left">0.83</td>
<td align="left">0.69</td>
<td align="left">0.53</td>
<td align="left">0.76</td>
<td align="left">0.69</td>
<td align="left">
<bold>0.43</bold>
</td>
<td align="left">0.69</td>
<td align="left">0.55</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf299">
<mml:math id="m320">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.05</bold>
</td>
<td align="left">0.96</td>
<td align="left">0.69</td>
<td align="left">1.00</td>
<td align="left">0.70</td>
<td align="left">0.25</td>
<td align="left">0.55</td>
<td align="left">0.71</td>
<td align="left">0.12</td>
<td align="left">0.73</td>
<td align="left">0.15</td>
</tr>
<tr>
<td rowspan="3" align="left">MK04Ex</td>
<td align="left">
<inline-formula id="inf300">
<mml:math id="m321">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">120.70</td>
<td align="left">202.20</td>
<td align="left">182.50</td>
<td align="left">219.80</td>
<td align="left">196.07</td>
<td align="left">125.37</td>
<td align="left">124.41</td>
<td align="left">192.16</td>
<td align="left">170.01</td>
<td align="left">191.79</td>
<td align="left">
<bold>98.07</bold>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf301">
<mml:math id="m322">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">1.19</td>
<td align="left">1.72</td>
<td align="left">1.55</td>
<td align="left">1.75</td>
<td align="left">1.58</td>
<td align="left">1.30</td>
<td align="left">1.56</td>
<td align="left">1.58</td>
<td align="left">1.26</td>
<td align="left">1.57</td>
<td align="left">
<bold>1.03</bold>
</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf302">
<mml:math id="m323">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.20</td>
<td align="left">0.91</td>
<td align="left">0.71</td>
<td align="left">1.00</td>
<td align="left">0.78</td>
<td align="left">0.30</td>
<td align="left">0.48</td>
<td align="left">0.77</td>
<td align="left">0.46</td>
<td align="left">0.76</td>
<td align="left">
<bold>0.00</bold>
</td>
</tr>
<tr>
<td rowspan="3" align="left">MK05Ex</td>
<td align="left">
<inline-formula id="inf303">
<mml:math id="m324">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">281.31</td>
<td align="left">413.55</td>
<td align="left">387.96</td>
<td align="left">420.45</td>
<td align="left">392.61</td>
<td align="left">274.41</td>
<td align="left">
<bold>273.27</bold>
</td>
<td align="left">393.11</td>
<td align="left">385.33</td>
<td align="left">393.70</td>
<td align="left">280.55</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf304">
<mml:math id="m325">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">2.49</td>
<td align="left">2.29</td>
<td align="left">2.50</td>
<td align="left">2.29</td>
<td align="left">
<bold>1.99</bold>
</td>
<td align="left">2.34</td>
<td align="left">2.29</td>
<td align="left">2.13</td>
<td align="left">2.29</td>
<td align="left">2.49</td>
<td align="left">2.15</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf305">
<mml:math id="m326">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.52</td>
<td align="left">0.77</td>
<td align="left">0.89</td>
<td align="left">0.79</td>
<td align="left">0.41</td>
<td align="left">0.35</td>
<td align="left">0.29</td>
<td align="left">0.54</td>
<td align="left">0.67</td>
<td align="left">0.90</td>
<td align="left">
<bold>0.18</bold>
</td>
</tr>
<tr>
<td rowspan="3" align="left">MK06Ex</td>
<td align="left">
<inline-formula id="inf306">
<mml:math id="m327">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">
<bold>166.06</bold>
</td>
<td align="left">454.68</td>
<td align="left">401.38</td>
<td align="left">472.50</td>
<td align="left">410.75</td>
<td align="left">190.29</td>
<td align="left">187.53</td>
<td align="left">402.76</td>
<td align="left">280.67</td>
<td align="left">405.36</td>
<td align="left">166.54</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf307">
<mml:math id="m328">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>1.99</bold>
</td>
<td align="left">4.12</td>
<td align="left">3.53</td>
<td align="left">4.18</td>
<td align="left">3.55</td>
<td align="left">2.30</td>
<td align="left">3.07</td>
<td align="left">3.52</td>
<td align="left">2.25</td>
<td align="left">3.54</td>
<td align="left">2.52</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf308">
<mml:math id="m329">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.00</bold>
</td>
<td align="left">0.96</td>
<td align="left">0.74</td>
<td align="left">1.00</td>
<td align="left">0.76</td>
<td align="left">0.11</td>
<td align="left">0.28</td>
<td align="left">0.74</td>
<td align="left">0.25</td>
<td align="left">0.74</td>
<td align="left">0.12</td>
</tr>
<tr>
<td rowspan="3" align="left">MK07Ex</td>
<td align="left">
<inline-formula id="inf309">
<mml:math id="m330">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">
<bold>219.15</bold>
</td>
<td align="left">412.82</td>
<td align="left">372.82</td>
<td align="left">444.81</td>
<td align="left">391.11</td>
<td align="left">274.53</td>
<td align="left">277.09</td>
<td align="left">382.54</td>
<td align="left">278.85</td>
<td align="left">376.05</td>
<td align="left">219.85</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf310">
<mml:math id="m331">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>1.92</bold>
</td>
<td align="left">3.44</td>
<td align="left">2.95</td>
<td align="left">3.48</td>
<td align="left">2.99</td>
<td align="left">2.42</td>
<td align="left">3.26</td>
<td align="left">2.98</td>
<td align="left">1.93</td>
<td align="left">2.98</td>
<td align="left">2.53</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf311">
<mml:math id="m332">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.00</bold>
</td>
<td align="left">0.92</td>
<td align="left">0.67</td>
<td align="left">1.00</td>
<td align="left">0.72</td>
<td align="left">0.28</td>
<td align="left">0.56</td>
<td align="left">0.70</td>
<td align="left">0.14</td>
<td align="left">0.69</td>
<td align="left">0.20</td>
</tr>
<tr>
<td rowspan="3" align="left">MK08Ex</td>
<td align="left">
<inline-formula id="inf312">
<mml:math id="m333">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">595.41</td>
<td align="left">1314.55</td>
<td align="left">1264.56</td>
<td align="left">1388.23</td>
<td align="left">1331.61</td>
<td align="left">570.95</td>
<td align="left">
<bold>567.96</bold>
</td>
<td align="left">1301.90</td>
<td align="left">1241.76</td>
<td align="left">1292.80</td>
<td align="left">632.53</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf313">
<mml:math id="m334">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>7.68</bold>
</td>
<td align="left">10.43</td>
<td align="left">9.93</td>
<td align="left">10.62</td>
<td align="left">10.09</td>
<td align="left">7.76</td>
<td align="left">8.50</td>
<td align="left">9.99</td>
<td align="left">9.29</td>
<td align="left">9.99</td>
<td align="left">7.78</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf314">
<mml:math id="m335">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.02</bold>
</td>
<td align="left">0.92</td>
<td align="left">0.81</td>
<td align="left">1.00</td>
<td align="left">0.88</td>
<td align="left">
<bold>0.02</bold>
</td>
<td align="left">0.14</td>
<td align="left">0.84</td>
<td align="left">0.68</td>
<td align="left">0.83</td>
<td align="left">0.06</td>
</tr>
<tr>
<td rowspan="3" align="left">MK09Ex</td>
<td align="left">
<inline-formula id="inf315">
<mml:math id="m336">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">
<bold>530.05</bold>
</td>
<td align="left">1380.95</td>
<td align="left">1283.19</td>
<td align="left">1475.75</td>
<td align="left">1341.31</td>
<td align="left">568.43</td>
<td align="left">547.01</td>
<td align="left">1304.44</td>
<td align="left">1151.68</td>
<td align="left">1297.93</td>
<td align="left">550.78</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf316">
<mml:math id="m337">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>7.19</bold>
</td>
<td align="left">11.62</td>
<td align="left">10.45</td>
<td align="left">11.86</td>
<td align="left">10.59</td>
<td align="left">7.63</td>
<td align="left">9.46</td>
<td align="left">10.50</td>
<td align="left">8.67</td>
<td align="left">10.49</td>
<td align="left">8.34</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf317">
<mml:math id="m338">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.00</bold>
</td>
<td align="left">0.92</td>
<td align="left">0.75</td>
<td align="left">1.00</td>
<td align="left">0.79</td>
<td align="left">0.07</td>
<td align="left">0.25</td>
<td align="left">0.76</td>
<td align="left">0.49</td>
<td align="left">0.76</td>
<td align="left">0.13</td>
</tr>
<tr>
<td rowspan="3" align="left">MK10Ex</td>
<td align="left">
<inline-formula id="inf318">
<mml:math id="m339">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (s)</td>
<td align="left">
<bold>516.53</bold>
</td>
<td align="left">1354.37</td>
<td align="left">1183.54</td>
<td align="left">1421.84</td>
<td align="left">1210.95</td>
<td align="left">560.22</td>
<td align="left">570.26</td>
<td align="left">1185.87</td>
<td align="left">1013.48</td>
<td align="left">1195.13</td>
<td align="left">521.93</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf319">
<mml:math id="m340">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (kg)</td>
<td align="left">
<bold>7.46</bold>
</td>
<td align="left">13.63</td>
<td align="left">11.70</td>
<td align="left">13.89</td>
<td align="left">11.80</td>
<td align="left">8.00</td>
<td align="left">10.57</td>
<td align="left">11.70</td>
<td align="left">9.13</td>
<td align="left">11.73</td>
<td align="left">8.88</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf320">
<mml:math id="m341">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<bold>0.00</bold>
</td>
<td align="left">0.94</td>
<td align="left">0.70</td>
<td align="left">1.00</td>
<td align="left">0.72</td>
<td align="left">0.07</td>
<td align="left">0.27</td>
<td align="left">0.70</td>
<td align="left">0.40</td>
<td align="left">0.71</td>
<td align="left">0.11</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>The proposed scheduling rules SR<sup>1</sup> to SR<sup>9</sup> and GA are used as the baselines and the best values of each metric are highlighted in bold font.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>
<xref ref-type="table" rid="T7">Table 7</xref> shows that DRL-Mk03Ex achieves the best solutions in most instances compared with the scheduling rules and GA. Furthermore, Mk01Ex and Mk02Ex instances have a simpler configuration than the Mk03Ex instances, while Mk04Ex to Mk10Ex instances have a more complex configuration. This means the DRL-Mk03Ex can be bidirectionally generalized. Besides, DRL-Mk03Ex can achieve comparable performance with GA in the simple scheduling instances, while surpassing GA in the complex instances. Moreover, DRL-Mk03Ex is also more robust than the scheduling rules. For example, <inline-formula id="inf321">
<mml:math id="m342">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> changes from 52.86 to 595.41&#xa0;s for DRL-Mk03Ex, while from 100.5 to 1380.95&#xa0;s for <inline-formula id="inf322">
<mml:math id="m343">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The performance fluctuates even more wildly for the complex instances among the scheduling rules. For example, <inline-formula id="inf323">
<mml:math id="m344">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf324">
<mml:math id="m345">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> achieve 560.22 and 1421.84&#xa0;s as <inline-formula id="inf325">
<mml:math id="m346">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> values for the Mk10Ex instances, respectively.</p>
</sec>
<sec id="s4-5">
<title>4.5 Weight effect</title>
<p>The Mk03Ex instances were used to train the DRL scheduling model under various weight combinations <inline-formula id="inf326">
<mml:math id="m347">
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: <inline-formula id="inf327">
<mml:math id="m348">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>0.0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mn>1.0</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf328">
<mml:math id="m349">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>0.25</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mn>0.75</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf329">
<mml:math id="m350">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>0.5</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mn>0.5</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf330">
<mml:math id="m351">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>0.75</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mn>0.25</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf331">
<mml:math id="m352">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1.0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mn>0.0</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. Consequently, five DRL scheduling solvers were built. These solvers had the same model structure distinguished by different parameter values. <xref ref-type="fig" rid="F6">Figure 6</xref> illustrates the resultant <inline-formula id="inf332">
<mml:math id="m353">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf333">
<mml:math id="m354">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as well as carbon emission components, <inline-formula id="inf334">
<mml:math id="m355">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf335">
<mml:math id="m356">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf336">
<mml:math id="m357">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for processing state, idle state, and coolant treatment, respectively, of the five solvers.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Effects of different weight combinations on makespan and carbon emission.</p>
</caption>
<graphic xlink:href="fenvs-10-1059451-g006.tif"/>
</fig>
<p>The results demonstrate the nonlinearity of the DRL scheduling solvers. The <inline-formula id="inf337">
<mml:math id="m358">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> does not vary monotonously with the weight <inline-formula id="inf338">
<mml:math id="m359">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>; nor does the carbon emission with the weight <inline-formula id="inf339">
<mml:math id="m360">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, i.e., either the makespan or the carbon emission is affected jointly by <inline-formula id="inf340">
<mml:math id="m361">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf341">
<mml:math id="m362">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. It also implies that the DRL scheduling solvers cannot directly control the sub-optimization objectives. Instead, the weights should be treated as optimization parameters in the sense that the weighted optimization objective can be figured out for a given instance by adjusting <inline-formula id="inf342">
<mml:math id="m363">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf343">
<mml:math id="m364">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. For example, <inline-formula id="inf344">
<mml:math id="m365">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the best among the five weight combinations for the Mk03Ex instances.</p>
<p>For each weight combination, the three carbon emission components, <inline-formula id="inf345">
<mml:math id="m366">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf346">
<mml:math id="m367">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf347">
<mml:math id="m368">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, contribute roughly 56%, 34%, and 10% to <inline-formula id="inf348">
<mml:math id="m369">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. Specifically, the machines produce the most carbon emission when processing an operation, and the least carbon emission when in the idle state. The carbon emission caused by the coolant treatment is also nonnegligible. Furthermore, it can be observed that as <inline-formula id="inf349">
<mml:math id="m370">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf350">
<mml:math id="m371">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf351">
<mml:math id="m372">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> maintain a similar tendency with the <inline-formula id="inf352">
<mml:math id="m373">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> along the weight change. The results stimulate the possibility to simplify the representation of carbon emission by replacing <inline-formula id="inf353">
<mml:math id="m374">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf354">
<mml:math id="m375">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> or with the sum of <inline-formula id="inf355">
<mml:math id="m376">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf356">
<mml:math id="m377">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>In this study, a carbon emission-aware flexible job-shop scheduling problem denoted as CEA-FJSP is formulated and a DRL scheduling model is proposed to generate feasible scheduling solutions without extra searching. In the CEA-FJSP, the energy consumption of machine operation and the coolant treatment are identified as two main carbon emission sources. The proposed DRL scheduling model treats the CEA-FJSP as a Markov decision process where the scheduling agent interacts repeatedly with the scheduling environment, i.e., the temporary scheduling solution, to determine an appropriate action for a given state. The interaction is guided by the reward which represents the optimization objectives: minimizing makespan and carbon emission. The experimental results verify that the proposed DRL scheduling model achieves stronger optimization and generalization ability than the scheduling rules and GA, and the DRL scheduling model can be tuned by varying the weight combination. The future work should consider more carbon emission sources, more optimization objectives, and more flexible DRL framework to approach a more practical scheduling solution for the complex production scenarios.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>SW and JL were the principal authors for the text, and responsible for problem formulation, method design, experimental analysis, and manuscript writing. HT contributed to investigation. HT and JW contributed to the visualization together. All authors reviewed the final version of the manuscript and consented to publication.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>This work was supported by the National Key R&#x26;D Program of China (Grant No. 2020YFB1708500), and the Science and Technology Planning Project of Guangzhou City (Grant No. 202102020882).</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
<p>The handling editor UB declared a shared affiliation with the author HT at the time of review.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Allahverdi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ng</surname>
<given-names>C. T.</given-names>
</name>
<name>
<surname>Cheng</surname>
<given-names>T. E.</given-names>
</name>
<name>
<surname>Kovalyov</surname>
<given-names>M. Y.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>A survey of scheduling problems with setup times or costs</article-title>. <source>Eur. J. Oper. Res.</source> <volume>187</volume> (<issue>3</issue>), <fpage>985</fpage>&#x2013;<lpage>1032</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejor.2006.06.060</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Arulkumaran</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Deisenroth</surname>
<given-names>M. P.</given-names>
</name>
<name>
<surname>Brundage</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bharath</surname>
<given-names>A. A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Deep reinforcement learning: A brief survey</article-title>. <source>IEEE Signal Process. Mag.</source> <volume>34</volume> (<issue>6</issue>), <fpage>26</fpage>&#x2013;<lpage>38</lpage>. <pub-id pub-id-type="doi">10.1109/MSP.2017.2743240</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bhatti</surname>
<given-names>U. A.</given-names>
</name>
<name>
<surname>Nizamani</surname>
<given-names>M. M.</given-names>
</name>
<name>
<surname>Mengxing</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2022a</year>). <article-title>Climate change threatens Pakistan&#x2019;s snow leopards</article-title>. <source>Science</source> <volume>377</volume> (<issue>6606</issue>), <fpage>585</fpage>&#x2013;<lpage>586</lpage>. <pub-id pub-id-type="doi">10.1126/science.add9065</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bhatti</surname>
<given-names>U. A.</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ali</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hussain</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Qingsong</surname>
<given-names>H.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Time series analysis and forecasting of air pollution particulate matter (PM 2.5): An SARIMA and factor analysis approach</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>41019</fpage>&#x2013;<lpage>41031</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2021.3060744</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bhatti</surname>
<given-names>U. A.</given-names>
</name>
<name>
<surname>Zeeshan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Nizamani</surname>
<given-names>M. M.</given-names>
</name>
<name>
<surname>Bazai</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yuan</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2022b</year>). <article-title>Assessing the change of ambient air quality patterns in Jiangsu Province of China pre-to post-COVID-19</article-title>. <source>Chemosphere</source> <volume>288</volume>, <fpage>132569</fpage>. <pub-id pub-id-type="doi">10.1016/j.chemosphere.2021.132569</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brandimarte</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>1993</year>). <article-title>Routing and scheduling in a flexible job shop by tabu search</article-title>. <source>Ann. Oper. Res.</source> <volume>41</volume> (<issue>3</issue>), <fpage>157</fpage>&#x2013;<lpage>183</lpage>. <pub-id pub-id-type="doi">10.1007/BF02023073</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brucker</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Schlie</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1990</year>). <article-title>Job-shop scheduling with multi-purpose machines</article-title>. <source>Computing</source> <volume>45</volume> (<issue>4</issue>), <fpage>369</fpage>&#x2013;<lpage>375</lpage>. <pub-id pub-id-type="doi">10.1007/BF02238804</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Tang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Giret</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Salido</surname>
<given-names>M. A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Multi-objective optimization for energy-efficient flexible job-shop scheduling problem with transportation constraints</article-title>. <source>Robot. Comput. Integr. Manuf.</source> <volume>59</volume>, <fpage>143</fpage>&#x2013;<lpage>157</lpage>. <pub-id pub-id-type="doi">10.1016/j.rcim.2019.04.006</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Du</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>J. Q.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X. L.</given-names>
</name>
<name>
<surname>Duan</surname>
<given-names>P. Y.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>Q. K.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Knowledge-based reinforcement learning and estimation of distribution algorithm for flexible job-shop scheduling problem</article-title>. <source>IEEE Trans. Emerg. Top. Comput. Intell.</source> <comment>(Early Access)</comment>, <fpage>1</fpage>&#x2013;<lpage>15</lpage>. <pub-id pub-id-type="doi">10.1109/TETCI.2022.3145706</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Engstrom</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Ilyas</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Santurkar</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Tsipras</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Janoos</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Rudolph</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Implementation matters in deep policy gradients: A case study on PPO and trpo</article-title>. <comment>
<italic>arXiv</italic> [Preprint]. Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2005.12729">https://arxiv.org/abs/2005.12729</ext-link>
</comment>. </citation>
</ref>
<ref id="B11">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Feng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Flexible job-shop scheduling based on deep reinforcement learning</article-title>,&#x201d; in <conf-name>2021 5th Asian Conference on Artificial Intelligence Technology (ACAIT)</conf-name>, <conf-date>Haikou, China, 29-31 October 2021</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>660</fpage>&#x2013;<lpage>666</lpage>. <pub-id pub-id-type="doi">10.1109/ACAIT53529.2021.9731322</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fernandes</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Homayouni</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Fontes</surname>
<given-names>D. B.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Energy-efficient scheduling in job shop manufacturing systems: A literature review</article-title>. <source>Sustainability</source> <volume>14</volume> (<issue>10</issue>), <fpage>6264</fpage>. <pub-id pub-id-type="doi">10.3390/su14106264</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Sadollah</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A review of energy-efficient scheduling in intelligent production systems</article-title>. <source>Complex Intell. Syst.</source> <volume>6</volume> (<issue>2</issue>), <fpage>237</fpage>&#x2013;<lpage>249</lpage>. <pub-id pub-id-type="doi">10.1007/s40747-019-00122-6</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gutowski</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Murphy</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Allen</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Bauer</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Bras</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Piwonka</surname>
<given-names>T.</given-names>
</name>
<etal/>
</person-group> (<year>2005</year>). <article-title>Environmentally benign manufacturing: Observations from Japan, europe and the United States</article-title>. <source>J. Clean. Prod.</source> <volume>13</volume> (<issue>1</issue>), <fpage>1</fpage>&#x2013;<lpage>17</lpage>. <pub-id pub-id-type="doi">10.1016/j.jclepro.2003.10.004</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>B. -A.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J. -J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Research on adaptive job-shop scheduling problems based on dueling double DQN</article-title>. <source>IEEE Access</source> <volume>8</volume>, <fpage>186474</fpage>&#x2013;<lpage>186495</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2020.3029868</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>B. A.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J. J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A deep reinforcement learning based solution for flexible job-shop scheduling problem</article-title>. <source>Int. J. Simul. Model.</source> <volume>20 2</volume>, <fpage>375</fpage>&#x2013;<lpage>386</lpage>. <pub-id pub-id-type="doi">10.2507/IJSIMM20-2-CO7</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Behrendt</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Lanzerath</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Reggelin</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>M&#xfc;ller</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Integration of deep reinforcement learning and discrete-event simulation for real-time scheduling of a flexible job shop production</article-title>,&#x201d; in <conf-name>2020 Winter Simulation Conference (WSC)</conf-name>, <conf-loc>Orlando, FL, USA</conf-loc>, <conf-date>14-18 December 2020</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>3057</fpage>&#x2013;<lpage>3068</lpage>. <pub-id pub-id-type="doi">10.1109/WSC48552.2020.9383997</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lei</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A shuffled frog-leaping algorithm for flexible job-shop scheduling with the consideration of energy consumption</article-title>. <source>Int. J. Prod. Res.</source> <volume>55</volume> (<issue>11</issue>), <fpage>3126</fpage>&#x2013;<lpage>3140</lpage>. <pub-id pub-id-type="doi">10.1080/00207543.2016.1262082</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>G. G.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A review of green shop scheduling problem</article-title>. <source>Inf. Sci. (N. Y).</source> <volume>589</volume>, <fpage>478</fpage>&#x2013;<lpage>496</lpage>. <pub-id pub-id-type="doi">10.1016/j.ins.2021.12.122</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>C. -L.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>C. -C.</given-names>
</name>
<name>
<surname>Tseng</surname>
<given-names>C. -J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Actor-critic deep reinforcement learning for solving job-shop scheduling problems</article-title>. <source>IEEE Access</source> <volume>8</volume>, <fpage>71752</fpage>&#x2013;<lpage>71762</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2020.2987820</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chekem</surname>
<given-names>F. O.</given-names>
</name>
<name>
<surname>Sutherland</surname>
<given-names>J. W.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Flexible job-shop scheduling for reduced manufacturing carbon footprint</article-title>. <source>J. Manuf. Sci. Eng.</source> <volume>140</volume> (<issue>6</issue>), <fpage>061006</fpage>. <pub-id pub-id-type="doi">10.1115/1.4037710</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Piplani</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Toro</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Deep reinforcement learning for dynamic scheduling of a flexible job shop</article-title>. <source>Int. J. Prod. Res.</source> <volume>60</volume> (<issue>13</issue>), <fpage>4049</fpage>&#x2013;<lpage>4069</lpage>. <pub-id pub-id-type="doi">10.1080/00207543.2022.2058432</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Dynamic scheduling for flexible job shop with new job insertions by deep reinforcement learning</article-title>. <source>Appl. Soft Comput.</source> <volume>91</volume>, <fpage>106208</fpage>. <pub-id pub-id-type="doi">10.1016/j.asoc.2020.106208</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Fan</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Dynamic multi-objective scheduling for flexible job shop by deep reinforcement learning</article-title>. <source>Comput. Ind. Eng.</source> <volume>159</volume>, <fpage>107489</fpage>. <pub-id pub-id-type="doi">10.1016/j.cie.2021.107489</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Fan</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Energy-efficient scheduling for multi-objective flexible job shops with variable processing speeds by grey wolf optimization</article-title>. <source>J. Clean. Prod.</source> <volume>234</volume>, <fpage>1365</fpage>&#x2013;<lpage>1384</lpage>. <pub-id pub-id-type="doi">10.1016/j.jclepro.2019.06.151</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mokhtari</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Hasani</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>An energy-efficient multi-objective optimization for flexible job-shop scheduling problem</article-title>. <source>Comput. Chem. Eng.</source> <volume>104</volume>, <fpage>339</fpage>&#x2013;<lpage>352</lpage>. <pub-id pub-id-type="doi">10.1016/j.compchemeng.2017.05.004</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Monaci</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Agasucci</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Grani</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>An actor-critic algorithm with deep double recurrent agents to solve the job-shop scheduling problem</article-title>. <comment>
<italic>arXiv</italic> [Preprint]. Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2110.09076">https://arxiv.org/abs/2110.09076</ext-link>
</comment>. </citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Naimi</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Nouiri</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cardin</surname>
<given-names>O.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A Q-Learning rescheduling approach to the flexible job shop problem combining energy and productivity objectives</article-title>. <source>Sustainability</source> <volume>13</volume> (<issue>23</issue>), <fpage>13016</fpage>. <pub-id pub-id-type="doi">10.3390/su132313016</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ni</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Hao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tong</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yuan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Duan</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). &#x201c;<article-title>A multi-graph attributed reinforcement learning based optimization algorithm for large-scale hybrid flow shop scheduling problem</article-title>,&#x201d; in <conf-name>Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD)</conf-name>, <conf-loc>Singapore</conf-loc>, <conf-date>Aug 14, 2021 - Aug 18, 2021</conf-date>, <fpage>3441</fpage>&#x2013;<lpage>3451</lpage>. <pub-id pub-id-type="doi">10.1109/ICCECE54139.2022.9712705</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Deep reinforcement learning based optimization algorithm for permutation flow-shop scheduling</article-title>. <source>IEEE Trans. Emerg. Top. Comput. Intell.</source> <comment>(Early Access)</comment>, <fpage>1</fpage>&#x2013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1109/TETCI.2021.3098354</pub-id> </citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Park</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S. H.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Learning to schedule job-shop problems: Representation and policy learning using graph neural network and reinforcement learning</article-title>. <source>Int. J. Prod. Res.</source> <volume>59</volume> (<issue>11</issue>), <fpage>3360</fpage>&#x2013;<lpage>3377</lpage>. <pub-id pub-id-type="doi">10.1080/00207543.2020.1870013</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Qu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shivani</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Learning adaptive dispatching rules for a manufacturing process system by using reinforcement learning approach</article-title>,&#x201d; in <conf-name>2016 IEEE 21st International Conference on Emerging Technologies and Factory Automation (ETFA)</conf-name>, <conf-loc>Berlin, Germany</conf-loc>, <conf-date>06-09 September 2016</conf-date> (<publisher-name>IEEE</publisher-name>). <pub-id pub-id-type="doi">10.1109/ETFA.2016.7733712</pub-id> </citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ren</surname>
<given-names>J. F.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>C. M.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A novel solution to JSPS based on long short-term memory and policy gradient algorithm</article-title>. <source>Int. J. Simul. Model.</source> <volume>19</volume> (<issue>1</issue>), <fpage>157</fpage>&#x2013;<lpage>168</lpage>. <pub-id pub-id-type="doi">10.2507/IJSIMM19-1-CO4</pub-id> </citation>
</ref>
<ref id="B34">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>van Ekeris</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Meyes</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Meisen</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Discovering heuristics and metaheuristics for job-shop scheduling from scratch via deep reinforcement learning</article-title>,&#x201d; in <conf-name>Proceedings of the Conference on Production Systems and Logistics (CPSL), Online</conf-name>, <conf-date>10-11 August 2021</conf-date>, <fpage>709</fpage>&#x2013;<lpage>718</lpage>. <pub-id pub-id-type="doi">10.15488/11231</pub-id> </citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A green scheduling algorithm for flexible job shop with energy-saving measures</article-title>. <source>J. Clean. Prod.</source> <volume>172</volume>, <fpage>3249</fpage>&#x2013;<lpage>3264</lpage>. <pub-id pub-id-type="doi">10.1016/j.jclepro.2017.10.342</pub-id> </citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Mei</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ji</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Genetic programming with delayed routing for multiobjective dynamic flexible job-shop scheduling</article-title>. <source>Evol. Comput.</source> <volume>29</volume> (<issue>1</issue>), <fpage>75</fpage>&#x2013;<lpage>105</lpage>. <pub-id pub-id-type="doi">10.1162/evco_a_00273</pub-id> </citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yan</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Deep reinforcement learning for distributed flow shop scheduling with flexible maintenance</article-title>. <source>Machines</source> <volume>10</volume> (<issue>3</issue>), <fpage>210</fpage>. <pub-id pub-id-type="doi">10.3390/machines10030210</pub-id> </citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yin</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A novel mathematical model and multi-objective method for the low-carbon flexible job shop scheduling problem</article-title>. <source>Sustain. Comput. Inf. Syst.</source> <volume>13</volume>, <fpage>15</fpage>&#x2013;<lpage>30</lpage>. <pub-id pub-id-type="doi">10.1016/j.suscom.2016.11.002</pub-id> </citation>
</ref>
<ref id="B39">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Zeng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Dai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Yuan</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Hybrid intelligence for dynamic job-shop scheduling with deep reinforcement learning and attention mechanism</article-title>. <comment>
<italic>arXiv</italic> [Preprint]. Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2201.00548">https://arxiv.org/abs/2201.00548</ext-link>
</comment>. </citation>
</ref>
<ref id="B40">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Song</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Cao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>P. S.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Learning to dispatch for job-shop scheduling via deep reinforcement learning</article-title>. <comment>
<italic>arXiv</italic> [Preprint]. Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2010.12367">https://arxiv.org/abs/2010.12367</ext-link>
</comment>. </citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Ge</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A novel heuristic method for the energy-efficient flexible job-shop scheduling problem with sequence-dependent set-up and transportation time</article-title>. <source>Eng. Optim.</source> <volume>54</volume> (<issue>10</issue>), <fpage>1646</fpage>&#x2013;<lpage>1667</lpage>. <pub-id pub-id-type="doi">10.1080/0305215X.2021.1949007</pub-id> </citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Qin</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Fu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Review of job shop scheduling research and its new perspectives under Industry 4.0</article-title>. <source>J. Intell. Manuf.</source> <volume>30</volume> (<issue>4</issue>), <fpage>1809</fpage>&#x2013;<lpage>1830</lpage>. <pub-id pub-id-type="doi">10.1007/s10845-017-1350-2</pub-id> </citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Dynamic jobshop scheduling algorithm based on deep q network</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>122995</fpage>&#x2013;<lpage>123011</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2021.3110242</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>