基于差分进化算法的移动边缘计算 (MEC) 的资源调度分配优化(提供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

二、差分进化算法求解

2.1部分代码

close all
clear 
clc
dbstop if all error
NP = 100;%矿工数量
para = parametersetting(NP);
para.MaxFEs =5000;%最大迭代次数
Result=Compute(NP,para);
figure(1)
plot(Result.FitCurve,'r-','linewidth',2)
xlabel('FEs')
ylabel('Token')
figure(2)
plot(Result.ConCurve,'g-','linewidth',2)
xlabel('FEs')
ylabel('Con')



2.2部分结果

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

算法得到的资源分配:

1.96811552438660	0.953006101348509
1.96466685390698	0.271902260303373
1.98787052377883	0.474153524868700
1.96819942207163	0.346379035947841
1.99091543574949	0.200876712644815
1.75343624634699	0.334356132462864
1.98500749778468	0.307444848291752
1.84892091516342	0.298750104087243
1.97627537784477	0.136707719799701
1.98247708944478	0.825715938835666
1.82415247169822	0.592341764056851
1.95255969969755	0.266870044692269
1.55784064472313	0.198677986588129
1.99905703081220	0.864360471110543
1.99966672978573	0.208510255774389
1.99688659497769	0.0918824246788308
1.98550616407992	0.338463477789463
1.93993936287256	0.125644327388094
1.99699497232442	0.647475988987162
1.96398401982365	0.465688977142535
1.99091543574949	0.743184799966985
1.96990281764298	0.714108040841893
1.97038900311126	0.589313007134188
1.99476384052921	0.165976864334375
1.88837922907041	0.407249404947350
1.90123564522443	0.0259150669487571
1.96990281764298	0.865499536534992
1.98251610689349	0.423166248324710
1.79062121977309	0.134536527173266
1.86555117077209	0.433716644319901
1.99699497232442	0.527866317534775
1.99476384052921	0.688760982663683
1.97674256927618	0.287210638597892
1.76141326412447	0.433716644319901
1.98550616407992	0.494479004505169
1.93568365938428	0.210270205638780
1.76141326412447	0.134536527173266
1.99318790325672	0.463178386123276
1.95682912764954	0.873704345638409
1.96819942207163	0.684964734475016
1.98247708944478	0.461790633870382
1.97627537784477	0.787640320359472
1.96819942207163	0.465688977142535
1.81951497310007	0.709782769737031
1.91717991800798	0.307444848291752
1.64596073389228	0.239159634095697
1.99826774684560	0.402723342616452
1.97330988977545	0.420841090504728
1.99688659497769	0.367195541000771
1.97889615328010	0.843193159989458
1.99699497232442	0.523768689297030
1.92148215776128	0.663367007870150
1.97511494395285	0.770648130067366
1.96819942207163	0.327375030890668
1.90398161302827	0.839744341831028
1.89043943861968	0.289783983459719
1.99699497232442	0.533319780807194
1.95116437441300	0.700957227852864
1.99121369063535	0.754607214742589
1.87983995904930	0.609769452627303
1.84892091516342	0.539298593105581
1.99977128699058	0.788773855758191
1.98739282034646	0.469029773060142
1.99977128699058	0.738806842279465
1.99318790325672	0.861732699602560
1.89528705623385	0.751248427333978
1.99318790325672	0.606673004912089
1.88837922907041	0.0950878414681128
1.95986020059497	0.420841090504728
1.99620036364745	0.367759263664120
1.84149233878646	0.0312600209994546
1.97052417907742	0.614595104101977
1.95930654638147	0.252309411754703
1.99767004536831	0.471008106969735
1.99476384052921	0.121831563328420
1.91023269675185	0.891251163847819
1.99826774684560	0.697077892570419
1.94737447735811	0.223823307777294
1.96466685390698	0.530942973106581
1.98251610689349	0.709782769737031
1.80244505169201	0.903799290199773
1.97330988977545	0.511557550448898
1.99897629369323	0.401063559063827
1.99476384052921	0.669326947551257
1.99476384052921	0.209953433257302
1.99476384052921	0.473000128326441
1.96819942207163	0.884127095870242
1.99699497232442	0.974541259533987
1.99584133362082	0.525442981913958
1.96575023838394	0.0623933694916289
1.93792710962256	0.855551087118804
1.99740286694205	0.735027403529296
1.98550616407992	0.314664453608669
1.99620036364745	0.506153103638960
1.96811552438660	0.0309570286681788
1.97798566131583	0.189970375715465
1.98526170939456	0.118404965890552
1.99740286694205	0.879091954485326
1.99476384052921	0.983286613303637
1.65047014229422	0.0102537270833978

三、完整MATLAB代码

最近更新

  1. TCP协议是安全的吗?

    2024-01-30 05:22:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-30 05:22:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-30 05:22:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-30 05:22:01       18 阅读

热门阅读

  1. springboot mapstruct

    2024-01-30 05:22:01       34 阅读
  2. ES6模块化导入与导出的方式

    2024-01-30 05:22:01       37 阅读
  3. 判断张量是否在GPU上

    2024-01-30 05:22:01       34 阅读
  4. VUE中一些概念的理解

    2024-01-30 05:22:01       31 阅读
  5. MyBaties-增删查改

    2024-01-30 05:22:01       39 阅读
  6. Tik Tok帳戶註冊中海外動態IP的作用

    2024-01-30 05:22:01       25 阅读
  7. SpringBoot 实现定时任务

    2024-01-30 05:22:01       35 阅读
  8. mysql学习打卡day19

    2024-01-30 05:22:01       30 阅读
  9. 深入了解 LCC:智能驾驶的关键技术

    2024-01-30 05:22:01       34 阅读