【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】

举报
海神之光 发表于 2022/05/29 02:27:39 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、无线体域网简介

在无线体域网网络中,体域网节点在电源能量、计算能力、通信能力等方面具有局限性,节点间如何相互协作并发挥其整体综合作用,是设计无线体域网网络自组织的重点和难点。同时,针对无线体域网能量有限的特点,如何延长网络生存期也是设计无线体域网的一个重点。强化学习是一种无监督的机器学习技术,能够利用不确定的环境奖赏发现最优的行为序列,实现动态环境下的在线学习,因此强化学习被公认为是构成智能Agent的理想技术之一。
在这里插入图片描述
1 无线体域网系统结构
在这里插入图片描述
2 无线体域网路由协议
2.1 无线路由协议
要对无线体域网WBAN的路由协议进行分析,首先要对现有的无限传感器路由协议分析研究。
无线体域网WBAN是一种自组织的网络,现有的无线传感器路由协议,从网络拓扑结构来看,可分为平面路由协议、层次路由协议等路由协议。
2.2 高效节能路由协议
无线体域网WBAN路由性能研究早已成为广大学者研究的热点,那么其高效节能路由协议也是无线体域网WBAN设计的必要选择。传统的Ad Hoc网络路由协议一般以跳数、时延等参数作为衡量路径长度的指标,因此通过这些路由协议选择的路径,一般情况下能提供一定的QoS保证,但是它消耗了过多的节点能量,并且大大减少了节点和网络的运行时间,使得网络寿命大大降低。
2.3 DSR路由协议
DSR(Dynamic Source Routing)路由协议是一种采用反应式路由思想的路由协议。DSR为每个节点维护一个路由缓存,存储它所知道的源路由,并在得到新路由时更新缓存路由。
对于DSR路由选择时,源节点的路由表会包含从源节点到目的节点的完整路由信息。当源节点需要发送数据给目的节点时,它首先查看源路由缓存,如果源路由缓存中具有有效路由,则采用此路由发送数据,否则就发起一个路由发现过程。路由发现时,源节点广播路由请求分组(RREQ),每个收到RREQ的节点都将根据RREQ中的目的地址进行判断。
3 Agent增强学习算法
在这里插入图片描述
在这里插入图片描述
4 Q-learning增强学习算法
在这里插入图片描述
在这里插入图片描述
DSR_WBAN处理流程图

二、源代码

clc,clear,close all
% 人身体表面近似一个矩形区域
% Nx 被设置成200cm,表示矩形长度. 
% Ny 被设置成120cm,表示矩形高度. 
% deltax 横向两节点间隔.
% deltay 高度方向两节点间隔.
Nx=200; % Nx 被设置成200cm,表示矩形长度. 
Ny=120;% Ny 被设置成120cm,表示矩形高度. 
deltax=8; % deltax 横向两节点间隔.
deltay=10; % deltay 高度方向两节点间隔.
circle_r = 15;   % 覆盖面通信半径
gamma = 0.8;     % Q学习参数
Sink = 14;
person;  % 人体model
hold on
for i=1:size(node_xy_int,1)
    text(node_xy_int(i,1)+1,node_xy_int(i,2)+5,num2str(i),'Color',[0 0 1])  % 标记
end
load('node_xy_int.mat')  % xy 坐标
load('conx.mat')         % 邻接矩阵
R = dijf(node_xy_int,conx);  % 返回距离矩阵
%% WBAN
% 初始化变量 
numnodes2=[]; % 节点数量
Ptrans2=[];   % 需要传输的能量
Sensitivity2=[];   % 目标节点接受一个信号所需最小能量mj
connexion2=[];     % 通信链接百分比
P0=50.5; 
d0=10; 
n=7.4; 
numnodes = 26;       % 节点数量
Ptrans = 100;        % 需要传输的能量
Sensitivity = 40;    % 目标节点接受一个信号所需最小能量mj
% 初始化变量,避免变量维数冲突 
source=[node_xy_int(14,1),node_xy_int(14,2)]; % Sink节点
sourcetot=[];      sourcetot1=[]; 
dest=[];           dest1=[];      
destot=[];         destot1=[];  
Plosstot=[];       Plosstot1=[]; 
distance=[];       distance1q = []; 
Q_learning = [] ;  Q_learning1 = [];
rr =[];            rr1 =[];
                   diffxtot1=[];   diffytot1=[];  difftot1=[]; 
