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

一、优化模型介绍

移动边缘计算中的计算卸载是一种将计算任务从设备卸载到边缘服务器的技术。它可以将计算量大的任务分配给计算资源充足的代理服务器进行处理,从而减轻设备的计算负担,延长设备的电池寿命,并满足业务时延需求。计算卸载的过程一般包括以下几个步骤:

  1. 任务划分:将计算任务划分为多个子任务,以便在边缘服务器上并行处理。

  2. 任务调度:根据任务的特性和边缘服务器的资源情况,选择合适的边缘服务器来执行任务。

  3. 数据传输:将任务所需的数据从设备传输到边缘服务器,以便进行计算。

  4. 任务执行:边缘服务器执行任务,并生成计算结果。

  5. 结果传输:将计算结果从边缘服务器传输回设备,供设备使用。

移动边缘计算的任务卸载与资源调度是指在移动设备和边缘服务器之间,将部分计算任务从移动设备卸载到边缘服务器,并合理分配资源以提高系统性能和降低能耗。通过计算卸载,移动边缘计算可以充分利用边缘服务器的计算资源,提高计算效率,并减少设备的能耗。同时,计算卸载还可以降低设备的计算要求,使得设备可以更好地适应资源受限的环境。

在本文所研究的区块链网络中,优化的变量为:挖矿决策(即 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. 选择操作:根据适应度函数评估交叉个体的适应度,并选择出适应度较高的个体作为子代。
  6. 更新种群:将子代个体替换掉父代个体,得到新的种群。
  7. 终止条件判断:判断是否满足终止条件,如果满足则停止迭代,否则返回步骤2。

差分进化算法的求解流程可以用以下伪代码表示:

初始化种群
计算适应度
while (未满足终止条件) do
    选择操作
    变异操作
    交叉操作
    计算适应度
    更新种群
end while

差分进化算法的优点是简单易实现,对问题的约束条件不敏感,且具有较好的全局搜索能力。差分进化算法相对于遗传算法的优势在于简单易实现,但也有很多变种和改进方法,可以根据具体情况选择适合的算法。

2.1部分MATLAB代码

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

当矿工数量N为100 150 200 250 300 350 400时:所有矿工的利润随迭代次数的变化如下图所示

MATLAB:差分进化算法(Differential Evolution Algorithm,DE)求解基于移动边缘计算的任务卸载与资源调度(提供MATLAB代码)_第1张图片
MATLAB:差分进化算法(Differential Evolution Algorithm,DE)求解基于移动边缘计算的任务卸载与资源调度(提供MATLAB代码)_第2张图片

当矿工数量N为100 时,算法得到的策略:

1.99910733547691	0.583679897159720
1.99814836312718	0.336295433197964
1.98080093266267	0.261064634705405
1.99291652389790	0.0454020861000427
1.99030230412343	0.606475811936405
1.97658812313413	0.150381980029162
1.95549968853402	0.841013977595920
1.90402387903431	0.670316882638040
1.97605794651426	0.268873498987471
1.95194013925866	0.685981342214263
1.98531521759387	0.138426194888635
1.97605794651426	0.650507109361090
1.99132837436966	0.407671521660600
1.98533374462100	0.361322858085288
1.95606954455790	0.432901871800567
1.99108091923927	0.292186054457482
1.96207855015340	0.452940181362156
1.99167434627853	0.0806701949876551
1.99108091923927	0.102886258205772
1.99655552559078	0.832980384731180
1.97605794651426	0.342666011606429
1.97605794651426	0.636622718947714
1.88400734426823	0.309084595972473
1.99814836312718	0.460231679989853
1.99655552559078	0.885816240090837
1.94916486367444	0.179617819569098
1.99204572332214	0.158728095550011
1.95415890111005	0.148827130016240
1.98111961240052	0.415591122887248
1.95767084435506	0.113629759404409
1.95312494250575	0.198126643270855
1.97605794651426	0.360325650982122
1.99725764880872	0.777927255472831
1.92038108912288	0.862757956968972
1.98548897199285	0.0356693420651362
1.95767084435506	0.107298275941148
1.97605794651426	0.570957226173182
1.97605794651426	0.125804875973785
1.99239673022338	0.700555231592527
1.98444719236996	0.0814072611564682
1.98878136783022	0.183506184945560
1.97605794651426	0.382940078773612
1.98533374462100	0.790386320241267
1.95412522245428	0.133359528444516
1.94849801671940	0.229287600393258
1.95006870741270	0.309084595972473
1.95468458946792	0.276940271754652
1.95767084435506	0.472964946945920
1.98538500053098	0.533118858010617
1.91173033660231	0.198126643270855
1.95810711801563	0.706782937575339
1.97008522389596	0.501780836652877
1.99725764880872	0.252517625143934
1.96040869636562	0.0392766791688670
1.95982591071497	0.841693241913156
1.97534705277122	0.749705229800646
1.98878136783022	0.250186385713828
1.98251431805813	0.501972754497980
1.98267664257750	0.893813921254774
1.96033291398647	0.0810382205715721
1.95982591071497	0.582891519472227
1.93908327942183	0.604816329687557
1.98444719236996	0.862757956968972
1.99108091923927	0.0356693420651362
1.98080093266267	0.434263117556517
1.99239673022338	0.929607305168635
1.98351710119410	0.841062339392980
1.99461080249156	0.761039419680221
1.98731002152423	0.179625694336434
1.97413073685164	0.544984890389493
1.98123550109219	0.361332446684974
1.98738891197202	0.460231679989853
1.99655552559078	0.878823692667820
1.99536861504472	0.952665932097093
1.89054407390834	0.0259115036778904
1.95038288145605	0.645456116784319
1.97075826463760	0.288590203557999
1.92983960883861	0.0976924507291708
1.99897519825710	0.908132386176987
1.99536861504472	0.248713111715096
1.93886432077054	0.0814072611564682
1.99278813098679	0.641257132822338
1.98267664257750	0.888570131695506
1.99291652389790	0.339167610763658
1.98397744246042	0.345815653180142
1.99725764880872	0.0645188165520999
1.99837093409626	0.604661677772817
1.99910733547691	0.664042124476896
1.99287460358760	0.297165780442725
1.93803176521246	0.0268638196202097
1.95606954455790	0.0454020861000427
1.98444719236996	0.618684856636838
1.99239673022338	0.199826468336068
1.98336334776299	0.0697402396551964
1.99768870538279	0.244834038486441
1.99655552559078	0.0247155919010814
1.98444719236996	0.0567058083536050
1.97605794651426	0.0697402396551964
1.91167897396563	0.0852187427102047
1.98611907819381	0.0107115114358811

三、完整MATLAB代码

你可能感兴趣的:(优化算法,MATLAB,matlab,算法,边缘计算,人工智能,开发语言)