粒子群优化算法(Particle Swarm Optimization,PSO)求解基于移动边缘计算的任务卸载与资源调度优化(提供MATLAB代码)

news2024/11/16 10:41:47

一、优化模型介绍

移动边缘计算的任务卸载与资源调度优化原理是通过利用配备计算资源的移动无人机来为本地资源有限的移动用户提供计算卸载机会,以减轻用户设备的计算负担并提高计算性能。具体原理如下:

  1. 任务卸载:移动边缘计算系统将用户的计算任务分为两部分:一部分卸载到关联的无人机进行计算,剩余部分在本地进行计算。通过将部分计算任务卸载到无人机上,可以减轻用户设备的计算负担,提高计算效率。

  2. 资源调度:为了最小化所有用户间的最大总时延,需要联合优化无人机的轨迹和用户的调度。轨迹优化指的是确定无人机的飞行路径,使得无人机能够高效地服务所有用户。用户调度指的是确定每个用户的计算任务在何时卸载到无人机上进行计算,以及剩余部分在本地进行计算。

  3. 优化问题:任务卸载与资源调度优化问题是一个混合整数非凸优化问题,具有离散二进制变量和耦合约束。为了有效求解该问题,可以引入一些辅助变量将其转化为数学上易于处理的形式。然后,可以采用惩罚凹凸过程的算法来求解转化后的问题。

移动边缘计算的任务卸载与资源调度是指在移动设备和边缘服务器之间,将部分计算任务从移动设备卸载到边缘服务器,并合理分配资源以提高系统性能和降低能耗,通过移动边缘计算的任务卸载与资源调度优化,可以有效提高移动用户的计算性能,并减轻用户设备的计算负担。
在本文所研究的区块链网络中,优化的变量为:挖矿决策(即 m)和资源分配(即 p 和 f),目标函数是使所有矿工的总利润最大化。问题可以表述为:

