一、获取代码方式

获取代码方式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:3gamma = gamma_init(1,kgam);numd=1;
for numnodes=8:12/6:20R2=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)); % 起始节点到目标节点最小距离endrr =[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

三、运行结果







四、matlab版本及参考文献

1 matlab版本
2014a

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

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

  1. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  2. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  3. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  5. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  6. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  7. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  8. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  9. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  10. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

最新文章

  1. linux 查看库的安装信息
  2. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
  3. 也谈表达式分析和计算
  4. php require_once
  5. 【AI白身境】只会用Python?g++,CMake和Makefile了解一下​​​​​​​
  6. php 数组是否属于迭代器,数组的迭代器属性Iterator介绍
  7. list循环赋值_Python基础 | 0xd 条件判断与循环
  8. Map 和 WeakMap
  9. 软考论文-写作大纲-备考思路总结
  10. 官宣,港珠澳大桥终于来了
  11. Pyrene-PEG-NHS Ester,NHS-PEG-Pyrene
  12. 萨达萨达发神鼎飞丹砂
  13. 关键词优化推广需要怎么做?有哪些方法和技巧
  14. 无线局域网技术分析及攻击实战
  15. ​继使命召唤飞机表情雨后,如何在微信群聊天中自带表情雨特效,还有使命召唤红包封面...
  16. 中国各朝代统治时间列表
  17. 百度搜索引擎中的特殊符号和搜索语句
  18. 微软研究院分享:计算机专业求职的正确姿势
  19. vue中如何使用SM4国密来加密?
  20. 一文搞懂peerDependencies

热门文章

  1. 令人眼前一亮的下拉式终端 Tilda Guake
  2. 40个Java多线程问题总结【转】
  3. 003.ASP.NET MVC集中管理Session
  4. 181218每日一句
  5. 通过脚本找到对应的物体
  6. Atitit 云计算体系树.docx Atitit 云计算之道 attilax著 艾龙 著 serverless bomb 1. 什么才是云计算的根本特征.. 2 2. 云计算体系 2 3. “云
  7. Atitit.月度计划日程表 每月流程表v5
  8. Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
  9. paip.环境设置 mybatis ibatis cfg 环境设置
  10. paip.android 读取docx总结