<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMES</journal-id>
<journal-id journal-id-type="nlm-ta">CMES</journal-id>
<journal-id journal-id-type="publisher-id">CMES</journal-id>
<journal-title-group>
<journal-title>Computer Modeling in Engineering &#x0026; Sciences</journal-title>
</journal-title-group>
<issn pub-type="epub">1526-1506</issn>
<issn pub-type="ppub">1526-1492</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">20639</article-id>
<article-id pub-id-type="doi">10.32604/cmes.2022.020639</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Efficient UAV-Based MEC Using GPU-Based PSO and Voronoi Diagrams</article-title>
<alt-title alt-title-type="left-running-head">Efficient UAV-Based MEC Using GPU-Based PSO and Voronoi Diagrams</alt-title>
<alt-title alt-title-type="right-running-head">Efficient UAV-Based MEC Using GPU-Based PSO and Voronoi Diagrams</alt-title>
</title-group>
<contrib-group content-type="authors">
<contrib id="author-1" contrib-type="author" corresp="yes">
<name name-style="western">
<surname>Mousa</surname>
<given-names>Mohamed H.</given-names>
</name>
<xref ref-type="aff" rid="aff-1">1</xref>
<xref ref-type="aff" rid="aff-2">2</xref><email>mohamed_mousa@ci.suez.edu.eg</email>
</contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western">
<surname>Hussein</surname>
<given-names>Mohamed K.</given-names>
</name>
<xref ref-type="aff" rid="aff-2">2</xref></contrib>
<aff id="aff-1"><label>1</label><institution>Department of Information Technology, College of Computing &#x0026; Information Technology at AlKamil, University of Jeddah</institution>, <addr-line>Jeddah</addr-line>, <country>Saudi Arabia</country></aff>
<aff id="aff-2"><label>2</label><institution>Department of Computer Science, Faculty of Computers and Informatics, Suez Canal University</institution>, <addr-line>Ismailia</addr-line>, <country>Egypt</country></aff>
</contrib-group>
<author-notes><corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Mohamed H. Mousa. Email: <email>mohamed_mousa@ci.suez.edu.eg</email></corresp></author-notes>
<pub-date pub-type="epub" date-type="pub" iso-8601-date="2022-07-19">
<day>19</day>
<month>07</month>
<year>2022</year>
</pub-date>
<volume>133</volume>
<issue>2</issue>
<fpage>413</fpage>
<lpage>434</lpage>
<history>
<date date-type="received">
<day>04</day>
<month>12</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>18</day>
<month>2</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2022 Mohamed H. Mousa and Mohamed K. Hussein</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Mohamed H. Mousa and Mohamed K. Hussein</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMES_20639.pdf"></self-uri>
<abstract>
<p>Mobile-Edge Computing (MEC) displaces cloud services as closely as possible to the end user. This enables the edge servers to execute the offloaded tasks that are requested by the users, which in turn decreases the energy consumption and the turnaround time delay. However, as a result of a hostile environment or in catastrophic zones with no network, it could be difficult to deploy such edge servers. Unmanned Aerial Vehicles (UAVs) can be employed in such scenarios. The edge servers mounted on these UAVs assist with task offloading. For the majority of IoT applications, the execution times of tasks are often crucial. Therefore, UAVs tend to have a limited energy supply. This study presents an approach to offload IoT user applications based on the usage of Voronoi diagrams to determine task delays and cluster IoT devices dynamically as a first step. Second, the UAV flies over each cluster to perform the offloading process. In addition, we propose a Graphics Processing Unit (GPU)-based parallelization of particle swarm optimization to balance the cluster sizes and identify the shortest path along these clusters while minimizing the UAV flying time and energy consumption. Some evaluation results are given to demonstrate the effectiveness of the presented offloading strategy.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Task offloading</kwd>
<kwd>mobile-edge computing</kwd>
<kwd>unmanned aerial vehicles</kwd>
<kwd>Internet of Things</kwd>
<kwd>voronoi diagrams</kwd>
<kwd>GPU</kwd>
<kwd>particle swarm optimization</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<p><xref ref-type="table" rid="table-1">Table 1</xref> describes the meaning of the common terms abbreviations and acronyms found throughout the paper.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>List of abbreviations</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
</colgroup>
<thead valign="bottom">
<tr>
<td>Abbreviation</td>
<td>Definition</td>
</tr>
</thead>
<tbody>
<tr>
<td/>
</tr>
<tr>
<td>CUDA</td>
<td>&#x201C;Compute Unified Device Architecture&#x201D;</td>
</tr>
<tr>
<td>GA</td>
<td>&#x201C;Genetic Algorithm&#x201D;</td>
</tr>
<tr>
<td>GPGPU</td>
<td>&#x201C;General Purpose GPU&#x201D;</td>
</tr>
<tr>
<td>GPU</td>
<td>&#x201C;Graphical Processing Unit&#x201D;</td>
</tr>
<tr>
<td>GPUPSO</td>
<td>&#x201C;GPU-Based PSO&#x201D;</td>
</tr>
<tr>
<td>IoT</td>
<td>&#x201C;Internet of Things&#x201D;</td>
</tr>
<tr>
<td>MEC</td>
<td>&#x201C;Mobile Edge Computing&#x201D;</td>
</tr>
<tr>
<td>PSO</td>
<td>&#x201C;Particle Swarm Optimization&#x201D;</td>
</tr>
<tr>
<td>QoS</td>
<td>&#x201C;Quality of Service&#x201D;</td>
</tr>
<tr>
<td>UAC</td>
<td>&#x201C;UAV-Assisted Computing&#x201D;</td>
</tr>
<tr>
<td>UAV</td>
<td>&#x201C;Unmanned Arial Vehicle&#x201D;</td>
</tr>
<tr>
<td>UCMEC</td>
<td>&#x201C;UAV-Assisted Computing MEC&#x201D;</td>
</tr>
<tr>
<td>VD</td>
<td>&#x201C;Voronoi Diagram&#x201D;</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>Mobile-Edge Computing (MEC) has been become the most promising framework for meeting Quality of Service (QoS) requests, taking into account the requirements of processing cycles and energy. This is essential for computationally intensive mobile applications and the Internet of Things (IoT) to cope with capability limitations of mobile and IoT devices [<xref ref-type="bibr" rid="ref-1">1</xref>&#x2013;<xref ref-type="bibr" rid="ref-3">3</xref>]. A cloud-based layer supports an edge network of servers that handles computationally intensive tasks, allowing for a reduction in the required energy and corresponding turnaround time. The close proximity of the edge servers to IoT and mobile devices provides low latency and a high bandwidth for delay-sensitive IoT applications [<xref ref-type="bibr" rid="ref-4">4</xref> &#x2013;<xref ref-type="bibr" rid="ref-6">6</xref>]. However, in some locations, the deployment of edge servers may be difficult, if not impossible [<xref ref-type="bibr" rid="ref-7">7</xref>&#x2013;<xref ref-type="bibr" rid="ref-11">11</xref>]. As a real-life example, monitoring and observing forests and woodlands is a difficult task because such monitoring is time-consuming and requires considerable effort along with suitable resources. Stopping dangerous undertakings that can cause great damage to nature is a major challenge and responsibility of monitoring forestlands. Because forests cover such a wide area, it is difficult for forest managers and workers to take immediate action in cases of problems such as forest fires and illegal tree felling. Communication with ground sensors, aerial surveillance, mapping, aerial photography, and thermal imaging are some approaches in which Unmanned Aerial Vehicles (UAVs) can carry out forest monitoring. Thus, monitoring by UAVs contributes to the conservation of wildlife, biodiversity, and vegetation, the balance of ecology, and other forestry-related issues.</p>
<sec id="s1_1">
<label>1.1</label>
<title>Motivation</title>
<p>The UAV industry has made significant advances with regard to both technology and cost during the past decade, and many different applications have been demonstrated, such as intelligent transportation, agriculture, and wilderness monitoring [<xref ref-type="bibr" rid="ref-12">12</xref>&#x2013;<xref ref-type="bibr" rid="ref-15">15</xref>]. In addition, throughout this period, communication technologies have advanced in various ways (e.g., IoT, cloud computing, etc.) [<xref ref-type="bibr" rid="ref-16">16</xref>]. UAVs have been highly successful due to their cost-effective and flexible deployment [<xref ref-type="bibr" rid="ref-17">17</xref>]. These advances in communication technologies have been used to improve the collaborative computation between UAVs and ground devices. In fact, UAV-Assisted Computing (UAC) is regarded as computation services provided to ground devices using UAVs as flying bases [<xref ref-type="bibr" rid="ref-18">18</xref>]. To this end, UAVs can support offloading in MEC architecture in various ways such as:
<list list-type="bullet">
<list-item><p>UAV-assisted communication: For IoT devices, UAVs allow quick, flexible, and cost-effective network coverage by acting as relays for distant ground base stations [<xref ref-type="bibr" rid="ref-19">19</xref>,<xref ref-type="bibr" rid="ref-20">20</xref>].</p></list-item>
<list-item><p>UAV-assisted Computing MEC (UCMEC) architecture: For cloud services, UAVs equipped with edge servers allow for the offloading and processing of ground device tasks.</p></list-item>
</list></p>
<p>A unified communication network that integrates a UAV with an MEC network, as well as near line-of-sight wireless communication, are important for meeting the QoS specifications of mobile applications with regard to energy consumption and sensitivity to delay [<xref ref-type="bibr" rid="ref-21">21</xref>,<xref ref-type="bibr" rid="ref-22">22</xref>]. UAVs are constrained by their energy limitations, which lead to delays in their offloading processes. Two challenges must be taken into account in the development of any UAV-assisted computing MEC method:</p>
<list list-type="order">
<list-item><p>Locally, ground devices are not distributed uniformly. Hence, the offloading and execution of tasks must be partitioned and balanced along a set of clusters in order to achieve high performance of the UCMEC offloading system.</p></list-item>
<list-item><p>Despite the energy limitations, UAVs should collect IoT data from various locations, process offloaded tasks, and report the results back. These paths have to be optimized to satisfy the energy constraints of the UAVs.</p></list-item>
</list>
</sec>
<sec id="s1_2">
<label>1.2</label>
<title>Contribution</title>
<p>This research designs a UCMEC framework to offload tasks with the goal of optimizing the amount of required energy and computational turnaround time for both mobile devices and UAVs. As depicted in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>, we propose a space partitioning of the offloaded tasks into different regions, with the UAV hovering over each region to process the offloaded tasks. Finally, the UAV trajectory is optimized considering the time and energy limits of the UAV. The contributions according to the proposal are as follows:</p>
<list list-type="bullet">
<list-item><p>&#x201C;Voronoi Diagrams&#x201D; (VDs) are used based on a formal mathematical model of the UCMEC system to partition the IoT wireless devices into set regions, where the offloaded subset of tasks in each region meets the overall time constraint.</p></list-item>
<list-item><p>The initial partitioning of the wireless devices is improved using the proposed &#x201C;Graphics Processing Unit&#x201D; (GPU)-based Particle Swarm Optimization (PSO).</p></list-item>
<list-item><p>The same GPU-based PSO (GPUPSO) steps are used for obtaining a near-optimum path minimizing the UAV trajectory and load balancing tasks in the partitioned regions according to both energy and time constraints.</p></list-item>
<list-item><p>PSO has the advantage of being simple to implement and has a good capability for convergence in comparison with many population-based approaches, such as Genetic Algorithms (GAs) [<xref ref-type="bibr" rid="ref-23">23</xref>]. The main disadvantage is that PSO may be attracted to local minima. We overcome this issue by adding an aging factor that guarantees exploration of the global search space.</p></list-item>
</list>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>The proposed offloading framework</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-1.png"/>
</fig>
<p>The rest of the paper is organized as follows. The next section presents the related work, followed by a formulation of the optimization model in terms of the time and energy constraints as well as the affecting factors in <xref ref-type="sec" rid="s3">Section 3</xref>. <xref ref-type="sec" rid="s4">Section 4</xref> explains the proposed optimization framework on the basis of clustering of the ground devices and the use of the GPU-based PSO. Finally, <xref ref-type="sec" rid="s5">Section 5</xref> presents some experimental results, followed by the conclusions in <xref ref-type="sec" rid="s6">Section 6</xref>.</p>
</sec>
</sec>
<sec id="s2">
<label>2</label>
<title>Related Work</title>
<p>Edge servers are always privileged by their high bandwidths and low latency. Therefore, the performance of offloaded tasks is enhanced by MEC for restricted systems in terms of energy and time [<xref ref-type="bibr" rid="ref-24">24</xref>,<xref ref-type="bibr" rid="ref-25">25</xref>]. When UAVs are equipped with MEC servers and communicating channels, UAVs contribute to computing services and instant communications. This yields a better energy consumption and rate of transmission for mobile devices. However, the UAV&#x2019;s energy limitations have an adverse effect on ground mobile equipment with regard to communication and computation [<xref ref-type="bibr" rid="ref-26">26</xref>]. To address these key challenges, a variety of research studies have been conducted to explore different configurations, optimization objectives, and underlying constraints.</p>
<p>In [<xref ref-type="bibr" rid="ref-27">27</xref>], optimum planning of the UAV trajectory, ratio of offloading tasks, and user scheduling were studied together to minimize all users&#x2019; delays. In [<xref ref-type="bibr" rid="ref-28">28</xref>], UCMEC was proposed as a novel framework of agent-based task offloading. With the aim of obtaining the optimal offloading plan, the intelligence agent was led to obtain a plan that was as efficient as possible. However, this study did not address UAV trajectory optimization. In [<xref ref-type="bibr" rid="ref-29">29</xref>], the authors demonstrated that partial offloading can be optimized through the optimization of offloading ratios, local computing frequencies, transmission power, and edge server computing frequencies. However, their framework did not consider UAV mobility. In [<xref ref-type="bibr" rid="ref-30">30</xref>], the authors proposed an MEC system involving multi-UAVs and ground IoT nodes to offload computational tasks that they could not handle using their limited capabilities. To balance the computational load of the UAVs, they employed a deep reinforcement learning approach. However, stable MEC clustering with greater computing power does not guarantee generation by this method. In [<xref ref-type="bibr" rid="ref-31">31</xref>], using the Dinkelbath algorithm and &#x201C;successive convex approximation&#x201D; (SCA) techniques, the authors solved a nonconvex optimization problem formulated in the UAV scenario. In this system, neither the level of distribution of mobile devices on the ground level nor the timing of tasks that are to be offloaded were considered. As part of resource allocation and joint computation offloading, task assignment to MECs while reducing turnaround time and required energy is an important issue. Reference [<xref ref-type="bibr" rid="ref-32">32</xref>] focused on the number and location of UAVs in the development of algorithms for deploying multi-UAVs in a FANET. Based on whether tasks are offloaded or processed locally, a greedy algorithm was proposed to determine the optimal solution. However, it is important to determine when and how to offload tasks from IoT devices, particularly if the tasks are uncertain in order to improve accuracy while reducing cloud communications costs. Using the UAV computing platform, Chen et al. [<xref ref-type="bibr" rid="ref-33">33</xref>] proposed an intelligent task offloading algorithm (iTOA) that can solve the computationally intensive problem of task processing. The offloading operation is performed using the deep &#x201C;Monte Carlo Tree Search&#x201D; algorithm (MCTS), which is the principal algorithm of Alpha Go. To arrive at the optimal decision, MCTS simulates the future trajectory of the unloading decision and optimizes the rewards based on this simulation. To be effective, the proposed offloading strategy requires training data, a prediction model of the channel state, and a period of self-learning. In [<xref ref-type="bibr" rid="ref-34">34</xref>], the UAV served as a supporting unit for helping ground devices offload their tasks to access points for further computations. They employed a greedy algorithm to optimize the required energy based on a suitable selection of UAV paths and allocation of resources. However, only the UAV velocity is taken into account in the optimization process. In [<xref ref-type="bibr" rid="ref-35">35</xref>], the relation between energy consumption and latency is considered for task offloading and for evaluating MEC system performance. Their approach used iterative optimization to determine the path of the UAV. However, this optimization does not take into account how clustered fixed slots should be partitioned or consider time delays. In [<xref ref-type="bibr" rid="ref-36">36</xref>], the UAV energy consumption was minimized by optimizing its trajectory and task scheduling. This will further shorten the operational time if some memory-intensive and computation-intensive tasks are executed on the UAV. In [<xref ref-type="bibr" rid="ref-37">37</xref>], greedy search optimization based on the uplink and downlink communications between UAVs and devices was utilized as a means of offloading and receiving data while ensuring energy-efficient operation of the system. In [<xref ref-type="bibr" rid="ref-38">38</xref>], a new mobile edge system integrating UAVs and IoT devices was developed. By launching a UAV, the system enables the provisioning of services to IoT devices by using wireless communication. Additionally, their approach formulates the problem as a nonconvex optimization problem by optimizing UAV position, resource allocation decisions, and task splitting decisions jointly to minimize the total delay and consumption of energy. However, it does not take task scheduling into account. In summary, the approach based on exhaustive and greedy searches is not suitable for such optimization. In fact, the majority of problems in consideration have many factors that must be optimized, such as the shortest path planning, ground user number and locations, energy consumption, and time delay parameters. Thus, most researchers deployed heuristic settings such as fixed partitions. However, their frameworks are not extensible due to their high complexity. In addition, learning-based approaches [<xref ref-type="bibr" rid="ref-39">39</xref>,<xref ref-type="bibr" rid="ref-40">40</xref>] request a preprocessing training step. Such a preprocessing step makes these approaches inapplicable to probabilistic problems.</p>
<p>Thus, the metaheuristic optimization framework is a suitable candidate for dealing with such stochastic problems. In this study, we employ a combination of a computational geometry algorithm, namely, the VD construction algorithm, and a natural phenomena simulation, namely, PSO, to carry out the required minimization of the time delay and energy consumption of the task offloading problem using UCMEC in a reasonable timeframe.</p>
</sec>
<sec id="s3">
<label>3</label>
<title>UAV-Based Offloading Framework</title>
<p>Now, we describe the employed time and energy models in this section. <xref ref-type="table" rid="table-2">Table 2</xref> lists the set of symbols and factors employed in the suggested task offloading model.</p>
<table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>List of symbols and parameters used in the proposed optimization framework</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
</colgroup>
<thead valign="bottom">
<tr>
<td>Symbol</td>
<td>Definition</td>
</tr>
</thead>
<tbody>
<tr>
<td/>
</tr>
<tr>
<td><italic>N</italic></td>
<td>The number of wireless devices</td>
</tr>
<tr>
<td><italic>D</italic></td>
<td>The set of wireless devices</td>
</tr>
<tr>
<td><italic>d<sub>i</sub></italic></td>
<td>A wireless device</td>
</tr>
<tr>
<td><italic>d<sub>ik</sub></italic></td>
<td>Euclidean distance between <italic>d<sub>i</sub></italic> and <italic>d<sub>k</sub></italic></td>
</tr>
<tr>
<td><inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:mrow><mml:mi mathvariant="double-struck">H</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>Flying altitude of the UAV</td>
</tr>
<tr>
<td><inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math></inline-formula></td>
<td>The communication coverage radius of the UAV</td>
</tr>
<tr>
<td/>
</tr>
<tr>
<td><italic>R<sub>i</sub></italic></td>
<td>A region containing wireless devices</td>
</tr>
<tr>
<td><inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>The number of regions</td>
</tr>
<tr>
<td><inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi></mml:msubsup></mml:math></inline-formula></td>
<td>The computing cycle of task <italic>t<sub>i</sub></italic></td>
</tr>
<tr>
<td><inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msubsup></mml:math></inline-formula></td>
<td>The delay of task <italic>t<sub>i</sub></italic></td>
</tr>
<tr>
<td><inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:msubsup></mml:math></inline-formula></td>
<td>The data size of task <italic>t<sub>i</sub></italic></td>
</tr>
<tr>
<td><inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>The amount of power reception per 1 meter</td>
</tr>
<tr>
<td><inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula></td>
<td>The bandwidth of the uplink channel</td>
</tr>
<tr>
<td><italic>h<sub>i</sub></italic></td>
<td>The channel gain</td>
</tr>
<tr>
<td><inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>The max transmission power</td>
</tr>
<tr>
<td><inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>The signal noise</td>
</tr>
<tr>
<td><italic>f</italic><sup><italic>u</italic></sup></td>
<td>The processing capacity of the UAV</td>
</tr>
<tr>
<td><inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>The energy factor for wireless communication</td>
</tr>
<tr>
<td><inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>The energy factor for computation processing</td>
</tr>
<tr>
<td><inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>The energy factor for UAV hovering</td>
</tr>
<tr>
<td><italic>v</italic></td>
<td>The speed of the UAV</td>
</tr>
<tr>
<td><inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:mrow><mml:mi mathvariant="bold">E</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>Battery storage capacity of the UAV</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Two layers comprise an offloading system based on UAVs. A ground layer consists primarily of IoT and mobile devices that have <italic>N</italic> fixed-position wireless devices on the ground. Let <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15">
   <mml:mrow><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>2</mml:mn></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:mi>d</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula> denote the set of ground devices. To maximize efficiency and reduce overall energy consumption, wireless devices are encouraged to offload their computations to a flying MEC server for faster calculations and minimum time delay. A single UAV in conjunction with an MEC form the second layer, namely, a flying MEC. This layer provides cloud-based computations for the first layer devices while ensuring a minimal response time.</p>
<p>For the UAV, an altitude of <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:mrow>
   <mml:mi mathvariant="double-struck">H</mml:mi><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula> is maintained continuously. In addition, let <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:mrow><mml:msub><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> be the radius of communication coverage of the UAV. Several <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow></mml:math></inline-formula> regions are covered by the UAV with respect to a predefined path. Without loss of generality, let the path start at <italic>R</italic><sub>0</sub> and end at <inline-formula id="ieqn-19">
<mml:math id="mml-ieqn-19">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant='double-struck'>K</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math></inline-formula>, i.e., following the sequence <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x22EF;</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant='double-struck'>K</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math></inline-formula>. At the end of the path cycle, the UAV returns to the starting position after hovering over each region <italic>R<sub>k</sub></italic> to process the tasks that have been offloaded to this region. On the other hand, the position of each ground device <italic>d<sub>i</sub></italic> is specified in advance by the Cartesian coordinates (<italic>x<sub>i</sub>, y<sub>i</sub></italic>). In addition, the stopping position of the UAV over the region <italic>R<sub>k</sub></italic> is specified by the Cartesian coordinates <italic>u<sub>k</sub></italic>=(<italic>x<sub>k</sub>, y<sub>k</sub></italic>). Therefore, by calculating the Euclidean distance, we can evaluate the distance between the UAV and each <italic>d<sub>i</sub></italic> as follows:
<disp-formula id="eqn-1">
  <label>(1)</label>
<mml:math id="mml-eqn-1" display="block"><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">H</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:msup></mml:msqrt></mml:math></disp-formula></p>
<p>Provided that the UAV with device <italic>d<sub>i</sub></italic> is in the covered region, i.e., the following condition is satisfied:</p>
<p><disp-formula id="eqn-2">
<label>(2)</label>

<mml:math id="mml-eqn-2" display="block"><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math>
</disp-formula></p>
<p>While the UAV hovers over a region <italic>R<sub>k</sub></italic>, device <italic>d<sub>i</sub></italic> requests to offload its tasks <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, where <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-125"><mml:math id="mml-ieqn-25"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, and <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi></mml:msubsup></mml:math></inline-formula> correspond to the data size, task delay, and needed computing cycles, respectively. The presented UCMEC framework divides the set of devices <italic>D</italic> into <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow></mml:math></inline-formula> clusters on each UAV to offload the requested tasks. Let <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula> indicate that the ground device <italic>d<sub>i</sub></italic> is permitted to offload task <italic>t<sub>i</sub></italic> by the UAV while flying over <italic>R<sub>k</sub></italic>. The following subsections describe the suggested optimization approach according to the energy consumption, computational, and communicating models.</p>
<sec id="s3_1">
<label>3.1</label>
<title>Communication Model</title>
<p>In this section, we will describe the communicating model controlling the UAV. Suppose that device <italic>d<sub>i</sub></italic> is within cluster <italic>R<sub>k</sub></italic>. This means that when the UAV is hovering over <italic>R<sub>k</sub></italic>, <italic>d<sub>i</sub></italic> lies in the <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math></inline-formula> coverage of the UAV. Therefore, the channel gain resulting from the communication between the UAV and <italic>d<sub>i</sub></italic> is evaluated as follows [<xref ref-type="bibr" rid="ref-12">12</xref>]:</p>
<p><disp-formula id="eqn-3">
<label>(3)</label>

<mml:math id="mml-eqn-3" display="block"><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:msubsup></mml:mfrac></mml:math>
</disp-formula></p>
<p>where <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:msub><mml:mi>&#x03C1;</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula> is the amount of power reception per 1 meter. Similarly, considering that signal noise is denoted by <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula>, the power of transmission is denoted by <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">P</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msub></mml:math></inline-formula>, and the bandwidth of the communicating channel is denoted by <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula>. Therefore, the rate of transmission is evaluated using the following equation [<xref ref-type="bibr" rid="ref-41">41</xref>]:</p>
<p><disp-formula id="eqn-4">
<label>(4)</label>

<mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>&#x03B2;</mml:mi><mml:msub><mml:mi>log</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">P</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow><mml:mn>0</mml:mn></mml:msub></mml:mfrac><mml:mo stretchy="false">)</mml:mo></mml:math>
</disp-formula></p>
<p>Let <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> be the time required to transmit a task from <italic>d<sub>i</sub></italic>. <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is evaluated as follows:</p>
<p><disp-formula id="eqn-5">
<label>(5)</label>

<mml:math id="mml-eqn-5" display="block"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:msubsup><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mfrac></mml:math>
</disp-formula></p>
<p>Based on <xref ref-type="disp-formula" rid="eqn-5">Eq. (5)</xref>, the time required to offload all of the tasks within <italic>R<sub>k</sub></italic> is as follows:</p>
<p><disp-formula id="eqn-6">
<label>(6)</label>

<mml:math id="mml-eqn-6" display="block"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:math>
</disp-formula></p>
<p>Depending on the decision value, <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, device <italic>d<sub>i</sub></italic> is either permitted or not permitted to offload its task to the UAV.</p>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Computation Model</title>
<p>In this section, we will formulate the time of the computation model based on the computation capacity of the UAV. Let <italic>f</italic><sup><italic>u</italic></sup> be the UAV computational capacity; therefore, the time required to execute task <italic>t<sub>i</sub></italic> is evaluated as follows:</p>
<p><disp-formula id="eqn-7">
<label>(7)</label>

<mml:math id="mml-eqn-7" display="block"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi></mml:msubsup><mml:msup><mml:mi>f</mml:mi><mml:mi>u</mml:mi></mml:msup></mml:mfrac></mml:math>
</disp-formula></p>
<p>Similar to <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, the total computational time is evaluated as follows:</p>
<p><disp-formula id="eqn-8">
<label>(8)</label>

<mml:math id="mml-eqn-8" display="block"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:math>
</disp-formula></p>
<p>Using <xref ref-type="disp-formula" rid="eqn-6">Eqs. (6)</xref> and <xref ref-type="disp-formula" rid="eqn-8">(8)</xref>, the overall time required within <italic>R<sub>k</sub></italic> is evaluated as follows:</p>
<p><disp-formula id="eqn-9">
<label>(9)</label>

<mml:math id="mml-eqn-9" display="block"><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup></mml:math>
</disp-formula></p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Energy Consumption Model</title>
<p>In this section, we will describe the required energy to offload the tasks in <italic>R<sub>k</sub></italic>. In fact, the consumption of energy results from the following:
<list list-type="bullet">
<list-item><p>the energy required to send the receive tasks&#x2019; data,</p></list-item>
<list-item><p>the energy required to execute the received tasks, and</p></list-item>
<list-item><p>the energy required to the flying operation.</p></list-item>
</list></p>
<p>For the transmission and reception of data, let the communication energy factor be denoted by <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>. Therefore, communication energy, <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, is evaluated by:</p>
<p><disp-formula id="eqn-10">
<label>(10)</label>

<mml:math id="mml-eqn-10" display="block"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:msubsup></mml:mrow></mml:mrow></mml:math>
</disp-formula></p>
<p>Let <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> be the computational energy factor. Therefore, the computational energy, <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, is evaluated as follows:</p>
<p><disp-formula id="eqn-11">
<label>(11)</label>

<mml:math id="mml-eqn-11" display="block"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:msubsup><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi></mml:msubsup></mml:mrow><mml:msup><mml:mrow><mml:msup><mml:mi>f</mml:mi><mml:mi>u</mml:mi></mml:msup></mml:mrow><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:math>
</disp-formula></p>
<p>For the UAV hovering energy, we followed the propulsion energy model of [<xref ref-type="bibr" rid="ref-42">42</xref>]. Let <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula> denote the hovering energy factor. Therefore, the hovering energy, <inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>h</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, is evaluated using the following equation:</p>
<p><disp-formula id="eqn-12">
<label>(12)</label>

<mml:math id="mml-eqn-12" display="block"><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>h</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>T</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math>
</disp-formula></p>
<p>Using <xref ref-type="disp-formula" rid="eqn-10">Eqs. (10)</xref>&#x2013;<xref ref-type="disp-formula" rid="eqn-12">(12)</xref>, the required energy is given by:</p>
<p><disp-formula id="eqn-13">
<label>(13)</label>

<mml:math id="mml-eqn-13" display="block"><mml:msub><mml:mi>E</mml:mi><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>m</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>E</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>h</mml:mi></mml:mrow></mml:msubsup></mml:math>
</disp-formula></p>
</sec>
<sec id="s3_4">
<label>3.4</label>
<title>Objective Function</title>
<p>In this section, we present the principal factors of the objective function on which the PSO will be based. In fact, the set of ground devices is arranged into a set of clusters. This set is dynamically constructed based on the following factors: the maximum cluster capacity, <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mrow><mml:mover><mml:mi>m</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, and the sum of distances, <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="double-struck">D</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, between the devices and their corresponding cluster center. These factors are evaluated as follows:</p>
<p><disp-formula id="eqn-14">
<label>(14)</label>

<mml:math id="mml-eqn-14" display="block"><mml:mrow><mml:mover><mml:mi>m</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="true" form="prefix">max</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mo stretchy="false">(</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math>
</disp-formula></p>
<p><disp-formula id="eqn-15">
<label>(15)</label>

<mml:math id="mml-eqn-15" display="block"><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="double-struck">D</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math>
</disp-formula></p>
<p>In the same manner, based on <xref ref-type="disp-formula" rid="eqn-13">Eq. (13)</xref>, the required energy, <italic>E</italic>, along all clusters is evaluated as follows:</p>
<p><disp-formula id="eqn-16">
<label>(16)</label>

<mml:math id="mml-eqn-16" display="block"><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math>
</disp-formula></p>
<p>We formulate the function, <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:mrow><mml:mi mathvariant="double-struck">F</mml:mi></mml:mrow></mml:math></inline-formula>, to be minimized as a mixed-integer, nonlinear constraints problem as follows:</p>
<p><disp-formula id="eqn-17">
<label>(17)</label>

<mml:math id="mml-eqn-17" display="block"><mml:mo movablelimits="true" form="prefix">min</mml:mo><mml:mo>:</mml:mo><mml:mspace width="2em" /><mml:mrow><mml:mi mathvariant="double-struck">F</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mover><mml:mi>m</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="double-struck">D</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:mrow></mml:mfrac></mml:math>
</disp-formula></p>
<p>subjected to:</p>
<p><disp-formula id="eqn-18">
<label>(18)</label>

<mml:math id="mml-eqn-18" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn>0</mml:mn><mml:mspace width="1em" /><mml:mi mathvariant="normal">&#x2200;</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math>
</disp-formula></p>
<p><disp-formula id="eqn-19">
<label>(19)</label>

<mml:math id="mml-eqn-19" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi>u</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn>0</mml:mn></mml:math>
</disp-formula></p>
<disp-formula id="eqn-20">
<label>(20)</label>

<mml:math id="mml-eqn-20" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>3</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn>0</mml:mn></mml:math>
</disp-formula>
<disp-formula id="eqn-21">
<label>(21)</label>

<mml:math id="mml-eqn-21" display="block"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>4</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:munder><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mspace width="1em" /><mml:mi mathvariant="normal">&#x2200;</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>.</mml:mo><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math>
</disp-formula>
<p>The first constraint, <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, guarantees the coverage of each device when the UAV hovers over the corresponding cluster. <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> guarantees that the total time does not exceed the maximum allowed flying time. Similarly, <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula> guarantees that the total energy does not exceed the UAV battery maximum. Finally, the final constraint, <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mn>4</mml:mn></mml:msub></mml:math></inline-formula>, guarantees that offloading of each device is associated with one and only one cluster. Finally, we combine <xref ref-type="disp-formula" rid="eqn-19">Eqs. (19)</xref>&#x2013;<xref ref-type="disp-formula" rid="eqn-21">(21)</xref> as a single objective function as follows:</p>
<p><disp-formula id="eqn-22">
<label>(22)</label>

<mml:math id="mml-eqn-22" display="block"><mml:mrow><mml:mover><mml:mrow><mml:mi mathvariant="double-struck">F</mml:mi></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="double-struck">F</mml:mi></mml:mrow><mml:mo>+</mml:mo><mml:mi>&#x03B3;</mml:mi><mml:munderover><mml:mo movablelimits="false">&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:munderover><mml:msubsup><mml:mrow><mml:mi mathvariant="double-struck">C</mml:mi></mml:mrow><mml:mi>i</mml:mi><mml:mn>2</mml:mn></mml:msubsup></mml:math>
</disp-formula></p>
<p>where <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mi>&#x03B3;</mml:mi></mml:math></inline-formula> denotes the weight of the penalty sum.</p>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>The Optimization Model</title>
<p>In this section, we describe our proposed optimization approach. First, we propose a partitioning of the set of wireless devices, <italic>D</italic>, using the VDs with respect to the UAV communication range <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math></inline-formula>. Second, optimization is performed using the GPUPSO algorithm to obtain better clustering and the shortest path for the UAV. We propose the implementation of a customized PSO on a GPU. The customized PSO is as simple as the classical PSO but shows better performance. Our aim is to speed up the computation and introduce a better local communication topology between the particles within the population as part of the global search. The parallelization of the PSO on a GPU enables a better exploration of search spaces with a high number of dimensions using a large population swarm.</p>
<sec id="s4_1">
<label>4.1</label>
<title>Voronoi Diagram</title>
<p>VD partitions a two-dimensional plane containing a set of <italic>N</italic> anchors, called sites, with a set of <italic>N</italic> Voronoi polygons. Each Voronoi polygon is associated with a unique site (see <xref ref-type="fig" rid="fig-2">Fig. 2a</xref>) such that any points inside that polygon are closer to the specified site [<xref ref-type="bibr" rid="ref-43">43</xref>,<xref ref-type="bibr" rid="ref-44">44</xref>]. In addition, the vertices of the Voronoi polygon are called Voronoi vertices, and the circles centered at these vertices that pass through the neighboring sites are called Voronoi circles [<xref ref-type="bibr" rid="ref-45">45</xref>] (see <xref ref-type="fig" rid="fig-2">Figs. 2b</xref>). We note that the site may be shared with more than one Voronoi circle.</p>
<p>Given a region <italic>R</italic> containing a set of mobile devices <italic>D</italic>, where <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula>, VD partitions the region <italic>R</italic> into a set of Voronoi polygons. Each polygon contains a single mobile device and can be considered an offloading region to be visited by the UAV. We show how to merge these regions to offload multiple devices in a single visit, taking into consideration that any resulting region should satisfy the following:
<list list-type="order">
<list-item><p>All of the associated mobile devices in the region should be in the coverage area, <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math></inline-formula>, of the UAV.</p></list-item>
<list-item><p>The sum of the transmission time and the computation time of the assigned devices in the region should be less than <italic>T<sub>u</sub></italic>, <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:math></inline-formula>, as stated in constraint <italic>C</italic><sub>2</sub> in <xref ref-type="disp-formula" rid="eqn-19">Eq. (19)</xref>.</p></list-item>
</list></p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>VD construction. (a) Each Voronoi polygon corresponds to a unique site, and (b) the Voronoi circles are centered at Voronoi vertices and pass through the corresponding sites</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-2.png"/>
</fig>
<fig id="fig-9">
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-9.png"/>
</fig>
<p>Algorithm 1 summarizes the steps for the initial partitioning of <italic>D</italic>. The input of the algorithm is the set of mobile devices <italic>D</italic>. The algorithm starts by constructing the Voronoi diagram of the set of devices, VD(<italic>D</italic>). Once VD is constructed, we identify all of the Voronoi circles of the diagram. For each device <italic>d<sub>i</sub></italic>, we identify the corresponding devices, <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x22EF;</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula>, that share at least one Voronoi circle with <italic>d<sub>i</sub></italic>. Then, the algorithm finds the fitting circle, <italic>c</italic><sub><italic>d<sub>i</sub></italic></sub>, that contains <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x222A;</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>&#x22EF;</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula>. The set of all <italic>c</italic><sub><italic>d<sub>i</sub></italic></sub> is considered as the initial partitioning of the area <italic>R</italic>. Since each device is shared by at least one Voronoi circle and each Voronoi circle passes through at least three devices, <italic>c</italic><sub><italic>d<sub>i</sub></italic></sub> has at least three devices. In addition, the set of fitting circles may not be disjointed, i.e., <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>&#x2229;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>&#x2260;</mml:mo><mml:mi mathvariant="normal">&#x03A6;</mml:mi></mml:math></inline-formula>. The set of all <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> are sorted in a list <italic>L</italic> with respect to their radii in ascending order. Now, we show how to merge the regions <italic>c</italic><sub><italic>d<sub>i</sub></italic></sub> with respect to the boundary condition <italic>C</italic><sub>2</sub> expressed in <xref ref-type="disp-formula" rid="eqn-19">Eq. (19)</xref>.</p>
<p>Starting with the smallest fitting circle <italic>L</italic>[<italic>i</italic>], where <italic>i</italic> = 0, we identify of all the fitting circles <italic>L</italic>[<italic>j</italic>] that share at least one device with <italic>L</italic>[<italic>i</italic>]. Now, for each <italic>L</italic>[<italic>j</italic>], we test whether the circle can be merged with <italic>L</italic>[<italic>i</italic>] without violating the constraint specified in <xref ref-type="disp-formula" rid="eqn-19">Eq. (19)</xref>. If the merge is eligible, then <italic>L</italic>[<italic>i</italic>] is updated to <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:mi>L</mml:mi><mml:mo stretchy="false">[</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x222A;</mml:mo><mml:mi>L</mml:mi><mml:mo stretchy="false">[</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula>, and <italic>L</italic>[<italic>j</italic>] is removed from the list <italic>L</italic>. The algorithm stops when there are no more regions eligible for merging in <italic>L</italic>.</p>
<p>In fact, the initial partitioning of the given devices may produce unbalanced partitions. Although these initial partitions are constructed in accordance with the time constraints of the UAV, these partitions may increase the transfer time necessary to achieve all the tasks in each partition. When the UAV is in a specified region, the UAV may cover devices from neighboring partitions as shown in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>. The existence of these overlapping areas creates the possibility of improving the transfer time of such devices. In <xref ref-type="fig" rid="fig-3">Fig. 3</xref>, device <italic>s</italic> can be covered from regions <italic>R</italic><sub>2</sub> and <italic>R</italic><sub>3</sub>. The question here is which is better, offloading the device <italic>s</italic> within region <italic>R</italic><sub>2</sub> or within region <italic>R</italic><sub>3</sub>? We use PSO to answer this question by associating <italic>s</italic> with the corresponding region, which optimizes the overall time, namely, the offloading time, along the UAV trajectory. In the next section, we describe the proposed implementation of GPU-based PSO that finds the optimized association of shared devices and the optimal UAV path that minimizes the overall time and energy consumption.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>An example of three regions (dashed circles) with shared devices (red) </title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-3.png"/>
</fig>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>GPU-Based Particle Swarm Optimization</title>
<p>In this section, we illustrate how to implement PSO on a GPU architecture. We start by introducing the classical PSO. Then, we summarize the benefits of the current advances of GPUs [<xref ref-type="bibr" rid="ref-46">46</xref>]. In addition, we show how to use GPU-based PSO in optimizing the wireless device association to improve the clustering of the set of devices <italic>D</italic>. Finally, we illustrate how to choose the shortest path for the UAV that minimizes the problem stated in <xref ref-type="disp-formula" rid="eqn-17">Eq. (17)</xref>.</p>
<sec id="s4_2_1">
<label>4.2.1</label>
<title>Particle Swarm Optimization</title>
<p>The classical PSO algorithm is classified as a stochastic global optimization technique. PSO was developed in 1995 by Eberhard and Kennedy based on the social behavior of birds or fish [<xref ref-type="bibr" rid="ref-47">47</xref>]. <xref ref-type="fig" rid="fig-4">Fig. 4</xref> depicts the overall process of the classical PSO, in which each particle <italic>P<sub>i</sub></italic> is provided with the following information:
<list list-type="bullet">
<list-item><p><inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:msubsup><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>: the current position at time <italic>t</italic>,</p></list-item>
<list-item><p><inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>: the current velocity at time <italic>t</italic>, and</p></list-item>
<list-item><p><italic>b<sub>i</sub></italic>: the historical best position of <italic>P<sub>i</sub></italic>.</p></list-item>
</list></p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>The classical particle swarm optimization algorithm </title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-4.png"/>
</fig>
<p>The algorithm shares the information of the historical global best position among all particles in the swarm, <italic>g</italic>. Using the PSO, each particle in the swarm adjusts its velocity, <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msubsup></mml:math></inline-formula>, according to the following two items of information: (1) the best position at which the particle has been thus far, <italic>b<sub>i</sub></italic>, and (2) the historical best position along the whole swarm, <italic>g</italic>. This is accomplished using the following formula:</p>
<p><disp-formula id="eqn-23">
<label>(23)</label>

<mml:math id="mml-eqn-23" display="block"><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mi>&#x03C9;</mml:mi><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mi>g</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>where <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:mi>&#x03C9;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> is the inertia coefficient, <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mo>+</mml:mo></mml:msup></mml:math></inline-formula> are the acceleration coefficients, and <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:msub><mml:mi>r</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2208;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> are random numbers. The first term of <xref ref-type="disp-formula" rid="eqn-23">Eq. (23)</xref> represents the momentum part, in which the previous flight direction is memorized, preventing the particle from drastically changing direction. In the same manner, the second term is the cognitive part, in which the previous best position of the particle is memorized and the performance is quantified relative to the past performances. Finally, the third term is the social part, in which the performance is quantified relative to that of its neighbors. Once the velocity is updated, the current position of each particle is updated using the following equation:</p>
<p><disp-formula id="eqn-24">
<label>(24)</label>

<mml:math id="mml-eqn-24" display="block"><mml:msubsup><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math>
</disp-formula></p>
<p>This makes all the particles align their positions in the search space to the local and global best positions in the search space. <xref ref-type="fig" rid="fig-5">Fig. 5</xref> shows a graphical illustration of the effect of <xref ref-type="disp-formula" rid="eqn-23">Eqs. (23)</xref> and <xref ref-type="disp-formula" rid="eqn-24">(24)</xref> describe the inertia and cognitive and social behaviors of particle <italic>P<sub>i</sub></italic>. The choice of a convenient value for <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> is crucial for the convergence of the algorithm [<xref ref-type="bibr" rid="ref-48">48</xref>]. A greater value of <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> corresponds to a more global exploration of the search space. By contrast, smaller values of <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> focus on the local investigation of the search space. Our experiments show that it is preferable to initialize <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> with large values to encourage the global investigation of the search space and then decrease this value using an aging factor according to the running time to obtain finer solutions.</p>
<fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>The alignment of the particle position according to cognitive and social behaviors. The orange, red and green solid lines correspond to the inertia and cognitive and social behaviors, respectively, of particle <italic>P<sub>i</sub></italic> </title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-5.png"/>
</fig>
<p>In fact, PSO has been considered one of the most powerful nature-inspired optimization algorithms. However, for high-dimensional space or large swarm optimization problems, PSO requires performance improvements. This is due to successive evaluations of the fitness function as well as the need to update the particle locations. The first intuitive solution for overcoming this performance degradation is to parallelize the steps from <xref ref-type="disp-formula" rid="eqn-2">(2)</xref>&#x2013;<xref ref-type="disp-formula" rid="eqn-5">(5)</xref>; see the blue shaded loop in <xref ref-type="fig" rid="fig-4">Fig. 4</xref> [<xref ref-type="bibr" rid="ref-49">49</xref>]. However, it is insufficient to set subjobs in a parallel calculation job by introducing a single thread for each job that includes a time-consuming evaluation task.</p>
</sec>
<sec id="s4_2_2">
<label>4.2.2</label>
<title>CUDA Architecture</title>
<p>Due to the emergence of General Purpose GPUs (GPGPUs) and their rapid arithmetic kernels, performance has dramatically improved in many fields. In fact, a GPU performs computations faster than a CPU. Due to the high transistor density, floating-point operations can be performed much faster with a GPU than with a CPU because it devotes more transistors to data processing than to data caching and flow control. The second benefit of GPUs is their data-parallel capabilities; they are particularly well suited to problem solving in data-parallel computations with a high arithmetic intensity, that is, for problems where there is a high ratio of arithmetic operations to memory operations.</p>
<p>Furthermore, programming on GPUs has been greatly simplified by the existing platforms, particularly by the Compute Unified Device Architecture (CUDA) [<xref ref-type="bibr" rid="ref-50">50</xref>]. For the CUDA programming concept, as shown in <xref ref-type="fig" rid="fig-6">Fig. 6</xref>, GPUs can be considered a high-performance computing device capable of handling many threads at the same time. Kernels are the heart of CUDA, and a batch of threads is responsible for executing these kernels simultaneously. This batch is organized as a grid consisting of a number of thread blocks. Generally, a block of threads is a collection of threads. This collection collaborates by allowing data sharing using an efficient and dedicated shared memory. In addition, the collection synchronizes their execution to flawlessly optimize their memory hits. A key feature of CUDA is its memory model that is closely related to the mechanism used by the batch of threads. Every thread has its own local memory, registers, and a unique id. Global memory can be accessed by all threads within a grid, while shared memory can only be accessed within a block. For our implementation, we mostly use shared memory and global memory.</p>
<fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>The programming architecture of the CUDA kernel</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-6.png"/>
</fig>
<p>In this research, we propose a robust implementation of PSO using CUDA. The GPU-based PSO can enhance optimization performance, increase the swarm population, enlarge the size of the problem, and greatly speed up implementation. This allows users to solve critical time problems or complex optimization problems in a reasonable amount of time.</p>
</sec>
<sec id="s4_2_3">
<label>4.2.3</label>
<title>Optimization Structure</title>
<p>Based on the initial partitioning described in the previous section, we propose a multiobjective GPUPSO that minimizes:
<list list-type="order">
<list-item><p>The routing path of the UAV,</p></list-item>
<list-item><p>The energy consumption, and</p></list-item>
<list-item><p>The shared devices&#x2019; offloading time.</p></list-item>
</list></p>
<p>In fact, the association of shared devices affects the overall time and transmission energy since the offloading time and energy depend on the positions of the UAV and the devices, as described in <xref ref-type="disp-formula" rid="eqn-1">Eqs. (1)</xref>, <xref ref-type="disp-formula" rid="eqn-3">(3)</xref>, <xref ref-type="disp-formula" rid="eqn-4">(4)</xref>, and <xref ref-type="disp-formula" rid="eqn-10">(10)</xref>. On the other hand, the path of the UAV affects both the time and energy consumption.</p>
<p>Let <inline-formula id="ieqn-173"><mml:math id="mml-ieqn-173">
<mml:mrow>
<mml:mi>R</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x007B;</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mi mathvariant='double-struck'>K</mml:mi>
</mml:msub>
<mml:mo>&#x007D;</mml:mo></mml:mrow>
</mml:math></inline-formula> be the set of initial partitions and <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-73"><mml:msubsup><mml:mi>T</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munder><mml:mo>&#x2211;</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, where <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:msubsup><mml:mi>T</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the time required to offload the devices of <italic>R<sub>k</sub></italic> and <inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:msubsup><mml:mi>T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the transmission time of device <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:mi>i</mml:mi><mml:mo>&#x2208;</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math></inline-formula>. Consider that <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:msup><mml:mi>D</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mn>1</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mn>2</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula> is the set of shared devices such that:</p>
<p><disp-formula id="eqn-25">
<label>(25)</label>
<mml:math id="mml-eqn-25" display="block">
<mml:mrow>
<mml:mo>&#x2200;</mml:mo><mml:msup>
<mml:mi>d</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2208;</mml:mo><mml:msup>
<mml:mi>D</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x21D4;</mml:mo><mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2203;</mml:mo><mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo><mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>:</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2264;</mml:mo><mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2260;</mml:mo><mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2264;</mml:mo><mml:mi mathvariant='double-struck'>K</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>&#x2227;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msup>
<mml:mi>d</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2208;</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2229;</mml:mo><mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo stretchy='false'>)</mml:mo>
<mml:mo>)</mml:mo></mml:mrow>
</mml:math>
</disp-formula></p>
<p>In addition, we define the set of regions <inline-formula id="ieqn-78"></inline-formula></p>
<p><inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:msup><mml:mi>R</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mn>1</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mn>2</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math></inline-formula> such that <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:msubsup><mml:mi>R</mml:mi><mml:mi>k</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi mathvariant="normal">&#x2216;</mml:mi><mml:msup><mml:mi>D</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:math></inline-formula>. Now, we describe the proposed particle structure. In fact, each particle <italic>P<sub>i</sub></italic> consists of two parts: <list list-type="order">
<list-item><p><inline-formula id="ieqn-108"><mml:math id="mml-ieqn-81"><mml:msub><mml:mi>G</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:mrow></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, which represents the association of shared devices, and</p></list-item>
<list-item><p><inline-formula id="ieqn-183">
   <mml:math id="mml-ieqn-183">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi mathvariant='double-struck'>K</mml:mi>
</mml:msubsup>
<mml:mo stretchy='false'>)</mml:mo></mml:mrow>
</mml:math>
</inline-formula>, which represents the routing path of the UAV.</p></list-item>
   </list></p>
<p>Now, we define the structure of the part concerning the first objective. First, each <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup></mml:math></inline-formula> is associated with the corresponding device <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:msubsup><mml:mi>d</mml:mi><mml:mi>j</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mi>D</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:math></inline-formula>, <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x22EF;</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:math></inline-formula>. The value of <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup></mml:math></inline-formula> is chosen from the set of integers <italic>k<sub>j</sub></italic>, <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:mn>1</mml:mn><mml:mo>&#x2264;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow></mml:math></inline-formula>, representing the indices of the candidate partitions <italic>R</italic>&#x2032;<sub><italic>k<sub>j</sub></italic></sub> such that <italic>d</italic>&#x2032;<sub><italic>j</italic></sub> is coverable when the UAV hovers over <italic>R</italic><sub><italic>k<sub>j</sub></italic></sub>. In addition, we define <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:math></inline-formula> as the cardinality of the set of possible values of <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup></mml:math></inline-formula>. Therefore, the values of <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:msub><mml:mi>G</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mn>2</mml:mn></mml:msubsup><mml:mo>&#x22EF;</mml:mo><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:mrow></mml:msubsup><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> can be, for example, as follows:
<disp-formula id="eqn-125">
<mml:math id="mml-eqn-125" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mtable columnalign="left left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>0</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mtd><mml:mtd><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mn>1</mml:mn></mml:msubsup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mspace width="2em" /><mml:mspace width="2em" /><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mspace width="1em" /><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>0</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>j</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mtd><mml:mtd><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:msubsup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>3</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mspace width="2em" /><mml:mspace width="2em" /><mml:mo>&#x22EE;</mml:mo></mml:mtd><mml:mtd><mml:mspace width="1em" /><mml:mo>&#x22EE;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:mrow></mml:msubsup><mml:mo>&#x2208;</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>0</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mn>1</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x2261;</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mn>2</mml:mn><mml:mo>&#x2032;</mml:mo></mml:msubsup></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x2032;</mml:mo></mml:msubsup><mml:mo fence="false" stretchy="false">}</mml:mo></mml:mtd><mml:mtd><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msubsup><mml:mi>g</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math>
</disp-formula>
</p>
<p>The cost consists of the sum of the total time and energy transmission for devices in <italic>D</italic>&#x2032;. For the second objective, we define the structure of this part as a set of floating values describing the priority of visiting the partitions <italic>R<sub>i</sub></italic> by the UAV; <inline-formula id="ieqn-194"><mml:math id="mml-ieqn-194">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo><mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msubsup>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi mathvariant='double-struck'>K</mml:mi>
</mml:msubsup>
<mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:math></inline-formula>. The region with the highest priority is visited first. The cost consists of the flying, hovering and transmission energy of the UAV over path C<sub>i</sub>.</p>
<p>The final structure of particle <italic>P<sub>i</sub></italic> is the concatenation of <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:msub><mml:mi>G</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>&#x2032;</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:mrow><mml:mi mathvariant="double-struck">K</mml:mi></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula>. The two parts <italic>G<sub>i</sub></italic> and <italic>C<sub>i</sub></italic> are not independent since the association of a device with a certain region affects the hovering time and energy of that region. Similarly, <italic>G</italic> does not affect the total computation time and energy. The application of the parallelized PSO to the proposed <italic>GC</italic> is summarized as depicted in Algorithm 2. The algorithm starts by initializing the values of the particle positions. Initially, the best position for each particle will be the current position, and the global position is the best position among the local best. Then, the algorithm iterates in parallel using the CUDA kernel <italic>move</italic>() that locates the next position for each particle <italic>P<sub>i</sub></italic>. After each move, the global and local best positions are updated if necessary.</p>
<fig id="fig-10">
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-10.png"/>
</fig>
</sec>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Results and Discussion</title>
<p>The experiments are performed on an NVIDIA CUDA Maxwell architecture embedded in an Intel Core i7-8565U CPU running at 1.8 and 1.99 GHz and a GeForce MX130 GPU with 4 GB RAM under Windows 10. Here, we present some experimental results that demonstrate the effectiveness of the proposed approach. A set of wireless devices is randomly distributed over the square region of <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:mn>200</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:mn>200</mml:mn></mml:math></inline-formula>m<sup>2</sup>. Many studies have been devoted to determining the flying and energy parameters for UAVs [<xref ref-type="bibr" rid="ref-51">51</xref>,<xref ref-type="bibr" rid="ref-52">52</xref>]. Similar simulation parameters are presented in <xref ref-type="table" rid="table-3">Table 3</xref>. First, the partitioning of the devices is performed on the CPU, and then the proposed optimization using the PSO is applied on the GPU. The results concerning the optimization step are the average of 10 independent runs. The inertia <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula>, cognitive <italic>C</italic><sub>1</sub>, and social <italic>C</italic><sub>2</sub> parts are set as 0.75, 2.5, and 1.5, respectively. The aging factor for the inertia <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mi>&#x03C9;</mml:mi></mml:math></inline-formula> is set to 0.99 and applied every 10 iterations. We have set the number of iterations to 1000.</p>
<table-wrap id="table-3">
<label>Table 3</label>
<caption>
<title>Parameter settings of the UAV for the evaluation experiments</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
</colgroup>
<thead valign="bottom">
<tr>
<td>Parameter</td>
<td>Value</td>
</tr>
</thead>
<tbody>
<tr>
<td/>
</tr>
<tr>
<td><inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:mi>&#x03B2;</mml:mi></mml:math></inline-formula></td>
<td>40 MHz</td>
</tr>
<tr>
<td><italic>h<sub>i</sub></italic></td>
<td>&#x2212;30 dB</td>
</tr>
<tr>
<td><inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow><mml:mn>0</mml:mn></mml:msub></mml:math></inline-formula></td>
<td>10<sup>&#x2212;9</sup> W</td>
</tr>
<tr>
<td><inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:mi mathvariant="bold-italic">&#x03BA;</mml:mi></mml:math></inline-formula></td>
<td>10<sup>&#x2212;26</sup></td>
</tr>
<tr>
<td><inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula></td>
<td>0.4 W</td>
</tr>
<tr>
<td><italic>v</italic></td>
<td>30 m/s</td>
</tr>
<tr>
<td><inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mrow><mml:mi mathvariant="double-struck">H</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td>50 m</td>
</tr>
<tr>
<td><italic>t</italic><sup><italic>d</italic></sup></td>
<td>200 KB&#x2013;3 MB</td>
</tr>
<tr>
<td><italic>t</italic><sup><italic>c</italic></sup></td>
<td><inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mn>6</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mn>9</mml:mn></mml:msup></mml:math></inline-formula>&#x2013;<inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:mn>9</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mrow><mml:mn>10</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></td>
</tr>
<tr>
<td><italic>f</italic><sup><italic>u</italic></sup></td>
<td>300 MHz</td>
</tr>
<tr>
<td><inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:mrow><mml:mi mathvariant="bold">E</mml:mi></mml:mrow></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:mn>5</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:msup><mml:mn>10</mml:mn><mml:mn>5</mml:mn></mml:msup></mml:math></inline-formula> J</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="fig" rid="fig-7">Fig. 7</xref> shows a graphical illustration of the proposed approach. First, a set of 40 wireless devices is randomly generated, as shown in <xref ref-type="fig" rid="fig-7">Fig. 7a</xref>. The VDs of these devices are created using the sweep-line algorithm [<xref ref-type="bibr" rid="ref-53">53</xref>,<xref ref-type="bibr" rid="ref-54">54</xref>], as shown in <xref ref-type="fig" rid="fig-7">Fig. 7b</xref>. For each device, the corresponding Voronoi circles are determined, as shown in <xref ref-type="fig" rid="fig-7">Fig. 7c</xref>, to apply the merging step. In the merging step, the Voronoi vertices are merged together, as described in Algorithm1 with respect to the UAV covering radius <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:msub><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>c</mml:mi></mml:msub></mml:math></inline-formula>, as shown in <xref ref-type="fig" rid="fig-7">Fig. 7d</xref>. Once the clusters of devices are obtained, the proposed GPU-based particle swarm algorithm is applied to obtain the shortest path for the UAV, as shown in <xref ref-type="fig" rid="fig-7">Fig. 7e</xref>.</p>
<fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>(a) The set of devices, (b) the Voronoi diagram of the devices, (c) the Voronoi vertices (red) and their corresponding Voronoi circles, (d) the initial partitioning of the devices, and (e) the shortest path</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-7.png"/>
</fig>
<p>Moreover, we compare the proposed optimization of our system <italic>vs.</italic> a GA. In fact, the GA is a metaheuristic optimization approach based on natural reproduction phenomena. The GA simulates the three main Darwinian operators of natural evolution, namely, selection of the fittest, crossover, and mutation operators. The algorithm starts by randomly initializing an initial population and selecting the fittest individuals for reproduction (applying the crossover and mutation) of the next generation offspring. The individual structure is called a chromosome. In our experiments, we use a chromosome structure similar to the proposed particle structure, as described in <xref ref-type="sec" rid="s4_2_3">Section 4.2.3</xref>, and apply the classical GA operators. <xref ref-type="fig" rid="fig-8">Fig. 8</xref> shows a comparison of the proposed optimization and a GA. The population size is 800 particles (or individuals for GA). <xref ref-type="fig" rid="fig-8">Fig. 8</xref> shows that the proposed GPU-based PSO has a higher convergence rate than the GA.</p>
<fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>A comparison between the proposed GPU-based PSO (red) and a GA (blue). The GPU-based PSO converges faster to the optimal value than the GA </title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMES_20639-fig-8.png"/>
</fig>
<p>The analysis of the computational time shows that the GPU architecture speeds up calculation, as presented in <xref ref-type="table" rid="table-4">Table 4</xref>. The columns from left to right are the number of wireless devices, the Voronoi construction time, the partitioning time, and the optimization time. The number of iterations and swarm size are set to 1000 and 800, respectively. The timings presented in <xref ref-type="table" rid="table-4">Table 4</xref> show that the optimization process incurs the main bulk of the computational cost of the proposed approach. In addition, when the number of wireless devices increases, the dimensionality of the problem also increases, and the optimization step is the most strongly affected portion of the proposed approach. However, due to the high performance of the GPU architecture, the performance difference is negligible.</p>
<table-wrap id="table-4">
<label>Table 4</label>
<caption>
<title>The timing (in msec) of the proposed approach for different numbers of wireless devices (positioned randomly)</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead valign="bottom">
<tr>
<td>#<italic>D</italic></td>
<td colspan="2">CPU</td>
<td>GPU</td>
</tr>
</thead>
<tbody>
<tr>
<td/>
<td>VD</td>
<td>Part</td>
<td>PSO</td>
</tr>
<tr>
<td/>
</tr>
<tr>
<td>50</td>
<td>8</td>
<td>10</td>
<td>516</td>
</tr>
<tr>
<td>100</td>
<td>8.8</td>
<td>14</td>
<td>1350</td>
</tr>
<tr>
<td>150</td>
<td>9.5</td>
<td>19</td>
<td>2020</td>
</tr>
<tr>
<td>200</td>
<td>10</td>
<td>26</td>
<td>2784</td>
</tr>
<tr>
<td>250</td>
<td>10.4</td>
<td>29</td>
<td>3406</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s6">
<label>6</label>
<title>Conclusion</title>
<p>This paper proposed a UCMEC system to improve the performance of offloading tasks from mobile devices with the goal of minimizing the task delay and the energy consumption of the system. The proposed system partitions the ground devices into regions where the UAV can hover over each region to process the offloaded tasks. A VD is used for the partitioning process. The UAV trajectory over the regions is optimized using a GPU-based PSO. The performance of the proposed system was validated by comparison with other algorithms in the literature.</p>
<p>The limitation of the proposed offloading process is that it is valid only for stationary devices. In other words, it does not take into account the dynamic positioning of the ground sensors. In addition, the performance of the PSO in defining the optimal clustering and the shortest path of the UAV is very sensitive to the intrinsic parameters of the PSO, namely, the inertia, cognitive, and social parameters. In fact, this is a general drawback for all metaheuristic approaches. Our future work will consider the mobility of ground devices as well as the adaptive setting of the algorithm parameters.</p></sec>
</body>
<back>
<fn-group><fn fn-type="other"><p><bold>Funding Statement:</bold> This work was funded by the University of Jeddah, Saudi Arabia, under Grant No. (UJ-20-102-DR). The authors, therefore, acknowledge the technical and financial support by the University.</p></fn>
<fn fn-type="conflict"><p><bold>Conflicts of Interest:</bold> The authors declare that they have no conflicts of interest to report regarding the present study.</p></fn></fn-group>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>1.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hussein</surname>, <given-names>M. K.</given-names></string-name>, <string-name><surname>Mousa</surname>, <given-names>M. H.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Efficient task offloading for IoT-based applications in fog computing using ant colony optimization</article-title>. <source>IEEE Access</source><italic>,</italic> <volume>8</volume><italic>,</italic> <fpage>37191</fpage>&#x2013;<lpage>37201</lpage>. DOI <pub-id pub-id-type="doi">10.1109/Access.6287639</pub-id>.</mixed-citation></ref>
<ref id="ref-2"><label>2.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Jiang</surname>, <given-names>E.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>J.</given-names></string-name></person-group> (<year>2021</year>). <article-title>Decomposition-based multi-objective optimization for energy-aware distributed hybrid flow shop scheduling with multiprocessor tasks</article-title>. <source>Tsinghua Science and Technology</source><italic>,</italic> <volume>26</volume><issue>(5)</issue><italic>,</italic> <fpage>646</fpage>&#x2013;<lpage>663</lpage>. DOI <pub-id pub-id-type="doi">10.26599/TST.2021.9010007</pub-id>.</mixed-citation></ref>
<ref id="ref-3"><label>3.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Xu</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Yao</surname>, <given-names>L.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2022</year>). <article-title>Artificial intelligence for edge service optimization in internet of vehicles: A survey</article-title>. <source>Tsinghua Science and Technology</source><italic>,</italic> <volume>27</volume><issue>(2)</issue><italic>,</italic> <fpage>270</fpage>&#x2013;<lpage>287</lpage>. DOI <pub-id pub-id-type="doi">10.26599/TST.2020.9010025</pub-id>.</mixed-citation></ref>
<ref id="ref-4"><label>4.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>J.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2017</year>). <article-title>A survey on mobile edge networks: Convergence of computing, caching and communications</article-title>. <source>IEEE Access</source><italic>,</italic> <volume>5</volume><italic>,</italic> <fpage>6757</fpage>&#x2013;<lpage>6779</lpage>. DOI <pub-id pub-id-type="doi">10.1109/ACCESS.2017.2685434</pub-id>.</mixed-citation></ref>
<ref id="ref-5"><label>5.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Mabrouki</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Azrour</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Dhiba</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Farhaoui</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Hajjaji</surname>, <given-names>S. E.</given-names></string-name></person-group> (<year>2021</year>). <article-title>IoT-Based data logger for weather monitoring using arduino-based wireless sensor networks with remote graphical application and alerts</article-title>. <source>Big Data Mining and Analytics</source><italic>,</italic> <volume>4</volume><issue>(1)</issue><italic>,</italic> <fpage>25</fpage>&#x2013;<lpage>32</lpage>. DOI <pub-id pub-id-type="doi">10.26599/BDMA.2020.9020018</pub-id>.</mixed-citation></ref>
<ref id="ref-6"><label>6.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Malek</surname>, <given-names>Y. N.</given-names></string-name>, <string-name><surname>Najib</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Bakhouya</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Essaaidi</surname>, <given-names>M.</given-names></string-name></person-group> (<year>2021</year>). <article-title>Multivariate deep learning approach for electric vehicle speed forecasting</article-title>. <source>Big Data Mining and Analytics</source><italic>,</italic> <volume>4</volume><issue>(1)</issue><italic>,</italic> <fpage>56</fpage>&#x2013;<lpage>64</lpage>. DOI <pub-id pub-id-type="doi">10.26599/BDMA.2020.9020027</pub-id>.</mixed-citation></ref>
<ref id="ref-7"><label>7.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Mohamed</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Al-Jaroodi</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Jawhar</surname>, <given-names>I.</given-names></string-name>, <string-name><surname>Noura</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Mahmoud</surname>, <given-names>S.</given-names></string-name></person-group> (<year>2017</year>). <article-title>UAVFog: A UAV-based fog computing for internet of things</article-title>. <conf-name>2017 IEEE SmartWorld, Ubiquitous Intelligence &#x0026; Computing, Advanced &#x0026; Trusted Computed, Scalable Computing &#x0026; Communications, Cloud &#x0026; Big Data Computing, Internet of People and Smart City Innovation (SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI)</conf-name>, <publisher-loc>San Francisco, CA, USA</publisher-loc>, <publisher-name>IEEE</publisher-name>. <uri>https://ieeexplore.ieee.org/document/8397657/</uri>.</mixed-citation></ref>
<ref id="ref-8"><label>8.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cheng</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Xu</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Shi</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Zhou</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>N.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2018</year>). <article-title>Air-ground integrated mobile edge networks: Architecture, challenges, and opportunities</article-title>. <source>IEEE Communications Magazine</source><italic>,</italic> <volume>56</volume><issue>(8)</issue><italic>,</italic> <fpage>26</fpage>&#x2013;<lpage>32</lpage>. DOI <pub-id pub-id-type="doi">10.1109/MCOM.35</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>9.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Song</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Xu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Rafique</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>X.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2021</year>). <article-title>Bidirectional GRU networks-based next POI category prediction for healthcare</article-title>. <source>International Journal of Intelligent Systems</source>. DOI <pub-id pub-id-type="doi">10.1002/int.22710</pub-id>.</mixed-citation></ref>
<ref id="ref-10"><label>10.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Yuan</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>He</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Qi</surname>, <given-names>L.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2022</year>). <article-title>CSEdge: Enabling collaborative edge storage for multi-access edge computing based on blockchain</article-title>. <source>IEEE Transactions on Parallel and Distributed Systems</source><italic>,</italic> <volume>33</volume><issue>(8)</issue><italic>,</italic> <fpage>1873</fpage>&#x2013;<lpage>1887</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TPDS.2021.3131680</pub-id>.</mixed-citation></ref>
<ref id="ref-11"><label>11.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Yin</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Qi</surname>, <given-names>Q.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Privacy-aware offloading for training tasks of generative adversarial network in edge computing</article-title>. <source>Information Sciences</source><italic>,</italic> <volume>532</volume><italic>,</italic> <fpage>1</fpage>&#x2013;<lpage>15</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.ins.2020.04.026</pub-id>.</mixed-citation></ref>
<ref id="ref-12"><label>12.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Bejaoui</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Park</surname>, <given-names>K. H.</given-names></string-name>, <string-name><surname>Alouini</surname>, <given-names>M. S.</given-names></string-name></person-group> (<year>2020</year>). <article-title>A QoS-oriented trajectory optimization in swarming unmanned-aerial-vehicles communications</article-title>. <source>IEEE Wireless Communications Letters</source><italic>,</italic> <volume>9</volume><issue>(6)</issue><italic>,</italic> <fpage>791</fpage>&#x2013;<lpage>794</lpage>. DOI <pub-id pub-id-type="doi">10.1109/LWC.5962382</pub-id>.</mixed-citation></ref>
<ref id="ref-13"><label>13.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhu</surname>, <given-names>B. J.</given-names></string-name>, <string-name><surname>Hou</surname>, <given-names>Z. X.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>Y. F.</given-names></string-name>, <string-name><surname>Shan</surname>, <given-names>S. Q.</given-names></string-name></person-group> (<year>2015</year>). <article-title>The direction zone of engineless UAVs in dynamic soaring</article-title>. <source>Computer Modeling in Engineering and Sciences</source><italic>,</italic> <volume>105</volume><issue>(6)</issue><italic>,</italic> <fpage>467</fpage>&#x2013;<lpage>490</lpage>. DOI <pub-id pub-id-type="doi">10.3970/cmes.2015.105.467</pub-id>.</mixed-citation></ref>
<ref id="ref-14"><label>14.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhu</surname>, <given-names>B. J.</given-names></string-name>, <string-name><surname>Hou</surname>, <given-names>Z. X.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>X. Z.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>Q. Y.</given-names></string-name></person-group> (<year>2015</year>). <article-title>Long endurance and long distance trajectory optimization for engineless UAV by dynamic soaring</article-title>. <source>Computer Modeling in Engineering &#x0026; Sciences</source><italic>,</italic> <volume>106</volume><issue>(5)</issue><italic>,</italic> <fpage>357</fpage>&#x2013;<lpage>377</lpage>. DOI <pub-id pub-id-type="doi">10.3970/cmes.2015.106.357</pub-id>.</mixed-citation></ref>
<ref id="ref-15"><label>15.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Liu</surname>, <given-names>D. N.</given-names></string-name>, <string-name><surname>Hou</surname>, <given-names>Z. X.</given-names></string-name>, <string-name><surname>Guo</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>X. X.</given-names></string-name>, <string-name><surname>Gao</surname>, <given-names>X. Z.</given-names></string-name></person-group> (<year>2016</year>). <article-title>Permissible wind conditions for optimal dynamic soaring with a small unmanned aerial vehicle</article-title>. <source>Computer Modeling in Engineering &#x0026; Sciences</source><italic>,</italic> <volume>111</volume><issue>(6)</issue><italic>,</italic> <fpage>531</fpage>&#x2013;<lpage>565</lpage>. DOI <pub-id pub-id-type="doi">10.3970/cmes.2016.111.531</pub-id>.</mixed-citation></ref>
<ref id="ref-16"><label>16.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Aggarwal</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Kumar</surname>, <given-names>N.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Path planning techniques for unmanned aerial vehicles: A review, solutions, and challenges</article-title>. <source>Computer Communications</source><italic>,</italic> <volume>149</volume><italic>,</italic> <fpage>270</fpage>&#x2013;<lpage>299</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.comcom.2019.10.014</pub-id>.</mixed-citation></ref>
<ref id="ref-17"><label>17.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>T.</given-names></string-name>, <string-name><surname>Zhong</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>W.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2019</year>). <article-title>Aeronautical AdHoc networking for the internet-above-the-clouds</article-title>. <source>Proceedings of the IEEE</source><italic>,</italic> <volume>107</volume><issue>(5)</issue><italic>,</italic> <fpage>868</fpage>&#x2013;<lpage>911</lpage>. DOI <pub-id pub-id-type="doi">10.1109/PROC.5</pub-id>.</mixed-citation></ref>
<ref id="ref-18"><label>18.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Qi</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Chu</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>H.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2019</year>). <article-title>Secrecy energy efficiency performance in communication networks with mobile sinks</article-title>. <source>Physical Communication</source><italic>,</italic> <volume>32</volume><italic>,</italic> <fpage>41</fpage>&#x2013;<lpage>49</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.phycom.2018.06.009</pub-id>.</mixed-citation></ref>
<ref id="ref-19"><label>19.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Jiang</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Wei</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Pan</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>H.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2019</year>). <article-title>Joint UAV hovering altitude and power control for space-air-ground IoT networks</article-title>. <source>IEEE Internet of Things Journal</source><italic>,</italic> <volume>6</volume><issue>(2)</issue><italic>,</italic> <fpage>1741</fpage>&#x2013;<lpage>1753</lpage>. DOI <pub-id pub-id-type="doi">10.1109/JIoT.6488907</pub-id>.</mixed-citation></ref>
<ref id="ref-20"><label>20.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Fu</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Tang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Zhao</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>S.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Joint unmanned aerial vehicle (UAV) deployment and power control for internet of things networks</article-title>. <source>IEEE Transactions on Vehicular Technology</source><italic>,</italic> <volume>69</volume><issue>(4)</issue><italic>,</italic> <fpage>4367</fpage>&#x2013;<lpage>4378</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TVT.25</pub-id>.</mixed-citation></ref>
<ref id="ref-21"><label>21.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Mao</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>You</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Letaief</surname>, <given-names>K. B.</given-names></string-name></person-group> (<year>2017</year>). <article-title>A survey on mobile edge computing: The communication perspective</article-title>. <source>IEEE Communications Surveys &#x0026; Tutorials</source><italic>,</italic> <volume>19</volume><issue>(4)</issue><italic>,</italic> <fpage>2322</fpage>&#x2013;<lpage>2358</lpage>. DOI <pub-id pub-id-type="doi">10.1109/COMST.2017.2745201</pub-id>.</mixed-citation></ref>
<ref id="ref-22"><label>22.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhou</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Hu</surname>, <given-names>R. Q.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>Y.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Mobile edge computing in unmanned aerial vehicle networks</article-title>. <source>IEEE Wireless Communications</source><italic>,</italic> <volume>27</volume><issue>(1)</issue><italic>,</italic> <fpage>140</fpage>&#x2013;<lpage>146</lpage>. DOI <pub-id pub-id-type="doi">10.1109/MWC.7742</pub-id>.</mixed-citation></ref>
<ref id="ref-23"><label>23.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Tan</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>L.</given-names></string-name></person-group> (<year>2018</year>). <article-title>Particle swarm optimization algorithm: An overview</article-title>. <source>Soft Computing</source><italic>,</italic> <volume>22</volume><issue>(2)</issue><italic>,</italic> <fpage>387</fpage>&#x2013;<lpage>408</lpage>. DOI <pub-id pub-id-type="doi">10.1007/s00500-016-2474-6</pub-id>.</mixed-citation></ref>
<ref id="ref-24"><label>24.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Yu</surname>, <given-names>Y.</given-names></string-name></person-group> (<year>2016</year>). <article-title>Mobile edge computing towards 5G: Vision, recent progress, and open challenges</article-title>. <source>China Communications</source><italic>,</italic> <volume>13</volume><issue>(Supplement 2)</issue><italic>,</italic> <fpage>89</fpage>&#x2013;<lpage>99</lpage>. DOI <pub-id pub-id-type="doi">10.1109/CC.6245522</pub-id>.</mixed-citation></ref>
<ref id="ref-25"><label>25.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zakaryia</surname>, <given-names>S. A.</given-names></string-name>, <string-name><surname>Ahmed</surname>, <given-names>S. A.</given-names></string-name>, <string-name><surname>Hussein</surname>, <given-names>M. K.</given-names></string-name></person-group> (<year>2021</year>). <article-title>Evolutionary offloading in an edge environment</article-title>. <source>Egyptian Informatics Journal</source><italic>,</italic> <volume>22</volume><issue>(3)</issue><italic>,</italic> <fpage>257</fpage>&#x2013;<lpage>267</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.eij.2020.09.003</pub-id>.</mixed-citation></ref>
<ref id="ref-26"><label>26.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Nguyen</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Khanh</surname>, <given-names>T. T.</given-names></string-name>, <string-name><surname>van Nam</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Thu</surname>, <given-names>N. T.</given-names></string-name>, <string-name><surname>Seon Hong</surname>, <given-names>C.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Towards flying mobile edge computing</article-title>. <conf-name>2020 International Conference on Information Networking (ICOIN)</conf-name>, <publisher-loc>Barcelona, Spain</publisher-loc>, <publisher-name>IEEE</publisher-name>. <uri>https://ieeexplore.ieee.org/document/9016537/</uri>.</mixed-citation></ref>
<ref id="ref-27"><label>27.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hu</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Cai</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Yu</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Qin</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Zhao</surname>, <given-names>M.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2019</year>). <article-title>Joint offloading and trajectory design for UAV-enabled mobile edge computing systems</article-title>. <source>IEEE Internet of Things Journal</source><italic>,</italic> <volume>6</volume><issue>(2)</issue><italic>,</italic> <fpage>1879</fpage>&#x2013;<lpage>1892</lpage>. DOI <pub-id pub-id-type="doi">10.1109/JIoT.6488907</pub-id>.</mixed-citation></ref>
<ref id="ref-28"><label>28.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Cao</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Noor</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Alamoudi</surname>, <given-names>T. A.</given-names></string-name>, <string-name><surname>Nour</surname>, <given-names>R.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Agent-enabled task offloading in UAV-aided mobile edge computing</article-title>. <source>Computer Communications</source><italic>,</italic> <volume>149</volume><italic>,</italic> <fpage>324</fpage>&#x2013;<lpage>331</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.comcom.2019.10.021</pub-id>.</mixed-citation></ref>
<ref id="ref-29"><label>29.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Tang</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>J.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Task number maximization offloading strategy seamlessly adapted to UAV scenario</article-title>. <source>Computer Communications</source><italic>,</italic> <volume>151</volume><italic>,</italic> <fpage>19</fpage>&#x2013;<lpage>30</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.comcom.2019.12.018</pub-id>.</mixed-citation></ref>
<ref id="ref-30"><label>30.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Yang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Yao</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Jiang</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Benslimane</surname>, <given-names>A.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Multi-UAV-enabled load-balance mobile-edge computing for IoT networks</article-title>. <source>IEEE Internet of Things Journal</source><italic>,</italic> <volume>7</volume><issue>(8)</issue><italic>,</italic> <fpage>6898</fpage>&#x2013;<lpage>6908</lpage>. DOI <pub-id pub-id-type="doi">10.1109/JIoT.6488907</pub-id>.</mixed-citation></ref>
<ref id="ref-31"><label>31.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Cheng</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Gao</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Zhao</surname>, <given-names>L.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>Energy-efficient UAV-assisted mobile edge computing: Resource allocation and trajectory optimization</article-title>. <source>IEEE Transactions on Vehicular Technology</source><italic>,</italic> <volume>69</volume><issue>(3)</issue><italic>,</italic> <fpage>3424</fpage>&#x2013;<lpage>3438</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TVT.25</pub-id>.</mixed-citation></ref>
<ref id="ref-32"><label>32.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Ru</surname>, <given-names>Z. Y.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>P. Q.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Joint deployment and task scheduling optimization for large-scale mobile users in multi-UAV-enabled mobile edge computing</article-title>. <source>IEEE Transactions on Cybernetics</source><italic>,</italic> <volume>50</volume><issue>(9)</issue><italic>,</italic> <fpage>3984</fpage>&#x2013;<lpage>3997</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TCYB.6221036</pub-id>.</mixed-citation></ref>
<ref id="ref-33"><label>33.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chen</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Luo</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>Q.</given-names></string-name>, <string-name><surname>Cao</surname>, <given-names>B.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2020</year>). <article-title>An intelligent task offloading algorithm (iTOA) for UAV edge computing network</article-title>. <source>Digital Communications and Networks</source><italic>,</italic> <volume>6</volume><issue>(4)</issue><italic>,</italic> <fpage>433</fpage>&#x2013;<lpage>443</lpage>. DOI <pub-id pub-id-type="doi">10.1016/j.dcan.2020.04.008</pub-id>.</mixed-citation></ref>
<ref id="ref-34"><label>34.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hu</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Wong</surname>, <given-names>K. K.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Zheng</surname>, <given-names>Z.</given-names></string-name></person-group> (<year>2019</year>). <article-title>UAV-Assisted relaying and edge computing: Scheduling and trajectory optimization</article-title>. <source>IEEE Transactions on Wireless Communications</source><italic>,</italic> <volume>18</volume><issue>(10)</issue><italic>,</italic> <fpage>4738</fpage>&#x2013;<lpage>4752</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TWC.7693</pub-id>.</mixed-citation></ref>
<ref id="ref-35"><label>35.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Wen</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Lu</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Jing</surname>, <given-names>W.</given-names></string-name></person-group> (<year>2020</year>). <article-title>An energy efficient design of computation offloading enabled by UAV</article-title>. <source>Sensors</source><italic>,</italic> <volume>20</volume><issue>(12)</issue><italic>,</italic> <fpage>3363</fpage>. DOI <pub-id pub-id-type="doi">10.3390/s20123363</pub-id>.</mixed-citation></ref>
<ref id="ref-36"><label>36.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhan</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Hu</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Sui</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Niyato</surname>, <given-names>D.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Completion time and energy optimization in the UAV-enabled mobile-edge computing system</article-title>. <source>IEEE Internet of Things Journal</source><italic>,</italic> <volume>7</volume><issue>(8)</issue><italic>,</italic> <fpage>7808</fpage>&#x2013;<lpage>7822</lpage>. DOI <pub-id pub-id-type="doi">10.1109/JIoT.6488907</pub-id>.</mixed-citation></ref>
<ref id="ref-37"><label>37.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Guo</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>J.</given-names></string-name></person-group> (<year>2020</year>). <article-title>UAV-Enhanced intelligent offloading for internet of things at the edge</article-title>. <source>IEEE Transactions on Industrial Informatics</source><italic>,</italic> <volume>16</volume><issue>(4)</issue><italic>,</italic> <fpage>2737</fpage>&#x2013;<lpage>2746</lpage>. DOI <pub-id pub-id-type="doi">10.1109/TII.9424</pub-id>.</mixed-citation></ref>
<ref id="ref-38"><label>38.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Yu</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Gong</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Gong</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Guo</surname>, <given-names>Y.</given-names></string-name></person-group> (<year>2020</year>). <article-title>Joint task offloading and resource allocation in UAV-enabled mobile edge computing</article-title>. <source>IEEE Internet of Things Journal</source><italic>,</italic> <volume>7</volume><issue>(4)</issue><italic>,</italic> <fpage>3147</fpage>&#x2013;<lpage>3159</lpage>. DOI <pub-id pub-id-type="doi">10.1109/JIoT.6488907</pub-id>.</mixed-citation></ref>
<ref id="ref-39"><label>39.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lan</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>Q.</given-names></string-name></person-group> (<year>2019</year>). <article-title>Collaborative computation offloading and resource allocation in cache-aided hierarchical edge-cloud systems</article-title>. <source>Electronics</source><italic>,</italic> <volume>8</volume><issue>(12)</issue><italic>,</italic> <fpage>1430</fpage>. DOI <pub-id pub-id-type="doi">10.3390/electronics8121430</pub-id>.</mixed-citation></ref>
<ref id="ref-40"><label>40.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wang</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Pan</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>Xu</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Aslam</surname>, <given-names>N.</given-names></string-name> <etal>et al.</etal></person-group> (<year>2021</year>). <article-title>Deep reinforcement learning based dynamic trajectory control for UAV-assisted mobile edge computing</article-title>. <source>IEEE Transactions on Mobile Computing</source><italic>,</italic> <fpage>1</fpage>. DOI <pub-id pub-id-type="doi">10.1109/TMC.7755</pub-id>.</mixed-citation></ref>
<ref id="ref-41"><label>41.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>He</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Zeng</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>R.</given-names></string-name></person-group> (<year>2018</year>). <article-title>Joint altitude and beamwidth optimization for UAV-enabled multiuser communications</article-title>. <source>IEEE Communications Letters</source><italic>,</italic> <volume>22</volume><issue>(2)</issue><italic>,</italic> <fpage>344</fpage>&#x2013;<lpage>347</lpage>. DOI <pub-id pub-id-type="doi">10.1109/LCOMM.2017.2772254</pub-id>.</mixed-citation></ref>
<ref id="ref-42"><label>42.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Wu</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Xiao</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Cuthbert</surname>, <given-names>L.</given-names></string-name></person-group> (<year>2019</year>). <article-title>Energy consumption and completion time tradeoff in rotary-wing UAV enabled WPCN</article-title>. <source>IEEE Access</source><italic>,</italic> <volume>7</volume><italic>,</italic> <fpage>79617</fpage>&#x2013;<lpage>79635</lpage>. DOI <pub-id pub-id-type="doi">10.1109/Access.6287639</pub-id>.</mixed-citation></ref>
<ref id="ref-43"><label>43.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><surname>Aurenhammer</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Klein</surname>, <given-names>R.</given-names></string-name></person-group> (<year>2000</year>). <chapter-title>Voronoi diagrams**Partially supported by the Deutsche Forschungsgemeinschaft, grant K1 655 2-2.</chapter-title> <source>Handbook of Computational Geometry</source>, pp. <fpage>201</fpage>&#x2013;<lpage>290</lpage>. <publisher-loc>North-Holland</publisher-loc>: <publisher-name>Elsevier</publisher-name>. <uri>https://linkinghub.elsevier.com/retrieve/pii/B9780444825377500061</uri>.</mixed-citation></ref>
<ref id="ref-44"><label>44.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Guiling</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Guohong</surname>, <given-names>C.</given-names></string-name>, <string-name><surname>LaPorta</surname>, <given-names>T.</given-names></string-name></person-group> (<year>2003</year>). <article-title>A bidding protocol for deploying mobile sensors</article-title>. <conf-name>11th IEEE International Conference on Network Protocols</conf-name>, USA, <uri>http://ieeexplore.ieee.org/document/1249781</uri>.</mixed-citation></ref>
<ref id="ref-45"><label>45.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Edla</surname>, <given-names>D. R.</given-names></string-name>, <string-name><surname>Jana</surname>, <given-names>P. K.</given-names></string-name></person-group> (<year>2012</year>). <article-title>A novel clustering algorithm using voronoi diagram</article-title>. <conf-name>Seventh International Conference on Digital Information Management (ICDIM 2012)</conf-name>, Macau, Macao, <publisher-name>IEEE</publisher-name>. <uri>http://ieeexplore.ieee.org/document/6360125/</uri>.</mixed-citation></ref>
<ref id="ref-46"><label>46.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Mousa</surname>, <given-names>M. H.</given-names></string-name>, <string-name><surname>Hussein</surname>, <given-names>M. K.</given-names></string-name></person-group> (<year>2021</year>). <article-title>High-performance simplification of triangular surfaces using a GPU</article-title>. <source>PLoS One</source><italic>,</italic> <volume>16</volume><issue>(8)</issue><italic>,</italic> <fpage>e0255832</fpage>. DOI <pub-id pub-id-type="doi">10.1371/journal.pone.0255832</pub-id>.</mixed-citation></ref>
<ref id="ref-47"><label>47.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Kennedy</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Eberhart</surname>, <given-names>R.</given-names></string-name></person-group> (<year>1995</year>). <article-title>Particle swarm optimization</article-title>. <conf-name>International Conference on Neural Networks</conf-name>, vol. 4. <publisher-loc>Perth, WA, Australia</publisher-loc>, <publisher-name>IEEE</publisher-name>. <uri>http://ieeexplore.ieee.org/document/488968/</uri>.</mixed-citation></ref>
<ref id="ref-48"><label>48.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cui</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Shu</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Song</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>Y.</given-names></string-name></person-group> (<year>2017</year>). <article-title>Parameter selection and performance comparison of particle swarm optimization in sensor networks localization</article-title>. <source>Sensors</source><italic>,</italic> <volume>17</volume><issue>(3)</issue><italic>,</italic> <fpage>487</fpage>. DOI <pub-id pub-id-type="doi">10.3390/s17030487</pub-id>.</mixed-citation></ref>
<ref id="ref-49"><label>49.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lalwani</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Sharma</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Satapathy</surname>, <given-names>S. C.</given-names></string-name>, <string-name><surname>Deep</surname>, <given-names>K.</given-names></string-name>, <string-name><surname>Bansal</surname>, <given-names>J. C.</given-names></string-name></person-group> (<year>2019</year>). <article-title>A survey on parallel particle swarm optimization algorithms</article-title>. <source>Arabian Journal for Science and Engineering</source><italic>,</italic> <volume>44</volume><issue>(4)</issue><italic>,</italic> <fpage>2899</fpage>&#x2013;<lpage>2923</lpage>. DOI <pub-id pub-id-type="doi">10.1007/s13369-018-03713-6</pub-id>.</mixed-citation></ref>
<ref id="ref-50"><label>50.</label><mixed-citation publication-type="other"><person-group person-group-type="author"><collab>NVIDIA</collab></person-group> (<year>2021</year>). Compute Unified Device Architecture (CUDA) Programming Guide. <uri>https://docs.nvidia.com/cuda/</uri>.</mixed-citation></ref>
<ref id="ref-51"><label>51.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Elloumi</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Escrig</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Dhaou</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Idoudi</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Saidane</surname>, <given-names>L. A.</given-names></string-name></person-group> (<year>2017</year>). <article-title>Designing an energy efficient UAV tracking algorithm</article-title>. <conf-name>2017 13th International Wireless Communications and Mobile Computing Conference (IWCMC)</conf-name>, Valencia, Spain, <publisher-name>IEEE</publisher-name>. <uri>http://ieeexplore.ieee.org/document/7986274/</uri>.</mixed-citation></ref>
<ref id="ref-52"><label>52.</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Al-Shabi</surname>, <given-names>M. A.</given-names></string-name>, <string-name><surname>Hatamleh</surname>, <given-names>K. S.</given-names></string-name>, <string-name><surname>Asad</surname>, <given-names>A. A.</given-names></string-name></person-group> (<year>2013</year>). <article-title>UAV dynamics model parameters estimation techniques: A comparison study</article-title>. <conf-name>2013 IEEE Jordan Conference on Applied Electrical Engineering and Computing Technologies (AEECT)</conf-name>, Amman, Jordan, <publisher-name>IEEE</publisher-name>. <uri>http://ieeexplore.ieee.org/document/6716436/</uri>.</mixed-citation></ref>
<ref id="ref-53"><label>53.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Fortune</surname>, <given-names>S.</given-names></string-name></person-group> (<year>1987</year>). <article-title>A sweepline algorithm for voronoi diagrams</article-title>. <source>Algorithmica</source><italic>,</italic> <volume>2</volume><issue>(1&#x2013;4)</issue><italic>,</italic> <fpage>153</fpage>&#x2013;<lpage>174</lpage>. DOI <pub-id pub-id-type="doi">10.1007/BF01840357</pub-id>.</mixed-citation></ref>
<ref id="ref-54"><label>54.</label><mixed-citation publication-type="other"><person-group person-group-type="author"><collab>Software</collab></person-group> (<year>2019</year>). <article-title>A C implementation for creating 2D voronoi diagrams</article-title>. <uri>https://github.com/JCash/voronoi</uri>.</mixed-citation></ref>
</ref-list>
</back>
</article>