计算机系统应用  2022, Vol. 31 Issue (8): 327-337   PDF    
多设备间任务依赖的最佳卸载决策和资源分配
胡恒, 金凤林, 谢钧, 刘莹     
陆军工程大学 指挥控制工程学院, 南京 210007
摘要:考虑了多个设备的移动边缘计算(mobile edge computing, MEC)与端对端(device-to-device, D2D)技术协作网络, 其中多个无线设备的最终输出作为另一个设备上某个子任务的输入. 为了最小化无线设备的能耗和任务完成时间的加权和, 研究了最优的资源分配(卸载发射功率和本地CPU频率)和任务卸载决策问题. 首先固定卸载决策, 推导出卸载发射功率和本地CPU频率的闭合表达式, 运用凸优化方法求出该问题的解. 然后基于一次爬升策略提出了一种低复杂度线性搜索算法, 该算法可以在线性时间内获得最佳卸载决策. 数值结果表明, 该策略的性能明显优于其他有代表性的基准测试.
关键词: 移动边缘计算    移动云计算    计算卸载    卸载决策    D2D技术    
Optimal Offloading Decision and Resource Allocation for Task Dependencies among Multiple Devices
HU Heng, JIN Feng-Lin, XIE Jun, LIU Ying     
Command & Control Engineering College, Army Engineering University of PLA, Nanjing 210007, China
Abstract: The collaboration network of mobile edge computing (MEC) and device-to-device (D2D) technology takes into consideration multiple devices, where the final output of multiple wireless devices is used as the input of a subtask on another device. The optimal resource allocation (offloading transmit power and local CPU frequency) and task offloading decisions are studied to minimize the weighted sum of the energy consumption of wireless devices and the task completion time. First, given an offloading decision, the closed expression of offloading transmit power and local CPU frequency are derived, and the convex optimization method is used to find the solution to the problem. Then, on the basis of the one-climb policy, a low-complexity linear search algorithm is proposed, which can obtain the best offloading decision in linear time. Numerical results show that the performance of this strategy is significantly better than that of other representative benchmark tests.
Key words: mobile edge computing (MEC)     mobile cloud computing     computation offloading     offloading decision     device-to-device (D2D) technology    

随着物联网技术和5G技术的发展, 产生的各种新型应用, 对网络的时延和带宽提出了更高的要求. 但由于终端设备的计算和存储能力的限制, 无法处理和存储如此庞大的数据. 因此移动边缘计算[1]应运而生, MEC能有效解决时延长、能耗高和数据不安全等问题. 其中计算卸载技术[2]作为MEC的关键技术之一, 通过合理的卸载决策和资源分配策略将终端设备上运行的任务卸载到边缘服务器, 能够减少任务完成时延和设备的能耗, 提高设备性能. 而通过将D2D技术与MEC结合, 可以更进一步降低数据传输时延和能耗.

对于计算卸载技术, 目前已经出现了很多研究成果对其进行研究. 文献[3]提出了一种低复杂度的启发式算法来最小化共享频谱中的任务执行延迟. 文献[4]考虑了具有辅助节点的MEC系统, 联合优化了用户和辅助节点的计算和通信资源分配, 使总能耗降至最低. 文献[5]基于一种低复杂度的算法来降低设备能耗. 文献[6]使用线性规划的方法解决卸载决策、延迟和能耗联合优化问题. 文献[7]为了最大程度地减少任务等待时间和能耗, 提出了一种启发式算法, 该算法保证了子任务之间的依赖性并提高了任务效率. 文献[8]提出了一种基于Lyapunov优化的低复杂度的动态计算卸载在线算法, 获得了最优的卸载策略. 文献[9]考虑了包含多个忙碌智能设备和多个空闲智能设备的D2D与MEC协作系统, 基于块坐标下降法和凸优化技术的两阶段迭代算法解决卸载决策和资源分配的联合优化问题, 获得最佳卸载策略和资源分配策略, 最小化了系统的总能耗. 文献[10]建立了一个具有通信资源和计算资源约束的混合整数非线性问题, 开发了一种优化算法来解决此问题. 文献[11-13]同样考虑了在MEC环境下引入D2D技术进行协作, 来考虑任务的卸载情况 .

然而以上文献都仅考虑了单个设备上任务的卸载情况. 对于不同设备之间任务具有依赖性的研究非常少, 几乎没有. 实际上, 在不同设备上执行的任务通常也是具有相关依赖性的. 文献[14]虽然考虑了MEC系统环境下两个不同设备之间的任务相关性, 但没有考虑与D2D技术进行协作来优化系统性能. 虽然业内也在MEC环境中引入了D2D技术来优化系统性能, 但是对于MEC与D2D技术协作网络环境中不同设备任务之间任务具有相关性的研究, 就作者目前所知, 还没有相关文献对此方面进行研究. 同时, 在优化卸载决策方面文献[14]提出的算法复杂度仍然很高, 本文提出的线性搜索算法更进一步的优化了卸载决策, 并且本文将场景扩展到多设备. 因此, 本文在文献[14]的基础上进行了进一步的优化研究, 联合优化了设备任务完成时延和能耗.

本文在第1节中对系统进行了分析, 建立了通信、计算和任务依赖模型. 在第2节中运用凸优化方法得到最佳资源分配. 在第3节中提出了一种降低复杂度的线性搜索算法来优化卸载决策. 最后通过仿真实验进行性能评估.

1 系统模型 1.1 MEC与D2D协作网络系统模型

本文考虑了多个设备的MEC与D2D协作网络. 如图1所示, MEC与D2D协作网络系统模型. 其中dsd2分别表示设备S、设备2与MEC服务器之间的距离, 其中, $S = 1, 3, 4, \cdots, s$ , 表示设备1, 设备3, …, 设备s, $\mathop d\nolimits_{(S, 2)} $ 表示设备 $1, 3, 4, \cdots, s$ 和设备2之间的距离.

图 1 MEC与D2D协作网络系统模型

设备S和设备2分别具有 $\mathop m\nolimits_{{s}}$ $ n $ 个要执行的任务, 其中 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 表示设备 $ S $ 的第 $ m $ 个任务. 将任务之间的依赖关系建模为顺序图, 对每个设备引入两个虚拟任务, 0为设备的输入任务, ms+1和n+1为输出任务, 如图2所示. 其中设备2的第 $ k $ 个子任务的输入依赖于设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出和设备2第k–1个任务的输出.

图 2 不同设备间调用图模型

采用 $\{ {\mathop L\nolimits_{i, j} , \mathop I\nolimits_{i, j} , \mathop O\nolimits_{i, j} } \}$ 来描述每个设备的每个任务, 其中 $ j = S $ 或2, $ j = S $ 表示设备 $S{\text{ = }}1, 3, 4, \cdots, s$ , $ j{\text{ = }}2 $ 表示设备2, $ i $ 表示设备上的任务, $\begin{gathered} i{\text{ = }}0, 1, 2, \cdots, \mathop m\nolimits_{\text{s}} {\text{+}}1 \end{gathered}$ $i{\text{ = }}0, 1, 2, \cdots, n{\text{+}}1$ . $ \begin{gathered} \mathop L\nolimits_{i, j} \end{gathered} $ 表示任务的计算量, 完成任务总共需要的CPU周期, $ \begin{gathered} \mathop I\nolimits_{i, j} \end{gathered} $ 表示计算任务的输入数据的大小, $ \begin{gathered} \mathop O\nolimits_{i, j} \end{gathered} $ 表示任务的输出数据的大小. 对于设备 $ S $ 和设备2第0个和最后一个虚拟任务计算量为0. 同时对于设备而言, 第0个任务输入数据的大小为0, 最后一个任务输出数据的大小为0. 对于设备 $ S $ 和设备2第 $ i $ 个任务的输入等于上一个任务的输出: $ \begin{gathered} \mathop I\nolimits_{i, j} = \mathop O\nolimits_{i - 1, j} \end{gathered} $ . 特别的是, 对于设备2的第 $ k $ 个任务的输入依赖于设备2的第 $ k $ –1个任务和设备 $ S $ $ \begin{gathered} \mathop m\nolimits_{\text{s}} \end{gathered} $ 个任务的输出: $\mathop I\nolimits_{k, 2} = \mathop O\nolimits_{k - 1, 2} {\text{ + }} \mathop O\nolimits_{\mathop m\nolimits_s , s}$ . 本文规定第0个和最后一个虚拟任务只能在本地执行. 同时, ai,j={0, 1}表示卸载决策: ai, j=0表示在本地执行, ai,j=1表示在服务器执行.

1.2 通信模型

对于每个设备分配带宽相等的正交信道, 用 $ W $ 表示, 卸载和上传设备之间互不干扰:

$ \mathop R\nolimits_{i, j}^u = W\mathop {\log }\nolimits_2 \left( {1 + \frac{{\mathop p\nolimits_{i, j} \mathop h\nolimits_{i, j} }}{{\mathop \sigma \nolimits^2 }}} \right) $ (1)

其中, $ \begin{gathered} \mathop p\nolimits_{i, j} \end{gathered} $ 表示设备 $ j $ 的发射功率, $ \begin{gathered} \mathop h\nolimits_{i, j}\end{gathered} $ 表示设备 $ j $ 到边缘服务器的信道增益, $ \begin{gathered} \mathop \sigma \nolimits^2 \end{gathered} $ 表示设备的噪声功率程.