max ⁡ m , p , f F miner  = ∑ i ∈ N ′ F i miner   s.t.  C 1 : m i ∈ { 0 , 1 } , ∀ i ∈ N C 2 : p min ⁡ ≤ p i ≤ p max ⁡ , ∀ i ∈ N ′ C 3 : f min ⁡ ≤ f i ≤ f max ⁡ , ∀ i ∈ N ′ C 4 : ∑ i ∈ N ′ f i ≤ f total  C 5 : F M S P ≥ 0 C 6 : T i t + T i m + T i o ≤ T i max ⁡ , ∀ i ∈ N ′ \begin{aligned} \max _{\mathbf{m}, \mathbf{p}, \mathbf{f}} & F^{\text {miner }}=\sum_{i \in \mathcal{N}^{\prime}} F_{i}^{\text {miner }} \\ \text { s.t. } & C 1: m_{i} \in\{0,1\}, \forall i \in \mathcal{N} \\ & C 2: p^{\min } \leq p_{i} \leq p^{\max }, \forall i \in \mathcal{N}^{\prime} \\ & C 3: f^{\min } \leq f_{i} \leq f^{\max }, \forall i \in \mathcal{N}^{\prime} \\ & C 4: \sum_{i \in \mathcal{N}^{\prime}} f_{i} \leq f^{\text {total }} \\ & C 5: F^{M S P} \geq 0 \\ & C 6: T_{i}^{t}+T_{i}^{m}+T_{i}^{o} \leq T_{i}^{\max }, \forall i \in \mathcal{N}^{\prime} \end{aligned} m,p,fmax s.t. Fminer =iNFiminer C1:mi{0,1},iNC2:pminpipmax,iNC3:fminfifmax,iNC4:iNfiftotal C5:FMSP0C6:Tit+Tim+TioTimax,iN
其中:
C1表示每个矿工可以决定是否参与挖矿;
C2 指定分配给每个参与矿机的最小和最大传输功率;
C3 表示分配给每个参与矿工的最小和最大计算资源;
C4表示分配给参与矿机的总计算资源不能超过MEC服务器的总容量;
C5保证MSP的利润不小于0;
C6 规定卸载、挖掘和传播步骤的总时间不能超过最长时间约束。
在所研究的区块链网络中,我们假设 IoTD 是同质的,并且每个 IoTD 都具有相同的传输功率范围和相同的计算资源范围。
上式中:
F i m i n e r = ( w + α D i ) P i m ( 1 − P i o ) − c 1 E i t − c 2 f i , ∀ i ∈ N ′ R i = B log ⁡ 2 ( 1 + p i H i σ 2 + ∑ j ∈ N ′ \ i m j p j H j ) , ∀ i ∈ N ′ T i t = D i R i , ∀ i ∈ N ′ T i m = D i X i f i , ∀ i ∈ N ′ E i m = k 1 f i 3 T i m , ∀ i ∈ N ′ P i m = k 2 T i m , ∀ i ∈ N ′ F M S P = ∑ i ∈ N ′ ( c 2 f i − c 3 E i m ) − c 3 E 0 P i o = 1 − e − λ ( T i o + T i s ) = 1 − e − λ ( z D i + T i t ) , ∀ i ∈ N ′ F_i^{miner}=(w+\alpha D_i)P_i^m(1-P_i^o)-c_1E_i^t-c_2f_i,\forall i\in\mathcal{N'}\\R_{i}=B \log _{2}\left(1+\frac{p_{i} H_{i}}{\sigma^{2}+\sum_{j \in \mathcal{N}^{\prime} \backslash i} m_{j} p_{j} H_{j}}\right), \forall i \in \mathcal{N}^{\prime}\\T_{i}^{t}=\frac{D_{i}}{R_{i}},\forall i\in\mathcal{N}^{\prime}\\T_{i}^{m}=\frac{D_{i}X_{i}}{f_{i}},\forall i\in\mathcal{N}'\\E_i^m=k_1f_i^3T_i^m,\forall i\in\mathcal{N}'\\P_i^m=\frac{k_2}{T_i^m},\forall i\in\mathcal{N}^{\prime}\\F^{MSP}=\sum_{i\in\mathcal{N}^{\prime}}\left(c_2f_i-c_3E_i^m\right)-c_3E_0\\\begin{aligned} P_{i}^{o}& =1-e^{-\lambda(T_{i}^{o}+T_{i}^{s})} \\ &=1-e^{-\lambda(zD_{i}+T_{i}^{t})},\forall i\in\mathcal{N}^{\prime} \end{aligned} Fiminer=(w+αDi)Pim(1Pio)c1Eitc2fi,iNRi=Blog2(1+σ2+jN\imjpjHjpiHi),iNTit=RiDi,iNTim=fiDiXi,iNEim=k1fi3Tim,iNPim=Timk2,iNFMSP=iN(c2fic3Eim)c3E0Pio=1eλ(Tio+Tis)=1eλ(zDi+Tit),iN

二、粒子群优化算法求解上述问题

粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,灵感来源于鸟群觅食行为。在粒子群算法中,每个个体被称为粒子,它们通过在解空间中搜索来寻找最优解。粒子的位置表示解空间中的一个解,速度表示粒子在解空间中的搜索方向和速度。

算法描述如下:

  1. 初始化粒子群的位置和速度,以及每个粒子的个体最优解和全局最优解。
  2. 对于每个粒子,根据其当前位置和速度更新其下一时刻的位置和速度。
  3. 更新每个粒子的个体最优解和全局最优解。
  4. 重复步骤2和步骤3,直到满足停止条件(例如达到最大迭代次数或找到满意的解)。
    粒子的位置和速度的更新公式如下:
    v i j = w ⋅ v i j + c 1 ⋅ r 1 ⋅ ( p b e s t i j − x i j ) + c 2 ⋅ r 2 ⋅ ( g b e s t j − x i j ) v_{ij} = w \cdot v_{ij} + c_1 \cdot r_1 \cdot (pbest_{ij} - x_{ij})+ c_2 \cdot r_2 \cdot (gbest_{j} - x_{ij}) vij=wvij+c1r1(pbestijxij)+c2r2(gbestjxij)
    x i j = x i j + v i j x_{ij} = x_{ij} + v_{ij} xij=xij+vij
    其中, v i j v_{ij} vij表示粒子 i i i在维度 j j j上的速度, x i j x_{ij} xij表示粒子 i i i在维度 j j j上的位置, w w w是惯性权重, c 1 c_1 c1 c 2 c_2 c2是加速因子, r 1 r_1 r1 r 2 r_2 r2是随机数, p b e s t i j pbest_{ij} pbestij是粒子 i i i的个体最优解, g b e s t j gbest_{j} gbestj是全局最优解。

2.1部分MATLAB代码

close all
clear 
clc
dbstop if all error
t=1;
for NP=100:50:400
para = parametersetting(NP);
para.MaxFEs =10000;%最大迭代次数
Result(t)=Compute(NP,para);
t=t+1;
end
QQ=100:50:400;
LenG={};
StrCor={'r-','g--','b-.','c-','m--','k-.','y-'};
figure
for i=1:t-1
    plot(Result(i).FitCurve,StrCor{i},'linewidth',3)
    hold on
    LenG{i}=['N=' num2str(QQ(i))];
    Data(i)=Result(i).FitCurve(end);
end
legend(LenG)
xlabel('FEs')
ylabel('Token')

figure
bar(Data)
hold on
plot(Data,'r-o','linewidth',3)
set(gca,'xtick',1:1:t-1);
set(gca,'XTickLabel',LenG)
ylabel('Token')












2.2部分结果

当矿工数量为 100 150 200 250 300 350 400时:所有矿工的利润随迭代次数的变化如下图所示
在这里插入图片描述

在这里插入图片描述

当矿工数量为100 时,差分进化算法得到的最优策略

1.99336847413542	0.263906421194274
1.99775186559795	0.200868009539170
1.99970002117621	0.0648879435841947
1.99329300750250	0.708182408691192
1.99167730621739	0.184448209112073
1.99307440825028	0.0219822928789003
1.99690287754159	0.431027655563034
1.99810379619714	0.321020523744654
1.99917843966375	0.303423831282229
1.99821040767272	0.168667481958628
1.98597988697170	0.0905104567390803
1.98597988697170	0.601810916845292
1.99751134702339	0.0772846974434056
1.99568705660856	0.0123961079170779
1.99568705660856	0.0219822928789003
1.99939846871027	0.140219957587819
1.99751134702339	0.0643466460987961
1.99106922984091	0.0744274764339868
1.99026780288433	0.323053852649518
1.99505374958257	0.391381227036939
1.99026780288433	0.0386190647662533
1.99434630983491	0.429606862856901
1.99656977746481	0.128509524908840
1.99306191995070	0.183351939597823
1.97120203302642	0.212539563416013
1.99775186559795	0.775693679569017
1.99445513254744	0.192745572626503
1.99810379619714	0.169565130152890
1.99821815723158	0.897463471823648
1.99967281380570	0.326738726430002
1.99917843966375	0.0772846974434056
1.99372726540238	0.282175086715631
1.99990898569500	0.770430114847907
1.99939846871027	0.393387022348710
1.99911410714039	0.628600190012630
1.99568705660856	0.476489184273998
1.99990898569500	0.169885270977169
1.99751134702339	0.282175086715631
1.99917843966375	0.996515848471701
1.98597988697170	0.105646136580459
1.98272218969017	0.341104490954763
1.99879887123098	0.0317520782551498
1.99911410714039	0.0648879435841947
1.99879887123098	0.708642673799754
1.99544983849978	0.110774653298577
1.99659514375944	0.436449874089022
1.99810379619714	0.284920542802571
1.99632883457053	0.0135240586325804
1.99189629561473	0.237758849313252
1.99422406461229	0.153419877925178
1.98098435432889	0.0245609422587171
1.99881527354847	0.131281213896720
1.99026780288433	0.520228057289928
1.99394052110531	0.973262555548315
1.99676423845605	0.733200939841676
1.99044028306887	0.0655466091538162
1.99220895638217	0.452664096011519
1.99967281380570	0.0246004351885689
1.98445329993034	0.0436886868372558
1.99561719532673	0.669438197662487
1.99106922984091	0.181170901188179
1.42677752275849	0.373040997600060
1.99985642534854	0.331705389653114
1.98892588960286	0.0905104567390803
1.99570956990523	0.137594166655745
1.99712756572684	0.0116613052442916
1.99761096308758	0.544497810583091
1.99917843966375	0.548902353524135
1.99604812483103	0.363959215054892
1.97370585223207	0.140439965394089
1.99822126426888	0.997589743470599
1.99981673555970	0.295499797026614
1.99810379619714	0.215172418098537
1.99385290784048	0.0967351355395940
1.98340346121394	0.295499797026614
1.98727071334110	0.0967351355395940
1.99583409111883	0.486648050904735
1.99881239804121	0.0123961079170779
1.99216872486481	0.0402198248179052
1.98363807201375	0.307091606206465
1.98955999082794	0.0700201382389803
1.96299723560445	0.0285183328499066
1.99827326844249	0.424637580117837
1.97739702698326	0.131281213896720
1.99947192096666	0.280461726485366
1.99985642534854	0.273611346819215
1.99434630983491	0.295161528856059
1.99822126426888	0.175643326680012
1.99106922984091	0.0842005107607819
1.99712756572684	0.0905104567390803
1.99916981021124	0.703533039399715
1.98780310050454	0.0860507779189620
1.99630429608324	0.0547851285698672
1.99246990243466	0.0905104567390803
1.99026780288433	0.736166803643234
1.98756768629791	0.102405574723945
1.99782015511902	0.219598860973970
1.99751134702339	0.184448209112073
1.97511833252200	0.0256491037386021
1.99026780288433	0.0126780548450636

三、完整MATLAB代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式学习第十三天

9.指针: (1)const指针 const 关键字 常量(只读) 1.const int *p; 2.int const *p; 1和2是等价的 const修饰 *p,指针变量p的值可以改变,但不能利用指针修改指向空间中的值 3.int *const p; const修饰 p,指针变量p的值不能改变…

幻兽帕鲁越玩越卡,内存溢出问题如何解决?

近期幻兽帕鲁游戏大火,在联机组队快乐游玩的同时,玩家们也发现了一些小问题。由于游戏有随机掉落材料的设定,服务器在加载掉落物的过程中很容易会出现掉帧、卡顿的情况。某些玩家甚至在游戏1~2时后就出现服务器崩溃的情况&#xf…

招聘网站简单爬虫_24.1.26

完整程序传送门 24.1.26 前些天接了一个大两届的师兄的小活,做了一下爬boss直聘岗位信息的程序,在这里记录一下 程序框架 定义一个名为paQu的接口函数,用于检查窗口的输入,它接受一个参数self,获取self对象的a属性&am…

服务攻防-开发框架安全SpringBootStruts2LaravelThinkPHPCVE复现

知识点: 1、PHP-框架安全-Thinkphp&Laravel 2、J2EE-框架安全-SpringBoot&Struts2 章节点: 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间件&开发框架&am…

Python爬虫请求库安装

请求库的安装 爬虫可以简单分为几步:抓取页面、分析页面和存储数据。 在抓取页面的过程中,我们需要模拟浏览器向服务器发出请求,所以需要用到一些 Python 库来实现 HTTP 请求操作。在本教程中,我们用到的第三方库有 requests、S…

基于vue实现待办清单案例

一、需求 新增内容; 删除内容; 统计操作; 清空数据。 示例图: 二、代码演示 1、基础准备 index.css代码 html, body {margin: 0;padding: 0; } body {background: #fff ; } button {margin: 0;padding: 0;border: 0;backgr…

BF16与FP16的区别

参考 BF16 与 FP16 在模型上哪个精度更高呢BF16 与 FP16 在模型上哪个精度更高呢【bf16更适合深度学习计算,精度更高】: 两者差异图示如下: BF16 是对FP32单精度浮点数截断数据,即用8bit 表示指数,7bit 表示小数。…

微博怎么把客户引流到私域?(引流技巧)

微博 1)背景banner图 在微博主页顶部的背景图里,可以引导添加个人微信、公众号等信息,通常配合福利引导用户添加。 2)个人简介 微博中比较常见的引流方式,可以直接在简介区内留下微信号、公众号名称、邮箱等信息&#…

