<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="2.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Mar. Sci.</journal-id>
<journal-title>Frontiers in Marine Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mar. Sci.</abbrev-journal-title>
<issn pub-type="epub">2296-7745</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fmars.2023.1095283</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Marine Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Hybrid dynamic modeling and receding horizon speed optimization for liner shipping operations from schedule reliability and energy efficiency perspectives</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Zheng</surname><given-names>Jian</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2049949"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Mao</surname><given-names>Chuanshuo</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2094139"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Zhang</surname><given-names>Qiang</given-names>
</name>
<xref ref-type="author-notes" rid="fn001"><sup>*</sup></xref>
<uri xlink:href="https://loop.frontiersin.org/people/2044432"/>
</contrib>
</contrib-group>
<aff id="aff1"><institution>College of Transport and Communications, Shanghai Maritime University</institution>, <addr-line>Shanghai</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by">
<p>Edited by: Jihong Chen, Shenzhen University, China</p>
</fn>
<fn fn-type="edited-by">
<p>Reviewed by: Kang Chen, Dalian Maritime University, China; Lei Dai, Shanghai Jiao Tong University, China; Fei Meng, University of Shanghai for Science and Technology, China</p>
</fn>
<fn fn-type="corresp" id="fn001">
<p>*Correspondence: Qiang Zhang, <email xlink:href="mailto:qiangzhang@shmtu.edu.cn">qiangzhang@shmtu.edu.cn</email>
</p>
</fn>
<fn fn-type="other" id="fn002">
<p>This article was submitted to Marine Affairs and Policy, a section of the journal Frontiers in Marine Science</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>21</day>
<month>03</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>10</volume>
<elocation-id>1095283</elocation-id>
<history>
<date date-type="received">
<day>11</day>
<month>11</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>09</day>
<month>03</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Zheng, Mao and Zhang</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Zheng, Mao and Zhang</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>Uncertainties in port handling efficiency can cause port delays in the liner shipping system. Furthermore, policies on carbon emission reduction, such as EEXI standards, restrict the potential for speed optimization in liner shipping operations. Traditional tactical planning speed optimization is unsuitable for operational-level decision making, leading to unreliable schedules. From a schedule-reliability and energy-efficiency perspective, we propose a real-time speed optimization method based on discrete hybrid automaton (DHA) and decentered model predictive control (DMPC). We use a dynamic adjustment of sailing speed to offset the disturbance caused by port handling efficiency uncertainties. First, we establish a DHA model that describes each ship&#x2019;s hybrid dynamics of state switching between sailing and berthing; then, we develop a prediction model for the DMPC controller, which is analogous to the DHA model. The schedule is transferred into time&#x2013;position coordinates as controller reference trajectories in the receding horizon speed optimization framework. We consider determining tracking errors, carbon emissions, and fuel consumption as our objectives, and we carry out engine power limitation (EPL) analysis for the sample ship, which turns the EEXI standards into constraints. We attain the recommended speed by solving a mixed-integer optimization. We carry out a case study, and our results indicate the effectiveness of our proposed DHA-DMPC scheme in lowering port delays and achieving the best trade-off between schedule reliability and energy efficiency. Additionally, we conduct further experiments to analyze the impacts of various carbon reduction policies on the performance levels of liner shipping operations.</p>
</abstract>
<kwd-group>
<kwd>liner shipping</kwd>
<kwd>speed optimization</kwd>
<kwd>model predictive control</kwd>
<kwd>discrete hybrid automaton</kwd>
<kwd>Energy Efficiency Existing Ship Index (EEXI)</kwd>
</kwd-group>
<counts>
<fig-count count="11"/>
<table-count count="11"/>
<equation-count count="37"/>
<ref-count count="40"/>
<page-count count="18"/>
<word-count count="8794"/>
</counts>
</article-meta>
</front>
<body>
<sec id="s1" sec-type="intro">
<label>1</label>
<title>Introduction</title>
<p>Ships operated by container shipping lines follow published schedules and travel along fixed routes with regular port rotations. However, the schedule reliability of liner shipping is often influenced by uncertain factors at ports. For instance, a labor strike would lead to decreases in the pace of port handling, while port congestion would lengthen the time ships are required to wait before berthing. These uncertain factors result in schedule unreliability and port delays, reducing the competitive advantages of liner shipping lines and disturbing the regularity of the global supply chain (<xref ref-type="bibr" rid="B39">Zheng et&#xa0;al., 2021</xref>). Ship speeding up is the most common approach to reduce port delays. Moreover, IMO has imposed new technical measures, such as the Energy Efficiency Existing Ship Index (EEXI), which will come into force on January 1, 2023, attempting to achieve long-term goals to reduce greenhouse gas emissions (<xref ref-type="bibr" rid="B1">ABS, 2021</xref>). Shipping companies may need to implement solutions such as engine power limitation (EPL) on their fleets to comply with the EEXI standard. However, EPL lowers the top limit of the adjustable ship speed, which has an impact on the controllability of reducing port delays through ship speeding up. Therefore, real-time speed optimization for liner shipping operations is required to eliminate port delays caused by unpredictable port handling efficiency, improve schedule reliability while complying with the EEXI standard, and maintain low operating costs.</p>
<p>Speed changes have a significant impact on fluctuations in fuel consumption and carbon emissions, which are proportional to the third power of sailing speed. As a result, determining the ideal sailing speed is crucial (<xref ref-type="bibr" rid="B14">Leaper, 2019</xref>; <xref ref-type="bibr" rid="B7">Dunn et&#xa0;al., 2021</xref>); therefore, speed optimization has become a hot topic in research on liner shipping operations (<xref ref-type="bibr" rid="B12">Jimenez et&#xa0;al., 2022</xref>). Speed optimization is used in tactical planning to determine the service speed between adjacent ports, and is carried out in combination with other tactical decisions, such as fleet deployment and schedule design (<xref ref-type="bibr" rid="B21">Notteboom, 2006</xref>; <xref ref-type="bibr" rid="B5">Brouer et&#xa0;al., 2017</xref>; <xref ref-type="bibr" rid="B13">Karsten et&#xa0;al., 2017</xref>; <xref ref-type="bibr" rid="B6">Chen et&#xa0;al., 2022</xref>). Traditional tactical-level planning often considers minimizing operating costs, fuel consumption, and carbon emissions as objectives, with the problem formulated as a mixed-integer programming (MIP) model (<xref ref-type="bibr" rid="B8">Fagerholt et&#xa0;al., 2010</xref>; <xref ref-type="bibr" rid="B32">Wang and Meng, 2012a</xref>). Some studies have expanded the model&#x2019;s application scenarios, taking into account more tactical decisions, such as cargo allocation and bunker policy, transforming the model into an integrated decision support system. <xref ref-type="bibr" rid="B24">Psaraftis and Kontovas (2014)</xref> considered various factors affecting speed decisions, such as load, fuel price, market condition, etc. <xref ref-type="bibr" rid="B36">Wen et&#xa0;al. (2017)</xref> studied the speed optimization of heterogeneous fleets. In addition to voyage duration, cost, and emissions, the satisfaction of shippers is also an objective. Based on statistical data from a shipping line, <xref ref-type="bibr" rid="B37">Xia et&#xa0;al. (2015)</xref> fit the relationship between load, sailing speed, and fuel consumption. Both cargo allocation and speed optimization are included in the optimization model. <xref ref-type="bibr" rid="B9">Guericke and Tierney (2015)</xref> established an MIP model to maximize shipping lines&#x2019; profits and designed a decision support system that can recommend the optimal speed, freight rate, and cargo allocation plan. <xref ref-type="bibr" rid="B26">Sheng et&#xa0;al. (2015)</xref> combined ship refueling problems with speed determination. <xref ref-type="bibr" rid="B22">Pasha et&#xa0;al. (2021)</xref> proposed an integrated optimization model that addresses all the major tactical liner shipping decisions for heterogeneous fleets.</p>
<p>While the aforementioned studies are capable of figuring out tactical plans, they fail to take into account uncertain factors that might affect how effective the plan is. Some scholars attempted to quantify the level of the uncertainties using a probabilistic model, allowing the uncertain factors to be measured and balanced out by adding buffer time to the schedule (<xref ref-type="bibr" rid="B33">Wang and Meng, 2012b</xref>; <xref ref-type="bibr" rid="B18">Meng et&#xa0;al., 2014</xref>; <xref ref-type="bibr" rid="B2">An and Lo, 2016</xref>). <xref ref-type="bibr" rid="B25">Qi and Song (2012)</xref> used simulation-based stochastic approximation methods to consider uncertain port times and created a robust schedule aimed at maintaining a high service level. <xref ref-type="bibr" rid="B3">Aydin et&#xa0;al. (2017)</xref> developed a speed optimization model with stochastic port times and time windows and then determined the service speed using dynamic programming. <xref ref-type="bibr" rid="B17">Liu et&#xa0;al. (2020)</xref> studied speed optimization and bunker policy under uncertain demand conditions. <xref ref-type="bibr" rid="B28">Tan et&#xa0;al. (2018)</xref> proposed a joint ship schedule design and sailing speed optimization problem for a single inland shipping service considering uncertain dam transit time.</p>
<p>A robust tactical plan can be generated by quantifying uncertain factors in the optimization model. However, some uncertainties, such as labor strikes and weather conditions, are hard to predict and cannot be measured properly. It is impossible to consider these factors in the tactic-level optimization model. Furthermore, the service speed in tactical plans remains a fixed value for the voyage in adjacent ports and there are no indications for a ship to adjust sailing speed during a voyage. As a result, operational-level speed management incorporating real-time optimization is needed. In operational-level speed optimization studies, the voyage is typically broken into multiple legs, and the sailing speed on each leg is then computed using dynamic programming. (<xref ref-type="bibr" rid="B23">Perera and Mo, 2016</xref>; <xref ref-type="bibr" rid="B15">Lee et&#xa0;al., 2018</xref>; <xref ref-type="bibr" rid="B35">Wang et&#xa0;al., 2017</xref>; <xref ref-type="bibr" rid="B16">Li et&#xa0;al., 2018</xref>). <xref ref-type="bibr" rid="B34">Wang et&#xa0;al. (2018)</xref> proposed a nonlinear model predictive control framework based on real-time updated environmental information and applied a particle swarm optimization algorithm to compute the optimal speed. Therefore, the sailing speed can be adjusted to consider varying environmental factors and remain optimal throughout the whole voyage. <xref ref-type="bibr" rid="B10">Huotari et&#xa0;al. (2021)</xref> presented a novel convex optimization model for ship speed profile optimization under varying environmental conditions and timetable constraints. <xref ref-type="bibr" rid="B30">Tzortzis and Sakalis (2021)</xref> proposed a dynamic speed optimization problem, transforming the optimization problem into several sub-problems for improved weather forecasting by segmenting the full time horizon into smaller time regions.</p>
<p>Although the above optimization models can effectively balance uncertainties, they are only able to represent a single voyage with a single ship. A predominant characteristic of liner shipping operations is that the ships&#x2019; motions repeatedly switch between sailing and berthing. Such a characteristic complicates the modeling process for liner shipping operations; hence, a more detailed optimization model that describes this hybrid dynamic phenomenon is required. In this paper, we model a discrete hybrid automaton (DHA), and then a decentered model predictive control (DMPC) framework is designed. As we focus on operational-level speed management, we assume that the service speed, the fleet deployment, and the schedule have already been determined. Real-time speed optimization is realized through the receding horizon optimization method with the objectives of operating the ships on predetermined schedules while complying with the EEXI standard and maintaining high energy efficiency.</p>
<p>We present the contributions of our paper as follows:</p>
<list list-type="simple">
<list-item>
<p>(a) We formulate the hybrid dynamic phenomenon of liner shipping operations by a DHA model constructed using a mixed logical dynamical (MLD) approach, which precisely captures ships&#x2019; motions and state switching rules;</p>
</list-item>
<list-item>
<p>(b) For real-time speed optimization against uncertain port handling efficiency, we design a DMPC controller based on a receding horizon optimization strategy, in which the prediction model is built analogous to the DHA model and the schedule is transferred into a tractable reference trajectory. Ships&#x2019; sailing speeds can be adjusted to reduce possible port delays;</p>
</list-item>
<list-item>
<p>(c) Our optimization model incorporates the EEXI standard and converts it into a constraint to guarantee that the emission policy is met while maintaining schedule reliability.</p>
</list-item>
</list>
<p>The remainder of our paper is organized as follows: In Section 2, we construct the DHA model and design the DMPC framework. We present our case study and extend experiment results in Section 3. We discuss our findings in Section 4 before concluding our paper in Section 5.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Method</title>
<p>There are two motions for ships in liner shipping operations: sailing state and berthing state. These two states switch between each other in circles, reflecting a hybrid dynamical phenomenon that involves both continuous states (sailing states and berthing states) and logic rules (judging when will the state switch happen). While sailing, a ship&#x2019;s positions are updated in real time, and the ship switches into a berthing state when it reaches the corresponding ports. Container handling is done during berthing while the ship&#x2019;s position remains unchanged. In this section, a DHA model is constructed to characterize the dynamics of the ships in liner shipping operations. The real-time dynamical states of each ship in the liner shipping fleet can be calculated. The DHA model serves two purposes: (a) The DHA model functions as a system plant to represent the reality of liner shipping operations and test the proposed sped optimization method. (b) A prediction model in the DMPC framework is established, analogous to the DHA model. As a key component of the DMPC system, the prediction model forecasts the future states of the ships based on their present states. The control effect is determined by the degree of forecast accuracy.</p>
<p>The DMPC controller is designed in Section 2.2. Real-time speed optimization is realized through the receding horizon optimization scheme. Moreover, the decentralized controller arrangement mode reduces individual controllers&#x2019; computing capacity and improves the system&#x2019;s overall computing efficiency. The DMPC controller is supposed to timely adjust the ships&#x2019; sailing speed against uncertain port handling efficiency to reduce port delays and keep the liner shipping system in optimal performance.</p>
<sec id="s2_1">
<label>2.1</label>
<title>Modeling</title>
<p>We propose a DHA model based on a discrete-time framework constructed using the MLD modeling approach to formulate the hybrid dynamics of liner shipping operations (<xref ref-type="bibr" rid="B27">Sirmatel and Geroliminis, 2018</xref>). A discrete hybrid automaton (DHA) consists of four modules: a switched affine system (SAS), an event generator (EG), a mode selector (MS), and a finite state machine (FSM). The SAS module describes the continuous dynamics of the liner shipping operations and the FSM module represents the logical rules. The EG and MS modules realize the interconnections between continuous dynamics and logic rules. Continuous state variables in different ranges trigger corresponding discrete events through the EG module, while the MS module alters the continuous variables&#x2019; evolving modes following indications generated by the FSM module (<xref ref-type="bibr" rid="B4">Bemporad and Morari, 1999</xref>).</p>
<sec id="s2_1_1">
<label>2.1.1</label>
<title>Switched affine system module</title>
<p>The SAS module describes how the continuous states of each ship evolve in different modes: sailing, berthing, and reset. Each ship is in a specific mode at any instant. In sailing mode, the ship&#x2019;s position changes while the quantities of handled containers remain 0; however, the situation is reversed in the berthing mode. The ship enters reset mode when it accomplishes a round-circle voyage; then, its position is reset to 0 for a new voyage.</p>
<p>We consider a liner shipping system with a fleet of <inline-formula>
<mml:math display="inline" id="im1">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>ships. The number of calling ports is <inline-formula>
<mml:math display="inline" id="im2">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>and the total number of sailing legs is <inline-formula>
<mml:math display="inline" id="im3">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The distance between adjacent ports in the rotation is called a leg.</p>
<p>(a) Position dynamics can be described as follows:</p>
<disp-formula>
<label>(1)</label>
<mml:math display="block" id="M1">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#xa0;&#xa0;&#xa0;&#xa0;if&#xa0;M</mml:mtext>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mtext>&#xa0;True</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;if&#xa0;M</mml:mtext>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msub>
<mml:mtext>&#xa0;True</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mtext>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;if&#xa0;M</mml:mtext>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mtext>&#xa0;True</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im4">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the sampling time; <inline-formula>
<mml:math display="inline" id="im5">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (n mile) represents the position of ship <inline-formula>
<mml:math display="inline" id="im6">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> at instant <inline-formula>
<mml:math display="inline" id="im7">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula> ; and <inline-formula>
<mml:math display="inline" id="im8">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (knots) is the sailing speed of ship <inline-formula>
<mml:math display="inline" id="im9">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> at instant <inline-formula>
<mml:math display="inline" id="im10">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula>. <inline-formula>
<mml:math display="inline" id="im11">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im12">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>b</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im13">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represent three modes of sailing, berthing, and resetting, respectively.</p>
<p>(b) The dynamics of container handling can be expressed as follows:</p>
<disp-formula>
<label>(2)</label>
<mml:math display="block" id="M2">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#xa0;&#xa0;if&#xa0;M</mml:mtext>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msub>
<mml:mtext>&#xa0;True</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mtext>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;if&#xa0;M</mml:mtext>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mtext>&#xa0;True</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im14">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes the quantities of handled containers of ship <inline-formula>
<mml:math display="inline" id="im15">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> at port <inline-formula>
<mml:math display="inline" id="im16">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>, which is the total number of containers being loaded or unloaded, or any other terminal operations; furthermore, <inline-formula>
<mml:math display="inline" id="im17">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>is set to 0 when the ship is sailing. <inline-formula>
<mml:math display="inline" id="im18">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>expresses the container handling efficiency of port <inline-formula>
<mml:math display="inline" id="im19">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> at instant <inline-formula>
<mml:math display="inline" id="im20">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula>. The port handling efficiency is defined as an average container handling rate at port, which is calculated through dividing the total quantities of handled containers by the total observable time at port.</p>
</sec>
<sec id="s2_1_2">
<label>2.1.2</label>
<title>Event generator module</title>
<p>Binary events are triggered when the EG module detects that the continuous state variables reach certain ranges. In the liner shipping system, the events are triggered by the values of ships&#x2019; positions and the quantities of their handled containers.</p>
<p>(a) Event triggered by position dynamics is as follows:</p>
<disp-formula>
<label>(3)</label>
<mml:math display="block" id="M3">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im21">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> describes whether ship <inline-formula>
<mml:math display="inline" id="im22">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> has reached port <inline-formula>
<mml:math display="inline" id="im23">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> or not. At instant <inline-formula>
<mml:math display="inline" id="im24">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula>, if ship <inline-formula>
<mml:math display="inline" id="im25">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> has reached port <inline-formula>
<mml:math display="inline" id="im26">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>, then <inline-formula>
<mml:math display="inline" id="im27">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>is true; otherwise, <inline-formula>
<mml:math display="inline" id="im28">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>is false.</p>
<p>(b) Event generated when ship <italic>i</italic> finishes a round-circle voyage is as follows:</p>
<disp-formula>
<label>(4)</label>
<mml:math display="block" id="M4">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where<inline-formula>
<mml:math display="inline" id="im29">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> describes whether ship <inline-formula>
<mml:math display="inline" id="im30">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> has finished a circle voyage or not.</p>
<p>(c) Event triggered by container handling dynamics is as follows:</p>
<disp-formula>
<label>(5)</label>
<mml:math display="block" id="M5">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>h</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im31">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>h</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> describes whether ship <inline-formula>
<mml:math display="inline" id="im32">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> has finished container handling at port <inline-formula>
<mml:math display="inline" id="im33">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> or not. <inline-formula>
<mml:math display="inline" id="im34">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the container quantities to be handled for ship <inline-formula>
<mml:math display="inline" id="im35">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> at port <inline-formula>
<mml:math display="inline" id="im36">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>, which is acquired through observation. <inline-formula>
<mml:math display="inline" id="im37">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>h</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is triggered when the already-handled container quantities exceed the due quantities.</p>
</sec>
<sec id="s2_1_3">
<label>2.1.3</label>
<title>Mode selector module</title>
<p>In the MS module, different modes are activated by certain binary states and events, changing patterns as the continuous states evolve. The three modes of liner shipping operations are defined as follows:</p>
<p>For <inline-formula>
<mml:math display="inline" id="im38">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im39">
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
<disp-formula>
<label>(6)</label>
<mml:math display="block" id="M6">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:mo>&#x2203;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise&#xa0;</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(7)</label>
<mml:math display="block" id="M7">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>b</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:mo>&#x2203;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(8)</label>
<mml:math display="block" id="M8">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where binary state variable <inline-formula>
<mml:math display="inline" id="im40">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents at instant <inline-formula>
<mml:math display="inline" id="im41">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula> that ship <inline-formula>
<mml:math display="inline" id="im42">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is sailing on leg <inline-formula>
<mml:math display="inline" id="im43">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>; furthermore, binary state variable <inline-formula>
<mml:math display="inline" id="im44">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents at instant <inline-formula>
<mml:math display="inline" id="im45">
<mml:mi>t</mml:mi>
</mml:math>
</inline-formula> that ship <inline-formula>
<mml:math display="inline" id="im46">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is berthing at port <inline-formula>
<mml:math display="inline" id="im47">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>. If ship <inline-formula>
<mml:math display="inline" id="im48">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is sailing on a certain leg, then the sailing mode of this ship is activated; if ship <inline-formula>
<mml:math display="inline" id="im49">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is berthing at any port, then the berthing mode is activated; and if ship <inline-formula>
<mml:math display="inline" id="im50">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> has finished a circle voyage, then the reset mode is activated. When ship <inline-formula>
<mml:math display="inline" id="im51">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> finishes sailing on the last leg and reaches the first port, its position will be reset to 0 at the same time it enters the berthing state and a new circular voyage begins. Therefore, sailing and berthing modes are mutually exclusive, while berthing and reset modes are compatible.</p>
</sec>
<sec id="s2_1_4">
<label>2.1.4</label>
<title>Finite state machine module</title>
<p>The FSM module describes the evolution of binary states. At every instant, the current binary states are calculated on former states and events generated in the EG module.</p>
<p>(a) The logical rules judging whether ship <inline-formula>
<mml:math display="inline" id="im52">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is sailing on leg <inline-formula>
<mml:math display="inline" id="im53">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula> are defined as follows:</p>
<disp-formula>
<label>(9)</label>
<mml:math display="block" id="M9">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2228;</mml:mo>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(10)</label>
<mml:math display="block" id="M10">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>h</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;&#xa0;</mml:mtext>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(11)</label>
<mml:math display="block" id="M11">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:mo>&#xac;</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mtext>,&#xa0;&#xa0;</mml:mtext>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im54">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im55">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are auxiliary Boolean variables and function as events in the FSM module. <inline-formula>
<mml:math display="inline" id="im56">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes that ship <inline-formula>
<mml:math display="inline" id="im57">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> begins sailing on leg <inline-formula>
<mml:math display="inline" id="im58">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>; furthermore, <inline-formula>
<mml:math display="inline" id="im59">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes that ship <italic>i</italic> is still sailing on leg <inline-formula>
<mml:math display="inline" id="im60">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>. Ship <italic>i</italic> is deemed to be sailing on leg <inline-formula>
<mml:math display="inline" id="im61">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula> if it finishes port handling at port <inline-formula>
<mml:math display="inline" id="im62">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> (<inline-formula>
<mml:math display="inline" id="im63">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) or it is sailing on leg <inline-formula>
<mml:math display="inline" id="im64">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula> and has not reached the next port.</p>
<p>(b) The logical rules judging whether ship <inline-formula>
<mml:math display="inline" id="im65">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is berthing at port <inline-formula>
<mml:math display="inline" id="im66">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> are defined as follows:</p>
<disp-formula>
<label>(12)</label>
<mml:math display="block" id="M12">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2228;</mml:mo>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(13)</label>
<mml:math display="block" id="M13">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;&#xa0;</mml:mtext>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(14)</label>
<mml:math display="block" id="M14">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:mo>&#xac;</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>h</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im67">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im68">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are auxiliary Boolean variables and function as events in the FSM module. <inline-formula>
<mml:math display="inline" id="im69">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes that ship <inline-formula>
<mml:math display="inline" id="im70">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> reaches port <inline-formula>
<mml:math display="inline" id="im71">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>(<inline-formula>
<mml:math display="inline" id="im72">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>) and begins to berth at port <inline-formula>
<mml:math display="inline" id="im73">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>; furthermore, <inline-formula>
<mml:math display="inline" id="im74">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes that ship <inline-formula>
<mml:math display="inline" id="im75">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is still berthing at port <inline-formula>
<mml:math display="inline" id="im76">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>. Ship <inline-formula>
<mml:math display="inline" id="im77">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> is deemed to be berthing at port <inline-formula>
<mml:math display="inline" id="im78">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> if it reaches port <inline-formula>
<mml:math display="inline" id="im79">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> or it is still berthing at port <inline-formula>
<mml:math display="inline" id="im80">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> and port handling has not finished yet.</p>
<p>
<xref ref-type="fig" rid="f1"><bold>Figure&#xa0;1</bold></xref> shows the state flow in the FSM module.</p>
<fig id="f1" position="float">
<label>Figure&#xa0;1</label>
<caption>
<p>FSM module of liner shipping system.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g001.tif"/>
</fig>
</sec>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Controller design</title>
<sec id="s2_2_1">
<label>2.2.1</label>
<title>Transfer schedules into trackable reference trajectories</title>
<p>A liner shipping schedule is a plan that combines time and space factors. Ships serving a certain shipping route are required to reach the corresponding port within the specified period. The importance of schedule reliability is reflected in two ways: (a) Container shipping is a key link in international cargo transportation. A liner shipping schedule provides an important basis for planning by other participants in the global supply chain, such as shippers, inland carriers, and marine container terminal (MCT) operators; therefore, any schedule delays would affect the subsequent logistics chain. (b) Schedule reliability reflects the service level a shipping line can achieve for customers; therefore, maintaining high levels of schedule reliability is beneficial for improving customer satisfaction and gaining competitive advantages.</p>
<p>Schedules published by shipping lines contain estimated times of arrival (ETA) and departure (ETD) for all ports they serve. In the liner shipping schedule, ETA and ETD are sequences of days, meaning that ships have to arrive or leave a port on a certain date, with the exact time (hours) not announced. For example, if the ETA for a certain port is 10, then the ship is supposed to arrive at the port within the period from 00:00 to 24:00 on the 10th day after the voyage starts&#x2014;there is no requirement regarding the exact time (hours) of arrival. Such a practice allows some schedule flexibility.</p>
<p>However, at an operational level, more detailed instructions for arrivals and departures should be made; therefore, the ETA needs to be accurate to hours. An accurate ETA is key to the coordination between ships and MCT operators (<xref ref-type="bibr" rid="B29">Tao et&#xa0;al., 2023</xref>). As such, we transform the schedule into a series of position&#x2013;time coordinates to obtain a tractable reference trajectory&#x2014;the time series is in hours and the ships have reference positions at any instant.</p>
<p>In the <inline-formula>
<mml:math display="inline" id="im81">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> voyage, the estimated time of arrival and departure of ship <inline-formula>
<mml:math display="inline" id="im82">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> at port <inline-formula>
<mml:math display="inline" id="im83">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> (denoted separately by <inline-formula>
<mml:math display="inline" id="im84">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im85">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>) can be calculated by predetermined service speed <inline-formula>
<mml:math display="inline" id="im86">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> (knots), estimated average port handling efficiency <inline-formula>
<mml:math display="inline" id="im87">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (TEU/hour), and estimated due quantities of containers to be handled <inline-formula>
<mml:math display="inline" id="im88">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>H</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (TEU). Then, <inline-formula>
<mml:math display="inline" id="im89">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im90">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are set as relay points; therefore, we can derive all the position&#x2013;time coordinates. <named-content content-type="algorithm-citation"><xref ref-type="other" rid="algo1"><bold>Algorithm 1</bold></xref></named-content> shows the detailed process for generating the reference trajectories. We minimized the difference between the reference trajectories and the ships&#x2019; actual trajectories, which is called a tracking error, using a receding horizon scheme in Section 2.3 so that the ships follow the reference trajectories.</p>
<statement id="algo1">
<label>Algorithm 1 Reference trajectory generator</label>
<p>
<preformat>
<bold>Input</bold>: <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im91">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im92">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im93">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>H</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im94">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>Initialize<named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im95">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>,  <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im96">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im97">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> set<named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im98">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im99">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content> <bold>while</bold>
<named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im100">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content> do
 <bold>for</bold> each <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im101">
<mml:mi>w</mml:mi>
</mml:math>
</inline-formula></named-content> do
   <bold>for</bold> each <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im102">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula></named-content> do
   calculate <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im103">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im104">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> based on <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im105">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im106">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im107">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>H</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im108">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;
   <bold>end for</bold>

<bold>end for</bold>

<bold>for</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im109">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>

   <bold>if</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im110">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> then
        <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im111">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>

   <bold>else if</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im112">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im113">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> then
        <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im114">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content>

   <bold>else</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im115">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>

   <bold>end if</bold>

 <bold>end for</bold>

<bold>end while</bold>

</preformat>

</p>
</statement>
</sec>
<sec id="s2_2_2">
<label>2.2.2</label>
<title>Fuel consumption and carbon emissions</title>
<p>Minimizing fuel consumption and carbon emissions are additional objectives when operating the liner shipping system in an energy-efficient way. Therefore, we calculate a formula for fuel consumption and carbon emissions as follows:</p>
<disp-formula>
<label>(15)</label>
<mml:math display="block" id="M15">
<mml:mrow>
<mml:msubsup>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0.7355</mml:mn>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mn>3</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
<mml:mi>C</mml:mi>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(16)</label>
<mml:math display="block" id="M16">
<mml:mrow>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>g</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:msubsup>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(17)</label>
<mml:math display="block" id="M17">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(18)</label>
<mml:math display="block" id="M18">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>F</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im116">
<mml:mrow>
<mml:msubsup>
<mml:mi>N</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the indicated power (kW) of ship <inline-formula>
<mml:math display="inline" id="im117">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>; <inline-formula>
<mml:math display="inline" id="im118">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the ship&#x2019;s deadweight tonnage (DWT); <inline-formula>
<mml:math display="inline" id="im119">
<mml:mi>C</mml:mi>
</mml:math>
</inline-formula> is the admiralty coefficient; <inline-formula>
<mml:math display="inline" id="im120">
<mml:mrow>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the fuel consumption per unit time (t/h); <inline-formula>
<mml:math display="inline" id="im121">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im122">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the fuel consumption (t) and carbon emissions (t) in the time period <inline-formula>
<mml:math display="inline" id="im123">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>; and <inline-formula>
<mml:math display="inline" id="im124">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>F</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the conversion factor between fuel consumption and <inline-formula>
<mml:math display="inline" id="im125">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> emissions.</p>
<p>For calculation convenience, we transformed the fuel consumption and carbon emissions into linear expressions of speed. We used the cubic root of fuel consumption and carbon emissions as performance indicators of ship energy efficiency. The formulas are as follows:</p>
<disp-formula>
<label>(19)</label>
<mml:math display="block" id="M19">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mroot>
<mml:mrow>
<mml:mn>0.7355</mml:mn>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>g</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mi>C</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:mroot>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(20)</label>
<mml:math display="block" id="M20">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mroot>
<mml:mrow>
<mml:mn>0.7355</mml:mn>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>F</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi>g</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>e</mml:mi>
</mml:msubsup>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mi>C</mml:mi>
</mml:mfrac>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:mroot>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
</sec>
<sec id="s2_2_3">
<label>2.2.3</label>
<title>EEXI limitation as constraints</title>
<p>The EEXI standard is introduced in the 2021 Marine Environmental Protection Committee meeting MEPC76, which acts as an expansion of the Energy Efficiency Design Index (EEDI) and covers existing ships. The attained EEXI for ships in liner shipping lines should be calculated and meet the required EEXI (<xref ref-type="bibr" rid="B11">IMO, 2022</xref>). Our calculation formulas for attained EEXI are as follows:</p>
<p>For ship <inline-formula>
<mml:math display="inline" id="im126">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>,</p>
<disp-formula>
<label>(21)</label>
<mml:math display="block" id="M21">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>Y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>100</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(22)</label>
<mml:math display="block" id="M22">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(23)</label>
<mml:math display="block" id="M23">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>R</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im127">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the required EEXI (<inline-formula>
<mml:math display="inline" id="im128">
<mml:mrow>
<mml:mtext>g</mml:mtext>
<mml:mo stretchy="false">/</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext>nm</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>), <inline-formula>
<mml:math display="inline" id="im129">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the reference line of EEDI (<inline-formula>
<mml:math display="inline" id="im130">
<mml:mrow>
<mml:mtext>g</mml:mtext>
<mml:mo stretchy="false">/</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext>nm</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>), and <inline-formula>
<mml:math display="inline" id="im131">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the attained EEXI (<inline-formula>
<mml:math display="inline" id="im132">
<mml:mrow>
<mml:mtext>g</mml:mtext>
<mml:mo stretchy="false">/</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext>nm</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>). <inline-formula>
<mml:math display="inline" id="im133">
<mml:mi>Y</mml:mi>
</mml:math>
</inline-formula> is the reduction factor and <inline-formula>
<mml:math display="inline" id="im134">
<mml:mi>Z</mml:mi>
</mml:math>
</inline-formula> is the safety margin, which are decided by the shipping lines themselves. <inline-formula>
<mml:math display="inline" id="im135">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the service speed under the EEXI draft. <inline-formula>
<mml:math display="inline" id="im136">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>R</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the correction factor and its value is 1. <inline-formula>
<mml:math display="inline" id="im137">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im138">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the carbon emissions of the main and auxiliary engines (<inline-formula>
<mml:math display="inline" id="im139">
<mml:mtext>g</mml:mtext>
</mml:math>
</inline-formula>); <inline-formula>
<mml:math display="inline" id="im140">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the emissions of the shaft generator (<inline-formula>
<mml:math display="inline" id="im141">
<mml:mtext>g</mml:mtext>
</mml:math>
</inline-formula>); and <inline-formula>
<mml:math display="inline" id="im142">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im143">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the carbon emissions reduced by the innovative energy efficient devices in the auxiliary and main engines (<inline-formula>
<mml:math display="inline" id="im144">
<mml:mtext>g</mml:mtext>
</mml:math>
</inline-formula>). Our calculation formulas for the carbon emissions of various devices are as follows:</p>
<disp-formula>
<label>(24)</label>
<mml:math display="block" id="M24">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x220f;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(25)</label>
<mml:math display="block" id="M25">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(26)</label>
<mml:math display="block" id="M26">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x220f;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(27)</label>
<mml:math display="block" id="M27">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(28)</label>
<mml:math display="block" id="M28">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<p>
<inline-formula>
<mml:math display="inline" id="im145">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the effective power of the <inline-formula>
<mml:math display="inline" id="im146">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> main engine (kW), which is 75% of the maximum continuous rating (MCR); <inline-formula>
<mml:math display="inline" id="im147">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the auxiliary engine power; <inline-formula>
<mml:math display="inline" id="im148">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im149">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im150">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the effective power of the shaft motor, and auxiliary and main engine power reductions due to energy efficient technology. <inline-formula>
<mml:math display="inline" id="im151">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im152">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are correction factors and <inline-formula>
<mml:math display="inline" id="im153">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula>
<mml:math display="inline" id="im154">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>and <inline-formula>
<mml:math display="inline" id="im155">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the carbon converting factors; furthermore, here, we assume <inline-formula>
<mml:math display="inline" id="im156">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>F</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>If the ship&#x2019;s attained EEXI cannot meet the EEXI standard then adjusting measures should be carried out for EEXI compliance. Among various EEXI improvement solutions, EPL has been proven the most common choice by shipowners due to its effectiveness and economic feasibility. Therefore, our solution is to apply engine power limitation (EPL) to improve the ship&#x2019;s EEXI.</p>
</sec>
<sec id="s2_2_4">
<label>2.2.4</label>
<title>Decentered model predictive control framework</title>
<p>Using the DHA model in Section 2.1 as the system plant, we created a DHA-DMPC framework, which is depicted in <xref ref-type="fig" rid="f2"><bold>Figure&#xa0;2</bold></xref>. There is a local controller on each ship in the liner shipping fleet. The prediction model in the local MPC controller is a hybrid dynamical model built analogously to the DHA model from Section 2.1. We present the prediction model as follows:</p>
<fig id="f2" position="float">
<label>Figure&#xa0;2</label>
<caption>
<p>DHA-DMPC framework.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g002.tif"/>
</fig>
<disp-formula>
<label>(29)</label>
<mml:math display="block" id="M29">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(30)</label>
<mml:math display="block" id="M30">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x225c;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;&#xa0;if&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#xa0;&#xa0;otherwise</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(31)</label>
<mml:math display="block" id="M31">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x225c;</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula>
<label>(32)</label>
<mml:math display="block" id="M32">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>B</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where (29) is analogous to the switched affine system in (1) and (2); <inline-formula>
<mml:math display="inline" id="im157">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im158">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im159">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the corresponding coefficients in mode <italic>M</italic>; the continuous state vector <inline-formula>
<mml:math display="inline" id="im160">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> consists of the ship&#x2019;s position <inline-formula>
<mml:math display="inline" id="im161">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> at instant <inline-formula>
<mml:math display="inline" id="im162">
<mml:mi>k</mml:mi>
</mml:math>
</inline-formula> and handled container quantities <inline-formula>
<mml:math display="inline" id="im163">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> at port <inline-formula>
<mml:math display="inline" id="im164">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>; the control vector <inline-formula>
<mml:math display="inline" id="im165">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> contains the ship&#x2019;s sailing speed <inline-formula>
<mml:math display="inline" id="im166">
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> at instant <italic>k</italic>; and the disturbance vector <inline-formula>
<mml:math display="inline" id="im167">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> contains the port handling efficiency <inline-formula>
<mml:math display="inline" id="im168">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and due quantities of containers to be handled <inline-formula>
<mml:math display="inline" id="im169">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at port <inline-formula>
<mml:math display="inline" id="im170">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>. Formula (30) is analogous to the event generator in (3)-(5); event vector <inline-formula>
<mml:math display="inline" id="im171">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> consists of <inline-formula>
<mml:math display="inline" id="im172">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>x</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship reaches port <inline-formula>
<mml:math display="inline" id="im173">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> and container handling at port <inline-formula>
<mml:math display="inline" id="im174">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula> finishes) and <inline-formula>
<mml:math display="inline" id="im175">
<mml:mrow>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship accomplishes a round-circle voyage); and <inline-formula>
<mml:math display="inline" id="im176">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the condition that triggers various events. Formula (31) is analogous to the mode selector in (6)-(8); the mode vector <inline-formula>
<mml:math display="inline" id="im177">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> contains the sailing, berthing, and reset modes; the binary state vector <inline-formula>
<mml:math display="inline" id="im178">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> consists of <inline-formula>
<mml:math display="inline" id="im179">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship is sailing on leg <inline-formula>
<mml:math display="inline" id="im180">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>) and <inline-formula>
<mml:math display="inline" id="im181">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship is berthing at port <inline-formula>
<mml:math display="inline" id="im182">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>); and <inline-formula>
<mml:math display="inline" id="im183">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the Boolean operation between the binary variables. Formula (32) is analogous to the finite state machine in (9)-(14); furthermore, in addition to those events in (30), event vector <inline-formula>
<mml:math display="inline" id="im184">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> in (32) also consists of <inline-formula>
<mml:math display="inline" id="im185">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship begins to sailing on leg <inline-formula>
<mml:math display="inline" id="im186">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>), <inline-formula>
<mml:math display="inline" id="im187">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship is still sailing on leg <inline-formula>
<mml:math display="inline" id="im188">
<mml:mi>m</mml:mi>
</mml:math>
</inline-formula>), <inline-formula>
<mml:math display="inline" id="im189">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship begins to berth at port <inline-formula>
<mml:math display="inline" id="im190">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>), and <inline-formula>
<mml:math display="inline" id="im191">
<mml:mrow>
<mml:msubsup>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>b</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> (the ship is still berthing at port <inline-formula>
<mml:math display="inline" id="im192">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula>); and <inline-formula>
<mml:math display="inline" id="im193">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>B</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the Boolean function, which consists of logical rules in the FSM module. Unlike the system plant, which includes all the ships in the fleet, the prediction model only considers a single ship; therefore, it involves fewer binary variables compared with the system plant and, thus, its computation capacity is much lower. This decentralized arrangement increases the computing speed of a local controller and enables real-time optimization of the ships&#x2019; speed (<xref ref-type="bibr" rid="B19">Negenborn and Maestre, 2014</xref>; <xref ref-type="bibr" rid="B40">Zheng et&#xa0;al., 2017</xref>; <xref ref-type="bibr" rid="B31">Wang et&#xa0;al., 2020</xref>).</p>
<p>Formula (33) is the optimization model in the DMPC controller, which considers minimizing tracking errors, fuel consumption, and carbon emissions as objectives. <inline-formula>
<mml:math display="inline" id="im194">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im195">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im196">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the weights of the three performance indicators (<inline-formula>
<mml:math display="inline" id="im197">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im198">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>). The control variable is the sailing speed of each ship. We executed (33) using a receding horizon method to compensate for the uncertainties in the disturbances; moreover, binary variables are involved, such as the binary state variables and events in (30)-(32). Therefore, (33) is a mixed integer programming (MIP) problem.</p>
<p>In the receding horizon scheme, the prediction models predict future states in the prediction horizon after observing the current states; then, they calculate the tracking errors, resulting in every local controller computing the MIP optimization problem in (33) to obtain the control sequence in the control horizon. At each step, only the first element of the control sequence is implemented and the rest are ignored. Then, a new control sequence is obtained in the next step. We repeatedly execute this operation to realize online rolling optimization (<xref ref-type="other" rid="algo2"><bold>Algorithm 2</bold></xref>).</p>
<disp-formula>
<label>(33)</label>
<mml:math display="block" id="M33">
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>J</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2016;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2016;</mml:mo>
</mml:msub>
<mml:mi>&#x221e;</mml:mi>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2016;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2016;</mml:mo>
</mml:msub>
<mml:mi>&#x221e;</mml:mi>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2016;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2016;</mml:mo>
</mml:msub>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<p>subject to</p>
<p>for <inline-formula>
<mml:math display="inline" id="im199">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>; <inline-formula>
<mml:math display="inline" id="im200">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x2026;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mtext>,&#xa0;n</mml:mtext>
</mml:mrow>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:</p>
<p>initial states <inline-formula>
<mml:math display="inline" id="im201">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im202">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im203">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im204">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>;</p>
<p>predictive model dynamics (29), (30), (31), (32);</p>
<p>EEXI limitations (22);</p>
<p>
<inline-formula>
<mml:math display="inline" id="im205">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<statement id="algo2">
<label>Algorithm 2 DHA-DMPC simulation.</label>
<p>
<preformat>&#xD;Initialize the system state <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im206">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im207">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im208">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im209">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;<bold>for</bold> each ship <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im210">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula></named-content> do&#xD;    Calculate the attained EEXI <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im211">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;    <bold>if</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im212">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content> do&#xD;       employ EPL for the respect ship&#xD;    <bold>end if</bold>&#xD;    <bold>while</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im213">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content> <bold>do</bold>&#xD;       Get reference trajectory <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im214">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> through <named-content content-type=""><xref ref-type="other" rid="algo1"><bold>Algorithm 1</bold></xref></named-content>&#xD;       Input <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im215">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> as disturbance&#xD;       Measure the current state <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im216">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im217">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> by (1)-(14)&#xD;       Predict the future state <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im218">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im219">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> by (29)-(32)&#xD;       Calculate the tracking error by <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im220">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;       Calculate fuel consumption and carbon emission by (19) and (20)&#xD;       Solve MIP optimization (33), and obtain the recommended speed for the prediction horizon <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im221">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;       Implement the first element in <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im222">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> to (1)&#xD;<bold>    end while</bold>&#xD;<bold>end for</bold>
</preformat>

</p>
</statement>
</sec>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Experiments and results</title>
<sec id="s3_1">
<label>3.1</label>
<title>Numerical experiments design</title>
<p>We carried out a series of comparison studies to confirm the effectiveness of the suggested DHA-DMPC controller. In addition to the reference trajectory generated by <xref ref-type="other" rid="algo1"><bold>Algorithm 1</bold></xref>, we considered another reference trajectory to explore the performance of the controller. We introduce this new reference trajectory in Section 3.1.2. Furthermore, we expanded the EEXI standard into four phases with progressively higher reduction factors. We performed a sensitivity analysis to explore the impact of different carbon policies on liner shipping operations.</p>
<sec id="s3_1_1">
<label>3.1.1</label>
<title>Liner shipping route</title>
<p>Various types of liner shipping routes exist, such as end-to-end, pendulum, and circular services (<xref ref-type="bibr" rid="B20">Notteboom, 2004</xref>). We choose the classical circular service for our case study, which is commonly used in practical liner shipping route design. <xref ref-type="fig" rid="f3"><bold>Figure&#xa0;3A</bold></xref> shows the actual shipping route layout, and <xref ref-type="table" rid="T1"><bold>Table&#xa0;1</bold></xref> displays the route&#x2019;s parameters. The route can be abstracted as a concept of the circular voyage shown in <xref ref-type="fig" rid="f3"><bold>Figure&#xa0;3B</bold></xref>, which means the ship visits a fixed port rotation on a pre-published schedule repeatedly. This route is served by four ships, and we assume that the fleet consists of four sister ships with the same technical conditions. Our calculations and solutions to improve the ships&#x2019; EEXI are shown in Section 3.1.3. All the data on shipping routes and sample ships are provided by CU Lines. The simulation period is the time for the fleet to accomplish two circle voyages, which is 1050 steps. The sampling time is 1h; furthermore, both the prediction and the control horizon are 10 steps. <xref ref-type="table" rid="T2"><bold>Table&#xa0;2</bold></xref> shows the data from customer booking platform containing the due quantities of containers to be handled.</p>
<fig id="f3" position="float">
<label>Figure&#xa0;3</label>
<caption>
<p><bold>(A)</bold> real shipping route; <bold>(B)</bold> concept of circle voyage.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g003.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>Table&#xa0;1</label>
<caption>
<p>Shipping route parameters.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Parameters</th>
<th valign="top" align="left">Value</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Projected fleet speed</td>
<td valign="top" align="left">13.5 kts</td>
</tr>
<tr>
<td valign="top" align="left">Service interval</td>
<td valign="top" align="left">93 h</td>
</tr>
<tr>
<td valign="top" align="left">Number of serving ships</td>
<td valign="top" align="left">4</td>
</tr>
<tr>
<td valign="top" align="left">Distance of leg 1</td>
<td valign="top" align="left">393 nm</td>
</tr>
<tr>
<td valign="top" align="left">Distance of leg 2</td>
<td valign="top" align="left">1147 nm</td>
</tr>
<tr>
<td valign="top" align="left">Distance of leg 3</td>
<td valign="top" align="left">468 nm</td>
</tr>
<tr>
<td valign="top" align="left">Distance of leg 4</td>
<td valign="top" align="left">742 nm</td>
</tr>
<tr>
<td valign="top" align="left">Distance of leg 5</td>
<td valign="top" align="left">927 nm</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T2" position="float">
<label>Table&#xa0;2</label>
<caption>
<p>Container handling numbers at different ports (TEU).</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Ship</th>
<th valign="top" align="center">Port 1</th>
<th valign="top" align="center">Port 2</th>
<th valign="top" align="center">Port 3</th>
<th valign="top" align="center">Port 4</th>
<th valign="top" align="center">Port 5</th>
</tr>
</thead>
<tbody>
<tr>
<th valign="top" colspan="6" align="center">First voyage</th>
</tr>
<tr>
<td valign="top" align="left">Ship 1</td>
<td valign="top" align="left">413</td>
<td valign="top" align="left">1012</td>
<td valign="top" align="left">796</td>
<td valign="top" align="left">1482</td>
<td valign="top" align="left">984</td>
</tr>
<tr>
<td valign="top" align="left">Ship 2</td>
<td valign="top" align="left">399</td>
<td valign="top" align="left">1006</td>
<td valign="top" align="left">802</td>
<td valign="top" align="left">1498</td>
<td valign="top" align="left">1005</td>
</tr>
<tr>
<td valign="top" align="left">Ship 3</td>
<td valign="top" align="left">405</td>
<td valign="top" align="left">1014</td>
<td valign="top" align="left">809</td>
<td valign="top" align="left">1502</td>
<td valign="top" align="left">1018</td>
</tr>
<tr>
<td valign="top" align="left">Ship 4</td>
<td valign="top" align="left">412</td>
<td valign="top" align="left">993</td>
<td valign="top" align="left">812</td>
<td valign="top" align="left">1487</td>
<td valign="top" align="left">1009</td>
</tr>
<tr>
<td valign="top" align="left">Ship 5</td>
<td valign="top" align="left">402</td>
<td valign="top" align="left">1008</td>
<td valign="top" align="left">802</td>
<td valign="top" align="left">1510</td>
<td valign="top" align="left">990</td>
</tr>
<tr>
<th valign="top" colspan="6" align="center">Second voyage</th>
</tr>
<tr>
<td valign="top" align="left">Ship 1</td>
<td valign="top" align="left">395</td>
<td valign="top" align="left">1009</td>
<td valign="top" align="left">803</td>
<td valign="top" align="left">1498</td>
<td valign="top" align="left">1002</td>
</tr>
<tr>
<td valign="top" align="left">Ship 2</td>
<td valign="top" align="left">419</td>
<td valign="top" align="left">998</td>
<td valign="top" align="left">812</td>
<td valign="top" align="left">1503</td>
<td valign="top" align="left">1002</td>
</tr>
<tr>
<td valign="top" align="left">Ship 3</td>
<td valign="top" align="left">398</td>
<td valign="top" align="left">1004</td>
<td valign="top" align="left">810</td>
<td valign="top" align="left">1492</td>
<td valign="top" align="left">998</td>
</tr>
<tr>
<td valign="top" align="left">Ship 4</td>
<td valign="top" align="left">407</td>
<td valign="top" align="left">1003</td>
<td valign="top" align="left">802</td>
<td valign="top" align="left">1507</td>
<td valign="top" align="left">1014</td>
</tr>
<tr>
<td valign="top" align="left">Ship 5</td>
<td valign="top" align="left">400</td>
<td valign="top" align="left">987</td>
<td valign="top" align="left"><bold>811</bold>
</td>
<td valign="top" align="left">1502</td>
<td valign="top" align="left">1004</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>
<xref ref-type="table" rid="T3"><bold>Table&#xa0;3</bold></xref> displays the anticipated port handling efficiency used by shipping lines for tactical planning. The port handling efficiency is not the actual operation rate of the container terminal equipment; instead, it is an average handling efficiency rate, which is obtained by dividing the total number of containers handled by the total time that ships stay at port. However, in practice, port handling efficiency can fluctuate because of unpredictable factors, such as extreme weather, which makes loading and unloading operations difficult; port congestion, which increases the waiting time for ships to berth; or strikes, which result in low handling efficiency. <xref ref-type="fig" rid="f4"><bold>Figure&#xa0;4</bold></xref> shows the actual port handling efficiency during the simulation period, which we input into the optimization model as disturbances.</p>
<table-wrap id="T3" position="float">
<label>Table&#xa0;3</label>
<caption>
<p>Estimated port handling efficiency.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Port</th>
<th valign="top" align="left">Efficiency (TEU/h)</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="left">40</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="left">50</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="left">40</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="left">50</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="left">80</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="f4" position="float">
<label>Figure&#xa0;4</label>
<caption>
<p>Real-time handling efficiency of each port.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g004.tif"/>
</fig>
</sec>
<sec id="s3_1_2">
<label>3.1.2</label>
<title>Reference trajectories</title>
<p>We designed two reference trajectories and compared their performances: (a) Reference 1 ignores the berthing process. We set only <inline-formula>
<mml:math display="inline" id="im223">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> as relay points to calculate the position&#x2013;time coordinates. <xref ref-type="other" rid="algo3"><bold>Algorithm 3</bold></xref> in <xref ref-type="app" rid="app1"><bold>Appendix A</bold></xref> shows the detailed method to generate Reference 1. (b) Reference 2 considers the berthing process and is generated by <xref ref-type="other" rid="algo1"><bold>Algorithm 1</bold></xref>. <xref ref-type="fig" rid="f5"><bold>Figure&#xa0;5</bold></xref> illustrates the two reference trajectories.</p>
<fig id="f5" position="float">
<label>Figure&#xa0;5</label>
<caption>
<p><bold>(A)</bold> Reference 1; <bold>(B)</bold> Reference 2.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g005.tif"/>
</fig>
</sec>
<sec id="s3_1_3">
<label>3.1.3</label>
<title>EEXI improvement of the sample ship</title>
<p>
<xref ref-type="table" rid="T4"><bold>Table&#xa0;4</bold></xref> shows the ship&#x2019;s parameters, which we used to calculate EEXI.</p>
<table-wrap id="T4" position="float">
<label>Table&#xa0;4</label>
<caption>
<p>Parameters for calculating EEXI.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Parameters</th>
<th valign="top" align="center">Description</th>
<th valign="top" align="center">Value</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im224">
<mml:mi>D</mml:mi>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Deadweight</td>
<td valign="top" align="left">24336 DWT</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im225">
<mml:mrow>
<mml:mtext>MCR</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Maximum continuous rate</td>
<td valign="top" align="left">12268 kw</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im226">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">75% of the main engine MCR</td>
<td valign="top" align="left">9201 kW</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im227">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>AE</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Auxiliary engine power</td>
<td valign="top" align="left">304 kW</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im228">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Quantity of main engine</td>
<td valign="top" align="left">1</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im229">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Quantity of auxiliary engine</td>
<td valign="top" align="left">3</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im230">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Quantity of shaft generator</td>
<td valign="top" align="left">0</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im231">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Quantity of energy-saving devices in main engines</td>
<td valign="top" align="left">0</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im232">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Quantity of energy-saving devices in auxiliary engines</td>
<td valign="top" align="left">0</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im233">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Specific fuel consumption of the main engine</td>
<td valign="top" align="left">218.96 g/kW</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im234">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Specific fuel consumption of the auxiliary engine</td>
<td valign="top" align="left">235.4 g/kW</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im235">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>F</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Conversion factor</td>
<td valign="top" align="left">3.206</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im236">
<mml:mi>Z</mml:mi>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Margin</td>
<td valign="top" align="left">5%</td>
</tr>
<tr>
<td valign="top" align="left">
<inline-formula>
<mml:math display="inline" id="im237">
<mml:mi>Y</mml:mi>
</mml:math>
</inline-formula>
</td>
<td valign="top" align="left">Reduction factor</td>
<td valign="top" align="left">20%</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The relationship between main engine power and speed can be described in a power&#x2013;speed curve. The power&#x2013;speed curve should be converted from the service draft to the EEXI draft. <xref ref-type="fig" rid="f6"><bold>Figure&#xa0;6</bold></xref> shows the transferred power&#x2013;speed curve. The calculation equation is as follows:</p>
<fig id="f6" position="float">
<label>Figure&#xa0;6</label>
<caption>
<p>Power&#x2013;speed curve.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g006.tif"/>
</fig>
<disp-formula>
<label>(34)</label>
<mml:math display="block" id="M34">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x394;</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x394;</mml:mi>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>X</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>9</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im238">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the speed at EEXI draft, <inline-formula>
<mml:math display="inline" id="im239">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the speed at service draft, <inline-formula>
<mml:math display="inline" id="im240">
<mml:mrow>
<mml:msub>
<mml:mi>&#x394;</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the displacement at service draft, and <inline-formula>
<mml:math display="inline" id="im241">
<mml:mrow>
<mml:msub>
<mml:mi>&#x394;</mml:mi>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>X</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the displacement at EEXI draft. For container ships, the service draft is the summer draft; furthermore, the EEXI draft is 70% summer draft.</p>
<p>The required EEXI/reference line is based on the below formula:</p>
<disp-formula>
<label>(35)</label>
<mml:math display="block" id="M35">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>a</mml:mi>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im242">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>174.22</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im243">
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0.201</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im244">
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The attained EEXI is 17.50 <inline-formula>
<mml:math display="inline" id="im245">
<mml:mrow>
<mml:mtext>g</mml:mtext>
<mml:mo stretchy="false">/</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext>nm</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula> while the required EEXI with a 5% margin is 17.38 <inline-formula>
<mml:math display="inline" id="im246">
<mml:mrow>
<mml:mtext>g</mml:mtext>
<mml:mo stretchy="false">/</mml:mo>
<mml:mtext>t</mml:mtext>
<mml:mo>&#xb7;</mml:mo>
<mml:mtext>nm</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>; thus, the EPL has to be employed to limit the main engine power. We calculated the MCR after limitations as follows:</p>
<disp-formula>
<label>(36)</label>
<mml:math display="block" id="M36">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">/</mml:mo>
<mml:mn>0.83</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The limited MCR is 10787.9 kW, and the maximum speed under this limited MCR is 18 knots.</p>
</sec>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Comparative experiment results</title>
<p>We created four scenarios to evaluate the controller&#x2019;s effectiveness and assess how the two reference trajectories performed: (a) the ideal scenario, where the port handling efficiency retains the anticipated value throughout the simulation period; (b) the uncontrolled scenario; (c) the controlled scenario with Reference 1; and (d) the controlled scenario with Reference 2. <xref ref-type="fig" rid="f7"><bold>Figure&#xa0;7</bold></xref> shows the ships&#x2019; actual trajectories in the four scenarios, and the raw data are collected in <xref ref-type="app" rid="app2"><bold>Appendix B</bold></xref>. <xref ref-type="fig" rid="f7"><bold>Figure&#xa0;7B</bold></xref> shows that port delays and schedule disruptions are caused by uncertain port handling efficiency when no control actions are implemented. The intervals between the trajectory of ship 4 in its second voyage and that of ship 1 in the first voyage are larger compared to <xref ref-type="fig" rid="f7"><bold>Figure&#xa0;7A</bold></xref>; in the second voyage, the trajectory of ship 3 is quite close to that of ship 4, and a bunching phenomenon (two ships stay at the same port at the same time) nearly happens at port 4. <xref ref-type="fig" rid="f7"><bold>Figures&#xa0;7C, D</bold></xref> show the controlled results. We found that ships&#x2019; trajectories can be adjusted in time when a port delay happens to keep a steady ship delivery frequency.</p>
<fig id="f7" position="float">
<label>Figure&#xa0;7</label>
<caption>
<p><bold>(A)</bold> Ideal trajectory; <bold>(B)</bold> uncontrolled; <bold>(C)</bold> controlled with Reference 1; <bold>(D)</bold> controlled with Reference 2.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g007.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="f8"><bold>Figures&#xa0;8</bold></xref>, <xref ref-type="fig" rid="f9"><bold>9</bold></xref> display the real-time sailing speed throughout each ship&#x2019;s simulation period. The controller can increase the ship&#x2019;s sailing speed with either reference trajectory whenever a delay is detected. We discovered differences between the performances of the two reference trajectories by comparing <xref ref-type="fig" rid="f8"><bold>Figures&#xa0;8</bold></xref>, <xref ref-type="fig" rid="f9"><bold>9</bold></xref>. After the delay is offset by the ship&#x2019;s speed-up strategy, the ship&#x2019;s speed will be reduced and maintained at a level lower than the projected service speed when controlled with Reference 1; however, when controlled with Reference 2, the ship&#x2019;s speed will be turned back to the service speed after the speed-up strategy ceases.</p>
<fig id="f8" position="float">
<label>Figure&#xa0;8</label>
<caption>
<p>Speed of each ship under Reference 1: <bold>(A)</bold> ship 1; <bold>(B)</bold> ship 2; <bold>(C)</bold> ship 3; <bold>(D)</bold> ship 4.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g008.tif"/>
</fig>
<fig id="f9" position="float">
<label>Figure&#xa0;9</label>
<caption>
<p>Speed of each ship under Reference 2: <bold>(A)</bold> ship 1; <bold>(B)</bold> ship 2; <bold>(C)</bold> ship 3; <bold>(D)</bold> ship 4.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g009.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="f10"><bold>Figure&#xa0;10</bold></xref> demonstrates the delays (arrival time deviations) at each port of each ship under various scenarios. <xref ref-type="fig" rid="f10"><bold>Figure&#xa0;10</bold></xref> shows that compared with the uncontrolled scenario, the controller is capable of reducing port delays and maintaining high schedule reliability. When no control measures are taken, port delays cannot be corrected on time and will lead to progressively larger delays in subsequent ports. Take ship 1 as an example: <xref ref-type="fig" rid="f10"><bold>Figures&#xa0;10A, B</bold></xref> demonstrate how port delays worsen over time. On the second voyage, the delay at port 5 reached 77 hours. <xref ref-type="fig" rid="f10"><bold>Figures&#xa0;10G, H</bold></xref> depict the transferability of port delays. On the first voyage, ship 4 experienced a delay of 7 hours at port 4 due to fluctuations in handling efficiency at port 3. Thereafter, despite the normal efficiency of subsequent port operations, there were still 7-hour delays in each port. Instances of such delays will decrease (or even be eliminated) when control measures are taken, thus proving the effectiveness of our proposed DMPC controller.</p>
<fig id="f10" position="float">
<label>Figure&#xa0;10</label>
<caption>
<p>Arrival time deviations under different control methods at each port of: <bold>(A)</bold> ship 1 in the first voyage; <bold>(B)</bold> ship 1 in the second voyage; <bold>(C)</bold> ship 2 in the first voyage; <bold>(D)</bold> ship 2 in the second voyage; <bold>(E)</bold> ship 3 in the first voyage; <bold>(F)</bold> ship 3 in the second voyage; <bold>(G)</bold> ship 4 in the first voyage; <bold>(H)</bold> ship 4 in the second voyage.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g010.tif"/>
</fig>
<p>
<xref ref-type="table" rid="T5"><bold>Table&#xa0;5</bold></xref> shows the total delay time, carbon emissions, and fuel consumption for various scenarios after two complete voyages; furthermore, we calculate the weighted comprehensive costs by the following formula:</p>
<table-wrap id="T5" position="float">
<label>Table&#xa0;5</label>
<caption>
<p>Results under different control methods.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Results</th>
<th valign="top" align="center">Uncontrolled</th>
<th valign="top" align="center">Controlled with Reference 1</th>
<th valign="top" align="center">Controlled with Reference 2</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Total deviation (h)</td>
<td valign="top" align="left">879</td>
<td valign="top" align="left">129</td>
<td valign="top" align="left">72</td>
</tr>
<tr>
<td valign="top" align="left">Carbon emission (t)</td>
<td valign="top" align="left">5506.02</td>
<td valign="top" align="left">7813.94</td>
<td valign="top" align="left">7032.70</td>
</tr>
<tr>
<td valign="top" align="left">Fuel consumption (t)</td>
<td valign="top" align="left">1717.41</td>
<td valign="top" align="left">2437.29</td>
<td valign="top" align="left">2193.61</td>
</tr>
<tr>
<td valign="top" align="left">Weighted cost</td>
<td valign="top" align="left">2.41</td>
<td valign="top" align="left">2.15</td>
<td valign="top" align="left">1.89</td>
</tr>
</tbody>
</table>
</table-wrap>
<disp-formula>
<label>(37)</label>
<mml:math display="block" id="M37">
<mml:mrow>
<mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula>
<mml:math display="inline" id="im247">
<mml:mrow>
<mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the standardized and weighted comprehensive costs under the <inline-formula>
<mml:math display="inline" id="im248">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> scenario; <inline-formula>
<mml:math display="inline" id="im249">
<mml:mrow>
<mml:msubsup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the total schedule deviations under the <inline-formula>
<mml:math display="inline" id="im250">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> scenario; and <inline-formula>
<mml:math display="inline" id="im251">
<mml:mrow>
<mml:msubsup>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math display="inline" id="im252">
<mml:mrow>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the total carbon emissions and fuel consumption under the <inline-formula>
<mml:math display="inline" id="im253">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> scenario, respectively. Our standardization operation divides each indicator by the maximum of all indicators under various scenarios, mapping the values of all indicators to the <inline-formula>
<mml:math display="inline" id="im254">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> interval (<xref ref-type="bibr" rid="B38">Zhen et&#xa0;al., 2023</xref>). The weights of the indicators are <inline-formula>
<mml:math display="inline" id="im255">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula>
<mml:math display="inline" id="im256">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula>
<mml:math display="inline" id="im257">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>
<xref ref-type="table" rid="T5"><bold>Table&#xa0;5</bold></xref> shows that our proposed controller can effectively reduce port delays. The results also demonstrate the superiority of Reference 2 over 1. When the fleet is controlled with Reference 1, the total deviations is 14.68% of the result without control actions, while with Reference 2 the overall deviations only account for 8.20% of that without control. For fuel consumption and carbon emissions, the fleet consumes less fuel and produces fewer emissions due to the lower average speed. When control actions are involved, ships will speed up to the next port to catch the schedule at the cost of higher fuel consumption rates and more carbon emissions. Moreover, Reference 2 is superior to Reference 1 in terms of energy efficiency management. Carbon emissions and fuel consumption in a Reference-1 scenario are 10% less than with Reference 2. Such a result can be explained by the real-time speed displayed in <xref ref-type="fig" rid="f8"><bold>Figures&#xa0;8</bold></xref>, <xref ref-type="fig" rid="f9"><bold>9</bold></xref>. Compared with Reference 1, speed with Reference 2 is smoother. Speed with Reference 1 fluctuates too frequently and sharply, resulting in increased fuel consumption and carbon emissions. Our proposed controller can effectively reduce comprehensive and combined costs. Comprehensive cost under Reference 1 is 10.79% less than that without control, and the combined cost under Reference 2 is 21.58% less, which is twice as much as the former. However, on balance, Reference 2 achieves the best final result.</p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Analysis of different EEXI limitations</title>
<p>We designed further experiments to expand the EEXI standard into four phases and explore the impact of carbon emission policies on liner shipping operations. Each phase adopted stricter regulations than the previous, i.e., the reduction factor increases phase by phase. The reduction factors of the four phases are: 20%, 25, 30%, and 40%. The EEXI margin is 5%. Because we proved the superiority of Reference 2 in Section 3.2, we adopted Reference 2 as the reference trajectory for the DMPC controller. <xref ref-type="table" rid="T6"><bold>Table&#xa0;6</bold></xref> shows EPL solutions applied to the sample ship in different phases.</p>
<table-wrap id="T6" position="float">
<label>Table&#xa0;6</label>
<caption>
<p>Limited MCR under different EEXI margins.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Phase</th>
<th valign="top" align="center">Reduction factor</th>
<th valign="top" align="center">Limited MCR (kW)</th>
<th valign="top" align="center">Attained EEXI (g/<italic>t nm</italic>)</th>
<th valign="top" align="center">Required EEXI (g/<italic>t nm</italic>)</th>
<th valign="top" align="center">Max speed (Kts)</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="left">20%</td>
<td valign="top" align="left">10787.90</td>
<td valign="top" align="left">17.38</td>
<td valign="top" align="left">18.30</td>
<td valign="top" align="left">18</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="left">25%</td>
<td valign="top" align="left">9818.60</td>
<td valign="top" align="left">16.3</td>
<td valign="top" align="left">17.16</td>
<td valign="top" align="left">17</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="left">30%</td>
<td valign="top" align="left">8937.35</td>
<td valign="top" align="left">15.2</td>
<td valign="top" align="left">16.01</td>
<td valign="top" align="left">15.5</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="left">40%</td>
<td valign="top" align="left">6967.83</td>
<td valign="top" align="left">13.04</td>
<td valign="top" align="left">13.73</td>
<td valign="top" align="left">14</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>
<xref ref-type="fig" rid="f11"><bold>Figure&#xa0;11</bold></xref> and <xref ref-type="table" rid="T7"><bold>Table&#xa0;7</bold></xref> show our sensitive analysis results. Port delay statistics (<xref ref-type="fig" rid="f11"><bold>Figure&#xa0;11</bold></xref>) show that a stricter EEXI standard produces higher schedule deviations. In Phase 4, due to the main engine&#x2019;s excessive power limitations, the upper-speed limit drastically reduced&#x2014;the maximum speed is only 14 knots, which is only 0.5 knots higher than the projected service speed. The speed-up method&#x2019;s potency in reducing schedule delays is greatly diminished; therefore, the port delays cannot be dealt with effectively. <xref ref-type="fig" rid="f11"><bold>Figure&#xa0;11</bold></xref> shows that the transferability of port delays happened again in Phase 4, indicating that a speed-up strategy failed in eliminating port delays. <xref ref-type="table" rid="T7"><bold>Table&#xa0;7</bold></xref> shows performance indicators with progressive emission limits in each phase. The maximum speed a ship can reach is gradually reduced, with carbon emissions and fuel consumption decreasing due to the overall reduction in sailing speed, eventually leading to higher overall costs due to the expansion of delays. In Phase 2, there is a small increase in port delays; however, overall carbon emissions and fuel consumption are reduced, making the overall cost comparable to Phase 1. Despite this, the comprehensive costs of Phase 3 and 4 are considerably increased due to excessive delays.</p>
<fig id="f11" position="float">
<label>Figure&#xa0;11</label>
<caption>
<p>Arrival time deviations in different phases at each port of <bold>(A)</bold> ship 1 in the first voyage; <bold>(B)</bold> ship 1 in the second voyage; <bold>(C)</bold> ship 2 in the first voyage; <bold>(D)</bold> ship 2 in the second voyage; <bold>(E)</bold> ship 3 in the first voyage; <bold>(F)</bold> ship 3 in the second voyage; <bold>(G)</bold> ship 4 in the first voyage; <bold>(H)</bold> ship 4 in the second voyage.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fmars-10-1095283-g011.tif"/>
</fig>
<table-wrap id="T7" position="float">
<label>Table&#xa0;7</label>
<caption>
<p>Results in different phases.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Results</th>
<th valign="top" align="center">Phase 1</th>
<th valign="top" align="center">Phase 2</th>
<th valign="top" align="center">Phase 3</th>
<th valign="top" align="center">Phase 4</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Total deviation (h)</td>
<td valign="top" align="left">72</td>
<td valign="top" align="left">90</td>
<td valign="top" align="left">227</td>
<td valign="top" align="left">755</td>
</tr>
<tr>
<td valign="top" align="left">Carbon emission (t)</td>
<td valign="top" align="left">7032.70</td>
<td valign="top" align="left">6968.98</td>
<td valign="top" align="left">6653.24</td>
<td valign="top" align="left">5851.27</td>
</tr>
<tr>
<td valign="top" align="left">Fuel consumption (t)</td>
<td valign="top" align="left">2193.61</td>
<td valign="top" align="left">2173.73</td>
<td valign="top" align="left">2075.25</td>
<td valign="top" align="left">1825.10</td>
</tr>
<tr>
<td valign="top" align="left">Weighted cost</td>
<td valign="top" align="left">1.89</td>
<td valign="top" align="left">1.89</td>
<td valign="top" align="left">1.96</td>
<td valign="top" align="left">2.37</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4" sec-type="discussions|conclusions">
<label>4</label>
<title>Discussions and conclusions</title>
<p>In our paper, we investigated how liner shipping lines can maintain schedule reliability while reducing carbon emissions and fuel consumption through real-time speed optimization under the uncertainty of port handling efficiency and the need to meet EEXI standards. Firstly, we established a DHA model to describe the hybrid dynamic characteristics of the liner shipping system. Then, we constructed a prediction model using the DMPC framework by analogy with the previously established DHA model. Next, we designed a DMPC controller based on the receding horizon optimization method. In the DMPC framework, the schedule is converted into tractable position&#x2013;time coordinates; furthermore, we considered minimizing tracking errors, carbon emissions, and fuel consumption as optimization objectives, and converted the EEXI specification into constraints by using the EPL solution. We adjusted the ships&#x2019; speeds by an online rolling optimization method to compensate for the impact caused by uncertain port handling efficiency. Our experiments verify the effectiveness of our proposed DHA-DMPC controller. Our sensibility analysis revealed that the rolling optimization method considerably reduces fleet port delays; however, these improvements come at the expense of consuming more fuel and emitting more carbon emissions. Therefore, the liner company must maximize the overall benefits by weighing the relationship between schedule reliability and energy efficiency.</p>
<p>Finally, we present our conclusions from analyzing our experimental results regarding decision making for liner shipping lines:</p>
<p>(a) Liner shipping operations are vulnerable to operational uncertainties in ports, and it is impossible to accurately predict port handling efficiency. As a result, the service speed determined in tactical planning often loses its optimality during operations. When a port delay occurs, if the ship continues to sail at the service speed, the delay will be worsened because of a lack of timely adjustment measures. This will eventually not only reduce the service level of the shipping company but also disrupt the supply chain by affecting the coordination of ships and MCT operators. Therefore, real-time ship speed management is essential. The real-time adjustment of vessel speeds enables robust fleet operation, allowing management to cope with unexpected external conditions and maintain high service levels while effectively controlling overall fleet fuel consumption and carbon emissions;</p>
<p>(b) <xref ref-type="table" rid="T6"><bold>Table&#xa0;6</bold></xref> shows the main engine power limitations of the sample ship for various EEXI phases, and we can infer that under strict emission regulations, the fleet&#x2019;s technology performance will be constrained, reducing the maximum speeds that the ships can reach. The ability to improve schedule reliability and energy efficiency by adjusting operation speeds will be considerably constrained if the maximum speed of the ship is further restricted. Liner shipping lines may consider adding more ships to the route or improving the fleet&#x2019;s technical efficiency to maintain a steady schedule;</p>
<p>(c) <xref ref-type="table" rid="T7"><bold>Table&#xa0;7</bold></xref> reveals that maintaining high schedule reliability by taking control actions will finally lead to more fuel consumption and carbon emissions. Liner shipping lines should balance the trade-off between ships&#x2019; fuel consumption, carbon emissions, and schedule reliability by implementing appropriate speed-reduction strategies. Another recommendation is to use sustainable energy so that the ship can significantly reduce its emissions while traveling at the same speed. As a result, the shipping lines can maintain a steady and competitive schedule while traveling faster and emitting less carbon dioxide.</p>
</sec>
<sec id="s5" sec-type="data-availability">
<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="s6" sec-type="author-contributions">
<title>Author contributions</title>
<p>JZ and QZ contributed to conception and design of the study. JZ organized the database. CM performed the statistical analysis. JZ and CM wrote the first draft of the manuscript. JZ, CM, and QZ wrote sections of the manuscript. All authors contributed to the article and approved the submitted version.</p>
</sec>
</body>
<back>
<sec id="s7" sec-type="funding-information">
<title>Funding</title>
<p>The research is supported by the International Cooperation Project (21160710800) of Shanghai Science and Technology Committee.</p>
</sec>
<sec id="s8" sec-type="COI-statement">
<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>
</sec>
<sec id="s9" sec-type="disclaimer">
<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="book">
<person-group person-group-type="author">
<collab>ABS</collab>
</person-group> (<year>2021</year>). <source>EEXI - how can you prepare now?</source> (<publisher-loc>USA</publisher-loc>: <publisher-name>ABS</publisher-name>).</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>An</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Lo</surname> <given-names>H. K.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Two-phase stochastic program for transit network design under demand uncertainty</article-title>. <source>Transport. Res. Part B: Methodol.</source> <volume>84</volume>, <fpage>157</fpage>&#x2013;<lpage>181</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.trb.2015.12.009</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Aydin</surname> <given-names>N.</given-names>
</name>
<name>
<surname>Lee</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Mansouri</surname> <given-names>S. A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Speed optimization and bunkering in liner shipping in the presence of uncertain service times and time windows at ports</article-title>. <source>Eur. J. Operational Res.</source> <volume>259</volume> (<issue>1</issue>), <fpage>143</fpage>&#x2013;<lpage>154</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.ejor.2016.10.002</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bemporad</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Morari</surname> <given-names>M.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Control of systems integrating logic, dynamics, and constraints</article-title>. <source>Automatica</source> <volume>35</volume> (<issue>3</issue>), <fpage>407</fpage>&#x2013;<lpage>427</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/S0005-1098(98)00178-2</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brouer</surname> <given-names>B. D.</given-names>
</name>
<name>
<surname>Karsten</surname> <given-names>C. V.</given-names>
</name>
<name>
<surname>Pisinger</surname> <given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Optimization in liner shipping</article-title>. <source>4OR</source> <volume>15</volume> (<issue>1</issue>), <fpage>1</fpage>&#x2013;<lpage>35</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1007/s10288-017-0342-6</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Ye</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Fei</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Wan</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Huang</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Robust optimization of liner shipping alliance fleet scheduling with consideration of sulfur emission restrictions and slot exchange</article-title>. <source>Ann. Operations Res.</source>, <fpage>1</fpage>&#x2013;<lpage>31</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1007/s10479-022-04590-x</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dunn</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Theriault</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Hickmott</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Claridge</surname> <given-names>D.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Slower ship speed in the Bahamas due to COVID-19 produces a dramatic reduction in ocean sound levels</article-title>. <source>Front. Mar. Sci.</source> <volume>8</volume>, <elocation-id>673565</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3389/fmars.2021.673565</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fagerholt</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Laporte</surname> <given-names>G.</given-names>
</name>
<name>
<surname>Norstad</surname> <given-names>I.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Reducing fuel emissions by optimizing speed on shipping routes</article-title>. <source>J. Operational Res. Soc.</source> <volume>61</volume> (<issue>3</issue>), <fpage>523</fpage>&#x2013;<lpage>529</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1057/jors.2009.77</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guericke</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Tierney</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Liner shipping cargo allocation with service levels and speed optimization</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>84</volume>, <fpage>40</fpage>&#x2013;<lpage>60</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2015.10.002</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huotari</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Manderbacka</surname> <given-names>T.</given-names>
</name>
<name>
<surname>Ritari</surname> <given-names>A.</given-names>
</name>
<name>
<surname>Tammi</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Convex optimisation model for ship speed profile: Optimisation under fixed schedule</article-title>. <source>J. Mar. Sci. Eng.</source> <volume>9</volume> (<issue>7</issue>), <elocation-id>730</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3390/jmse9070730</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<person-group person-group-type="author">
<collab>IMO</collab>
</person-group> (<year>2022</year>). &#x201c;<article-title>Resolution MEPC.350(78)</article-title>,&#x201d; in <source>2022 guidelines on the method of calculation of the attained energy efficiency existing ship index (EEXI)</source> (<publisher-loc>London</publisher-loc>: <publisher-name>IMO</publisher-name>).</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jimenez</surname> <given-names>V. J.</given-names>
</name>
<name>
<surname>Kim</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Munim</surname> <given-names>Z. H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A review of ship energy efficiency research and directions towards emission reduction in the maritime industry</article-title>. <source>J. Clean. Prod.</source> <volume>366</volume>, <fpage>132888</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.jclepro.2022.132888</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Karsten</surname> <given-names>C. V.</given-names>
</name>
<name>
<surname>Brouer</surname> <given-names>B. D.</given-names>
</name>
<name>
<surname>Pisinger</surname> <given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Competitive liner shipping network design</article-title>. <source>Comput. Operations Res.</source> <volume>87</volume>, <fpage>125</fpage>&#x2013;<lpage>136</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.cor.2017.05.018</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Leaper</surname> <given-names>R.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>The role of slower vessel speeds in reducing greenhouse gas emissions, underwater noise and collision risk to whales</article-title>. <source>Front. Mar. Sci.</source> <volume>6</volume>, <elocation-id>505</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.3389/fmars.2019.00505</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lee</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Aydin</surname> <given-names>N.</given-names>
</name>
<name>
<surname>Choi</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Lekhavat</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Irani</surname> <given-names>Z.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A decision support system for vessel speed decision in maritime logistics using weather archive big data</article-title>. <source>Comput. Operations Res.</source> <volume>98</volume>, <fpage>330</fpage>&#x2013;<lpage>342</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.cor.2017.06.005</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Sun</surname> <given-names>B.</given-names>
</name>
<name>
<surname>Zhao</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Shen</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Du</surname> <given-names>W.</given-names>
</name>
<etal/>
</person-group>. (<year>2018</year>). <article-title>Model of speed optimization of oil tanker with irregular winds and waves for given route</article-title>. <source>Ocean Eng.</source> <volume>164</volume>, <fpage>628</fpage>&#x2013;<lpage>639</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.oceaneng.2018.07.009</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chu</surname> <given-names>F.</given-names>
</name>
<name>
<surname>Zhu</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Zheng</surname> <given-names>F.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Liner ship bunkering and sailing speed planning with uncertain demand</article-title>. <source>Comput. Appl. Math.</source> <volume>39</volume> (<issue>1</issue>), <fpage>1</fpage>&#x2013;<lpage>23</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1007/s40314-019-0994-2</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Meng</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Andersson</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Thun</surname> <given-names>K.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Containership routing and scheduling in liner shipping: overview and future research directions</article-title>. <source>Transport. Sci.</source> <volume>48</volume> (<issue>2</issue>), <fpage>265</fpage>&#x2013;<lpage>280</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1287/trsc.2013.0461</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Negenborn</surname> <given-names>R. R.</given-names>
</name>
<name>
<surname>Maestre</surname> <given-names>J. M.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Distributed model predictive control: An overview and roadmap of future research opportunities</article-title>. <source>IEEE Control Syst. Mag.</source> <volume>34</volume> (<issue>4</issue>), <fpage>87</fpage>&#x2013;<lpage>97</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1109/MCS.2014.2320397</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Notteboom</surname> <given-names>T. E.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>A carrier's perspective on container network configuration at sea and on land</article-title>. <source>J. Int. logistics trade</source> <volume>1</volume> (<issue>2</issue>), <fpage>65</fpage>&#x2013;<lpage>87</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.24006/jilt.2004.1.2.65</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Notteboom</surname> <given-names>T. E.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>The time factor in liner shipping services</article-title>. <source>Maritime Econ Logistics</source> <volume>8</volume> (<issue>1</issue>), <fpage>19</fpage>&#x2013;<lpage>39</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1057/palgrave.mel.9100148</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pasha</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Dulebenets</surname> <given-names>M. A.</given-names>
</name>
<name>
<surname>Fathollahi-Fard</surname> <given-names>A. M.</given-names>
</name>
<name>
<surname>Tian</surname> <given-names>G.</given-names>
</name>
<name>
<surname>Lau</surname> <given-names>Y. Y.</given-names>
</name>
<name>
<surname>Singh</surname> <given-names>P.</given-names>
</name>
<etal/>
</person-group>. (<year>2021</year>). <article-title>An integrated optimization method for tactical-level planning in liner shipping with heterogeneous ship fleet and environmental considerations</article-title>. <source>Adv. Eng. Inf.</source> <volume>48</volume>, <elocation-id>101299</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.aei.2021.101299</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Perera</surname> <given-names>L. P.</given-names>
</name>
<name>
<surname>Mo</surname> <given-names>B.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Emission control based energy efficiency measures in ship operations</article-title>. <source>Appl. Ocean Res.</source> <volume>60</volume>, <fpage>29</fpage>&#x2013;<lpage>46</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.apor.2016.08.006</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Psaraftis</surname> <given-names>H. N.</given-names>
</name>
<name>
<surname>Kontovas</surname> <given-names>C. A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Ship speed optimization: Concepts, models and combined speed-routing scenarios</article-title>. <source>Transport. Res. Part C: Emerging Technol.</source> <volume>44</volume>, <fpage>52</fpage>&#x2013;<lpage>69</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.trc.2014.03.001</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qi</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Song</surname> <given-names>D. P.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Minimizing fuel emissions by optimizing vessel schedules in liner shipping with uncertain port times</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>48</volume> (<issue>4</issue>), <fpage>863</fpage>&#x2013;<lpage>880</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2012.02.001</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sheng</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chew</surname> <given-names>E. P.</given-names>
</name>
<name>
<surname>Lee</surname> <given-names>L. H.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>(s, s) policy model for liner shipping refueling and sailing speed optimization problem</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>76</volume>, <fpage>76</fpage>&#x2013;<lpage>92</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2014.12.001</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sirmatel</surname> <given-names>I. I.</given-names>
</name>
<name>
<surname>Geroliminis</surname> <given-names>N.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Mixed logical dynamical modeling and hybrid model predictive control of public transport operations</article-title>. <source>Transport. Res. Part B: Methodol.</source> <volume>114</volume>, <fpage>325</fpage>&#x2013;<lpage>345</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.trb.2018.06.009</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tan</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Meng</surname> <given-names>Q.</given-names>
</name>
<name>
<surname>Liu</surname> <given-names>Z.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Joint ship schedule design and sailing speed optimization for a single inland shipping service with uncertain dam transit time</article-title>. <source>Transport. Sci.</source> <volume>52</volume> (<issue>6</issue>), <fpage>1570</fpage>&#x2013;<lpage>1588</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1287/trsc.2017.0808</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tao</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Lin</surname> <given-names>C.</given-names>
</name>
<name>
<surname>Lai</surname> <given-names>X.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>A bi-objective optimization for integrated truck operation and storage allocation considering traffic congestion in container terminals</article-title>. <source>Ocean Coast. Manage.</source> <volume>232</volume>, <elocation-id>106417</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.ocecoaman.2022.106417</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tzortzis</surname> <given-names>G.</given-names>
</name>
<name>
<surname>Sakalis</surname> <given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A dynamic ship speed optimization method with time horizon segmentation</article-title>. <source>Ocean Eng.</source> <volume>226</volume>, <elocation-id>108840</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.oceaneng.2021.108840</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Huang</surname> <given-names>L.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Yuan</surname> <given-names>Y.</given-names>
</name>
<etal/>
</person-group>. (<year>2020</year>). <article-title>A novel bi-level distributed dynamic optimization method of ship fleets energy consumption</article-title>. <source>Ocean Eng.</source> <volume>197</volume>, <elocation-id>106802</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.oceaneng.2019.106802</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Meng</surname> <given-names>Q.</given-names>
</name>
</person-group> (<year>2012</year>a). <article-title>Robust schedule design for liner shipping services</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>48</volume> (<issue>6</issue>), <fpage>1093</fpage>&#x2013;<lpage>1106</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2012.04.007</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname> <given-names>S.</given-names>
</name>
<name>
<surname>Meng</surname> <given-names>Q.</given-names>
</name>
</person-group> (<year>2012</year>b). <article-title>Sailing speed optimization for container ships in a liner shipping network</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>48</volume> (<issue>3</issue>), <fpage>701</fpage>&#x2013;<lpage>714</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2011.12.003</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Yuan</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Lin</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Negenborn</surname> <given-names>R. R.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Dynamic optimization of ship energy efficiency considering time-varying environmental factors</article-title>. <source>Transport. Res. Part D: Transport Environ.</source> <volume>62</volume>, <fpage>685</fpage>&#x2013;<lpage>698</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.trd.2018.04.005</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname> <given-names>K.</given-names>
</name>
<name>
<surname>Yan</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Yuan</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Jiang</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Lodewijks</surname> <given-names>G.</given-names>
</name>
<name>
<surname>Negenborn</surname> <given-names>R.R.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Study on route division for ship energy efficiency optimization based on big environment data</article-title>. In <source>Proceedings of the 4th International Conference on Transportation Information and Safety (ICTIS)</source> (<publisher-loc>Banff, AB, Canada</publisher-loc>), <fpage>111</fpage>-<lpage>116</lpage>. doi: <pub-id pub-id-type="doi">10.1109/ICTIS.2017.8047752</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wen</surname> <given-names>M.</given-names>
</name>
<name>
<surname>Pacino</surname> <given-names>D.</given-names>
</name>
<name>
<surname>Kontovas</surname> <given-names>C. A.</given-names>
</name>
<name>
<surname>Psaraftis</surname> <given-names>H. N.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A multiple ship routing and speed optimization problem under time, cost and environmental objectives</article-title>. <source>Transport. Res. Part D: Transport Environ.</source> <volume>52</volume>, <fpage>303</fpage>&#x2013;<lpage>321</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.trd.2017.03.009</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xia</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Li</surname> <given-names>K. X.</given-names>
</name>
<name>
<surname>Ma</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Xu</surname> <given-names>Z.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Joint planning of fleet deployment, speed optimization, and cargo allocation for liner shipping</article-title>. <source>Transport. Sci.</source> <volume>49</volume> (<issue>4</issue>), <fpage>922</fpage>&#x2013;<lpage>938</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1287/trsc.2015.0625</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhen</surname> <given-names>R.</given-names>
</name>
<name>
<surname>Lv</surname> <given-names>P.</given-names>
</name>
<name>
<surname>Shi</surname> <given-names>Z.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>G.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>A novel fuzzy multi-factor navigational risk assessment method for ship route optimization in costal offshore wind farm waters</article-title>. <source>Ocean Coast. Manage.</source> <volume>232</volume>, <elocation-id>106428</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.ocecoaman.2022.106428</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zheng</surname> <given-names>J.</given-names>
</name>
<name>
<surname>Ma</surname> <given-names>Y.</given-names>
</name>
<name>
<surname>Ji</surname> <given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname> <given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Is the weekly service frequency constraint tight when optimizing ship speeds and fleet size for a liner shipping service</article-title>? <source>Ocean Coast. Manage.</source> <volume>212</volume>, <elocation-id>105815</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.ocecoaman.2021.105815</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zheng</surname> <given-names>H.</given-names>
</name>
<name>
<surname>Negenborn</surname> <given-names>R. R.</given-names>
</name>
<name>
<surname>Lodewijks</surname> <given-names>G.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Closed-loop scheduling and control of waterborne AGVs for energy-efficient inter terminal transport</article-title>. <source>Transport. Res. Part E: Logistics Transport. Rev.</source> <volume>105</volume>, <fpage>261</fpage>&#x2013;<lpage>278</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.tre.2016.07.010</pub-id>
</citation>
</ref>
</ref-list>
<app-group>
<app id="app1">
<title>Appendix A. Algorithm 3</title>
<statement id="algo3">
<label>Algorithm 3 reference trajectory generator ignoring berthing process.</label>
<p>
<preformat><bold>Input:</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im258">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im259">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im260">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>H</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im261">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;Initialize <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im262">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im263">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im264">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;set <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im265">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im266">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;<bold>while</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im267">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>do&#xD;   <bold>for</bold> each <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im268">
<mml:mi>w</mml:mi>
</mml:math>
</inline-formula></named-content> <bold>do</bold>&#xD;     <bold>for</bold> each <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im269">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula></named-content> <bold>do</bold>&#xD;       calculate <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im270">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> and <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im271">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content> based on <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im272">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im273">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>h</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im274">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>H</mml:mi>
<mml:mo>^</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im275">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;     <bold>end for</bold>&#xD;   <bold>end for</bold>&#xD;   <bold>for</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im276">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula></named-content><bold>if</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im277">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>, <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im278">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula></named-content> <bold>then</bold>&#xD;       <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im279">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;   <bold>else</bold>&#xD;       <bold>for</bold> each <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im280">
<mml:mi>j</mml:mi>
</mml:math>
</inline-formula></named-content>&#xD;          <bold>if</bold> <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im281">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;             <named-content content-type="inline-equation"><inline-formula>
<mml:math display="inline" id="im282">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mi>w</mml:mi>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula></named-content>&#xD;          <bold>end if</bold>&#xD;<bold>        end for</bold>&#xD;<bold>     end if</bold>&#xD;<bold>   end for</bold>&#xD;<bold>end while</bold>
</preformat>

</p>
</statement>
</app>
<app id="app2">
<title>Appendix B. Experiment results</title>
<table-wrap id="T8" position="float">
<label>Table&#xa0;8</label>
<caption>
<p>ETA/ETD in the ideal situation.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Port
</th>
<th valign="top" align="center">Ship 1
</th>
<th valign="top" align="center">Ship 2
</th>
<th valign="top" align="center">Ship 3
</th>
<th valign="top" align="center">Ship 4
</th>
</tr>
</thead>
<tbody>
<tr>
<th valign="top" colspan="5" align="center">ETA/ETD (h) of the first voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">0/11</td>
<td valign="top" align="center">93/104</td>
<td valign="top" align="center">186/197</td>
<td valign="top" align="center">279/290</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">42/63</td>
<td valign="top" align="center">135/156</td>
<td valign="top" align="center">228/249</td>
<td valign="top" align="center">321/342</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">148/169</td>
<td valign="top" align="center">241/262</td>
<td valign="top" align="center">334/355</td>
<td valign="top" align="center">427/448</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">203/234</td>
<td valign="top" align="center">296/327</td>
<td valign="top" align="center">389/420</td>
<td valign="top" align="center">482/513</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">289/303</td>
<td valign="top" align="center">382/396</td>
<td valign="top" align="center">475/489</td>
<td valign="top" align="center">568/582</td>
</tr>
<tr>
<th valign="top" colspan="5" align="center">ETA/ETD (h) of the second voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">372/383</td>
<td valign="top" align="center">465/476</td>
<td valign="top" align="center">558/569</td>
<td valign="top" align="center">651/662</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">414/435</td>
<td valign="top" align="center">507/528</td>
<td valign="top" align="center">600/621</td>
<td valign="top" align="center">693/714</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">520/541</td>
<td valign="top" align="center">613/634</td>
<td valign="top" align="center">706/727</td>
<td valign="top" align="center">799/820</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">575/606</td>
<td valign="top" align="center">668/699</td>
<td valign="top" align="center">761/792</td>
<td valign="top" align="center">854/885</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">661/675</td>
<td valign="top" align="center">754/768</td>
<td valign="top" align="center">847/861</td>
<td valign="top" align="center">940/954</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T9" position="float">
<label>Table&#xa0;9</label>
<caption>
<p>ATA/ATD (Actual time of arrival/departure) in an uncontrolled scenario.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Port
</th>
<th valign="top" align="center">Ship 1
</th>
<th valign="top" align="center">Ship 2
</th>
<th valign="top" align="center">Ship 3
</th>
<th valign="top" align="center">Ship 4
</th>
</tr>
</thead>
<tbody>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the first voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">0/11</td>
<td valign="top" align="center">93/114</td>
<td valign="top" align="center">186/197</td>
<td valign="top" align="center">279/290</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">42/83</td>
<td valign="top" align="center">145/171</td>
<td valign="top" align="center">228/249</td>
<td valign="top" align="center">321/342</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">168/196</td>
<td valign="top" align="center">256/277</td>
<td valign="top" align="center">334/376</td>
<td valign="top" align="center">427/455</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">230/260</td>
<td valign="top" align="center">311/262</td>
<td valign="top" align="center">409/448</td>
<td valign="top" align="center">489/520</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">316/330</td>
<td valign="top" align="center">417/431</td>
<td valign="top" align="center">503/517</td>
<td valign="top" align="center">575/589</td>
</tr>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the second voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">399/420</td>
<td valign="top" align="center">500/511</td>
<td valign="top" align="center">586/601</td>
<td valign="top" align="center">658/669</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">451/492</td>
<td valign="top" align="center">542/563</td>
<td valign="top" align="center">632/653</td>
<td valign="top" align="center">670/721</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">577/598</td>
<td valign="top" align="center">648/676</td>
<td valign="top" align="center">738/766</td>
<td valign="top" align="center">806/827</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">632/683</td>
<td valign="top" align="center">711/762</td>
<td valign="top" align="center">800/839</td>
<td valign="top" align="center">861/882</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">738/752</td>
<td valign="top" align="center">816/830</td>
<td valign="top" align="center">894/908</td>
<td valign="top" align="center">947/961</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T10" position="float">
<label>Table&#xa0;10</label>
<caption>
<p>ATA/ATD in the scenario under reference 1.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Port
</th>
<th valign="top" align="center">Ship 1
</th>
<th valign="top" align="center">Ship 2
</th>
<th valign="top" align="center">Ship 3
</th>
<th valign="top" align="center">Ship 4
</th>
</tr>
</thead>
<tbody>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the first voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">0/11</td>
<td valign="top" align="center">93/114</td>
<td valign="top" align="center">186/197</td>
<td valign="top" align="center">279/300</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">42/83</td>
<td valign="top" align="center">144/170</td>
<td valign="top" align="center">228/249</td>
<td valign="top" align="center">321/342</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">148/176</td>
<td valign="top" align="center">241/262</td>
<td valign="top" align="center">345/387</td>
<td valign="top" align="center">427/455</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">203/234</td>
<td valign="top" align="center">299/350</td>
<td valign="top" align="center">413/452</td>
<td valign="top" align="center">482/513</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">289/303</td>
<td valign="top" align="center">396/410</td>
<td valign="top" align="center">493/507</td>
<td valign="top" align="center">568/582</td>
</tr>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the second voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">372/393</td>
<td valign="top" align="center">465/476</td>
<td valign="top" align="center">558/573</td>
<td valign="top" align="center">651/662</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">419/460</td>
<td valign="top" align="center">507/528</td>
<td valign="top" align="center">600/621</td>
<td valign="top" align="center">693/714</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">522/543</td>
<td valign="top" align="center">614/641</td>
<td valign="top" align="center">707/735</td>
<td valign="top" align="center">799/820</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">578/628</td>
<td valign="top" align="center">671/722</td>
<td valign="top" align="center">762/801</td>
<td valign="top" align="center">854/885</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">675/689</td>
<td valign="top" align="center">768/782</td>
<td valign="top" align="center">847/861</td>
<td valign="top" align="center">941/954</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T11" position="float">
<label>Table&#xa0;11</label>
<caption>
<p>ATA/ATD in the scenario under reference 2.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Port
</th>
<th valign="top" align="center">Ship 1
</th>
<th valign="top" align="center">Ship 2
</th>
<th valign="top" align="center">Ship 3
</th>
<th valign="top" align="center">Ship 4
</th>
</tr>
</thead>
<tbody>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the first voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">0/11</td>
<td valign="top" align="center">93/114</td>
<td valign="top" align="center">186/197</td>
<td valign="top" align="center">279/300</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">42/83</td>
<td valign="top" align="center">138/164</td>
<td valign="top" align="center">228/249</td>
<td valign="top" align="center">321/342</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">148/176</td>
<td valign="top" align="center">241/262</td>
<td valign="top" align="center">334/376</td>
<td valign="top" align="center">427/455</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">203/234</td>
<td valign="top" align="center">297/349</td>
<td valign="top" align="center">403/442</td>
<td valign="top" align="center">482/513</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">289/303</td>
<td valign="top" align="center">391/405</td>
<td valign="top" align="center">484/498</td>
<td valign="top" align="center">568/582</td>
</tr>
<tr>
<th valign="top" colspan="5" align="center">ATA/ATD (h) of the second voyage</th>
</tr>
<tr>
<td valign="top" align="left">Port 1</td>
<td valign="top" align="center">372/393</td>
<td valign="top" align="center">465/476</td>
<td valign="top" align="center">558/573</td>
<td valign="top" align="center">651/662</td>
</tr>
<tr>
<td valign="top" align="left">Port 2</td>
<td valign="top" align="center">417/458</td>
<td valign="top" align="center">507/528</td>
<td valign="top" align="center">600/621</td>
<td valign="top" align="center">693/714</td>
</tr>
<tr>
<td valign="top" align="left">Port 3</td>
<td valign="top" align="center">522/543</td>
<td valign="top" align="center">613/641</td>
<td valign="top" align="center">707/735</td>
<td valign="top" align="center">799/820</td>
</tr>
<tr>
<td valign="top" align="left">Port 4</td>
<td valign="top" align="center">576/628</td>
<td valign="top" align="center">669/720</td>
<td valign="top" align="center">762/801</td>
<td valign="top" align="center">854/885</td>
</tr>
<tr>
<td valign="top" align="left">Port 5</td>
<td valign="top" align="center">670/684</td>
<td valign="top" align="center">763/777</td>
<td valign="top" align="center">848/862</td>
<td valign="top" align="center">940/954</td>
</tr>
</tbody>
</table>
</table-wrap>
</app>
</app-group>
</back>
</article>
