基于差分进化算法(Differential Evolution Algorithm,DE)的移动边缘计算的任务卸载与资源调度研究(提供MATLAB代码)

本文主要是介绍基于差分进化算法(Differential Evolution Algorithm,DE)的移动边缘计算的任务卸载与资源调度研究(提供MATLAB代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、优化模型介绍

移动边缘计算的任务卸载与资源调度是指在移动设备和边缘服务器之间,将部分计算任务从移动设备卸载到边缘服务器,并合理分配资源以提高系统性能和降低能耗。
在本文所研究的区块链网络中,优化的变量为:挖矿决策(即 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

二、差分进化算法求解

差分进化算法(Differential Evolution Algorithm,DE)是一种全局优化算法,它基于群体的启发式搜索。每个个体对应一个解向量,DE的进化流程包括变异、杂交和选择操作。与遗传算法相比,差分进化算法的操作定义有所不同,但整体思想相似。

差分进化算法的描述如下:

  1. 初始化种群,随机生成一组解向量。
  2. 变异操作:选择三个不同的个体,通过变异公式将它们融合成一个变异解。
  3. 交叉操作:将变异解的每个参数与原解的对应参数进行比较,根据一定概率选择新解或旧解的值,形成交叉解。
  4. 选择操作:将交叉解与原解进行比较,选择较优的解作为下一次循环的解。
  5. 重复进行2-4步骤,直到满足停止条件(例如达到最大迭代次数或找到满意的解)。

差分进化算法相对于遗传算法的优势在于简单易实现,但也有很多变种和改进方法,可以根据具体情况选择适合的算法。

2.1部分MATLAB代码

close all
clear 
clc
dbstop if all error
t=1;
for NP=50:50:300
para = parametersetting(NP);
para.MaxFEs =6000;%最大迭代次数
Result(t)=Compute(NP,para);
t=t+1;
end
QQ=50:50:300;
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部分结果

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

在这里插入图片描述
当矿工数量为50 时,差分进化算法得到的最优策略

1.70961903063870	0.915057108482030
1.97884581710515	0.136309993850076
1.82063040644361	0.475380964903532
1.43793030306619	0.714888695101324
1.82063040644361	0.900636150747992
1.61403687280477	0.230326490177402
1.44882104170844	0.475380964903532
1.92948288208559	0.679024405084065
1.97217203090381	0.475380964903532
1.89759336207038	0.230000959720043
1.84465608318310	0.577481991007684
1.88386265861916	0.403219304807995
1.98275518824349	0.184344657691976
1.88386265861916	0.690069920918526
1.99454958480856	0.714888695101324
1.64205969743127	0.154575948291039
1.92820145682232	0.738160805429999
1.97531511718751	0.486581365313851
1.89124702129147	0.998483429338209
1.85753262962595	0.784929891371303
0.206794357912299	0.475380964903532
1.98519754174442	0.625966057957844
1.95031384568391	0.890794551305381
1.63613228590527	0.757641108127655
1.58453437629969	0.572035284258508
1.95992990908977	0.588978363106915
1.99454958480856	0.157923330009538
1.87752509446173	0.861874778071472
1.73388961758303	0.0182505268364460
1.97884581710515	0.679546185110974
1.72577419634882	0.733875154051102
1.92979930893703	0.845620688312287
1.81981689329417	0.475380964903532
1.85753262962595	0.358725775264239
1.98275518824349	0.820915129741387
1.88386265861916	0.890794551305381
1.96549917117933	0.403219304807995
1.64287348500743	0.960178855853379
1.66476223036004	0.836742870036493
1.82259751216598	0.588978363106915
1.65625788695821	0.0534368180687056
1.99019691658474	0.0783551639914413
1.96083706050509	0.676355368865015
1.94280042487603	0.0425319119217820
1.92820145682232	0.958717191748582
1.92948288208559	0.739401704264659
1.97181148757610	0.619487787865644
1.83599108308744	0.921117032842475
0.796709687090485	0.626280644353691
1.95852658388316	0.0203334852718414

三、完整MATLAB代码

这篇关于基于差分进化算法(Differential Evolution Algorithm,DE)的移动边缘计算的任务卸载与资源调度研究(提供MATLAB代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648241

相关文章

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

加载资源文件失败

背景         自己以前装了一个海康的深度学习算法平台,试用期是一个月,过了一个月之后,因为没有有效注册码或者加密狗的支持了导致无法使用,于是打算卸载掉,在卸载一个软件的时候,无论是使用控制面板还是软件自带的卸载功能,总是卸载不掉,提示“加载资源文件失败”。该软体主要包括以下两部分: 用自带卸载功能卸载的时候分别提示如下:     用控制面板卸载的时候反应很慢,最后也是提示这个

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共