Matlab main

本文探讨了在智能物联网系统中,通过优化功率分配、UE-Fog分布、卸载模式选择、算力配置及共识算法,实现系统能耗与时延的综合优化。实验对比了不同模式、算力和算法下的系统表现,旨在为物联网资源管理和优化提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clc;
clear all;
global UEnum BS Ri BSnum Fognum Sm  wb BlockFognum PB PB_w PF PF_w PFi PFi_w PU PU_w PUi PUi_w N0 N0_w BH Cn F 

%%
%%功率化

BS=500;
PB=46;%%dBm BS
PB_w=(10.^(PB./10))./1000;
PF=33;%%dBm Fog
PF_w=(10.^(PF./10))./1000;
PFi=-30;%增益
PFi_w=(10.^(PFi./10))./1000;
PU=20;%%dBm UE
PU_w=(10.^(PU./10))./1000;
PUi=-30;%增益
PUi_w=(10.^(PUi./10))./1000;
N0=-114;%%dBm 噪声
N0_w=(10.^(N0./10))./1000;
BH=1200;%HZ

%%数量化

BSnum=1;
Fognum=38;
BlockFognum=12;
UEnum=100;
Sm=500;% MB 任务大小kb
Cn=1%CPU周期
F=1800  %最大频率
% Sb=1;%MB 区块大小
wb=0.1;

%%
%
%%信誉初始化

Ri=ones(1,Fognum);
rand('seed',2)
t1=rand(1,Fognum);%t1轮共识
Ri=Ri.*t1;
figure(1)
hold on 
for i=1:Fognum
    y=Ri(1,i);
    width=0.8
    bar(i,y,width,'Facecolor',[0.5,0.6,0.8],'Edgecolor',[0.5,0.6,0.8],'LineWidth',1); 
%     bar(i,y,width,'Facecolor',[0.5,1,1],'Edgecolor',[0,0,0],'LineWidth',3,'LineStyle',':'); 
end
VH=0.6
VL=0.1
x=0:Fognum+1
y1(1:Fognum+2)=VL
y2(1:Fognum+2)=VH
plot(x,y1,'r-',x,y2,'g-')
axis([0,Fognum+1,0,1])
set(gca,'xtick',0:2:Fognum)
%set(gca,'XTicklables',{})
title('Fog Server Trust Value')
xlabel('雾服务器编号')
ylabel('当前信誉值')
% Ri(1,1)=Value(Ri(1,1),1)
% for i=1:Fognum
%     Fog_value(1,i)=Ri(1,i)7
% end
%%

%%

%%生成UE Fog 分布图
figure(2)
UEinfo=setUE()
Foginfo=setFog()
Blockinfo=setBlockFog()
hold on
a1=[-500,-500];%左下
a2=[500,-500];%右下
a3=[500,500];%右上
a4=[-500,500];%左上
line(a1,a2);line(a2,a3);line(a3,a4);line(a4,a1);
% line([-500,500],[0,0],'linestyle',':');line([0,0],[500,-500],'linestyle',':');
% line([-500,500],[500,-500],'linestyle',':');line([-500,500],[-500,500],'linestyle',':');
%h=plot(UEinfo(1:UEnum,1),UEinfo(1:UEnum,2),'r.',Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),'gp',Blockinfo(1:BlockFognum,1),Blockinfo(1:BlockFognum,2),'yd')
a=plot(UEinfo(1:UEnum,1),UEinfo(1:UEnum,2),'r.','markersize',15)
c=plot(Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),'gd','markersize',6,'markerfacecolor','b')
%b=plot(Blockinfo(1:BlockFognum,1),Blockinfo(1:BlockFognum,2),'yd','markerfacecolor','y')
voronoi(Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),':')
ld=legend([a,c],'UE','Fog','Location','southoutside')
set(ld,'Orientation','horizon')
title(ld,'Legend Title')
title('UE Fog初始位置分布图')
%axis square
% axis([-500 500 -500 500])
set(gca,'XTick',-500:100:500)
%set(gca,'XTicklabel',{'-500','-400','-300','-200','-100','0','100','200','300','400','500'})
set(gca,'YTick',-500:100:500)
%set(gca,'YTicklabel',{'-500','-400','-300','-200','-100','0','100','200','300','400','500'})
% text(300,100,'S1');text(100,300,'S2');text(-100,300,'S3');text(-300,100,'S4');
% text(-300,-100,'S5');text(-100,-300,'S6');text(100,-300,'S7');text(300,-100,'S8');
%%