差异性分析汇总

在做科研写论文的时候,我们总会听说要对数据进行差异性分析,那么何为差异性分析?差异性分析常用的方法有哪些?这些方法应该如何进行分类?如何选择?差异性分析的数据格式是怎么样的?软件如何操作…

MarkDown快速入门-以Obsidian编辑器为例

直接上图,左右对应。 首先是基础语法。 # 标题,几个就代表几级标题;* 单个是序号,两个在一起就是斜体;- [ ] 代表任务,注意其中的空格; 然后是表格按钮代码 | 使用中竖线代表表格&#xff0c…

Bean的注入方法和区别

Bean有几种注入方式?它们有什么区别? Bean对象中有以下几种注入方式: 属性注入Setter注入构造方法注入 属性注入 属性注入是我们最熟悉的,也是日常开发最常使用的一种注入方式,它的实现代码如下: Rest…

HTML小白入门学习-表单标签

一、前言 HTML标签千千万,要学习的占一半。上篇文章中我们学习了列表标签,针对有序列表、无序列表、自定义列表和嵌套列表进行简单的学习了解和实操。本篇文章将为大家介绍另一种常用标签,那就是表单类标签。 我们在网页中经常会看到表单的…

JavaScript版数据结构与算法(二)图、堆、搜索排序算法、算法设计思想