R2=rand(numnodes);  % 0-1之间的numnodes x numnodes的矩阵, 初始化
gamma_init = [0.8,0.5,0.2];
numdest_init = [2,4,16,9,22,26,20];  

for kgam = 1:3
    gamma = gamma_init(1,kgam);
    numd=1;
for numnodes=8:12/6:20
    
        R2=rand(numnodes);  % 0-1之间的numnodes x numnodes的矩阵, 初始化
        source;      % 起始节点
        numdest = numdest_init(1,numd);   % 目标节点标号
        dest = node_xy_int( numdest,:);   % 终始节点
        
        %Q_learning
        [Q_path,dmin,Q_learn] = Rf_Q_learning(Sink,numdest,R,gamma);  % 返回当前节点dijkstra的节点路径
        r = 0;
        nQ_path = length(Q_path);
        for i=1:(nQ_path-1)
            r= r+ R( Q_path(1,i), Q_path(1,i+1)); % 起始节点到目标节点最小距离
        end
        rr =[rr,r];
        Q_learning = [Q_learning, Q_learn ] ;
        Ploss = (P0 + 10*n*log10(r/d0))/4-gamma-gamma*R2(1);    % Pathloss 的计算公式 : Ploss = P0 + 10*n*log10(r/d0). 
        Plosstot = [Plosstot,Ploss];      % 路由损耗
        distance = [distance,r];          % 距离
        sourcetot = [sourcetot; source];      % 起始节点
        destot = [destot; dest];              % 相对应的终始节点
        numd = numd + 1;
        
        %Here we plot the different source and destination nodes: 
        %Source nodes are drawn as blue circles. 
        %Destination nodes are drawn as green pluses. 
%         plot(sourcetot(:,1),sourcetot(:,2),'or','markersize',10)  
%         hold on
%         plot(destot(:,1),destot(:,2),'.k','markersize',10)        
%         plot([source(:,1),dest(:,1)],[source(:,2),dest(:,2)],'linewidth',2)

        diff=dest-source;   % 终始节点与起始节点 横纵坐标差
        diffx=diff(1);      % 获取横坐标 差
        % 由于人体被表征为一个矩体,则节点在前后矩形面绕线式分布
        % the lateral surface of the cylinder are the same: Nx=0. 
        if abs(diffx) <= Nx/2 
            diffx=diff(1);
        elseif ((abs(diffx)) > Nx/2) && (diffx < 0)
            diffx = Nx - abs(diff(1));
        elseif ((abs(diffx)) > Nx/2) && (diffx >= 0)
            diffx = abs(diff(1)) - Nx;
        end 
        % obtain the different necessary values. 
        diffy = diff(2);                          % 起始节点和终始节点 纵坐标差
        r1 = sqrt(diffx^2 + diffy^2);              % 起始节点和终始节点 距离
        direction = (atan2(diffy,diffx))*180/pi;  % 起始节点和终始节点连线的角度
        Ploss1 = (P0 + 10*n*log10(r1/d0))/4;   % Pathloss 的计算公式 : Ploss = P0 + 10*n*log10(r/d0). 
        Plosstot1 = [Plosstot1 Ploss1];      % 路由损耗
        distance1q = [distance1q r1];           % 距离
        sourcetot1 = [sourcetot1; source];      % 起始节点
        destot1 = [destot1; dest];              % 相对应的终始节点
        diffxtot1 = [diffxtot1 diffx]; 
        diffytot1 = [diffytot1 diffy]; 
        
end      

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 门云阁.MATLAB物理计算与可视化[M].清华大学出版社,2013.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/113770013

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。