%%

%%基于t1轮信誉值生成Blockpoint当前分布图(范诺图)
figure(3)
UEinfo=setUE()
Foginfo=setFog()
Blockpoint=Blockpoint()
a1=[-500,-500];%左下
a2=[500,-500];%右下
a3=[500,500];%右上
a4=[-500,500];%左上
line(a1,a2);line(a2,a3);line(a3,a4);line(a4,a1);
% line([-500,500],[0,0],'linestyle',':');line([0,0],[500,-500],'linestyle',':');
% line([-500,500],[500,-500],'linestyle',':');line([-500,500],[-500,500],'linestyle',':');
hold on;
%h=plot(UEinfo(1:UEnum,1),UEinfo(1:UEnum,2),'r.',Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),'gd',Blockinfo(1:BlockFognum,1),Blockinfo(1:BlockFognum,2),'yd')
a=plot(UEinfo(1:UEnum,1),UEinfo(1:UEnum,2),'r.','markersize',15)
c=plot(Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),'gd','markersize',6,'markerfacecolor','b')
b=plot(Blockpoint(1:BlockFognum,1),Blockpoint(1:BlockFognum,2),'yd','markerfacecolor','y')
voronoi(Foginfo(1:Fognum,1),Foginfo(1:Fognum,2),':')
ld=legend([a,b,c],'UE','Blockpoint','Fog','Location','southoutside')
set(ld,'Orientation','horizon')
title(ld,'Legend Title')
title('Blockpoint位置分布图')
%axis square
set(gca,'XTick',-500:100:500)
% set(gca,'XTicklabel',-500:100:500)
set(gca,'YTick',-500:100:500)
%set(gca,'YTicklabel',{'-500','-400','-300','-200','-100','0','100','200','300','400','500'})
% text(300,100,'S1');text(100,300,'S2');text(-100,300,'S3');text(-300,100,'S4');
% text(-300,-100,'S5');text(-100,-300,'S6');text(100,-300,'S7');text(300,-100,'S8');
%%

%%
%%能耗对比

EE=[]
ED0=[]
ED1=[]
figure(4)
num=30
for i=1:num
    UEnoce=randi(UEnum,[1,1])%%当前缓存的用户(缓存)
    [E0,T0]=mode0_EE(UEnoce)
    [E1,T1]=mode1_EE()
    mode=modeSelect(E0,E1)
    if mode==0
        EE(i)=E0
    else EE(i)=E1
    end
    ED0(i)=E0
    ED1(i)=E1
end
x=1:num
y=EE(1:num)
z0=ED0(1:num)
z1=ED1(1:num)
hold on
plot(x,z0,'rd',x,z1,'gd',x,y,'bd',x,z0,'r:',x,z1,'g:',x,y,'b-')
xlim([0,num+1])
ld1=legend('Pattern0','Pattern1','OptimalPattern','Location','southoutside')
set(ld1,'Orientation','horizon')
title(ld1,'Legend Title')
set(gca,'xtick',0:2:num)%'LineWidth',1 坐标轴的宽度
%set(gca,'xticklabelrotation',45)
title('卸载模式选择')
xlabel('用户编号')
ylabel('系统能耗')
%%

%%

%不同模式下,能耗对比(随用户数量变化)
figure(5)
Etotal=[]
Fognoce=randi(UEnum,[1,1])%%当前设备连接的用户
for i=1:num
    Etotal(i)=sum(EE(1:i))
    E0total(i)=sum(ED0(1:i))
    E1total(i)=sum(ED1(1:i))