下载速率为:

$ \mathop R\nolimits_{i, j}^d = W\mathop {\log }\nolimits_2 \left( {1 + \frac{{\mathop p\nolimits_0 \mathop h\nolimits_{i, j} }}{{\mathop \sigma \nolimits^2 }}} \right) $ (2)

其中, $ \mathop p\nolimits_0 $ 表示边缘服务器的固定发射功率.

设备 $ S $ 与设备2之间的传输速率为:

$ \mathop R\nolimits^{s, 2} = W\mathop {\log }\nolimits_2 \left( {1 + \frac{{\mathop p\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' \mathop h\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' }}{{\mathop \sigma \nolimits^2 }}} \right) $ (3)

其中, $\begin{gathered} \mathop p\nolimits_{\mathop m\nolimits_{{s}} + 1, 1}' \end{gathered}$ $\begin{gathered} \mathop h\nolimits_{\mathop m\nolimits_{{s}} + 1, 1}' \end{gathered}$ 分别表示设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \\end{gathered}$ 个任务的输出与设备2的第 $ k $ 个任务都在本地执行时, 设备的发射功率和此时设备间的信道增益.

信道增益为:

$ \mathop h\nolimits_{i, j} = g\mathop {\left( {\frac{{3\times\mathop {10}\nolimits^8 }}{{4\pi \mathop F\nolimits_c \mathop d\nolimits_r }}} \right)}\nolimits^{pl} $ (4)

其中, $g$ 表示天线增益, $F_c$ 表示载波频率, $d_r$ 表示距离, $d_r = d_S$ $d_2$ $d_{(S, 2)}$ , $pl$ 表示路径损耗指数.

1.3 计算模型

下面给出了执行和传输任务的时间和能耗.

本地执行任务 $ i $ 的完成时间:

$ \mathop t\nolimits_{i, j}^l = \frac{{\mathop L\nolimits_{i, j} }}{{\mathop f\nolimits_{i, j} }} $ (5)

其中, $ \mathop f\nolimits_{i, j} $ 表示执行任务i的CPU计算能力.

本地完成任务 $ i $ 所消耗的能耗:

$ \mathop e\nolimits_{i, j}^l = k\mathop L\nolimits_{i, j} \mathop {\mathop f\nolimits_{i, j} }\nolimits^2 $ (6)

其中, $ k $ 是取决于芯片架构的有效开关电容参数, 是固定常数.

服务器执行任务 $ i $ 的完成时间:

$ \mathop t\nolimits_{i, j}^c = \frac{{\mathop L\nolimits_{i, j} }}{{\mathop f\nolimits_0 }} $ (7)

其中, $ \mathop f\nolimits_0 $ 表示服务器的恒定CPU频率.

将任务 $ i $ 从设备传输到服务器的上传时间:

$ \mathop t\nolimits_{i, j}^u = \frac{{\mathop O\nolimits_{i - 1, j} }}{{\mathop R\nolimits_{i, j}^{{u}} }} $ (8)

其中, $\mathop p\nolimits_{i, j} = \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i, j} }}\left( {\mathop 2\nolimits^{\frac{{\mathop O\nolimits_{i - 1, j} }}{{W\mathop t\nolimits_{i, j}^u }}} - 1} \right)$ .

将任务 $ i $ 从设备传输到服务器的传输能耗:

$ \mathop {{e}}\nolimits_{i, j}^u = \mathop p\nolimits_{i, j} \mathop t\nolimits_{i, j}^u = \frac{{\mathop \sigma \nolimits^2 \mathop t\nolimits_{i, j}^u }}{{\mathop h\nolimits_{i, j} }}\left( {\mathop 2\nolimits^{\frac{{\mathop O\nolimits_{i - 1, j} }}{{W\mathop t\nolimits_{i, j}^u }}} - 1} \right) $ (9)

由文献[15]可知式(9)是关于 $ \mathop t\nolimits_{i, j}^u $ 的凸函数.

从服务器返回到设备的下载时间:

$ \mathop t\nolimits_{i, j}^d = \frac{{\mathop O\nolimits_{i - 1, j} }}{{\mathop R\nolimits_{i, j}^d }} $ (10)

将任务从设备 $ S $ 传输到设备2的传输时间:

$ \mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} = \frac{{\mathop O\nolimits_{\mathop m\nolimits_{{s}} , s} }}{{\mathop R\nolimits^{s, 2} }} $ (11)

其中, $\mathop p\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' = \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' }}\left( {\mathop 2\nolimits^{\frac{{\mathop O\nolimits_{\mathop m\nolimits_{{s}} , s} }}{{W\mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} }}} - 1} \right)$ .

将任务从设备 $ S $ 传输到设备2的传输能耗:

$ \mathop {{e}}\nolimits_{i, j}^{s, 2} = \mathop p\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' \mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} = \frac{{\mathop \sigma \nolimits^2 \mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} }}{{\mathop h\nolimits_{\mathop m\nolimits_{{s}} + 1, s}' }}\left( {\mathop 2\nolimits^{\frac{{\mathop O\nolimits_{\mathop m\nolimits_{{s}} , s} }}{{W\mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} }}} - 1} \right) $ (12)
1.4 依赖模型

由于设备 $ S $ 的第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出作为设备2第 $ k $ 个任务的输入, 所以要综合考虑设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2第 $ k $ 个任务的位置关系. 通过综合分析, 设备 $ S $ 的第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2的第 $ k $ 个任务的位置关系都有4种: 当设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2第 $ k $ 个任务都在本地执行时, 第 $ k $ 个任务的输入依赖于第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出, 由于两设备都支持D2D技术, 所以设备之间可以直接通信, 设备 $ S $ 不必将第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出先传递到边缘服务器, 然后再又服务器传递到设备2, 节省了时间和能耗, 此时只有设备间的传输时间和能耗; 当设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2第 $ k $ 个任务都在服务器上执行时, 此时设备没有传输时间和能耗的损耗; 当第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务在本地执行时, 当第 $ k $ 个任务在服务器上执行时, 由于第 $ k $ 个任务的输入依赖于第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出, 此时设备 $ S $ 需要将第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出传输到服务器, 有上传时延和能耗; 当第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务在边缘服务器执行, 第 $ k $ 个任务在本地执行时, 此时设备 $ S $ 需要将第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务的输出从服务器传输到设备2, 此时需要下载时延.

1.5 问题公式化

由以上分析可知, 设备 $ S $ 的任务完成时间为:

$ \begin{split} \mathop T\nolimits_s =& \sum\limits_{{{i}} = 1}^{\mathop m\nolimits_{{s}} } {\left[ {\left( {1 - \mathop a\nolimits_{i, s} } \right)\mathop t\nolimits_{i, s}^l + \mathop a\nolimits_{i, s} \mathop t\nolimits_{i, s}^c } \right]} \\& +\sum\limits_{{{i}} = 1}^{\mathop m\nolimits_{{s}} {\text{ + 1}}} {\left[ {\mathop a\nolimits_{i, s} \left( {1 - \mathop a\nolimits_{i - 1, s} } \right)\mathop t\nolimits_{i, s}^u + \mathop a\nolimits_{i - 1, s} \mathop {\left( {1 - \mathop a\nolimits_{i, s} } \right)t}\nolimits_{i, s}^d } \right]} \\ \end{split} $ (13)

由于设备间任务的依赖关系, 在式(14)的最后一行关系式中描述了设备间任务的依赖关系. 当设备 $ S $ $\mathop m\nolimits_{{s}}$ 个任务和设备2的第 $ k $ 个任务都在本地执行时, 则设备之间需要传输能耗 $\mathop {{e}}\nolimits_{\mathop m\nolimits_{\text{s}} + 1, s}^{s, 2}$ ; 当设备 $ S $ $\mathop m\nolimits_{{s}}$ 个任务在本地执行, 而设备2的第 $ k $ 个任务在服务器上执行时, 则需要上传能耗 $\mathop {{e}}\nolimits_{\mathop m\nolimits_{{s}} + 1}^u$ . 因此设备s的能耗为:

$ \begin{split} \mathop E\nolimits_s =& \sum\limits_{{{i}} = 1}^{\mathop m\nolimits_{{s}} } {\left[ {\left( {1 - \mathop a\nolimits_{i, s} } \right)\mathop {{e}}\nolimits_{i, s}^l + \mathop a\nolimits_{i, s} \mathop {\left( {1 - \mathop a\nolimits_{i - 1, s} } \right)e}\nolimits_{i, s}^u } \right]} \\&+ \left( {1 - \mathop a\nolimits_{\mathop m\nolimits_{{s}} , s} } \right)\left( {1 - \mathop a\nolimits_{k, 2} } \right)\mathop {{e}}\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} + \mathop a\nolimits_{k, 2} \left( {1 - \mathop a\nolimits_{\mathop m\nolimits_{{s}} , s} } \right)\mathop {{e}}\nolimits_{\mathop m\nolimits_{{s}} + 1}^u \end{split} $ (14)