一、图 (一)图是什么 图是网络结构的抽象模型,是一组由边连接的节点。图可以表示任何二元关系,比如道路、航班… JS中没有图,但是可以用 Object 和 Array 构建图。图的表示法:邻接矩阵、邻接表… 1、邻接…

SOME/IP 协议介绍(七)传输 CAN 和 FlexRay 帧

SOME/IP 不应仅用于传输 CAN 或 FlexRay 帧。但是,消息 ID 空间需要在两种用例之间进行协调。 传输 CAN/FlexRay 应使用完整的 SOME/IP 标头。 AUTOSAR Socket-Adapter 使用消息 ID 和长度来构建所需的内部 PDU,但不会查看其他字段。因此,必…

如何发现帕鲁私服漏洞

白天当帕鲁、晚上抓帕鲁 相信所有的帕鲁玩家都不希望辛辛苦苦肝了几百小时抓的帕鲁因为网络入侵消失,除了抵御游戏内的强盗入侵,还要抵御现实世界的网络入侵,原本单纯的帕鲁变的复杂无比。 服务器弱口令、服务漏洞、未授权访问等入侵手段&a…

怎样自行搭建幻兽帕鲁游戏联机服务器?

幻兽帕鲁是一款深受玩家喜爱的多人在线游戏,为了获取更好的游戏体验,许多玩家希望能够自行搭建幻兽帕鲁游戏联机服务器,本文将指导大家如何自行搭建幻兽帕鲁游戏联机服务器。 自行搭建幻兽帕鲁游戏联机服务器,阿里云是一个不错的选…

【UVM源码】UVM Config_db机制使用总结与源码解析

UVM Config_db机制使用总结与源码解析 UVM Config_db机制介绍UVM Config_db 机制引入的背景基本介绍使用方法优缺点: UVM Config_db机制使用示例:UVM Config_db使用高阶规则Config_db资源优先级 UVM Config_db 源码解析 UVM Config_db机制介绍 UVM Conf…

合作文章(IF=13.6)| 神经损伤修复:“多效气体发射器”凝胶的妙用”

研究背景 周围神经损伤(PNI)包括对周围神经的形态学结构或生理功能的所有损伤。由于周围神经的结构和功能复杂,PNI往往导致预后不良和高致残率。药物递送移植物因其重建周围神经微环境的潜力而备受关注,但调节微环境的适当调控时…

2024年自动化测试岗位需求的 7 项必备技能 (最新版)

随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型,测试需求在业界不断增长。测试人员现在正在与开发人员一起工作,自动化测试在许多方面极大地取代了手动测试。 如果您是自动化测试领域的新手,刚雇用您的组织将期望您快速&#xf…

ES 分词器

概述 分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 什么是分词器 顾名思义,文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。在 ES 中,Ana…