<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurorobot.</journal-id>
<journal-title>Frontiers in Neurorobotics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurorobot.</abbrev-journal-title>
<issn pub-type="epub">1662-5218</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnbot.2022.1076455</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A mutation operator self-adaptive differential evolution particle swarm optimization algorithm for USV navigation</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Gong</surname> <given-names>Yuehong</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2057093/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Shaojun</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Luo</surname> <given-names>Min</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Ma</surname> <given-names>Sainan</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>School of Navigation and Shipping, Shandong Jiaotong University</institution>, <addr-line>Weihai</addr-line>, <country>China</country></aff>
<aff id="aff2"><sup>2</sup><institution>School of Information Science and Engineering, Harbin Institute of Technology at Weihai</institution>, <addr-line>Weihai</addr-line>, <country>China</country></aff>
<aff id="aff3"><sup>3</sup><institution>Zhejiang Jialan Ocean Electronics Co., Ltd.</institution>, <addr-line>Zhoushan</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Namkyun I. M., Mokpo National Maritime University, South Korea</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Tianrui Zhou, Shanghai Maritime University, China; Zhihui Hu, Jimei University, China</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Yuehong Gong <email>gongyuehonghit&#x00040;126.com</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>06</day>
<month>12</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>16</volume>
<elocation-id>1076455</elocation-id>
<history>
<date date-type="received">
<day>21</day>
<month>10</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>17</day>
<month>11</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2022 Gong, Zhang, Luo and Ma.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Gong, Zhang, Luo and Ma</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>To keep the global search capability and robustness for unmanned surface vessel (USV) path planning, an improved differential evolution particle swarm optimization algorithm (DePSO) is proposed in this paper. In the optimization process, approach to optimal value in particle swarm optimization algorithm (PSO) and mutation, hybridization, selection operation in differential evolution algorithm (DE) are combined, and the mutation factor is self-adjusted. First, the particle population is initialized and the optimization objective is determined, the individual and global optimal values are updated. Then differential variation is conducted to produces new variables and cross over with the current individual, the scaling factor is adjusted adaptively with the number of iterations in the mutation process, particle population is updated according to the hybridization results. Finally, the convergence of the algorithm is determined according to the decision standard. Numerical simulation results show that, compared with conventional PSO and DE, the proposed algorithm can effectively reduce the path intersection points, and thus greatly shorten the overall path length.</p></abstract>
<kwd-group>
<kwd>differential evolution algorithm</kwd>
<kwd>hybridization</kwd>
<kwd>mutation</kwd>
<kwd>particle swarm optimization</kwd>
<kwd>unmanned surface vessel path planning</kwd>
<kwd>scaling factor</kwd>
</kwd-group>
<contract-num rid="cn001">12075142</contract-num>
<contract-num rid="cn001">61671174</contract-num>
<contract-num rid="cn001">62002207</contract-num>
<contract-num rid="cn001">U2106202</contract-num>
<contract-num rid="cn002">ZR2020MA102</contract-num>
<contract-sponsor id="cn001">National Natural Science Foundation of China<named-content content-type="fundref-id">10.13039/501100001809</named-content></contract-sponsor>
<contract-sponsor id="cn002">Natural Science Foundation of Shandong Province<named-content content-type="fundref-id">10.13039/501100007129</named-content></contract-sponsor>
<counts>
<fig-count count="8"/>
<table-count count="7"/>
<equation-count count="15"/>
<ref-count count="20"/>
<page-count count="11"/>
<word-count count="5440"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>With the increasing demands of marine monitoring and exploration, the unmanned surface vessel (USV) becomes widely used in water area environmental inspection. The main research direction in the application of the USV is flight path planning. The purpose of path planning is to obtain a scientific, safe, and concise path in a specific environment. As the USV navigation environment deteriorates, the problems needed to be solved in USV path planning are becoming harsher, and the amount of calculation is also increasing, so the path planning problem gets trickier. In recent years, many studies has have been done for USV flight path planning and swarm intelligence algorithm has been popularly used, including particle swarm optimization (PSO) (Xin et al., <xref ref-type="bibr" rid="B14">2019</xref>; Krell et al., <xref ref-type="bibr" rid="B4">2022</xref>), artificial fish swarm algorithm (Zhao et al., <xref ref-type="bibr" rid="B19">2022</xref>), ant colony algorithm (Wang et al., <xref ref-type="bibr" rid="B10">2022</xref>), genetic algorithm (GA) (Park et al., <xref ref-type="bibr" rid="B7">2021</xref>), and etc. Among these intelligent algorithms, particle swarm optimization is the most widely used in the field of automatic control because of its simple principle, fewer parameters, fast optimization speed, small amount of calculation and other advantages (Khayati et al., <xref ref-type="bibr" rid="B3">2019</xref>). At present, the application of particle swarm optimization algorithm in robot path planning is very active (Chen and Sun, <xref ref-type="bibr" rid="B2">2021</xref>; Wu et al., <xref ref-type="bibr" rid="B12">2022</xref>; Xiao et al., <xref ref-type="bibr" rid="B13">2022</xref>), but the research on USV flight path planning is still a frontier field. In practical application, due to the irregular, complex and uncertain USV navigation environment, the algorithm is easy to fall into local extreme values, resulting in poor quality of generated paths, waste of time and resources. Therefore, improving the global search ability and robustness of the algorithm becomes a key content in USV flight path planning. The most popular use of PSO for global path planning is genetic particle swarm optimization (GaPSO), which combines the advantages of the genetic algorithm (GA) and the particle swarm optimization algorithm. In Pehlivanoglu (<xref ref-type="bibr" rid="B8">2012</xref>), an improved PSO for robot path planning is presented. In Zhang and Xing (<xref ref-type="bibr" rid="B18">2019</xref>), GA is combined with the voronoi diagram to generate the optimal path for autonomous unmanned aerial vehicles (UAVs). The applying of GaPSO can reduce the probability of falling into local optimal solutions, however, the global search capability needs to be enhanced. Differential evolution algorithm (DE) has been used in many fields such as intelligent machines, robots, equipments and so on Yang et al. (<xref ref-type="bibr" rid="B15">2011</xref>) and Yildiz (<xref ref-type="bibr" rid="B17">2013</xref>). Because of its strong global searching ability and high robustness, DE can be used to solve multiobjective, constrained and complex optimization problems.</p>
<p>Compared with genetic algorithms, the global exploration ability of DE is more obvious. However, the accuracy of the optimal solution and convergence speed are affected by the parameter settings and the mutation operations. To get a compromise between the optimal solution accuracy and optimization speed, many studies have been done on the values of the control parameters, including the population size <italic>NP</italic>, the crossover probability <italic>CR</italic>, and the scaling factor <italic>F</italic>. It is well known that the size of the population increases, the probability of finding the optimal solution is higher, however the amount of calculation and computation time may also increase. The value of <italic>F</italic> has a great influence on the speed of optimization. For a larger <italic>F</italic> value, the population is more abundant, but the amount of calculation is larger and the computation time is longer. With a smaller <italic>F</italic>, the optimal solution can be found faster, but the diversity of the population can&#x00027;t be guaranteed, so the algorithm will easily fall into a local optimum value. To obtain appropriate parameters, a lot of studies have been done. In Yildiz (<xref ref-type="bibr" rid="B17">2013</xref>), the authors pointed out that <italic>F</italic> should be set to 0.5. In Li et al. (<xref ref-type="bibr" rid="B6">2019</xref>), the authors suggested that <italic>F</italic> should between [0.4, 0.95]. The values of these parameters are difficult to select to obtain a better performance.</p>
<p>In order to get a better flight path with fast optimization speed and less computation, this paper proposed a discrete particle swarm optimization algorithm with differential evolution algorithm (DeDSO) for USV flight path planning. This algorithm combines the advantages of the conventional particle swarm optimization algorithm and the differential evolution algorithm, so as to enhance the global search ability and improve the path planning efficiency and stability. In order to ensure both high search speed and high precision solution, the scaling factor <italic>F</italic> in DE is self-adaptive with the iteration.</p>
<p>The remainder of this paper is organized as follows. Section 2 gives the mathematical model of USV automatic inspection problem. Section 3 introduces the working principle of conventional PSO, DE, and the improved DePSO. Section 4 gives the framework and implementation procedure of the DePSO. Section 5 describes the numerical simulation results and comparison. Finally, section 6 gives a short conclusion.</p>
</sec>
<sec id="s2">
<title>2. Mathematical model of USV automatic inspection problem</title>
<p>Flight path planning is a global optimization problem aims to search the optimal flight path for USVs. When USV is applied in water environment inspection, it is necessary to generate a sailing path. The path planning process of the USV is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. Firstly, a feasible global path is drawn according to the regional map information by identifying the surrounding environment and the status information of the USVs. Then the ship navigates according to the specified path. During the navigation, the sensors monitor the surrounding environment, and the local path planning is used to avoid obstacles, and then the ship continues to travel according to the original path.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>USV path planning process diagram.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0001.tif"/>
</fig>
<p>The problem to be solved in this paper is to plan a global path for USVs applied in water area automatic inspection. In a certain water area, several sampling points are spread, which will be automatically inspected and sampled by the USVs. The purpose of flight path planning is to generate a route between the starting point and the destination, which ensures that all sampling points are inspected only once except the starting point, and the path formed should meet specific optimization objectives, which is equivalent to the traveling salesman problem (TSP) (Laporte, <xref ref-type="bibr" rid="B5">2010</xref>; Zheng et al., <xref ref-type="bibr" rid="B20">2022</xref>). The TSP model has been mainly used for single vehicle operating situations as described in this paper, and the main idea is to search the optimal path to visit all sampling points.</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo class="qopname">min</mml:mo><mml:mi>f</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:munderover></mml:mstyle><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The objective function is the key point of an optimization problem. In our design, the optimization objective is demonstrated as function <italic>f</italic>, and the mathematical model corresponding to <italic>n</italic> sampling points is defined as Equation (1). Where D(<italic>i</italic>, <italic>i</italic> &#x0002B; 1) respects the distance between sampling point &#x0201C;<italic>i</italic>&#x0201D; and sampling point &#x0201C;<italic>i</italic> &#x0002B; 1.&#x0201D; In this paper, the USV sampling problem is corresponding to symmetry TSP problem, which satisfies D(<italic>i</italic>, <italic>j</italic>) = D(<italic>j</italic>, <italic>i</italic>), where <italic>i</italic>, <italic>j</italic> &#x02208; (1, 2, &#x02026;, <italic>n</italic>).</p>
</sec>
<sec id="s3">
<title>3. Improved particle swarm optimization model</title>
<sec>
<title>3.1. Particle swarm optimization algorithm</title>
<p>In particle swarm optimization, the updating of population tends to be closer to the optimal value. The optimization process of PSO is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>. Particles adjust their speed and direction of motion according to their own historical optimal value <italic>P</italic><sub>best</sub> and global optimal value <italic>G</italic><sub>best</sub>, and measure the merits of particles by optimizing the fitness value determined by the target, so as to drive the particles to the optimal value (Wu et al., <xref ref-type="bibr" rid="B11">2017</xref>; Rauf et al., <xref ref-type="bibr" rid="B9">2020</xref>).</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>The optimization process of PSO.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0002.tif"/>
</fig>
<p>The next generation particle position <italic>X</italic><sub>id</sub>(<italic>t</italic>&#x0002B;1) and velocity <italic>V</italic><sub>id</sub>(<italic>t</italic>) are calculated through Equations (2) and (3) respectively. In which, <italic>X</italic><sub>id</sub>(<italic>t</italic>) is the <italic>t</italic>th generation particle position; &#x003C9; is the inertia weight, which determines the optimization speed of the algorithm; <italic>c</italic><sub>1</sub> and <italic>c</italic><sub>2</sub> decide the speed for the particle approaching <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>pest</sub> respectively; <italic>R</italic><sub>1</sub> and <italic>R</italic><sub>2</sub> are random numbers, and their values range from 0 to 1; In this paper, the fitness represents the length of the USV navigation route, the calculation formula is (4), in which (<italic>x</italic><sub>i</sub>, <italic>y</italic><sub>i</sub>) are the coordinates of the <italic>i</italic> th and the <italic>i</italic>&#x0002B;1 th sampling point, respectively. The pseudo code of PSO is presented in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Algorithm I: Conventional PSO.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Conventional particle swarm optimization</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1.&#x000A0;&#x000A0;&#x000A0;Set fitness function <italic>f</italic>, set population size <italic>N</italic>, acceleration coefficients</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>c</italic><sub>1</sub>, <italic>c</italic><sub>2</sub>, <italic>R</italic><sub>1</sub>, <italic>R</italic><sub>2</sub>, inertia weight &#x003C9;, and maximum iteration number <italic>T</italic><sub>max</sub></td>
</tr>
<tr>
<td valign="top" align="left">2.&#x000A0;&#x000A0;&#x000A0;Generate the initial population</td>
</tr>
<tr>
<td valign="top" align="left">3.&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>t</italic> from 1 to <italic>T</italic><sub>max</sub> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">4. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>i</italic> from 1 to N <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">5. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Initialize velocity and position</td>
</tr>
<tr>
<td valign="top" align="left">6. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Evaluate initial fitness value</td>
</tr>
<tr>
<td valign="top" align="left">7. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Record initial <italic>P</italic><sub>pest</sub> and <italic>G</italic><sub>pest</sub></td>
</tr>
<tr>
<td valign="top" align="left">8. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
<tr>
<td valign="top" align="left">9. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh velocity and position from Equations (1) and (2)</td>
</tr>
<tr>
<td valign="top" align="left">10. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh the fitness of each particle</td>
</tr>
<tr>
<td valign="top" align="left">11. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <italic>P</italic><sub>pest</sub> and <italic>G</italic><sub>pest</sub></td>
</tr>
<tr>
<td valign="top" align="left">12. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>If</bold> <italic>t</italic> =<italic>T</italic><sub>max</sub> or minimum error criteria is achieved <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">13. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Output the particle with best fitness value</td>
</tr>
<tr>
<td valign="top" align="left">14. &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end if</bold></td>
</tr>
<tr>
<td valign="top" align="left">15.&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E3"><mml:math id="M3"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>&#x003C9;</mml:mi><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x000A0;</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E4"><label>(3)</label><mml:math id="M4"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mi>e</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E5"><label>(4)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:munderover></mml:mstyle><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
</sec>
<sec>
<title>3.2. Differential evolution algorithm</title>
<p>Differential evolution algorithm is a bionic intelligent calculation method which simulates the natural evolutionary law to find the global optimal value. The optimization process of DE is shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The main body of the algorithm generally includes three steps: mutation, crossover and selection (Yi et al., <xref ref-type="bibr" rid="B16">2016</xref>; Bilal et al., <xref ref-type="bibr" rid="B1">2020</xref>). The pseudo code of DE is presented in <xref ref-type="table" rid="T2">Table 2</xref>. Three different individual vectors are randomly selected to get a difference vector, denoted as <italic>X</italic><sub>r1</sub>, <italic>X</italic><sub>r2</sub>, and <italic>X</italic><sub>r3</sub>, and the mutation vector <italic>V</italic><sub>i</sub> was calculated according to Equation (5). The scaling factor <italic>F</italic> is set to control the influence of difference vector (<italic>X</italic><sub>r2</sub>-<italic>X</italic><sub>r3</sub>) on the evolution speed, and the value of <italic>F</italic> is generally between [0,1].</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>The optimization process of DE.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0003.tif"/>
</fig>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Algorithm II: Conventional DE.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Conventional differential evolution algorithm</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Set fitness function, population size <italic>PN</italic>, scaling factor <italic>F</italic>, and cross-</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;over probability <italic>CR</italic></td>
</tr>
<tr>
<td valign="top" align="left">2.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Generate the initial population</td>
</tr>
<tr>
<td valign="top" align="left">3.&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>t</italic> from 1 to <italic>T</italic><sub>max</sub> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">4.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>i</italic> from 1 to <italic>NP</italic> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">5.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Mutation: select <italic>X</italic><sub>r1</sub>, <italic>X</italic><sub>r2</sub> and <italic>X</italic><sub>r3</sub> randomly</td>
</tr>
<tr>
<td valign="top" align="left">6.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Create the mutation vector <italic>V</italic><sub>i</sub> from Equation (5)</td>
</tr>
<tr>
<td valign="top" align="left">7.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Crossover: the crossover operation is executed between a</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;parent individual and mutation vector from Equation (6)</td>
</tr>
<tr>
<td valign="top" align="left">8.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Selection from Equation (7)</td>
</tr>
<tr>
<td valign="top" align="left">9.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh fitness value</td>
</tr>
<tr>
<td valign="top" align="left">10.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
<tr>
<td valign="top" align="left">11.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>If</bold> <italic>t</italic> =<italic>T</italic><sub>max</sub> or minimum error criteria is achieved <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">12.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Output the particle with best fitness value</td>
</tr>
<tr>
<td valign="top" align="left">13.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end if</bold></td>
</tr>
<tr>
<td valign="top" align="left">14.&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<disp-formula id="E6"><label>(5)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>F</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The function of crossover operation is to hybridize the current individuals of the population with the mutation vector generated by the mutation, and generate new individuals randomly according to a certain probability, as shown in Equation (6). <italic>CR</italic> is the crossover probability, which determines the size of the hybridization probability, and its value is a real constant between [0,1].</p>
<disp-formula id="E7"><label>(6)</label><mml:math id="M7"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>d</mml:mi><mml:mtext>(</mml:mtext><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mi>C</mml:mi><mml:mi>R</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>or&#x000A0;j</mml:mtext><mml:mo>=</mml:mo><mml:mtext>j&#x000A0;and</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>X</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>e</mml:mi><mml:mi>l</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>The selection operation is based on the individual optimization objective to select one of the next generation individuals between the new vector generated by the crossover and the current vector. If the individual optimization objective of the new vector is better than the current vector, the new vector will be retained. Otherwise, the current vector individual will be inherited to the next generation. The selection formula is shown in Equation (7). In which, <italic>X</italic><sub>i</sub>(<italic>t</italic>) is the particle position before the <italic>t</italic> th iteration, <italic>U</italic><sub>i</sub>(<italic>t</italic>) is the new particle position after the differential evolution mutation operation of the <italic>t</italic> th iteration. <italic>X</italic><sub>i</sub>(<italic>t</italic> &#x0002B; 1) is the particle position after the <italic>t</italic> th iteration. <italic>f</italic>(<italic>X</italic><sub>i</sub>(<italic>t</italic>)) is the fitness value for particle position <italic>X</italic><sub>i</sub>(<italic>t</italic>), <italic>f</italic>(<italic>U</italic><sub>i</sub>(<italic>t</italic>)) is the fitness value for particle position <italic>U</italic><sub>i</sub>(<italic>t</italic>).</p>
<disp-formula id="E8"><label>(7)</label><mml:math id="M8"><mml:mrow><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x0003C;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>X</mml:mi><mml:mtext>i</mml:mtext></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x02265;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>X</mml:mi><mml:mtext>i</mml:mtext></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
</sec>
<sec>
<title>3.3. Differential evolution particle swarm optimization</title>
<p>In the process of population updating, the DePSO iterates from the formula of the particle swarm optimization algorithm to get a new generation of individuals, and then hybridizes them from the formula of the differential evolution algorithm. The object of hybridization is the individual optimal value <italic>P</italic><sub>best</sub> and the global optimal value <italic>G</italic><sub>best</sub>, the selection formula after crossing is shown in Equations (8) and (9).</p>
<p>In order to find a better balance between optimal solution accuracy and convergence speed, the zoom factor <italic>F</italic> is adjusted adaptively with the number of iterations. The improved formula is demonstrated in Equation (10), in which <italic>F</italic><sub>max</sub> and <italic>F</italic><sub>min</sub> are the maximum and minimum values of the zoom factor, <italic>T</italic><sub>max</sub> is the maximum number of iterations, and <italic>t</italic> is the current number of iterations.</p>
<disp-formula id="E9"><label>(8)</label><mml:math id="M9"><mml:mrow><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x0003C;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mtext>best</mml:mtext></mml:mrow></mml:msub><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x02265;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mtext>best</mml:mtext></mml:mrow></mml:msub><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="E10"><label>(9)</label><mml:math id="M10"><mml:mrow><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x0003C;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>G</mml:mi><mml:mrow><mml:mtext>best</mml:mtext></mml:mrow></mml:msub><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mtext>(t))</mml:mtext><mml:mo>&#x02265;</mml:mo><mml:mi>f</mml:mi><mml:mtext>(</mml:mtext><mml:msub><mml:mi>G</mml:mi><mml:mrow><mml:mtext>best</mml:mtext></mml:mrow></mml:msub><mml:mtext>)</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="E11"><label>(10)</label><mml:math id="M11"><mml:mrow><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mrow><mml:mi>max</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mrow><mml:mi>min</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:mfrac><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>max</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>max</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:math></disp-formula>
</sec>
</sec>
<sec id="s4">
<title>4. USV path planning problem</title>
<sec>
<title>4.1. PSO applying in TSP problems</title>
<p>In the TSP issue corresponding to automatic inspection and sampling of unmanned pollution detection vessel, a huge number of paths will be generated during flight path planning, and the number of paths will increase factorially with the number of sampling points. A path is equivalent to a particle in PSO, the position of the particle is represented by the path sequence composed of the distribution of sampling points, and the velocity of the particle is represented by the commutator. The calculation process of optimization is realized by exchanging the position of sampling points.</p>
<p><bold>Exchange operator</bold>: for two path sequences <italic>X</italic><sub>i</sub> = (<italic>X</italic><sub>i1</sub>, <italic>X</italic><sub>i2</sub>, &#x02026;, <italic>X</italic><sub>n</sub>) and <italic>X</italic><sub>j</sub> = (<italic>X</italic><sub>j1</sub>, <italic>X</italic><sub>j2</sub>, &#x02026;, <italic>X</italic><sub>jn</sub>), if the two sequences have different value at the same position, that is <italic>X</italic><sub>ia</sub> &#x02260; <italic>X</italic><sub>ja</sub>, thus <italic>V</italic><sub>ij</sub> = (<italic>X</italic><sub>ia</sub>, <italic>X</italic><sub>ja</sub>) is called the exchange operator for the path sequence, as shown in <xref ref-type="fig" rid="F4">Figure 4A</xref>.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p><bold>(A)</bold> Exchange operator. <bold>(B)</bold> Addition of position and velocity.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0004.tif"/>
</fig>
<p><bold>Exchange sequence</bold>: a sequence composed by the exchange operators, such as <italic>V</italic>= (<italic>V</italic><sub>1</sub>,<italic>V</italic><sub>2</sub>&#x02026;,<italic>V</italic><sub>n</sub>), in which <italic>n</italic> is the number of locations corresponding to two cities with the same sequence but different values.</p>
<p><bold>Position of the particle</bold>: the position of the particle is determined by the sequence of cities <italic>X</italic>= (<italic>X</italic><sub>1</sub>, <italic>X</italic><sub>2</sub>&#x02026;, <italic>X</italic><sub>m</sub>), in which <italic>m</italic> is the number of the cities.</p>
<p><bold>Velocity of the particle</bold>: the velocity of the particles is given by the exchange sequence <italic>V</italic>= (<italic>V</italic><sub>1a</sub>, <italic>V</italic><sub>2b</sub>&#x02026;, <italic>V</italic><sub>mn</sub>), in which <italic>V</italic><sub>mn</sub> is the exchange operator.</p>
<p><bold>Addition of position and velocity</bold>: in TSP, we form a new path sequence by the addition of position and velocity to the parent individual, as shown in Equation (11). On the basis of the original path sequence, the new path sequence is obtained by exchanging the city position according to the exchange operator, as shown in <xref ref-type="fig" rid="F4">Figure 4B</xref>.</p>
<disp-formula id="E12"><mml:math id="M12"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>X</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">i</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">j</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">n</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:msub><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">i</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">j</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">i</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">j</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x000A0;</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E13"><label>(11)</label><mml:math id="M13"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">j</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">i</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">n</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><bold>Subtraction between positions</bold>: the subtraction from a position to another position forms an exchange sequence that generates a new velocity. To form <italic>V</italic><sub>ij</sub> &#x0003D; <italic>X</italic><sub>i</sub> &#x02212; <italic>X</italic><sub>j</sub>, where <italic>X</italic><sub>i</sub> and <italic>X</italic><sub>j</sub> are the number of the cities. First we find the city in the 2th sequence which is the same to the 1st element in the 1st sequence, and form an exchange operator <italic>V</italic>(1,i). Then conduct this exchange operator to the first sequence and get a new 1st sequence. Later, find the first position in the 2st sequence with the same element in the new 1st sequence, and get an exchange operator <italic>V</italic>(2,i), this course will continue sequentially until the exchange sequence of two city sequences is obtained, as is shown in Equation (12).</p>
<disp-formula id="E14"><label>(12)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtext>&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>4</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>5</mml:mn><mml:mo>,</mml:mo><mml:mn>7</mml:mn><mml:mo>,</mml:mo><mml:mn>8</mml:mn><mml:mo>,</mml:mo><mml:mn>9</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>4</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>5</mml:mn><mml:mo>,</mml:mo><mml:mn>7</mml:mn><mml:mo>,</mml:mo><mml:mn>8</mml:mn><mml:mo>,</mml:mo><mml:mn>9</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mi>V</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>5</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>4</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>5</mml:mn><mml:mo>,</mml:mo><mml:mn>6</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><bold>Scalar multiplication of velocity</bold>: the scalar multiplication of velocity has a probabilistic meaning. For example, when <italic>V</italic><sub>im</sub>=c<italic>V</italic><sub>ja</sub>, the selection formula is shown in (13), in which <italic>c</italic> is a constant. During the calculation course, a random number rand is generated for each operator of <italic>V</italic><sub>ja</sub>, compare <italic>c</italic> and rand, the value of <italic>V</italic><sub>im</sub> is determined by the comparison result.</p>
<disp-formula id="E15"><label>(13)</label><mml:math id="M15"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mtext>im</mml:mtext></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mtext>ja</mml:mtext></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x000A0;r&#x000A0;and</mml:mtext><mml:mo>&#x0003C;</mml:mo><mml:mtext>c</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>0,&#x000A0;else</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
</sec>
<sec>
<title>4.2. DePSO applied in USV path planning</title>
<p>The improved differential evolution particle swarm optimization algorithm is applied to the automatic inspection sampling path planning process of USV. The initial particles are chosen randomly from the possible paths generated at the beginning, and the optimal path is found by the approach of optimal value of DePSO. In the updating and iteration process of each generation of particle population, the idea PSO and DE are combined. The specific implementation steps of the algorithm are shown in <xref ref-type="fig" rid="F5">Figure 5</xref>, and the pseudo code is presented in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<list list-type="simple">
<list-item><p>Step 1: Modeling the environment according to the map model and the distribution of sampling points.</p></list-item>
<list-item><p>Step 2: Randomly select a certain number of path sequences as the initial particle population, and set the parameter values used in the algorithm.</p></list-item>
<list-item><p>Step 3: Refresh the population and calculate the fitness value of the particles;</p></list-item>
<list-item><p>Step 4: Find the individual optimal path <italic>P</italic><sub>best</sub> and the population optimal path <italic>G</italic><sub>best</sub>;</p></list-item>
<list-item><p>Step 5: Generate mutation vector according to mutation formula of differential evolution algorithm, and cross with <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub>, respectively to get new path sequence. The fitness of the newly generated path sequence is calculated and compared with the fitness of <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub>, respectively. If the path becomes shorter, the new particle position is retained, otherwise it is discarded. Update <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub> while retaining the position of the new particle.</p></list-item>
<list-item><p>Step 6: Judge whether the optimal decision is reached; There are two judgment conditions: First, the minimum error criteria of fitness reaches the set accuracy; Second, reach the maximum number of iterations. If the one of the judgment conditions is met, the optimization ends. Otherwise, go back to the second step and the iteration continues.</p></list-item>
</list>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>The optimization process of DePSO.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0005.tif"/>
</fig>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Algorithm III: DePSO.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Improved particle swarm optimization</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1.&#x000A0;&#x000A0;&#x000A0;Set fitness function, population size <italic>NP</italic>, acceleration coefficients</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>c</italic><sub>1</sub>, <italic>c</italic><sub>2</sub> and inertia weight &#x003C9;. Set scaling factor <italic>F</italic><sub>max</sub>, <italic>F</italic><sub>min</sub>, and</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;crossover probability <italic>CR</italic></td>
</tr>
<tr>
<td valign="top" align="left">2.&#x000A0;&#x000A0;&#x000A0;Generate the initial population</td>
</tr>
<tr>
<td valign="top" align="left">3.&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>t</italic> from 1 to <italic>T</italic><sub>max</sub> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">4.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>i</italic> from 1 to <italic>NP</italic> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">5.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Evaluate initial fitness value</td>
</tr>
<tr>
<td valign="top" align="left">6.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
<tr>
<td valign="top" align="left">7.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Record initial <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub></td>
</tr>
<tr>
<td valign="top" align="left">8.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>i</italic> from 1 to <italic>NP</italic> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">9.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh the velocity and position from Equations (1) and (2)</td>
</tr>
<tr>
<td valign="top" align="left">10.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh fitness value</td>
</tr>
<tr>
<td valign="top" align="left">11.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub></td>
</tr>
<tr>
<td valign="top" align="left">12.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
<tr>
<td valign="top" align="left">13.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>For</bold> <italic>P</italic><sub>best</sub> and <italic>G</italic><sub>best</sub> <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">14.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Mutation: select <italic>X</italic><sub>r1</sub>, <italic>X</italic><sub>r2</sub> and <italic>X</italic><sub>r3</sub> randomly</td>
</tr>
<tr>
<td valign="top" align="left">15.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Create the mutation vector <italic>V</italic><sub>i</sub> from Equation (5)</td>
</tr>
<tr>
<td valign="top" align="left">16.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Crossover: the crossover operation is executed between</td>
</tr>
<tr>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>P</italic><sub>best</sub> or <italic>G</italic><sub>best</sub> and mutation vector from Eq. 6</td>
</tr>
<tr>
<td valign="top" align="left">17.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Selection from Equations (8) or (9)</td>
</tr>
<tr>
<td valign="top" align="left">18.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Refresh fitness value</td>
</tr>
<tr>
<td valign="top" align="left">19.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
<tr>
<td valign="top" align="left">20.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>If</bold> <italic>t</italic> =<italic>T</italic><sub>max</sub> or minimum error criteria is achieved <bold>do</bold></td>
</tr>
<tr>
<td valign="top" align="left">21.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Output the particle with best fitness value</td>
</tr>
<tr>
<td valign="top" align="left">22.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end if</bold></td>
</tr>
<tr>
<td valign="top" align="left">23.&#x000A0;&#x000A0;&#x000A0;<bold>end</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s5">
<title>5. Numerical simulation results and analysis</title>
<p>In order to verify the flight path planning effect of the improved DePSO for USV, numerically simulation is done to imitation the path planning process. The hardware platform and software environment applied in this experiment is demonstrated in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<table-wrap position="float" id="T4">
<label>Table 4</label>
<caption><p>Experimental hardware and software environment.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Project</bold></th>
<th valign="top" align="left"><bold>Environmental set</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">CPU</td>
<td valign="top" align="left">Intelcore (TM) i7-10510U</td>
</tr>
<tr>
<td valign="top" align="left">Graphics Card</td>
<td valign="top" align="left">Intel UHD Graphics</td>
</tr>
<tr>
<td valign="top" align="left">Memory</td>
<td valign="top" align="left">16G</td>
</tr>
<tr>
<td valign="top" align="left">Operational System</td>
<td valign="top" align="left">Windows 10</td>
</tr>
<tr>
<td valign="top" align="left">Software Version</td>
<td valign="top" align="left">Matlab 2016R</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In this paper, a 500 &#x000D7; 500 m sea environment shown in <xref ref-type="fig" rid="F6">Figure 6</xref> is chosen as the inspection map model. The simulation environment is set to be ideal. Assuming there are no obstacles in the sea area. The USV is set as a particle without considering the factors such as its volume and position. The environmental factors such as wind and waves are also not considered. Firstly, the USV navigation environment is modeled according to the water environment map and the sampling points distribution. Secondly the improved particle swarm optimization algorithm is applied for global path planning. For comparison, the path planning process of PSO, DE and DePSO were simulated, respectively. The coordinate settings of the 30 sampling points is shown in <xref ref-type="fig" rid="F7">Figure 7A</xref>. The particle population size was selected as 200. The parameter <italic>c</italic><sub>1</sub> and <italic>c</italic><sub>2</sub> are set to 1, and the inertia weight &#x003C9; is set to 1. For conventional DE, CR and the zoom factor <italic>F</italic> are set to 1. For DePSO, the maximum value of zoom factor <italic>F</italic><sub>max</sub> is set to 1 and the minimum value <italic>F</italic><sub>min</sub> is set to 0. <xref ref-type="fig" rid="F7">Figures 7B&#x02013;D</xref> give the comparison of the final results of route planning with conventional PSO, conventional DE, and DePSO, respectively, under the same map environment with 30 sampling points. <xref ref-type="fig" rid="F7">Figure 7E</xref> gives the path length iterative process comparison for the three methods.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>The sea environment map.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0006.tif"/>
</fig>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Path planning results for 30 sampling points: <bold>(A)</bold> Distribution of 30 sampling points. <bold>(B)</bold> Path planning result with conventional PSO. <bold>(C)</bold> Path planning result with conventional DE. <bold>(D)</bold> Path planning result with DePSO. <bold>(E)</bold> Path length iterative process comparison.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0007.tif"/>
</fig>
<p>The coordinate settings of the 50 sampling points is shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>. <xref ref-type="fig" rid="F8">Figures 8B&#x02013;D</xref> demonstrate the comparison of the path planning results applying conventional PSO, conventional DE, and DePSO, respectively, under the same map environment with 50 sampling points, and <xref ref-type="fig" rid="F8">Figure 8E</xref> gives the path length iterative process comparison.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Path planning results for 50 sampling points: <bold>(A)</bold> Distribution of 50 sampling points. <bold>(B)</bold> Path planning result with conventional PSO. <bold>(C)</bold> Path planning result with conventional DE. <bold>(D)</bold> Path planning result with DePSO. <bold>(E)</bold> Path length iterative process comparison.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1076455-g0008.tif"/>
</fig>
<p>As the number of sampling points increases, the number of iterations needed to find the optimal path will also increase gradually. In <xref ref-type="fig" rid="F7">Figure 7</xref>, the maximum number of iterations is 1,000. In <xref ref-type="fig" rid="F8">Figure 8</xref>, the maximum number of iterations is 3,000.</p>
<p>As can be seen from the figures, compared with the conventional PSO and DE, by applying the proposed DePSO, the number of overlaps of the final paths is significantly reduced and the total path length is significantly shortened. Because of the combination of the two algorithms, the computation amount for an iteration is increased, so that the computation time is slightly increased. But this increasing time is negligible when comparing with speed enhancement brought by the algorithm improvement.</p>
<p><xref ref-type="table" rid="T5">Table 5</xref> lists the path planning results applying conventional PSO, conventional DE, and DePSO proposed in this paper when the sampling points are 20, 30, 40, 50, and 60, respectively. For each algorithm, 5 times of simulation are done, among which the best, average and worst path length are listed. Applying the conventional PSO and DE algorithms, there are many crossings in the path and the total length of the path lengths are long. Applying the DePSO proposed in this paper, the path complexity is greatly reduced and the path lengths are significantly shorter.</p>
<table-wrap position="float" id="T5">
<label>Table 5</label>
<caption><p>Comparison of path lengths with PSO, DE, and DePSO.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Number of sample points</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Conventional PSO</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Conventional DE</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>DePSO</bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">20</td>
<td valign="top" align="center">2,021</td>
<td valign="top" align="center">2126.4</td>
<td valign="top" align="center">2,215</td>
<td valign="top" align="center">2,413</td>
<td valign="top" align="center">2531.8</td>
<td valign="top" align="center">2,628</td>
<td valign="top" align="center">1,874</td>
<td valign="top" align="center">1911.6</td>
<td valign="top" align="center">1,939</td>
</tr>
<tr>
<td valign="top" align="left">30</td>
<td valign="top" align="center">2,769</td>
<td valign="top" align="center">2879.4</td>
<td valign="top" align="center">2,978</td>
<td valign="top" align="center">3,877</td>
<td valign="top" align="center">3,949</td>
<td valign="top" align="center">4,023</td>
<td valign="top" align="center">2,038</td>
<td valign="top" align="center">2096.8</td>
<td valign="top" align="center">2,207</td>
</tr>
<tr>
<td valign="top" align="left">40</td>
<td valign="top" align="center">3,670</td>
<td valign="top" align="center">3877.8</td>
<td valign="top" align="center">4,000</td>
<td valign="top" align="center">5,621</td>
<td valign="top" align="center">5736.8</td>
<td valign="top" align="center">5,837</td>
<td valign="top" align="center">2,391</td>
<td valign="top" align="center">2401.2</td>
<td valign="top" align="center">2,408</td>
</tr>
<tr>
<td valign="top" align="left">50</td>
<td valign="top" align="center">4,020</td>
<td valign="top" align="center">4102.6</td>
<td valign="top" align="center">4,195</td>
<td valign="top" align="center">6,705</td>
<td valign="top" align="center">6783.8</td>
<td valign="top" align="center">6,823</td>
<td valign="top" align="center">2,548</td>
<td valign="top" align="center">2655.2</td>
<td valign="top" align="center">2,760</td>
</tr>
<tr>
<td valign="top" align="left">60</td>
<td valign="top" align="center">4,761</td>
<td valign="top" align="center">4659.6</td>
<td valign="top" align="center">4,575</td>
<td valign="top" align="center">5,464</td>
<td valign="top" align="center">5,607</td>
<td valign="top" align="center">5,696</td>
<td valign="top" align="center">3,022</td>
<td valign="top" align="center">3086.2</td>
<td valign="top" align="center">3,186</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="table" rid="T6">Table 6</xref> lists the path planning results applying the proposed DePSO with different population size when the sampling point number is 50. For each population size of 100, 200, 300, 400, and 500, 10 times of simulation are done, and the best, average and worst calculation time and path lengths are listed in <xref ref-type="table" rid="T6">Table 6</xref>. From this table we can get that, when population size rises, the optimization time becomes longer and the path lengths becomes shorter.</p>
<table-wrap position="float" id="T6">
<label>Table 6</label>
<caption><p>Path planning results with different population sizes.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>Population size</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Path length (m)</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Computation time (s)</bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">100</td>
<td valign="top" align="center">2,656</td>
<td valign="top" align="center">2866.6</td>
<td valign="top" align="center">3,167</td>
<td valign="top" align="center">56.88</td>
<td valign="top" align="center">58.95</td>
<td valign="top" align="center">59.95</td>
</tr>
<tr>
<td valign="top" align="left">200</td>
<td valign="top" align="center">2,525</td>
<td valign="top" align="center">2734.6</td>
<td valign="top" align="center">2,954</td>
<td valign="top" align="center">101.09</td>
<td valign="top" align="center">103.25</td>
<td valign="top" align="center">112.31</td>
</tr>
<tr>
<td valign="top" align="left">300</td>
<td valign="top" align="center">2534</td>
<td valign="top" align="center">2713.0</td>
<td valign="top" align="center">2903</td>
<td valign="top" align="center">146.10</td>
<td valign="top" align="center">150.86</td>
<td valign="top" align="center">155.32</td>
</tr>
<tr>
<td valign="top" align="left">400</td>
<td valign="top" align="center">2,529</td>
<td valign="top" align="center">2642.9</td>
<td valign="top" align="center">2,876</td>
<td valign="top" align="center">176.87</td>
<td valign="top" align="center">181.48</td>
<td valign="top" align="center">202.03</td>
</tr>
<tr>
<td valign="top" align="left">500</td>
<td valign="top" align="center">2,453</td>
<td valign="top" align="center">2629.4</td>
<td valign="top" align="center">2,742</td>
<td valign="top" align="center">221.68</td>
<td valign="top" align="center">243.81</td>
<td valign="top" align="center">259.94</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="table" rid="T7">Table 7</xref> lists the path planning results applying the proposed DePSO with different <italic>F</italic> ranges, when the population size is 200 and the sampling point number is 30. For each <italic>F</italic> range of [0,1], [0.05,0.95], [0.1,0.9], [0.15,0.85], and [0.2,0.8], 10 times of simulation are done, the best, average and worst calculation time and path lengths are listed. From <xref ref-type="table" rid="T7">Table 7</xref> we can get that, the optimization result is also affected by the value range of zoom factor <italic>F</italic>. With small <italic>F</italic> range, the optimization course is fast, but the route length is longer. With the larger <italic>F</italic> value, the optimization time becomes longer and the path length is shorter.</p>
<table-wrap position="float" id="T7">
<label>Table 7</label>
<caption><p>Path planning results with different <italic>F</italic> range.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold><italic>F</italic> range</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Path length (m)</bold></th>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Computation time (s)</bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
<th valign="top" align="center"><bold>Best</bold></th>
<th valign="top" align="center"><bold>Average</bold></th>
<th valign="top" align="center"><bold>Worst</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">[0,1]</td>
<td valign="top" align="center">2,038</td>
<td valign="top" align="center">2074.8</td>
<td valign="top" align="center">2,150</td>
<td valign="top" align="center">88.71</td>
<td valign="top" align="center">89.63</td>
<td valign="top" align="center">93.88</td>
</tr>
<tr>
<td valign="top" align="left">[0.05,0.95]</td>
<td valign="top" align="center">2,038</td>
<td valign="top" align="center">2235.1</td>
<td valign="top" align="center">2,283</td>
<td valign="top" align="center">86.75</td>
<td valign="top" align="center">87.89</td>
<td valign="top" align="center">90.69</td>
</tr>
<tr>
<td valign="top" align="left">[0.1,0.9]</td>
<td valign="top" align="center">2,550</td>
<td valign="top" align="center">2695.2</td>
<td valign="top" align="center">2,884</td>
<td valign="top" align="center">83.34</td>
<td valign="top" align="center">84.08</td>
<td valign="top" align="center">87.78</td>
</tr>
<tr>
<td valign="top" align="left">[0.15,0.85]</td>
<td valign="top" align="center">2,893</td>
<td valign="top" align="center">3,178.8</td>
<td valign="top" align="center">3,328</td>
<td valign="top" align="center">83.07</td>
<td valign="top" align="center">83.43</td>
<td valign="top" align="center">83.99</td>
</tr>
<tr>
<td valign="top" align="left">[0.2,0.8]</td>
<td valign="top" align="center">3,537</td>
<td valign="top" align="center">3772.4</td>
<td valign="top" align="center">3,905</td>
<td valign="top" align="center">79.85</td>
<td valign="top" align="center">81.92</td>
<td valign="top" align="center">83.94</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec sec-type="conclusions" id="s6">
<title>6. Conclusion</title>
<p>Particle swarm optimization algorithm is an effective optimization method for USV global path planning. However, conventional PSO approaches cannot always find the global optima, particularly for complex scenes. DE algorithm has the strong global search ability and good robustness. The combination of PSO and DE can enhance their advantages thus enhance the global search ability of the algorithm. In this paper, an improved particle swarm optimization algorithm (DePSO) was used for global flight path planning of automatic inspection path of USVs. In the optimization process of DePSO, the current vector is differentially crossed with the local optimal value and the global optimal value, which can further enrich the population. In order to further balance the optimal solution accuracy and optimization speed, the mutation factor is adjusted adaptively with the number of iterations. The numerical simulation results show that the proposed DePSO can realize the global path planning of the USV and achieved shorter path length than conventional PSO and DE. Compared with the existing methods, the method proposed in this paper is more suitable for the flight path planning of USV applying in water environment automatic inspection.</p>
</sec>
<sec sec-type="data-availability" id="s7">
<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="s8">
<title>Author contributions</title>
<p>YG proposed this contribution, verified, and concluded simulation results. ML gaves suggestions for simulation sets. SZ and SM gave suggestions for manuscript writing. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec sec-type="funding-information" id="s9">
<title>Funding</title>
<p>This work was partially supported by the National Natural Science Foundation of China (NSFC) Under Grant Nos. U2106202 and 12075142, the Shandong Provincial Natural Science Foundation Under Grant No. ZR2020MA102, and the Science and Technology Planning Project of Zhejiang Under Grant No. 2020C03101.</p>
</sec>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of interest</title>
<p>Author SM was employed by Zhejiang Jialan Ocean Electronics Co., Ltd. The remaining 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 sec-type="disclaimer" id="s10">
<title>Publisher&#x00027;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>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bilal</surname> <given-names>Pant M.</given-names></name> <name><surname>Zaheer</surname> <given-names>H.</given-names></name> <name><surname>Garcia-Hernandez</surname> <given-names>L.</given-names></name> <name><surname>Abraham</surname> <given-names>A.</given-names></name></person-group> (<year>2020</year>). <article-title>Differential evolution: a review of more than two decades of research</article-title>. <source>Artif. Intell</source>. <volume>90</volume>, <fpage>103479</fpage>. <pub-id pub-id-type="doi">10.1016/j.engappai.2020.103479</pub-id></citation>
</ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>L.</given-names></name> <name><surname>Sun</surname> <given-names>H.</given-names></name></person-group> (<year>2021</year>). <article-title>Picking path optimization of mobile robotic arm based on differential evolution and improved a<sup>&#x0002A;</sup> algorithm</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>154413</fpage>&#x02013;<lpage>154422</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2021.3060738</pub-id></citation>
</ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Khayati</surname> <given-names>G. R.</given-names></name> <name><surname>Rajabi</surname> <given-names>Z.</given-names></name> <name><surname>Ehteshamzadeh</surname> <given-names>M.</given-names></name> <name><surname>Beirami</surname> <given-names>H.</given-names></name></person-group> (<year>2019</year>). <article-title>A hybrid particle swarm optimization with dragonfly for adaptive anfis to model the corrosion rate in concrete structures</article-title>. <source>Int. J. Concrete Struct. Mater</source>. <volume>16</volume>, <fpage>28</fpage>. <pub-id pub-id-type="doi">10.1186/s40069-022-00517-9</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Krell</surname> <given-names>E.</given-names></name> <name><surname>King</surname> <given-names>S. A.</given-names></name> <name><surname>Carrillo</surname> <given-names>L. R. G.</given-names></name></person-group> (<year>2022</year>). <article-title>Autonomous surface vehicle energy-efficient and reward-based path planning using particle swarm optimization and visibility graphs</article-title>. <source>Appl. Ocean Res</source>. <volume>122</volume>, <fpage>103125</fpage>. <pub-id pub-id-type="doi">10.1016/j.apor.2022.103125</pub-id></citation>
</ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Laporte</surname> <given-names>G.</given-names></name></person-group> (<year>2010</year>). <article-title>A concise guide to the traveling salesman problem</article-title>. <source>J. Operat. Res. Soc</source>. <volume>61</volume>, <fpage>35</fpage>&#x02013;<lpage>40</lpage>. <pub-id pub-id-type="doi">10.1057/jors.2009.76</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>X.</given-names></name> <name><surname>Dai</surname> <given-names>G.</given-names></name> <name><surname>Wang</surname> <given-names>M.</given-names></name> <name><surname>Liao</surname> <given-names>Z.</given-names></name> <name><surname>Ma</surname> <given-names>K.</given-names></name></person-group> (<year>2019</year>). <article-title>A two-stage ensemble of differential evolution variants for numerical optimization</article-title>. <source>IEEE Access</source> <volume>7</volume>, <fpage>56504</fpage>&#x02013;<lpage>56519</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2019.2909743</pub-id></citation>
</ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Park</surname> <given-names>J.</given-names></name> <name><surname>Kim</surname> <given-names>S.</given-names></name> <name><surname>Noh</surname> <given-names>G.</given-names></name> <name><surname>Kim</surname> <given-names>H.</given-names></name></person-group> (<year>2021</year>). <article-title>Mission planning and performance verification of an unmanned surface vehicle using a genetic algorithm</article-title>. <source>Int. J. Naval Arch. Ocean Eng</source>. <volume>13</volume>, <fpage>575</fpage>&#x02013;<lpage>584</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijnaoe.2021.07.002</pub-id></citation>
</ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pehlivanoglu</surname> <given-names>Y. V.</given-names></name></person-group> (<year>2012</year>). <article-title>A new vibrational genetic algorithm enhanced with a voronoi diagram for path planning of autonomous uav</article-title>. <source>Aerospace Sci. Technol</source>. <volume>16</volume>, <fpage>47</fpage>&#x02013;<lpage>55</lpage>. <pub-id pub-id-type="doi">10.1016/j.ast.2011.02.006</pub-id></citation>
</ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rauf</surname> <given-names>H. T.</given-names></name> <name><surname>Shoaib</surname> <given-names>U.</given-names></name> <name><surname>Lali</surname> <given-names>M. I.</given-names></name> <name><surname>Alhaisoni</surname> <given-names>M.</given-names></name> <name><surname>Irfan</surname> <given-names>M. N.</given-names></name> <name><surname>Khan</surname> <given-names>M. A.</given-names></name></person-group> (<year>2020</year>). <article-title>Particle swarm optimization with probability sequence for global optimization</article-title>. <source>IEEE Access</source> <volume>8</volume>, <fpage>110535</fpage>&#x02013;<lpage>110549</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2020.3002725</pub-id></citation>
</ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>L.</given-names></name> <name><surname>Wang</surname> <given-names>H.</given-names></name> <name><surname>Yang</surname> <given-names>X.</given-names></name> <name><surname>Gao</surname> <given-names>Y.</given-names></name> <name><surname>Cui</surname> <given-names>X.</given-names></name> <name><surname>Wang</surname> <given-names>B.</given-names></name></person-group> (<year>2022</year>). <article-title>Research on smooth path planning method based on improved ant colony algorithm optimized by floyd algorithm</article-title>. <source>Ships Offshore Struct</source>. <volume>16</volume>, <fpage>955179</fpage>. <pub-id pub-id-type="doi">10.3389/fnbot.2022.955179</pub-id><pub-id pub-id-type="pmid">36091416</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>Q.</given-names></name> <name><surname>Song</surname> <given-names>T.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Yan</surname> <given-names>X.</given-names></name></person-group> (<year>2017</year>). <article-title>Particle swarm optimization algorithm based on parameter improvements</article-title>. <source>J. Comput. Methods Sci. Eng</source>. <volume>17</volume>, <fpage>557</fpage>&#x02013;<lpage>568</lpage>. <pub-id pub-id-type="doi">10.3233/JCM-170742</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>Z.</given-names></name> <name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Dong</surname> <given-names>Z.</given-names></name> <name><surname>Li</surname> <given-names>D.</given-names></name></person-group> (<year>2022</year>). <article-title>Fault monitoring and diagnosis of high-pressure heater system based on improved particle swarm optimization and probabilistic neural network</article-title>. <source>Meas. Sci. Technol</source>. <volume>33</volume>, <fpage>1</fpage>&#x02013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1088/1361-6501/ac8367</pub-id></citation>
</ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xiao</surname> <given-names>J.</given-names></name> <name><surname>Liu</surname> <given-names>S.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Wang</surname> <given-names>M.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name> <name><surname>Wang</surname> <given-names>Y.</given-names></name></person-group> (<year>2022</year>). <article-title>A jerk-limited heuristic feedrate scheduling method based on particle swarm optimization for a 5-dof hybrid robot</article-title>. <source>Robot. Comput. Integr. Manuf</source>. <volume>78</volume>, <fpage>1</fpage>&#x02013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1016/j.rcim.2022.102396</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xin</surname> <given-names>J.</given-names></name> <name><surname>Li</surname> <given-names>S.</given-names></name> <name><surname>Sheng</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Cui</surname> <given-names>Y.</given-names></name></person-group> (<year>2019</year>). <article-title>Application of improved particle swarm optimization for navigation of unmanned surface vehicles</article-title>. <source>Sensors</source> <volume>19</volume>, <fpage>47</fpage>&#x02013;<lpage>55</lpage>. <pub-id pub-id-type="doi">10.3390/s19143096</pub-id><pub-id pub-id-type="pmid">31337015</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname> <given-names>Z. Y.</given-names></name> <name><surname>Tang</surname> <given-names>K.</given-names></name> <name><surname>Yao</surname> <given-names>X.</given-names></name></person-group> (<year>2011</year>). <article-title>Scalability of generalized adaptive differential evolution for large-scale continuous optimization</article-title>. <source>Soft Comput</source>. <volume>15</volume>, <fpage>2141</fpage>&#x02013;<lpage>2155</lpage>. <pub-id pub-id-type="doi">10.1007/s00500-010-0643-6</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yi</surname> <given-names>W.</given-names></name> <name><surname>Zhou</surname> <given-names>Y.</given-names></name> <name><surname>Gao</surname> <given-names>L.</given-names></name> <name><surname>Li</surname> <given-names>X.</given-names></name> <name><surname>Mou</surname> <given-names>J.</given-names></name></person-group> (<year>2016</year>). <article-title>An improved adaptive differential evolution algorithm for continuous optimization</article-title>. <source>Expert. Syst. Appl</source>. <volume>44</volume>, <fpage>1</fpage>&#x02013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1016/j.eswa.2015.09.031</pub-id></citation>
</ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yildiz</surname> <given-names>A. R.</given-names></name></person-group> (<year>2013</year>). <article-title>A new hybrid differential evolution algorithm for the selection of optimal machining parameters in milling operations</article-title>. <source>Appl. Soft Comput</source>. <volume>13</volume>, <fpage>1561</fpage>&#x02013;<lpage>1566</lpage>. <pub-id pub-id-type="doi">10.1016/j.asoc.2011.12.016</pub-id></citation>
</ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>G.</given-names></name> <name><surname>Xing</surname> <given-names>K.</given-names></name></person-group> (<year>2019</year>). <article-title>Differential evolution metaheuristics for distributed limited-buffer flowshop scheduling with makespan criterion</article-title>. <source>Comput. Operat. Res</source>. <volume>108</volume>, <fpage>33</fpage>&#x02013;<lpage>43</lpage>. <pub-id pub-id-type="doi">10.1016/j.cor.2019.04.002</pub-id></citation>
</ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhao</surname> <given-names>L.</given-names></name> <name><surname>Bai</surname> <given-names>Y.</given-names></name> <name><surname>Wang</surname> <given-names>F.</given-names></name> <name><surname>Bai</surname> <given-names>J.</given-names></name></person-group> (<year>2022</year>). <article-title>Path planning for autonomous surface vessels based on improved artificial fish swarm algorithm: a further study</article-title>. <source>Ships Offshore Struct</source>. <pub-id pub-id-type="doi">10.1080/17445302.2022.2116765</pub-id></citation>
</ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zheng</surname> <given-names>R.</given-names></name> <name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Yang</surname> <given-names>K.</given-names></name></person-group> (<year>2022</year>). <article-title>A transfer learning-based particle swarm optimization algorithm for travelling salesman problem</article-title>. <source>J. Comput. Design Eng</source>. <volume>9</volume>, <fpage>933</fpage>&#x02013;<lpage>948</lpage>. <pub-id pub-id-type="doi">10.1093/jcde/qwac039</pub-id></citation>
</ref>
</ref-list>
</back>
</article>