由于设备2的第 $ k $ 个任务输入依赖于设备 $ S $ 的第 $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2第 $ k $ –1任务的输出, 当设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务和设备2的第 $ k $ 个任务都在本地执行时, 设备间需要传输时间: $\begin{gathered} \mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, 1}^{s, 2} \end{gathered}$ ; 当设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务在服务器执行, 而设备2的第 $ k $ 个任务在本地执行时, 则需要下载时间 $\begin{gathered} \mathop O\nolimits_{\mathop m\nolimits_{{s}} , s} /\mathop R\nolimits_{{{k}}, 2}^d \end{gathered}$ ; 当设备 $ S $ $\begin{gathered} \mathop m\nolimits_{{s}} \end{gathered}$ 个任务在本地执行, 而设备2的第 $ k $ 个任务在服务器上执行时, 则需要上传时间 $\begin{gathered} \mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^u \end{gathered}$ . 因此设备2的第k个任务等待设备S的第ms个任务的输出时间为:

$ \begin{split} \mathop T\nolimits_s^{{\text{wait}}} =& \sum\limits_{{{i}} = 1}^{\mathop m\nolimits_{{s}} } {\left[ {\left( {1 - \mathop a\nolimits_{i, s} } \right)\mathop t\nolimits_{i, s}^l + \mathop a\nolimits_{i, s} \mathop t\nolimits_{i, s}^c } \right]} \\& +\sum\limits_{{{i}} = 1}^{\mathop m\nolimits_{{s}} } {\left[ {\mathop a\nolimits_{i, s} \left( {1 - \mathop a\nolimits_{i - 1, s} } \right)\mathop t\nolimits_{i, s}^u + \mathop a\nolimits_{i - 1, s} \mathop {\left( {1 - \mathop a\nolimits_{i, s} } \right)t}\nolimits_{i, s}^d } \right]} \\& +\left( {1 - \mathop a\nolimits_{\mathop m\nolimits_{{s}} , s} } \right)\left( {1 - \mathop a\nolimits_{k, 2} } \right)\mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^{s, 2} + \mathop a\nolimits_{k, 2} \left( {1 - \mathop a\nolimits_{\mathop m\nolimits_{{s}} , s} } \right)\mathop t\nolimits_{\mathop m\nolimits_{{s}} + 1, s}^u \\& +\mathop a\nolimits_{\mathop m\nolimits_{{s}} , s} \left( {1 - \mathop a\nolimits_{k, 2} } \right)\frac{{\mathop O\nolimits_{\mathop m\nolimits_{{s}} , s} }}{{\mathop R\nolimits_{k, 2}^d }} \\ \end{split} $ (15)

等待设备2第 $ k $ –1个任务的输出时间:

$ \begin{split} \mathop T\nolimits_2^{{\text{wait}}} =& \sum\limits_{{{i}} = 1}^{k - 1} {\left[ {\left( {1 - \mathop a\nolimits_{i, 2} } \right)\mathop t\nolimits_{i, 2}^l + \mathop a\nolimits_{i, 2} \mathop t\nolimits_{i, 2}^c } \right]} \\& +\sum\limits_{{{i}} = 1}^k {\left[ {\mathop a\nolimits_{i, 2} \left( {1 - \mathop a\nolimits_{i - 1, 2} } \right)\mathop t\nolimits_{i, 2}^u + \mathop a\nolimits_{i - 1, 2} \mathop {\left( {1 - \mathop a\nolimits_{i, 2} } \right)t}\nolimits_{i, 2}^d } \right]} \\ \end{split} $ (16)

$t = \max \left\{ {\mathop T\nolimits_1^{{\text{wait}}} , \mathop T\nolimits_2^{{\text{wait}}} , \cdots, \mathop T\nolimits_s^{{\text{wait}}} } \right\}$ .

设备2的任务完成时间为:

$ \begin{split} \mathop T\nolimits_2 =& \max \left\{ {\mathop T\nolimits_1^{{\text{wait}}} , \mathop T\nolimits_2^{{\text{wait}}} , \cdots, \mathop T\nolimits_s^{{\text{wait}}} } \right\} \\& +\sum\limits_{{{i}} = k}^n {\left[ {\left( {1 - \mathop a\nolimits_{i, 2} } \right)\mathop t\nolimits_{i, 2}^l + \mathop a\nolimits_{i, 2} \mathop t\nolimits_{i, 2}^c } \right]} \\& +\sum\limits_{{{i}} = k + 1}^{n + 1} {\left[ {\mathop a\nolimits_{i, 2} \left( {1 - \mathop a\nolimits_{i - 1, 2} } \right)\mathop t\nolimits_{i, 2}^u + \mathop a\nolimits_{i - 1, 2} \mathop {\left( {1 - \mathop a\nolimits_{i, 2} } \right)t}\nolimits_{i, 2}^d } \right]} \\ \end{split} $ (17)

设备2消耗的能耗为:

$ \mathop E\nolimits_2 = \sum\limits_{{{i}} = 1}^n {\left[ {\left( {1 - \mathop a\nolimits_{i, 2} } \right)\mathop {{e}}\nolimits_{i, 2}^l + \mathop a\nolimits_{i, 2} \mathop {\left( {1 - \mathop a\nolimits_{i - 1, 2} } \right)e}\nolimits_{i, 2}^u } \right]} $ (18)

设备总性能指标为:

$ \begin{split} \eta \left( {\left\{ {\mathop a\nolimits_{i, j} } \right\}, \left\{ {\mathop p\nolimits_{i, j} } \right\}, \left\{ {\mathop f\nolimits_{i, j} } \right\}} \right) =& \mathop \eta \nolimits_1 + \mathop \eta \nolimits_2 {\rm{ + }}\cdots{\rm{ + }}\mathop \eta \nolimits_s \\ =&\mathop \beta \nolimits_1^T \mathop T\nolimits_1 + \mathop \beta \nolimits_1^E \mathop E\nolimits_1 + \mathop \beta \nolimits_2^T \mathop T\nolimits_2 \\& +\mathop \beta \nolimits_2^E \mathop T\nolimits_2 + \cdots + \mathop \beta \nolimits_s^T \mathop T\nolimits_s + \mathop \beta \nolimits_s^E \mathop E\nolimits_s \end{split} $ (19)

其中, ${{\; \beta }}_{1}^{T}, {{\displaystyle \beta }}_{1}^{E}, {{\displaystyle \beta }}_{2}^{T}, {{\displaystyle \beta }}_{2}^{E}, \cdots, {{\displaystyle \beta }}_{s}^{T}, {{\displaystyle \beta }}_{s}^{E}$ 分别表示设备的能耗和时间的权重, 且权重之间存在以下关系:

$ \begin{split}& \mathop {0 \lt \beta }\nolimits_1^T \lt 1,\; 0 \lt \mathop \beta \nolimits_1^E \lt 1,\; \mathop {0 \lt \beta }\nolimits_2^T \lt 1,\; 0 \lt \mathop \beta \nolimits_2^E \lt 1, \cdots, \mathop {0 \lt \beta }\nolimits_s^T \lt\\& 1,\; 0 \lt \mathop \beta \nolimits_s^E \lt 1,\; \mathop \beta \nolimits_s^E = 1 - \mathop \beta \nolimits_s^T \end{split} $

所以问题公式化为式(20):