end
xt=1:num
yt=Etotal(1:num)%num指代当前连接的UE数量
mt=E0total(1:num)
nt=E1total(1:num)
hold on
a=plot(xt,yt,'r-d',xt,mt,'y-d',xt,nt,'g-d')
legend(a,'优化开销','模式0','模式1','Location','SouthEast')
xlim([0,num+1])
xlabel('用户数量')
set(gca,'xtick',0:2:num)
ylabel('系统能耗')
title('不同模式下,能耗对比')

%%

%%

%不同模式下,能耗对比(随雾服务器数量变化)
figure(6)
J=0
for i=1:Fognum %%选信誉值合适的点
    if Ri(i)>=VL
     J=J+1 
    end
end
fum=J
for i=1:fum
    numm=randi(num,[1,1])%指代当前连接的UE数量
    EF(i)=sum(Etotal(1:numm))
    EF0(i)=sum(E0total(1:numm))
    EF1(i)=sum(E1total(1:numm))
end
for i=1:fum
    EFT(i)=sum(EF(1:i))
    EF0T(i)=sum(EF0(1:i))
    EF1T(i)=sum(EF1(1:i))
end
xt=1:fum
yt=EFT(1:fum)
mt=EF0T(1:fum)
nt=EF1T(1:fum)

a=plot(xt,yt,'r-d',xt,mt,'y-d',xt,nt,'g-d')
legend(a,'优化开销','模式0','模式1','Location','SouthEast')
set(gca,'xtick',0:2:fum)
xlabel('雾服务器数量')
ylabel('系统能耗')
title('不同模式下,能耗对比')
%%

%%

%时延对比
figure(7)
[a,b,c,d]=R_FU_SNR()
R0=c
R1=d
T_req0=(1/R0)*Sm
T_req1=(1/R1)*Sm
TT=[]
TT0=[]
TT1=[]
for i=1:num
    TT(i)=Concensus(i)+min(T_req0,T_req1)
end
for i=1:num
    TT0(i)=Concensus(i)+T0
end
for i=1:num
    TT1(i)=Concensus(i)+T1
end
tx=1:num
tty=TT(1:num)
t0y=TT0(1:num)
t1y=TT1(1:num)
a=plot(tx,tty,'r-d',tx,t0y,'y-d',tx,t1y,'g-d')
set(gca,'xtick',0:2:num)
legend(a,'联合优化模式','单一模式0','单一模式1','Location','SouthEast')
xlim([0,num+1])
xlabel('用户数量')
ylabel('系统时延')
title('不同模式下,时延对比')
%%

%%

%不同算力对比
figure(8)
for i=1:num
    UEnoce=randi(UEnum,[1,1])%%当前缓存的用户(缓存)
    [FFmax,FTmax]=Fmax_EE(UEnoce)
    [FFmin,FTmin]=Fmin_EE(UEnoce)
    [FF,FT]=mode0_EE(UEnoce)
    ED(i)=FF
    ET(i)=FT
    EDmax(i)=FFmax
    EDmin(i)=FFmin
    EDTmax(i)=FTmax
    EDTmin(i)=FTmin
end
for i=1:num
    Et(i)=sum(ED(1:i))
    Tt(i)=sum(ET(1:i))
    Ext(i)=sum(EDmax(1:i))
    Ent(i)=sum(EDmin(1:i))
    Txt(i)=sum(EDTmax(1:i))
    Tnt(i)=sum(EDTmin(1:i))
end
xt=1:num
%能耗
yt=Et(1:num)
mt=Ext(1:num)
nt=Ent(1:num)
%时延(单看MEC时延)
ty=Tt(1:num)
tm=Txt(1:num)
tn=Tnt(1:num)
subplot(2,2,1)
a=plot(xt,yt,'r-d',xt,mt,'g-d',xt,nt,'b-d','markersize',6)
legend(a,'优化算力F','最大算力Fmax','最小算力Fmin','Location','SouthEast')
set(gca,'xtick',0:2:num)
xlabel('用户数量')
ylabel('系统能耗')
title('不同算力下,能耗对比')
subplot(2,2,2)
b=plot(xt,ty,'r-*',xt,tm,'g-*',xt,tn,'b-*','markersize',6)
legend(b,'优化算力F','最大算力Fmax','最小算力Fmin','Location','SouthEast')
set(gca,'xtick',0:2:num)
xlabel('用户数量')
ylabel('系统时延')
title('不同算力下,时延对比')
subplot('position',[0.2,0.06,0.6,0.45])
w1=0.4
w2=0.6
for i=1:num
    EOT(i)=(w1.*Et(i)./10^9+w2.*Tt(i).*(1-w1))
    EOTx(i)=(w1.*Ext(i)./10^9+w2.*Txt(i).*(1-w1))
    EOTn(i)=(w1.*Ent(i)./10^9+w2.*Tnt(i).*(1-w1))
