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

一、优化模型介绍

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

  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-1plot(Result(i).FitCurve,StrCor{i},'linewidth',3)hold onLenG{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.mzph.cn/news/653427.shtml

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

相关文章

Windows11搭建GPU版本PyTorch环境详细过程

Anaconda安装 https://www.anaconda.com/ Anaconda: 中文大蟒蛇,是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。从官网下载Setup:点击安装,之后勾选上可以方便在普通命令行cmd和PowerShell中使用…

BGP同步规则

BGP同步规则:开启同步下,从IBGP收到一条路由不会传给任何EBGP邻居(实验效果IBGP邻居和EBGP邻居都不传),除非从自身的IGP中也学到这条路由。目的是防止AS内部出现路由黑洞,向外部通告了一个本AS不可达的虚假的路由。 同步规则只影响…

qt学习:http+访问百度智能云api实现车牌识别

目录 登录到百度智能云,找到文字识别 完成操作指引 开通 查看车牌识别的api文档 ​编辑​编辑 查看自己应用的api key 查看回应的数据格式 编程步骤 ui界面编辑 添加模块,头文件和定义变量 新建两个类,一个图像Image类&#xff0c…

Day01-变量和数据类型课后练习(输出你最想说的一句话,定义所有基本数据类型的变量和字符串变量,用合适类型的变量存储个人信息并输出,定义圆周率PI,简答题)

参考答案博客链接跳转 文章目录 1、输出你最想说的一句话!2、定义所有基本数据类型的变量和字符串变量3、用合适类型的变量存储个人信息并输出4、定义圆周率PI5、简答题 1、输出你最想说的一句话! 编写步骤:List item定义类 Homework1&…

【嵌入式移植】5、U-Boot源码分析2—make nanopi_neo2_defconfig

U-Boot源码分析2—make nanopi_neo2_defconfig 1 概述2 nanopi_neo2_defconfig3 编译过程分析3.1 编译目标3.2 scripts_basic3.2.1 prefix src定义3.2.2 PHONY3.2.3 __build3.2.4 fixdep3.3 objscripts/kconfig 1 概述 上一章中,对Makefile相关源码进行了初步分析&…

从零开始:CentOS系统下搭建DNS服务器的详细教程

前言 如果你希望在CentOS系统上建立自己的DNS服务器,那么这篇文章绝对是你不容错过的宝藏指南。我们提供了详尽的步骤和实用技巧,让你能够轻松完成搭建过程。从安装必要的软件到配置区域文件,我们都将一一为你呈现。无论你的身份是运维人员,还是程序员,抑或是对网络基础设…

服务端开发小记02——Maven

这里写目录标题 Maven简介Maven在Linux下的安装Maven常用命令 Maven简介 Apache Maven Project是一个apache的开源项目,是用于构建和管理Java项目的工具包。 用Maven可以方便地创建项目,基于archetype可以创建多种类型的java项目;Maven仓库…

5G_RACH(一)

什么是RACH RACH 代表 Random Access Channel。这是开机时UE发给eNB的第一条消息。 为什么选择RACH ?(RACH 的功能是什么? 当你第一次听到RACH或RACH Process这个词时,你脑海中浮现的第一个问题是“为什么是RACH?”…

05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现

3.8 Benchmark Redis安装完毕后会自动安装一个redis-benchmark测试工具,其是一个压力测试工具,用于测试 Redis 的性能。 src目录下可找到该工具 通过 redis-benchmark –help 命令可以查看到其用法 3.8.1 测试1 3.9 简单动态字符串SDS 无论是 Redis …

网络通信实现

【 一 】网络通信实现 【 1 】实现网络通信的四要素 本机的ip地址 子网掩码 网关的IP地址 DNS的IP地址( 域名系统) DNS服务器是指提供域名解析服务的服务器。它负责将域名转换为相应的IP地址,以便计算机可以通过IP地址与其他设备进行通信。 通过使用DNS服务器…

【C语言】linux内核ipoib模块 - ipoib_netdev_ops_pf结构

一、ipoib_netdev_ops_pf结构 static const struct net_device_ops ipoib_netdev_ops_pf {.ndo_init ipoib_ndo_init,.ndo_uninit ipoib_ndo_uninit,.ndo_open ipoib_open,.ndo_stop ipoib_stop,.ndo_change_mtu ipoib_change_mtu,.ndo_…

java servlet勤工助学家教管系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 勤工助学家教管系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myecli…

绝地求生:【PC】开发者日志:竞技比赛地图轮换

各位玩家大家好,欢迎收看闲游盒本期开发者日志。 今天闲游盒想和大家分享一下2024年竞技比赛地图轮换的几项主要改动。 从第28赛季第1轮更新(2月)开始,竞技比赛的地图阵容中将包含所有8x8尺寸的地图,在电竞赛事中出场…

SpringBoot-yml文件的配置与读取

配置 值前边必须要有空格,作为分隔符 使用空格作为缩进表示层级关系,相同的层级左侧对齐 获取 使用Value(”${键名}”) 使用ConfigurationProperties(prefix "前缀") 1.前缀要与yml配置文件中的前缀一致 2.实体类的字段名与配置文件中的键名一…

【微服务】springboot集成ELK使用详解

目录 一、前言 二、为什么需要ELK 三、ELK介绍 3.1 什么是elk 3.2 elk工作原理 四、ELK环境搭建 4.1 搭建es环境 4.1.1 获取es镜像 4.1.2 启动es容器 2.1.3 配置es参数 2.1.4 重启es容器并访问 4.2 搭建kibana 4.2.1 拉取kibana镜像 4.2.2 启动kibana容器 4.2.3 …

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署

看本篇文章的前提是已经部署完GItlab和Jenkins服务器,已经可以手动构建成功,并且经过了很多次实践,对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化(其一)部署gitlab https://blog.csdn.net/weixin_45062076…

【Redis】Redis集群方案应该怎么做 都有哪些方案

🍎个人博客:个人主页 🏆个人专栏:Redis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 (1)twemproxy (2)codis (3)redis cluster3.0自带的集群 …

爬虫基础-前端基础

Html是骨骼、css是皮肤、js是肌肉,三者之间的关系可以简单理解为m(html)-v(css)-c(js) 浏览器的加载过程 构建dom树 子资源加载-加载外部的css、图片、js等外部资源 样式渲染-css执行 DOM树 ajax、json、xml AJAX 是一种在无需重新加载整个网页的情况下&#xf…

iOS_Xcode_LLDB调试常用命令

文章目录 结构常用命令:1、流程控制:2、常用命令3、进程信息:4、寄存器:register5、镜像:image6、内存:memory7、符号断点:breakpoint8、内存断点:watchpoint9、Tips: 结…

MySQL 学习记录

基本常识 row-size-limitsblob: BLOB and TEXT columns cannot have DEFAULT values.Instances of BLOB or TEXT columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory b…