$ \begin{split}& P(1)\\& \mathop {\min }\limits_{\left( {\left\{ {\mathop a\nolimits_{i, j} } \right\}, \left\{ {\mathop p\nolimits_{i, j} } \right\}, \left\{ {\mathop f\nolimits_{i, j} } \right\}} \right)} \eta \left( {\left\{ {\mathop a\nolimits_{i, j} } \right\}, \left\{ {\mathop p\nolimits_{i, j} } \right\}, \left\{ {\mathop f\nolimits_{i, j} } \right\}} \right) \end{split} $
$ {\rm s.t.}\left\{ {\begin{split} & 0 \leqslant \mathop p\nolimits_{i, j} \leqslant \mathop P\nolimits_{\rm peak} , \\& 0 \leqslant \mathop p\nolimits_{\mathop m\nolimits_s + 1, s}' \leqslant \mathop P\nolimits_{\rm peak} , \\& 0 \leqslant \mathop f\nolimits_{i, j} \leqslant \mathop f\nolimits_{\rm peak} , \\& \mathop a\nolimits_{i, j} \in \left\{ {0, 1} \right\}, \forall i, j \end{split} } \right.$ (20)

其中, Ppeak表示设备发射功率的峰值, fpeak表示设备CPU计算能力的峰值. 由式(5), 式(8), 式(11)可知 $ \mathop f\nolimits_{i, j} , \mathop p\nolimits_{i, j} , \mathop p\nolimits_{\mathop m\nolimits_s + 1, s}' $ $ \mathop f\nolimits_{i, j} , \mathop p\nolimits_{i, j} , \mathop p\nolimits_{\mathop m\nolimits_s + 1, s}' $ , 所以式(20)可以转化为:

$ \begin{split}& P(2) \\& \mathop {\min }\limits_{\left( {\left\{ {\mathop a\nolimits_{i, j} } \right\}, \left\{ {\mathop t\nolimits_{i, j}^l } \right\}, \left\{ {\mathop t\nolimits_{i, j}^u } \right\}, \left\{ {\mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2} } \right\}, t} \right)} \eta \left( {\left\{ {\mathop a\nolimits_{i, j} } \right\}, \left\{ {\mathop t\nolimits_{i, j}^l } \right\}, \left\{ {\mathop t\nolimits_{i, j}^u } \right\}, \left\{ {\mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2} } \right\}, t} \right) \end{split} $
$ {\rm s.t.}\left\{ {\begin{split} & \mathop T\nolimits_1^{{\text{wait}}} \leqslant t, \mathop T\nolimits_2^{{\text{wait}}} \leqslant t, \cdots, \mathop T\nolimits_s^{{\text{wait}}} \leqslant t \\& \frac{{\mathop L\nolimits_{i, j} }}{{\mathop f\nolimits_{\rm peak} }} \leqslant \mathop t\nolimits_{i, j}^l , \\& \dfrac{{\mathop O\nolimits_{i - 1, j} }}{{W\mathop {\log }\nolimits_2 \left( {1 + \dfrac{{\mathop p\nolimits_{\rm peak} \mathop h\nolimits_{i, j} }}{{\mathop \sigma \nolimits^2 }}} \right)}} \leqslant \mathop t\nolimits_{i, j}^u , \\& \frac{{\mathop O\nolimits_{\mathop m\nolimits_s , s} }}{{W\mathop {\log }\nolimits_2 \left( {1 + \dfrac{{\mathop p\nolimits_{\rm peak} \mathop h\nolimits_{\mathop m\nolimits_s + 1, s}' }}{{\mathop \sigma \nolimits^2 }}} \right)}} \leqslant \mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2} , \\& \mathop a\nolimits_{i, j} \in \left\{ {0, 1} \right\}, \forall i, j \\ \end{split} } \right.$ (21)

由于含有二进制变量 $ \mathop a\nolimits_{i, j} $ , 所以问题是非凸的, 但当固定 $ \mathop a\nolimits_{i, j} $ 时, 原来的非凸问题就会转化为关于 $ \mathop t\nolimits_{i, j}^l , \mathop t\nolimits_{i, j}^u , \mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2} $ 的凸问题.

2 固定卸载决策的最佳资源分配

假设固定 $ \begin{gathered} \mathop a\nolimits_{i, j} \end{gathered} $ , 则非凸问题 ${{P}}(2)$ 转化为关于 $\mathop t\nolimits_{i, j}^l , \mathop t\nolimits_{i, j}^u , \mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2}$ 的凸问题 ${{P}}(3)$ :

$ \begin{split}& P(3)\\& \mathop {\min }\limits_{\left( {\left\{ {\mathop t\nolimits_{i,j}^l } \right\},\left\{ {\mathop t\nolimits_{i,j}^u } \right\},\left\{ {\mathop t\nolimits_{\mathop m\nolimits_s + 1,s}^{s,2} } \right\},t} \right)} \eta \left( {\left\{ {\mathop t\nolimits_{i,j}^l } \right\},\left\{ {\mathop t\nolimits_{i,j}^u } \right\},\left\{ {\mathop t\nolimits_{\mathop m\nolimits_s + 1,s}^{s,2} } \right\},t} \right) \end{split} $
$ {\rm s.t.}\left\{ {\begin{split} & \mathop T\nolimits_1^{{\rm{wait}}} \leqslant t,\mathop T\nolimits_2^{{\rm{wait}}} \leqslant t, \cdots ,\mathop T\nolimits_s^{{\rm{wait}}} \leqslant t\\ & \dfrac{{\mathop L\nolimits_{i,j} }}{{\mathop f\nolimits_{\rm peak} }} \leqslant \mathop t\nolimits_{i,j}^l ,\\ & \dfrac{{\mathop O\nolimits_{i - 1,j} }}{{W\mathop {\log }\nolimits_2 \left( {1 + \dfrac{{\mathop p\nolimits_{\rm peak} \mathop h\nolimits_{i,j} }}{{\mathop \sigma \nolimits^2 }}} \right)}} \leqslant \mathop t\nolimits_{i,j}^u ,\\ & \dfrac{{\mathop O\nolimits_{\mathop m\nolimits_s ,s} }}{{W\mathop {\log }\nolimits_2 \left( {1 + \dfrac{{\mathop p\nolimits_{\rm peak} \mathop h\nolimits_{\mathop m\nolimits_s + 1,s}' }}{{\mathop \sigma \nolimits^2 }}} \right)}} \leqslant \mathop t\nolimits_{\mathop m\nolimits_s + 1,s}^{s,2} , \end{split} } \right.$ (22)

问题 ${{P}}(3)$ 的拉格朗日表示为:

$ \begin{split} & L\left( {\left\{ {\mathop t\nolimits_{i, j}^u } \right\}, \left\{ {\mathop t\nolimits_{i, j}^l } \right\}, \left\{ {\mathop t\nolimits_{\mathop m\nolimits_s + 1, s}^{s, 2} } \right\}, t, \mathop \lambda \nolimits_1 , \mathop \lambda \nolimits_2 , \cdots, \mathop \lambda \nolimits_s } \right)\\ & =\mathop \eta \nolimits_1 + \mathop \eta \nolimits_2 {\rm{ + }}\cdots{\rm{ + }}\mathop \eta \nolimits_s + \mathop \lambda \nolimits_1 \left( {\mathop T\nolimits_1^{{\rm{wait}}} - t} \right) \\ &\quad + \mathop \lambda \nolimits_2 \left( {\mathop T\nolimits_2^{{\rm{wait}}} - t} \right) + \cdots{\rm{ + }}\mathop \lambda \nolimits_s \left( {\mathop T\nolimits_s^{{\rm{wait}}} - t} \right) \end{split} $ (23)

其中, $\begin{gathered} \mathop \lambda \nolimits_1 , \mathop \lambda \nolimits_2 , \cdots, \mathop \lambda \nolimits_s \end{gathered}$ 都是不小于零的表示与相应约束相关联的对偶变量, $\begin{gathered} \mathop {\mathop \lambda \nolimits_1 }\nolimits^* , \mathop {\mathop \lambda \nolimits_2 }\nolimits^* , \cdots, \mathop {\mathop \lambda \nolimits_s }\nolimits^* \end{gathered}$ 表示最佳对偶变量, 则能推导出每个设备的最佳CPU频率和发射功率的闭合表达式如下:

$ \left\{ \begin{array}{l} \mathop f\nolimits_{i,s}^* = \left\{ \begin{array}{l} \mathop f\nolimits_{\rm peak} ,\;如果\mathop \beta \nolimits_s^T + \mathop {\mathop \lambda \nolimits_s }\nolimits^* > 2k\mathop \beta \nolimits_s^E \mathop {\mathop f\nolimits_{\rm peak} }\nolimits^3 \\ \sqrt[3]{{\dfrac{{\mathop \beta \nolimits_s^T + \mathop {\mathop \lambda \nolimits_s }\nolimits^* }}{{2k\mathop \beta \nolimits_s^E }}}},\;否则 \end{array} \right.当i \in \{ 1,\cdots,\mathop m\nolimits_s \}时 \\ \mathop f\nolimits_{i,2}^* = \left\{ \begin{array}{l} \left\{ \begin{array}{l} \mathop f\nolimits_{\rm peak} ,\;如果\mathop {\mathop \lambda \nolimits_2 }\nolimits^* > 2k\mathop \beta \nolimits_2^E \mathop f\nolimits_{\rm peak} \\ \sqrt[3]{{\dfrac{{\mathop {\mathop \lambda \nolimits_2 }\nolimits^* }}{{2k\mathop \beta \nolimits_2^E }}}},\;否则 \end{array} \right.当i \in \{ 1,\cdots,k - 1\}时 \\ \left\{ \begin{array}{l} \mathop f\nolimits_{\rm peak} ,\;如果\mathop \beta \nolimits_2^T > 2k\mathop \beta \nolimits_2^E \mathop {\mathop f\nolimits_{\rm peak} }\nolimits^3 \\ \sqrt[3]{{\dfrac{{\mathop \beta \nolimits_2^T }}{{2k\mathop \beta \nolimits_2^E }}}},\;否则 \end{array} \right.当i \in \{ k,\cdots,n\}时 \end{array} \right\} \end{array} \right.{\kern 1pt} {\kern 1pt} $ (24)
$ \begin{array}{l} \left\{ \begin{array}{l} \mathop p\nolimits_{i,s}^* = \left\{ \begin{array}{l} \mathop P\nolimits_{\rm peak} ,\;如果\mathop {{{h}}}\nolimits_{i,s} < \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop P\nolimits_{\rm peak} }}\left[ {\dfrac{{\mathop A\nolimits_1 }}{{ - W(\mathop { - A}\nolimits_1 \mathop e\nolimits^{ - \mathop A\nolimits_1 } )}} - 1} \right]\\ \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i,s} }}\left[ {\dfrac{{\mathop B\nolimits_1 }}{{W(\mathop B\nolimits_1 \mathop e\nolimits^{ - 1} )}} - 1} \right],\;否则 \end{array} \right.当i \in \{ 1,\cdots,\mathop m\nolimits_s \}时 \\ \mathop p\nolimits_{i,s}^* = \left\{ \begin{array}{l} \mathop P\nolimits_{\rm peak} ,\;如果\mathop h\nolimits_{i,s} < \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop P\nolimits_{\rm peak} }}\left[ {\dfrac{{\mathop A\nolimits_2 }}{{ - W(\mathop { - A}\nolimits_2 \mathop e\nolimits^{ - \mathop A\nolimits_2 } )}} - 1} \right]\\ \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i,s} }}\left[ {\dfrac{{\mathop B\nolimits_2 }}{{W(\mathop B\nolimits_2 \mathop e\nolimits^{ - 1} )}} - 1} \right],\;否则 \end{array} \right.\\ 或者\mathop p\nolimits_{i,s}^* = \left\{ \begin{array}{l} \mathop P\nolimits_{\rm peak} ,\;如果\mathop h\nolimits_{i,s}' < \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop P\nolimits_{\rm peak} }}\left[ {\dfrac{{\mathop A\nolimits_2 }}{{ - W(\mathop { - A}\nolimits_2 \mathop e\nolimits^{ - \mathop A\nolimits_2 } )}} - 1} \right]\\ \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i,s}' }}\left[ {\dfrac{{\mathop B\nolimits_2' }}{{W(\mathop B\nolimits_2' \mathop e\nolimits^{ - 1} )}} - 1} \right],\;否则 \end{array} \right.当i = \mathop m\nolimits_s + 1时 \end{array} \right.\\ \left\{ \begin{array}{l} \mathop p\nolimits_{i,2}^* = \left\{ \begin{array}{l} \mathop P\nolimits_{\rm peak} ,\;如果\mathop {h}\nolimits_{i,2} < \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop P\nolimits_{\rm peak} }}\left[ {\dfrac{{\mathop A\nolimits_3 }}{{ - W(\mathop { - A}\nolimits_3 \mathop e\nolimits^{ - \mathop A\nolimits_3 } )}} - 1} \right]\\ \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i,2} }}\left[ {\dfrac{{\mathop B\nolimits_3 }}{{W(\mathop B\nolimits_3 \mathop e\nolimits^{ - 1} )}} - 1} \right],\;否则 \end{array} \right.当i \in \{ 1,\cdots,k\}时 \\ \mathop p\nolimits_{i,2}^* = \left\{ \begin{array}{l} \mathop P\nolimits_{\rm peak} ,\;如果\mathop {h}\nolimits_{i,2} < \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop P\nolimits_{\rm peak} }}\left[ {\dfrac{{\mathop A\nolimits_4 }}{{ - W(\mathop { - A}\nolimits_4 \mathop e\nolimits^{ - \mathop A\nolimits_4 } )}} - 1} \right]\\ \dfrac{{\mathop \sigma \nolimits^2 }}{{\mathop h\nolimits_{i,2} }}\left[ {\dfrac{{\mathop B\nolimits_4 }}{{W(\mathop B\nolimits_4 \mathop e\nolimits^{ - 1} )}} - 1} \right],\;否则 \end{array} \right.当i \in \{ k + 1,\cdots,n\}时 \end{array} \right. \end{array}$ (25)

其中, $ \mathop A\nolimits_1 = 1 + \dfrac{{\mathop \beta \nolimits_s^T \mathop { + \mathop \lambda \nolimits_s }\nolimits^* }}{{\mathop \beta \nolimits_s^E \mathop P\nolimits_{{\rm{peak}}} }}$ $\mathop B\nolimits_1 = \dfrac{{\mathop h\nolimits_{{\rm{i}},s} (\mathop \beta \nolimits_s^T \mathop { + \mathop \lambda \nolimits_s }\nolimits^* )}}{{\mathop \beta \nolimits_s^E \mathop \sigma \nolimits^2 }} - 1 $

$ \begin{array}{l} \mathop A\nolimits_2 = 1 + \dfrac{{\mathop {\mathop \lambda \nolimits_s }\nolimits^* }}{{\mathop \beta \nolimits_s^E \mathop P\nolimits_{{\rm{peak}}} }},\mathop B\nolimits_2 = \dfrac{{\mathop h\nolimits_{{\rm{i}},s} \mathop {\mathop \lambda \nolimits_s }\nolimits^* }}{{\mathop \beta \nolimits_s^E \mathop \sigma \nolimits^2 }} - 1,\mathop B\nolimits_2' = \dfrac{{\mathop {\rm{h}}\nolimits_{i,s}' \mathop {\mathop \lambda \nolimits_s }\nolimits^* }}{{\mathop \beta \nolimits_s^E \mathop \sigma \nolimits^2 }} - 1\\ \mathop A\nolimits_3 = 1 + \dfrac{{\mathop {\mathop \lambda \nolimits_2 }\nolimits^* }}{{\mathop \beta \nolimits_2^E \mathop P\nolimits_{{\rm{peak}}} }},\mathop B\nolimits_3 = \dfrac{{\mathop {\rm{h}}\nolimits_{i,2} \mathop {\mathop \lambda \nolimits_2 }\nolimits^* }}{{\mathop \beta \nolimits_2^E \mathop \sigma \nolimits^2 }} - 1\\ \mathop A\nolimits_4 = 1 + \dfrac{{\mathop \beta \nolimits_2^T }}{{\mathop \beta \nolimits_2^E \mathop P\nolimits_{{\rm{peak}}} }},\mathop B\nolimits_4 = \dfrac{{\mathop {\mathop {\rm{h}}\nolimits_{i,2} \beta }\nolimits_2^T }}{{\mathop \beta \nolimits_2^E \mathop \sigma \nolimits^2 }} - 1 \end{array} $

$ W(x) $ 表示函数 $ LambertW $ , 应用梯度下降法迭代更新, 直到满足一定的停止标准. 该方法的伪代码如算法1所示. 由于是 ${{P}}(3)$ 一个固定 $ \mathop a\nolimits_{i, j} $ 的凸问题, 梯度下降法保证收敛.

算法1. 固定卸载决策下求解最佳资源分配算法

1. 输入: 给定大于0的 $\scriptstyle \lambda _s$ , $\scriptstyle \lambda_2$ , 步长 $\scriptstyle \alpha$ 和精度值 $\scriptstyle pre$

2. 输出: $\scriptstyle p^* , f^*$

3. While True:

4.  根据最佳CPU频率的闭合表达式(24)计算 $\scriptstyle f_{i, j}$

5.  根据最佳发射功率的闭合表达式(25)计算 $\scriptstyle p_{i, j}$

6.  根据 $\scriptstyle f_{i, j}$ $\scriptstyle p_{i, j}$ 分别计算 $\scriptstyle T_s^{{\text{wait}}}$ , $\scriptstyle T_2^{{\text{wait}}}$ 和目标值

7.   $\scriptstyle t = \max \{ T_s^{{\text{wait}}} , T_2^{{\text{wait}}} \}$

8.  根据梯度下降算法, 分别更新 $\scriptstyle \lambda _s$ 的值

9.  如果 $\scriptstyle | T_s^{{\text{wait}}} - T_2^{{\text{wait}}} | \lt pre$ :

10.      退出循环

11. End

3 优化卸载决策

在第2节中, 给定卸载决策, 可以得出最佳资源分配, 需要搜索 $\mathop 2\nolimits^{\mathop m\nolimits_1 \times n\times \mathop m\nolimits_3 \times \cdots\times \mathop m\nolimits_s }$ 次卸载决策, 然后从中选择最小目标的卸载决策. 但是随着任务任务的增多, 这种遍历搜索方法是行不通的, 复杂度会很高. 基于此提出了一种降低复杂度的线性搜索算法, 可以在线性时间内获得最佳卸载决策.

3.1 一次爬升策略

定理1.假设 $\begin{gathered} \mathop f\nolimits_0 \gt \mathop f\nolimits_{\rm peak} \end{gathered}$ , 则最优卸载决策具有连续性(如果有任务要卸载), 即对于最优决策, 如果设备有任务需要卸载到边缘服务器, 那么在整个任务的执行过程中, 任务卸载到边缘服务器只会发生一次, 它被称为一次爬升策略.

证明: 由于文章篇幅限制, 并且有许多文献都有证明了一爬策略, 这里就不再证明.

3.2 基于一爬策略的线性搜索算法

在本小节中, 借鉴了文献[16]的思想, 同时基于一次爬升策略提出了一种低复杂度的线性搜索算法, 来优化卸载决策. 首先根据式(27)证明所有卸载点共享最小加权和点, 然后在找到最小加权和点的基础上寻找入口任务, 只需将两点之间的任务包括两点, 都卸载到服务器, 如图3所示.

图 3 一次爬升策略

公式如下, 设备有m个任务:

$ \begin{split} \eta \left( {i, {{o}}} \right) =& \mathop \beta \nolimits^E \left[ {\sum\limits_{h = 1}^{i - 1} {\mathop e\nolimits_h^l } + \mathop e\nolimits_{i - 1, i}^u + \sum\limits_{k = o{\text{ + }}1}^m {\mathop e\nolimits_k^l } } \right] \\&+ \mathop \beta \nolimits^T \left[ {\sum\limits_{h = 1}^{i - 1} {\mathop t\nolimits_h^l } + \mathop t\nolimits_{i - 1, i}^u + \sum\limits_{k = i}^o {\mathop t\nolimits_k^c } + \mathop t\nolimits_{o, o + 1}^d + \sum\limits_{k = o + 1}^m {\mathop t\nolimits_{{k}}^l } } \right] \end{split} $ (26)
$ \mathop \eta \nolimits_i = \left\{ \begin{array}{l} \mathop {\min }\limits_{1 \leqslant {{o}} \leqslant m} \left\{ {\eta \left( {i,{{o}}} \right)} \right\},如果\;\;\;i = 1\\ \mathop \eta \nolimits_i - \mathop \beta \nolimits^E \mathop e\nolimits_{i - 2,i - 1}^u + \mathop \beta \nolimits^E \left( {\mathop e\nolimits_{i - 1}^l + \mathop e\nolimits_{i - 1,i}^u } \right) {\kern 1pt} \\ -\mathop \beta \nolimits^T \left( {\mathop {{t}}\nolimits_{i - 2,i - 1}^u + \mathop t\nolimits_{i - 1}^c } \right) + \mathop \beta \nolimits^T \left( {\mathop {{t}}\nolimits_{i - 1,i}^u + \mathop t\nolimits_{i - 1}^l } \right),\;否则 \end{array} \right. $ (27)

其中, $ \begin{gathered} \mathop \eta \nolimits_i \end{gathered} $ 表示任务 $ i $ 到最小加权和点 $ o $ 的最佳性能, $ \eta \left( {i, o} \right) $ 表示任务从入口任务 $ i $ 到出口任务 $ o $ 的加权和. $ \mathop e\nolimits^u $ : 传输能耗, $ \mathop e\nolimits^l $ : 本地能耗, $ \mathop t\nolimits^u $ : 上传时间, $ \mathop t\nolimits^c $ : 在服务器上的执行时间, $ \mathop t\nolimits^d $ : 下载时间, $ \mathop t\nolimits^l $ : 本地执行时间, $ \;\mathop \beta \nolimits^E $ $\; \mathop \beta \nolimits^T $ 分别代表权重.

定理2. 所有卸载点共享最小加权和点 $ o $ .

证明: 假设当任务 $ i = j $ 时最小加权和点为 $ o $ , $ 1 \leqslant j \leqslant o \leqslant m $ , 那么 $ j + 1 $ 的最小加权和点也是 $ o $ .

$ i = j $ , 卸载任务 $ j $ 时:

$ \begin{split} \eta (j,j) =& \mathop \beta \nolimits^E \left[\sum\limits_{{{h}} = 1}^{j - 1} {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j - 1,j}^u + \sum\limits_{k = j + 1}^m {\mathop e\nolimits_k^l } \right] \\&+ \mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^{j - 1} {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j - 1,j}^u + \mathop {{t}}\nolimits_j^c + \mathop t\nolimits_{j,j + 1}^d + \sum\limits_{k = j + 1}^m {\mathop {{t}}\nolimits_k^l } \right] \end{split} $ (28)

卸载任务 $ j $ , $ j + 1 $ 时:

$ \begin{split} \eta (j,j + 1) =& \mathop \beta \nolimits^E \left[\sum\limits_{{{h}} = 1}^{j - 1} {\mathop e\nolimits_{{h}}^l } + \mathop e\nolimits_{j - 1,j}^u + \sum\limits_{k = j + 2}^{{m}} {\mathop e\nolimits_k^l } \right] \\&+ \mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^{j - 1} {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j - 1,j}^u + \mathop {{t}}\nolimits_j^c + \mathop {{t}}\nolimits_{j + 1}^c + \mathop t\nolimits_{j + 1,j + 2}^d + \sum\limits_{k = j + 2}^M {\mathop {{t}}\nolimits_k^l } \right] \end{split} $ (29)

卸载任务 $ j $ , $ j + 1 $ , $ j + 2 $ , …, $ o $ 时:

$ \begin{split} \eta (j,o) =& \mathop \beta \nolimits^E \left[\sum\limits_{{{h}} = 1}^{j - 1} {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j - 1,j}^u + \sum\limits_{k = o + 1}^{{m}} {\mathop e\nolimits_k^l } \right] \\& +\mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^{j - 1} {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j - 1,j}^u + \mathop {{t}}\nolimits_j^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d + \sum\limits_{k = o + 1}^M {\mathop {{t}}\nolimits_k^l } \right] \end{split} $ (30)

卸载任务 $ j $ , $ j + 1 $ , …, $ m $ 时:

$ \begin{split} \eta (j,{{m}}) =& \mathop \beta \nolimits^E \left[\sum\limits_{{{h}} = 1}^{j - 1} {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j - 1,j}^u \right] \\& +\mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^{j - 1} {\mathop {{t}}\nolimits_i^l } + \mathop t\nolimits_{j - 1,j}^u + \mathop {{t}}\nolimits_j^c + \cdots + \mathop {{t}}\nolimits_m^c + \mathop t\nolimits_{m,m + 1}^d \right] \end{split} $ (31)