end
x1=1:num
y=EOT(1:num)
yx=EOTx(1:num)
yn=EOTn(1:num)
c=plot(x1,y,'r-d',x1,yx,'g-d',x1,yn,'b-d','markersize',6)
legend(c,'优化算力F','最大算力Fmax','最小算力Fmin','Location','SouthEast')
set(gca,'xtick',0:2:num)
xlabel('用户数量')
ylabel('能耗时延联合优化')
title('不同算力下,能耗时延联合优化对比')

%%

%%
%算法对比:PoW DPoS PBFT
figure(9)
Blocknum=20
for i=1:Blocknum
    [EW0,TW0,EW1,TW1,EW2,TW2,EW3,TW3]=Contrast()
    E0(i)=EW0
    T0(i)=TW0
    E1(i)=EW1
    T1(i)=TW1
    E2(i)=EW2
    T2(i)=TW2
    E3(i)=EW3
    T3(i)=TW3
end
for i=1:Blocknum
    ET0(i)=sum(E0(1:i))
    TT0(i)=sum(T0(1:i))
    ET1(i)=sum(E1(1:i))
    TT1(i)=sum(T1(1:i))
    ET2(i)=sum(E2(1:i))
    TT2(i)=sum(T2(1:i))
    ET3(i)=sum(E3(1:i))
    TT3(i)=sum(T3(1:i))
end
X=1:Blocknum
subplot(1,2,1)
a=plot(X,ET0(1:Blocknum),'r-d',X,ET1(1:Blocknum),'g-d',X,ET2(1:Blocknum),'y-d',X,ET3(1:Blocknum),'b-d')
legend(a,'目标共识算法','PoW共识算法','DPoS共识算法','PBFT共识算法','Location','SouthEast')
set(gca,'xtick',0:2:Blocknum)
xlabel('区块数量')
ylabel('能耗')
title('不同算法下,能耗对比')
subplot(1,2,2)
b=plot(X,TT0(1:Blocknum),'r-d',X,TT1(1:Blocknum),'g-d',X,TT2(1:Blocknum),'y-d',X,TT3(1:Blocknum),'b-d')
legend(b,'目标共识算法','PoW共识算法','DPoS共识算法','PBFT共识算法','Location','SouthEast')
set(gca,'xtick',0:2:Blocknum)
xlabel('区块数量')
ylabel('时延')
title('不同算法下,时延对比')
% subplot('position',[0.2,0.06,0.45,0.3])
figure(10)
w1=0.4
w2=0.6
for i=1:Blocknum
    EETT0(i)=(w1.*ET0(i)+w2.*TT0(i).*(1-w1)/10^6)
    EETT1(i)=(w1.*ET1(i)+w2.*TT1(i).*(1-w1)/10^6)
    EETT2(i)=(w1.*ET2(i)+w2.*TT2(i).*(1-w1)/10^6)
    EETT3(i)=(w1.*ET3(i)+w2.*TT3(i).*(1-w1)/10^6)
end
x1=1:Blocknum
c=plot(x1,EETT0(1:Blocknum),'r-d',x1,EETT1(1:Blocknum),'g-d',x1,EETT2(1:Blocknum),'y-d',x1,EETT3(1:Blocknum),'b-d','markersize',6)
legend(c,'目标共识算法','PoW共识算法','DPoS共识算法','PBFT共识算法','Location','SouthEast')
set(gca,'xtick',0:2:num)
xlabel('区块数量')
ylabel('能耗时延联合优化')
title('不同算法下,能耗时延联合优化对比')
%%
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值