【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】
一、获取代码方式
获取代码方式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期】相关推荐
- 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】
一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】
一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...
- 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】
一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】
一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...
- 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】
一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】
一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...
- 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】
一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...
最新文章
- linux 查看库的安装信息
- 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
- 也谈表达式分析和计算
- php require_once
- 【AI白身境】只会用Python?g++,CMake和Makefile了解一下​​​​​​​
- php 数组是否属于迭代器,数组的迭代器属性Iterator介绍
- list循环赋值_Python基础 | 0xd 条件判断与循环
- Map 和 WeakMap
- 软考论文-写作大纲-备考思路总结
- 官宣,港珠澳大桥终于来了
- Pyrene-PEG-NHS Ester,NHS-PEG-Pyrene
- 萨达萨达发神鼎飞丹砂
- 关键词优化推广需要怎么做?有哪些方法和技巧
- 无线局域网技术分析及攻击实战
- ​继使命召唤飞机表情雨后,如何在微信群聊天中自带表情雨特效,还有使命召唤红包封面...
- 中国各朝代统治时间列表
- 百度搜索引擎中的特殊符号和搜索语句
- 微软研究院分享:计算机专业求职的正确姿势
- vue中如何使用SM4国密来加密?
- 一文搞懂peerDependencies
热门文章
- 令人眼前一亮的下拉式终端 Tilda Guake
- 40个Java多线程问题总结【转】
- 003.ASP.NET MVC集中管理Session
- 181218每日一句
- 通过脚本找到对应的物体
- Atitit 云计算体系树.docx Atitit 云计算之道 attilax著 艾龙 著 serverless bomb 1. 什么才是云计算的根本特征..	2 2. 云计算体系	2 3. “云
- Atitit.月度计划日程表 每月流程表v5
- Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
- paip.环境设置 mybatis ibatis cfg 环境设置
- paip.android 读取docx总结