因为当 $ i = j $ 时, 最小加权和点是 $ o $ , 所以:

$ \begin{split}& \eta (j,{{o}}) \leqslant \eta (j,j) \Rightarrow \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{j + 1}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d ] \leqslant \mathop \beta \nolimits^E [\mathop e\nolimits_{j + 1}^l + \cdots + \mathop e\nolimits_o^l ] \\& +\mathop \beta \nolimits^T [\mathop t\nolimits_{j,j + 1}^d + \mathop {{t}}\nolimits_{j + 1}^l + \cdots + \mathop {{t}}\nolimits_o^l ]\\& \eta (j,o) \leqslant \eta (j,j{{ + }}1) \Rightarrow \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{j + 2}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d ] \leqslant \mathop \beta \nolimits^E [\mathop e\nolimits_{j + 2}^l + \cdots + \mathop e\nolimits_o^l ] \\& +\mathop \beta \nolimits^T [\mathop t\nolimits_{j + 1,j + 2}^d + \mathop {{t}}\nolimits_{j + 2}^l + \cdots + \mathop {{t}}\nolimits_o^l ]\\& \eta (j,o) \leqslant \eta (j,j{{ + }}2) \Rightarrow \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{j + 3}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d ] \leqslant \mathop \beta \nolimits^E [\mathop e\nolimits_{j + 3}^l + \cdots + \mathop e\nolimits_o^l ] \\&+ \mathop \beta \nolimits^T [\mathop t\nolimits_{j + 2,j + 3}^d + \mathop {{t}}\nolimits_{j + 3}^l + \cdots + \mathop {{t}}\nolimits_o^l ]\\& \cdots \\& \eta (j,o) \leqslant \eta (j,o{{ + }}1) \Rightarrow \\& \mathop \beta \nolimits^E [\mathop e\nolimits_{o + 1}^l ] + \mathop \beta \nolimits^T [\mathop t\nolimits_{o,o + 1}^d + \mathop {{t}}\nolimits_{o + 1}^l ] \leqslant \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{o + 1}^c + \mathop {{t}}\nolimits_{o + 1,o + 2}^d ]\\& \eta (j,o) \leqslant \eta (j,o{{ + 2}}) \Rightarrow \\& \mathop \beta \nolimits^E [\mathop e\nolimits_{o + 1}^l + \mathop e\nolimits_{o + 2}^l ] + \mathop \beta \nolimits^T [\mathop t\nolimits_{o,o + 1}^d + \mathop {{t}}\nolimits_{o + 1}^l + \mathop {{t}}\nolimits_{o + 2}^l ] \leqslant \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{o + 1}^c + \mathop {{t}}\nolimits_{o + 2}^c + \mathop {{t}}\nolimits_{o + 2,o + 3}^d ]\\& \cdots \\& \eta (j,o) \leqslant \eta (j,m) \Rightarrow \\& \mathop \beta \nolimits^E [\mathop e\nolimits_{o + 1}^l + \cdots + \mathop e\nolimits_{{m}}^l ] + \mathop \beta \nolimits^T [\mathop t\nolimits_{o,o + 1}^d + \mathop {{t}}\nolimits_{o + 1}^l + \cdots + \mathop {{t}}\nolimits_m^l ] \leqslant \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{o + 1}^c + \cdots + \mathop {{t}}\nolimits_{{m}}^c + \mathop {{t}}\nolimits_{m,m + 1}^d ] \end{split} $ (32)

$ i = j + 1 $ , 卸载任务 $ j + 1 $ 时:

$ \begin{split}& \mathop {\eta (j{{ + }}1, j + 1) = \beta }\nolimits^E \left[\sum\limits_{{{h}} = 1}^j {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j, j{{ + }}1}^u + \sum\limits_{k = j + 2}^m {\mathop e\nolimits_k^l } \right] \\& +\mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^j {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j, j{{ + }}1}^u + \mathop {{t}}\nolimits_{j{{ + }}1}^c + \mathop t\nolimits_{j + 1, j + 2}^d + \sum\limits_{{{k}} = j + 2}^m {\mathop {{t}}\nolimits_k^l } \right] \\ \end{split} $ (33)

卸载任务 $ j + 1 $ , $ j + 2 $ , …, $ o $ 时:

$ \begin{split}& \mathop {\eta (j + 1, {{o}}) = \beta }\nolimits^E \left[\sum\limits_{h = 1}^j {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j, j + 1}^u + \sum\limits_{k = o + 1}^m {\mathop e\nolimits_k^l } \right] \\& +\mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^j {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j, j + 1}^u + \mathop {{t}}\nolimits_{j + 1}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o, o + 1}^d + \sum\limits_{k = o + 1}^m {\mathop {{t}}\nolimits_k^l } \right] \\ \end{split} $ (34)

卸载任务 $ j + 1 $ , $ j + 2 $ , …, $ m $ 时:

$ \begin{split}& \mathop {\eta (j + 1, {{m}}) = \beta }\nolimits^E \left[\sum\limits_{h = 1}^j {\mathop e\nolimits_h^l } + \mathop e\nolimits_{j, j + 1}^u \right] \\& +\mathop \beta \nolimits^T \left[\sum\limits_{h = 1}^j {\mathop {{t}}\nolimits_h^l } + \mathop t\nolimits_{j, j + 1}^u + \mathop {{t}}\nolimits_{j + 1}^c + \cdots + \mathop {{t}}\nolimits_m^c + \mathop t\nolimits_{m, m + 1}^d \right] \\ \end{split} $ (35)

$ i = j $ , 最小加权和点为 $ o $ , 仔细观察可以得出当 $ i = j + 1 $ 时, 最小加权和点也是 $ o $ , 即:

$ \begin{split}& \eta (j + 1,{{o}}) \leqslant \eta (j + 1,j{{ + }}1) \Rightarrow \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{j + 2}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d ] \leqslant \mathop \beta \nolimits^E [\mathop e\nolimits_{j + 2}^l + \cdots + \mathop e\nolimits_o^l ] \\& +\mathop \beta \nolimits^T [\mathop t\nolimits_{j + 1,j + 2}^d + \mathop {{t}}\nolimits_{j + 2}^l + \cdots + \mathop {{t}}\nolimits_o^l ]\\& \eta (j + 1,o) \leqslant \eta (j + 1,j{{ + }}2) \Rightarrow \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{j + 3}^c + \cdots + \mathop {{t}}\nolimits_o^c + \mathop t\nolimits_{o,o + 1}^d ] \leqslant \mathop \beta \nolimits^E [\mathop e\nolimits_{j + 3}^l + \cdots + \mathop e\nolimits_o^l ] \\& +\mathop \beta \nolimits^T [\mathop t\nolimits_{j + 2,j + 3}^d + \mathop {{t}}\nolimits_{j + 3}^l + \cdots + \mathop {{t}}\nolimits_o^l ]\\& \cdots \\& \eta (j + 1,o) \leqslant \eta (j + 1,o{{ + }}1) \Rightarrow \\& \mathop \beta \nolimits^E [\mathop e\nolimits_{o + 1}^l ] + \mathop \beta \nolimits^T [\mathop t\nolimits_{o,o + 1}^d + \mathop {{t}}\nolimits_{o + 1}^l ] \le \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{o + 1}^c + \mathop {{t}}\nolimits_{o + 1,o + 2}^d ]\\& \cdots \\& \eta (j + 1,o) \leqslant \eta (j + 1,M) \Rightarrow \\& \mathop \beta \nolimits^E [\mathop e\nolimits_{o + 1}^l + \cdots + \mathop e\nolimits_m^l ] + \mathop \beta \nolimits^T [\mathop t\nolimits_{o,o + 1}^d + \mathop {{t}}\nolimits_{o + 1}^l + \cdots + \mathop {{t}}\nolimits_m^l ] \leqslant \\& \mathop \beta \nolimits^T [\mathop {{t}}\nolimits_{o + 1}^c + \cdots + \mathop {{t}}\nolimits_m^c + \mathop {{t}}\nolimits_{m,m + 1}^d ] \end{split} $ (36)

从而得出所有卸载点共享最小加权和点 $ o $ , 证毕.

从定理2可知, 只需遍历 $ i $ =1就可以找到最小加权和点 $ o $ , 同时得到此时的最佳性能为 $\begin{array}{l}{{\displaystyle \eta }}_{1}\text{=}\eta \left(1, {o}\right)\\ \end{array}$ , 然后根据 $\begin{array}{l}{{\displaystyle \eta }}_{{i}}与{{\displaystyle \eta }}_{{i}-1}的关系\\ \end{array}$ , 求出 $\begin{gathered} \mathop \eta \nolimits_1 , \cdots, \mathop \eta \nolimits_o \end{gathered}$ , 通过式(37)找到入口任务 $ h $ .

$ \begin{gathered} \mathop {\mathop \eta \nolimits_h = \max \{ \eta }\nolimits_1 , \cdots, \mathop \eta \nolimits_o \} \end{gathered} $ (37)

基于定理1和定理2, 可以通过提出的线性搜索算法快速地找到最小加权和点 $ o $ 和入口任务 $ h $ . 算法2给出了寻找最优的入口任务 $ h $ 和最佳性能点 $ o $ 的算法, 初始时, 任务全部在本地执行. 因此只需要枚举满足一次爬政策的卸载决策, 而不必遍历所有 $\mathop 2\nolimits^{\mathop m\nolimits_1 \times n\times \mathop m\nolimits_3 \times \cdots\times \mathop m\nolimits_s }$ 个卸载决策. 对于每个设备, 根据算法2首先遍历 $ m $ 个任务寻找到最佳性能点 $ o $ , 然后再根据每个卸载点的关系, 求出每个卸载点到最佳性能点 $ o $ 的值, 选出最小的作为卸载点, 算法的复杂度为 ${\rm O}(m)$ . 其他设备类似. 所以只需 ${\rm O}(\mathop m\nolimits_1 \times n\times \mathop m\nolimits_3 \times \cdots\times \mathop m\nolimits_s )$ 的复杂度就可以找到最优的卸载策略. 随着任务数的增多, 基于单爬策略的线性搜索算法的性能远远优于暴力搜索算法, 复杂度更低, 算法2描述如下.

算法2. 低复杂度线性搜索算法

1. 输入: 根据式(33)计算 $\scriptstyle \eta (1, 1)$ $\scriptstyle \eta _{\min } = \eta (1, 1)$ , $\scriptstyle o$ =1

2. 输出: $\scriptstyle h$ , $\scriptstyle o$

3. For $\scriptstyle i$ ←1 to $\scriptstyle m$ :

4.   根据算法1计算出最优 $\scriptstyle f^*$ $\scriptstyle p^*$

5.   然后分别计算设备能耗和时间

6.   根据能耗、时间和式(26)计算 $\scriptstyle \eta (1, i)$

7.    If $\scriptstyle \eta (1, i)$ < $\scriptstyle \eta _{\min }$ :

8.      $\begin{array}{l}\scriptstyle\eta _{\min } = \eta (1,i)\\\scriptstyleo = i\end{array}$

9. End

10. 找到 $\scriptstyle i$ =1时的最小加权和点 $\scriptstyle o$

11. $\scriptstyle \eta _1 = \eta _{\min }$

12. For $\scriptstyle j$ ←2 to $\scriptstyle o$ :

13.   根据 $\scriptstyle \eta _j$ $\scriptstyle \eta _{j - 1}$ 的关系公式计算出 $\scriptstyle \eta _j$ 的值

14. End

15. 根据公式 $\scriptstyle \eta _h = \max \{ \eta _1 , \cdots, \eta _o \}$ 选出入口任务 $\scriptstyle h$

4 实验评估

在这一节, 将进行数值模拟来评估所提的卸载算法, 关注的性能指标是两设备的总性能(时延和能耗的加权和最小), 用ETC表示, 其中每个设备的性能用设备完成任务所消耗的能耗和时间的加权和表示, 实验数据值的大小参考了文献[14]进行了设置.

图4为每个设备的任务调用图, 每个节点代表一个任务, 节点权值为完成此任务的计算量, 边权值表示输入和输出数据的大小. 这里将设备1、设备2和设备3的实际任务数量分别设置为3、4和5, 每个设备引入了两个虚拟任务. 服务器的发射功率 $ \begin{gathered} \mathop p\nolimits_0 \end{gathered} $ 固定为1 W, 每个设备的发射功率峰值 $\begin{gathered} \mathop P\nolimits_{\rm peak} \end{gathered}$ 为0.1 W, 边缘服务器的CPU频率 $ \begin{gathered} \mathop f\nolimits_c \end{gathered} $ 和每个设备的CPU频率峰值 $\begin{gathered} \mathop f\nolimits_{\rm peak} \end{gathered}$ 分别为1010和108(cycles/s), 噪声功率 $ \begin{gathered} \mathop \sigma \nolimits^2 \end{gathered} $ 为10–7 W, $ k $ 是取决于芯片架构的有效开关电容参数, 是固定常数, 这里设置为10–26. 此外设置带宽 $ W $ 为2 MHz. 对于每个设备上任务的计算量大小设置为 $ \begin{gathered} \mathop L\nolimits_{i, 1} \end{gathered} $ =[0, 65.5, 40, 3, 96.6, 0](Mcycles), $ \begin{gathered} \mathop L\nolimits_{i, 2} \end{gathered} $ =[0, 70.8, 95.3, 86.4, 18.6, 158.6, 0](Mcycles), $ \begin{gathered} \mathop L\nolimits_{i, 3} \end{gathered} $ =[0, 65.5, 86.4, 158.6, 96.6, 0](Mcycles).

根据第3节列出的信道增益公式, 公式中的一些参数设置为: $ g $ =4.11表示天线增益, $ \begin{gathered} \mathop F\nolimits_c \end{gathered} $ =915 MHz表示载波频率, $ \begin{gathered} \mathop d\nolimits_r \end{gathered} $ 表示距离, $ r{\text{ = }}1, 2, 3, (1, 2), (3, 2) $ 对于设备1、设备2和设备3到服务器的距离 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_2 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_3 \end{gathered} $ 的值别为100 m、100 m和100 m.设备1到设备2和设备3到设备2之间的距离 $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_{\left( {3, 2} \right)} \end{gathered} $ 的值分别为10 m和10 m, $ pl $ =3表示路径损耗指数. 这里将每个设备的时间和能耗权重 $ \begin{gathered} \mathop \beta \nolimits_1^T \end{gathered} $ , $ \begin{gathered} \mathop \beta \nolimits_1^E \end{gathered} $ , $ \begin{gathered} \mathop \beta \nolimits_2^T \end{gathered} $ , $ \begin{gathered} \mathop \beta \nolimits_2^E \end{gathered} $ , $ \begin{gathered} \mathop \beta \nolimits_3^T \end{gathered} $ , $ \begin{gathered} \mathop \beta \nolimits_3^E \end{gathered} $ 分别设置为0.05, 0.95, 0.1, 0.9, 0.02, 0.98.

图5中, 首先进行了本文所提的算法和一爬策略枚举搜索算法的比较. 通过图5可以观察到, 随着任务数的增多获得最佳卸载策略所花费的时间, 本文所提算法的性能要优于一爬枚举搜索算法. 在相同的任务数下, 本文所提的算法获得最优卸载策略的时间明显小于一爬策略枚举搜索算法明.

图 4 实验模型和参数

图 5 两种算法对比曲线图

接下来, 本文给出了当 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_2 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ 变化时, 不同算法下设备的性能, 其中设置 $ \begin{gathered} \mathop \beta \nolimits_1^T \end{gathered} $ =0.0 5、 $ \begin{gathered} \mathop \beta \nolimits_2^T \end{gathered} $ =0.1和 $ \begin{gathered} \mathop \beta \nolimits_3^T \end{gathered} $ =0.02. 为了进行性能比较, 考虑了3个次优算法作为基准. 第1种算法被称为所有任务卸载, 其中将3个设备中的所有任务卸载到边缘边缘服务器上执行. 对于第2种算法被称为所有任务本地执行, 3个设备中的所有任务都在本地执行. 此外, 本文将没有D2D技术支持称为第3种算法, 也算是文献[14]算法的一种实现, 其中每个设备最小化自己的性能ETC.

图6(a)可以观察到, 当固定其他距离时, 随着距离 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ 越来越大, 本文所提算法要优于另外3种卸载算法, 性能更好. 而任务全部在本地执行算法和本文所提算法性能都没有变化, 是因为对于任务全部在本地执行算法, 此时设备1的第 $ m $ 个任务与设备2的第 $ k $ 个任务都在本地执行, 而两个设备都支持D2D技术, 可以直接进行通信, 所以距离 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ 增大, 对于任务全部在本地执行的性能是没有影响, 而本文所提的算法获得的最优卸载决策设备1的任务也都是在本地执行, 所以也不受距离 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ 变化的影响. 另外两种算法, 所有任务卸载和无D2D技术支持算法都随着距离的增大, 性能越来越差, 因为当距离 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ 增大时, 卸载任务到服务器需要花费更高的传输时延和能耗. 同时也可以观察到, 当服务器和设备距离小于160 m时, 全部卸载算法要优于无D2D技术支持算法, 因为服务器的性能更好, 设备距离服务器更近时, 将任务全部卸载到服务器, 能获得更短的时延和更低的能耗. 但不管距离如何增大, 本文所提算法都要优于其他算法.

图6(b)显示了距离 $ \begin{gathered} \mathop d\nolimits_2 \end{gathered} $ 变化对设备性能的影响. 从图中可以观察到本文所提算法、全部在服务器执行算法和无D2D技术支持算法, 设备ETC性能都随着距离的增加而增加. 虽然随着距离的增加, 性能变差, 但是本文所提算法还是优于服务器执行算法和无D2D技术支持算法. 同时从图中可以观察到, 当距离小于130 m左右时, 全部卸载算法还要优于无D2D技术支持算法. 而全部在本地执行算法, 总的ETC不变

图 6 与其他算法的对比

图6(c)显示了距离 $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ 变化对设备性能的影响. 对于任务全部在本地执行算法和本文所提算法有明显的影响, 因为此时设备1的第 $ m $ 个任务与设备2的第 $ k $ 个任务都在本地执行, 而两个设备都支持D2D技术, 两设备可以直接进行通信. 所以随着距离 $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ 的增大, 任务全部在本地执行算法和本文所提算法性能越来越差, 但本文所提算法还是优于全部在本地执行算法. 另一个方面也可以得出, 当两设备间距离更近时, 设备间直接通信越节省时间和能耗. 而对于全部卸载算法和无D2D技术支持算法, 由于本次设备1的第 $ m $ 个任务与设备2的第 $ k $ 个任务都在服务器上执行, 所以距离 $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ 的变化, 对于这两种算法都不受影响. 类似的当 $ \begin{gathered} \mathop d\nolimits_3 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_{\left( {3, 2} \right)} \end{gathered} $ 变化时, 能够得到与 $ \begin{gathered} \mathop d\nolimits_1 \end{gathered} $ $ \begin{gathered} \mathop d\nolimits_{\left( {1, 2} \right)} \end{gathered} $ 变化时类似图6(a)和图6(c)的结果, 这里不再过多叙述.

通过以上对比分析, 本文所提的算法明显优于其他基准算法, 同时与D2D技术协作可以显着提高系统的性能.

5 结论与展望

本文研究了MEC与D2D技术协作系统环境下不同设备之间具有任务依赖性的最优的资源分配和优化任务卸载决策问题, 来最小化设备的能耗和任务完成时间的加权和, 为了解决该问题, 提出了一种低复杂度的在线任务卸载算法, 获得了最优计算卸载策略. 最后通过数值实验表明, 本文所提的算法明显优于其他基准算法. 下一步将对多设备多服务器场景进行研究.

参考文献
[1]
Abbas N, Zhang Y, Taherkordi A, et al. Mobile edge computing: A survey. IEEE Internet of Things Journal, 2018, 5(1): 450-465. DOI:10.1109/JIOT.2017.2750180
[2]
Flores H, Hui P, Tarkoma S, et al. Mobile code offloading: From concept to practice and beyond. IEEE Communications Magazine, 2015, 53(3): 80-88. DOI:10.1109/MCOM.2015.7060486
[3]
Saleem U, Liu Y, Jangsher S, et al. Latency minimization for D2D-enabled partial computation offloading in mobile edge computing. IEEE Transactions on Vehicular Technology, 2020, 69(4): 4472-4486. DOI:10.1109/TVT.2020.2978027
[4]
Cao XW, Wang F, Xu J, et al. Joint computation and communication cooperation for energy-efficient mobile edge computing. IEEE Internet of Things Journal, 2019, 6(3): 4188-4200. DOI:10.1109/JIOT.2018.2875246
[5]
Zhou JZ, Zhang X, Wang WB, et al. Energy-efficient collaborative task offloading in D2D-assisted mobile edge computing networks. Proceedings of 2019 IEEE Wireless Communications and Networking Conference. Marrakesh, Morocco: IEEE, 2019. 1–6.
[6]
Mahmoodi SE, Uma RN, Subbalakshmi KP. Optimal joint scheduling and cloud offloading for mobile applications. IEEE Transactions on Cloud Computing, 2019, 7(2): 301-313. DOI:10.1109/TCC.2016.2560808
[7]
Han YP, Zhao ZW, Mo JW, et al. Efficient task offloading with dependency guarantees in ultra-dense edge networks. Proceedings of 2019 IEEE Global Communications Conference. Waikoloa: IEEE, 2019. 1–6.
[8]
Li ML, Chen T, Zeng JX, et al. D2D-assisted computation offloading for mobile edge computing systems with energy harvesting. Proceedings of the 20th International Conference on Parallel and Distributed Computing, Applications and Technologies, Gold Coast: IEEE, 2019. 90–95.
[9]
Li Y, Xu GC, Ge JQ, et al. Jointly optimizing helpers selection and resource allocation in D2D mobile edge computing. Proceedings of 2020 IEEE Wireless Communications and Networking Conference. Seoul: IEEE, 2020. 1–6.
[10]
He YH, Ren JK, Yu GD, et al. Joint computation offloading and resource allocation in D2D enabled MEC networks. Proceedings of 2019 IEEE international Conference on Communications. Shanghai: IEEE, 2019. 1–6.
[11]
Xing H, Liu L, Xu J, et al. Joint task assignment and resource allocation for D2D-enabled mobile-edge computing. IEEE Transactions on Communications, 2019, 67(6): 4193-4207. DOI:10.1109/TCOMM.2019.2903088
[12]
He YH, Ren JK, Yu GD, et al. D2D communications meet mobile edge computing for enhanced computation capacity in cellular networks. IEEE Transactions on Wireless Communications, 2019, 18(3): 1750-1763. DOI:10.1109/TWC.2019.2896999
[13]
Saleem U, Liu Y, Jangsher S, et al. Mobility-aware joint task scheduling and resource allocation for cooperative mobile edge computing. IEEE Transactions on Wireless Communications, 2021, 20(1): 360-374. DOI:10.1109/TWC.2020.3024538
[14]
Yan J, Bi SZ, Zhang YJA. Optimal offloading and resource allocation in mobile-edge computing with inter-user task dependency. Proceedings of 2018 IEEE Global Communications Conference. Abu Dhabi: IEEE, 2018. 1–8.
[15]
Boyd S, Vandenberghe L. Convex Optimization. Cambridge: Cambridge University Press, 2004.
[16]
Zhang Y, Liu H, Jiao L, et al. To offload or not to offload: An efficient code partition algorithm for mobile cloud computing. Proceedings of the 2012 IEEE 1st International Conference on Cloud Networking. Paris: IEEE, 2012. 80–86.