基于强化学习的节能路由(Matlab代码实现)

news2024/11/26 7:37:13

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章


💥1 概述

无线传感器设备是物联网(IoT)的支柱,使现实世界的物体和人类能够连接到互联网并相互交互,以改善公民的生活条件。然而,物联网设备受到内存和功率限制,不允许高计算应用,而路由任务是使对象成为物联网网络的一部分的原因,尽管这是一项高功耗的任务。因此,在为物联网无线网络设计路由协议时,能源效率是一个需要考虑的关键因素。在本文中,我们提出了EER-RL,一种基于强化学习的节能路由协议。强化学习 (RL) 允许设备适应网络变化,例如移动性和能量水平,并改进路由决策。将所提协议的性能与其他现有节能路由协议进行了对比,结果表明,所提协议在能效、网络寿命和可扩展性方面表现更好。

无线技术和信息系统以及移动技术的出现为物联网(IoT)开辟了一个新时代。后者已成为无处不在的计算的支柱,同时通过识别、识别对象、数据生成、传输和检索使环境变得智能[1,2].物联网允许现实世界的事物和人通过无线通信连接并成为互联网虚拟世界的一部分。最初,物联网一直针对RFID标签网络,后来它已广泛扩展到各种设备和应用,目标是首先使对象能够学习和理解其环境并与之交互[3].通过无线通信,这些对象可以相互交互,并使系统能够通过互联网连接进行远程控制[2–5].由于其对各个领域的影响,物联网最近受到广泛关注,并已广泛应用于智慧城市、智能医疗系统、智能家居、对象跟踪、灾害管理和环境监测等广泛应用 [6,7].

物联网由异构无线设备的互连组成,包括智能手机、无线传感器、执行器、射频 (RFID) 标签识别以及具有传感功能的真实世界事物 [8,9].通常,传感器设备包括四个单元,即功率单元、传感单元、处理单元和通信单元[10–13].传感单元负责从周围环境中感知数据,而处理单元执行计算任务。通信单元负责通过网络发送数据包。最后,动力单元由一个小电池组成,为其余三个模块供电。从逻辑上讲,动力单元不消耗任何能量,而是向其他模块提供能量,传感模块和处理模块也消耗的能量可以忽略不计,而通信模块是最耗能的[14–16].

但是,为了在物联网中容纳大量设备,需要几个要求,包括能源效率、可扩展性、互操作性、安全性和灵活性 [2].能源效率对于在尽可能长时间内保持全面运营的网络至关重要 [16,17],特别是对于部署在无法充电和更换电池的恶劣环境中的设备。因此,众所周知,节能路由协议可以管理设备可用能量的消耗并延长网络的使用寿命[6,13].

强化学习是机器学习的一个子领域,它解决了代理在未知环境中采取行动的问题,并通过与环境的一系列试错交互随着时间的推移而改进[18].换句话说,代理通过执行操作与环境交互并获得奖励,当执行的操作正确时,奖励可以是积极的,否则可以是消极的。与静态路由方法相比,这种方法带来了数据路由的动态性和网络通信的适应能力[19–21].在物联网网络中,RL可用于处理由于设备的移动性,能量水平和其他传输参数(例如距离,信号强度和带宽)而导致的网络拓扑变化等问题,这些问题可能会随时间变化并影响网络性能。

在本文中,我们提出了EER-RL,一种基于强化学习的物联网节能路由协议。所提出的EER-RL平衡了物联网网络中设备之间的能量耗散,延长了网络寿命,提高了网络的可扩展性。EER-RL还使用反馈机制提供最佳路径,以共享本地信息作为奖励,后者使用剩余能量和跳到接收器的跳数计算,并且跳数参数可以减少端到端延迟。为了评估EER-RL的性能,我们进行了仿真,结果表明EER-RL实现了高效的能耗,延长了网络寿命,并且对于大规模物联网网络更具可扩展性。EER-RL也与利奇[22]和飞马[23],比较结果表明,EER-RL通过提供更好的能量平衡和延长网络寿命而优于它们。

本文的其余部分组织如下:在部分2,我们概述了RL及其在路由中的应用。部分3讨论使用 RL 的路由协议的现有解决方案。部分4描述了我们提出的解决方案。建议的解决方案的性能评估在一节中介绍5,然后是结论意见和本节的未来工作6.

RL 问题被形式化为带有元组 (S, A, P, R) 的马尔可夫决策过程 (MDP),其中 S 表示代理在给定时间 t 可以处于的一组状态;A 是代理可以采取的一组可能的操作。代理在给定时间 t 和从给定状态 s(t) 执行动作 a(t) 进入状态 st + 1) 的转移概率表示为 P,R 是代理因执行的操作而获得的奖励 [18].将 RL 应用于路由协议需要定义 RL 模型的主要组件,例如代理和环境、状态和操作以及奖励。首先,代理是RL模型的决策者,而环境是代理观察并对其做出反应的内容。在物联网网络中,每个设备都被视为代理;对于整个网络,需要多代理 RL。其次,状态是关于给定时间环境的任何有用信息,而动作是代理在给定状态下的反应。代理的状态空间是来自所有可用相邻设备的可用路由信息。状态可以是决策因素的元组,例如剩余能量、跃点数和信号强度,具体取决于设计协议时考虑的因素。另一方面,操作是指选择下一跳将数据包路由到基站。因此,操作空间表示在给定时间通过邻居的所有可用路由的集合。第三,代理在给定状态下执行的操作的成本称为奖励。

在实现拟议协议时考虑了以下定义:(1)网络中的每个设备都被视为代理,(2)对于每个设备,通过其相邻设备到基站的可用路由集是状态空间。(3) 数据包可以通过其发送到基站的所有可用邻居的集合表示为操作空间。(4)代理人的行为被表示为政策。

策略映射状态-操作对;它可以是随机的或确定性的,并随着时间的推移而改善。每个 RL 模型的目标都是找到一个最佳策略,以最大化每个状态-操作对的长期奖励 [18,19];可以使用策略迭代过程实现此目标,该过程包括评估和改进给定的策略。政策评估从结果评估政策,而政策改进则使政策朝着最佳政策改进[18,20].数字1描述了一个简单的 RL 模型。

详细讲解见第4部分。

📚2 运行结果

部分代码:

%%% Energy parameters %%%
Eo=2; % Initial Energy of nodes (in Joules)
% Energy required to run circuity (both for transmitter and receiver) %
Eelec=50*10^(-9); % units in Joules/bit
ETx=50*10^(-9); % units in Joules/bit
ERx=50*10^(-9); % units in Joules/bit
% Transmit Amplifier Types %
Eamp=100*10^(-12); % units in Joules/bit/m^2 (amount of energy spent by the amplifier to transmit the bits)
% Data Aggregation Energy %
EDA=5*10^(-9); % units in Joules/bit
% Size of data package %
k=4000; % units in bits 
% Round of Operation %
rnd=0;
tot_rnd=10000;
% Current Number of operating Nodes %
op_nodes=n; %Operating nodes
transmissions=0;
d(n,n)=0;
source=1;
flag1stdead=0;
range_C = 20; %Communication range
alpha=1; %Learning Rate
gamma = 0.8; % Discount Factor
p=0.7 % Energy's Probabilistic parameter
q1=0.3 % Hop count probabilistic parameter
%%%%%%%%%%%%%%%%%%%%%%%%%%% End of Network settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%% WSN Creattiom %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plotting the WSN %
for i=1:n
    
    
    NET(i).id=i;	% sensor's ID number
    NET(i).x=rand(1,1)*xm;	% X-axis coordinates of sensor node
    NET(i).y=rand(1,1)*ym;	% Y-axis coordinates of sensor node
    NET(i).E=Eo;     % nodes energy levels (initially set to be equal to "Eo"
    %NET(i).E = randi([2,6]); % For heterogeneous WNET
    NET(i).cond=1;   % States the current condition of the node. when the node is operational its value is =1 and when dead =0
    %NET(i).dts=0;    % nodes distance from the sink
    NET(i).dts= sqrt((sinkx-NET(i).x)^2 + (sinky-NET(i).y)^2);
    NET(i).hop=ceil(NET(i).dts/range_C); %Hop count estimate to the sink
    %NET(i).role=0;   % node acts as normal if the value is '0', if elected as a cluster head it  gets the value '1' (initially all nodes are normal)
    %NET(i).pos=0;
    %NET(i).first=0;  %Initial route available. If it the first time a node send a packet its value is 0, otherwise it's 1
    NET(i).closest=0;
    NET(i).prev=0;
    %NET(i).next=0;
    %NET(i).dis=0;	% distance between two nodes headin towards to the cluster head from position 1
    NET(i).sel=0;    % states if the node has already operated for this round or not (if 0 then no, if 1 then yes) 
    NET(i).rop=0;    % number of rounds node was operational
    %NET(i).tel=0;    % states how many times the node was elected as a Cluster Head
    %order(i)=0;

    hold on;
    figure(1);
    plot(x,y,xm,ym,NET(i).x,NET(i).y,'ob',sinkx,sinky,'*r');
    
    title 'RL-EBRP';
    xlabel '(m)';
    ylabel '(m)';
end

% find Neighbord nodes
%Compute Q-Value
min_E = min([NET.E]); 
max_E = max([NET.E]);
for i=1:n
    if(min_E ==max_E)
        Q(i) = 1 / NET(i).hop;
        NET(i).Q = Q(i);
    else
        Q(i) = (p*(NET(i).E - min_E)/(max_E-min_E)+(q1/NET(i).hop));
        NET(i).Q = Q(i);
        %CH = maxk(Q,10); %Find 10 strongest nodes 
    end

%%% Energy parameters %%%
Eo=2; % Initial Energy of nodes (in Joules)
% Energy required to run circuity (both for transmitter and receiver) %
Eelec=50*10^(-9); % units in Joules/bit
ETx=50*10^(-9); % units in Joules/bit
ERx=50*10^(-9); % units in Joules/bit
% Transmit Amplifier Types %
Eamp=100*10^(-12); % units in Joules/bit/m^2 (amount of energy spent by the amplifier to transmit the bits)
% Data Aggregation Energy %
EDA=5*10^(-9); % units in Joules/bit
% Size of data package %
k=4000; % units in bits 
% Round of Operation %
rnd=0;
tot_rnd=10000;
% Current Number of operating Nodes %
op_nodes=n; %Operating nodes
transmissions=0;
d(n,n)=0;
source=1;
flag1stdead=0;
range_C = 20; %Communication range
alpha=1; %Learning Rate
gamma = 0.8; % Discount Factor
p=0.7 % Energy's Probabilistic parameter
q1=0.3 % Hop count probabilistic parameter
%%%%%%%%%%%%%%%%%%%%%%%%%%% End of Network settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%% WSN Creattiom %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plotting the WSN %
for i=1:n
    
    
    NET(i).id=i;    % sensor's ID number
    NET(i).x=rand(1,1)*xm;    % X-axis coordinates of sensor node
    NET(i).y=rand(1,1)*ym;    % Y-axis coordinates of sensor node
    NET(i).E=Eo;     % nodes energy levels (initially set to be equal to "Eo"
    %NET(i).E = randi([2,6]); % For heterogeneous WNET
    NET(i).cond=1;   % States the current condition of the node. when the node is operational its value is =1 and when dead =0
    %NET(i).dts=0;    % nodes distance from the sink
    NET(i).dts= sqrt((sinkx-NET(i).x)^2 + (sinky-NET(i).y)^2);
    NET(i).hop=ceil(NET(i).dts/range_C); %Hop count estimate to the sink
    %NET(i).role=0;   % node acts as normal if the value is '0', if elected as a cluster head it  gets the value '1' (initially all nodes are normal)
    %NET(i).pos=0;
    %NET(i).first=0;  %Initial route available. If it the first time a node send a packet its value is 0, otherwise it's 1
    NET(i).closest=0;
    NET(i).prev=0;
    %NET(i).next=0;
    %NET(i).dis=0;    % distance between two nodes headin towards to the cluster head from position 1
    NET(i).sel=0;    % states if the node has already operated for this round or not (if 0 then no, if 1 then yes) 
    NET(i).rop=0;    % number of rounds node was operational
    %NET(i).tel=0;    % states how many times the node was elected as a Cluster Head
    %order(i)=0;

    hold on;
    figure(1);
    plot(x,y,xm,ym,NET(i).x,NET(i).y,'ob',sinkx,sinky,'*r');
    
    title 'RL-EBRP';
    xlabel '(m)';
    ylabel '(m)';
end

% find Neighbord nodes
%Compute Q-Value
min_E = min([NET.E]); 
max_E = max([NET.E]);
for i=1:n
    if(min_E ==max_E)
        Q(i) = 1 / NET(i).hop;
        NET(i).Q = Q(i);
    else
        Q(i) = (p*(NET(i).E - min_E)/(max_E-min_E)+(q1/NET(i).hop));
        NET(i).Q = Q(i);
        %CH = maxk(Q,10); %Find 10 strongest nodes 
    end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码及文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

员工电脑怎么监控(怎样远程监控员工电脑)

随着科技的发展,企业对于员工电脑的监控已经成为了企业管理的重要手段。通过监控员工电脑,企业可以更好地管理员工的工作效率、保护企业数据安全以及维护企业的正常运营。本文将详细介绍如何监控公司员工电脑的方法和步骤。 监控员工电脑的目的 提高工作…

Selenium-介绍下其他骚操作

Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器(如 Chrome、Opera 和 Microsoft Edge)中的工具,用于帮助开发人员调试和研究网站。 借助 Chrome DevTools,开发人员可以更深入地访问网站&#xf…

vsc使用flake8的一个小问题

当单行写入代码长度过长时候PEP8会直接提示报错,在flake8中的单行代码限制是小于80但是对于一些需要精准import的代码来说远不够用,网络上有人说直接在josn文件中做变动,但是当导入相关命令的时候,会显示该命令不可用,…

一步到位:用Python实现PC屏幕截图并自动发送邮件,实现屏幕监控

在当前的数字化世界中,自动化已经成为我们日常生活和工作中的关键部分。它不仅提高了效率,还节省了大量的时间和精力。在这篇文章中,我们将探讨如何使用Python来实现一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱。 这个任务可能看…

Vulnhub系列靶机-Hackadmeic.RTB1

文章目录 Vulnhub系列靶机-Hackadmeic.RTB11. 信息收集1.1 主机扫描1.2 端口扫描1.3 目录爆破 2. 漏洞探测3. 漏洞利用3.1 反弹Shell 4. 内核提权 Vulnhub系列靶机-Hackadmeic.RTB1 1. 信息收集 1.1 主机扫描 arp-scan -l1.2 端口扫描 nmap -A -p- 192.168.188.184扫描到了…

大功率光伏应用不同多电平变换器拓扑的比较研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

美团2024届秋招笔试第一场编程【小美走公路】

题目描述: 有一个环形的公路,上面共有n站,现在给定了顺时针第i站到第i1站之间的距离(特殊的,也给出了第n站到第 1 站的距离)。小美想沿着公路第x站走到第y站,她想知道最短的距离是多少&#xf…

自然语言处理(一):基于统计的方法表示单词

文章目录 1. 共现矩阵2. 点互信息3. 降维(奇异值分解) 1. 共现矩阵 将一句话的上下文大小窗口设置为1,用向量来表示单词频数,如: 将每个单词的频数向量求出,得到如下表格,即共现矩阵&#x…

分别用Python和Go实现对文件夹及其子文件夹里的文件进行批量重命名

文章目录 问题阐述上代码结果如何 问题阐述 最近在继续提高自己的go技术时,从网上一些平台获取到了一些学习资料,然后下载到本地后,文件的命名是真的像衣托答辩: 除了上述的文件,还有一mol多神奇的命名,害…

GROMACS Tutorial 1: Lysozyme in Water 中文实战教程

GROMACS Tutorial 1: Lysozyme in Water 中文实战教程 前言系统环境特别强调一、预处理阶段1.1 补全原子或残基1.2 删除水分子1.3 生成top文件等位置限制文件 二、定义盒子及添加溶剂2.1 定义盒子2.2 加入溶剂 三、添加离子3.1 使用mdp参数文件生成tpr文件3.2 离子的加入3.3 添…

MasterAlign相机参数设置-曝光时间调节

相机参数设置-曝光时间调节操作说明 相机参数的设置对于获取清晰、准确的图像至关重要。曝光时间是其中一个关键参数,它直接影响图像的亮度和清晰度。以下是关于曝光时间调节的详细操作步骤,以帮助您轻松进行设置。 步骤一:登录系统 首先&…

避免分库分表,绿普惠的分布式数据库选型与实践

作者:翻墨,绿普惠科技(北京)有限公司架构师 一项数据显示,今天大气中的二氧化碳水平比过去 65 万年高了 27%。主要原因来自于工业化需求下的煤炭燃烧、汽车尾气。随着人类活动造成的温室效应加剧,环保越来越…

从服务器指定位置下载文件

从服务器指定位置下载文件 下载文件转换成流,这里说两种流的方式:1. 文件流2. 字节流 下载文件转换成流,这里说两种流的方式: 1. 文件流 2. 字节流 一,字节流 String filePath“/opt/peoject/file/123/pdf”; //这个是你服务上存放文件位置…

公司监控员工上网记录,具体能监控到哪些内容?

在信息时代,随着技术的发展和商业竞争的加剧,公司对员工的监控变得越来越普遍。本文将从多个角度探讨公司监控员工电脑的利与弊,以期为读者提供全面的认识。 公司可以监控员工电脑吗 答案是可以的,但需要遵守相关法律法规和公司的…

nbcio-boot登录后首页的跟踪出现total问题修正

nbcio-boot登录后出现的首页,页面跟踪的时候,出现堆total的出错,虽然不影响系统使用,但影响美观度,所以还是修正一下吧。 1、主要问题是下面的代码有问题 因为页面创建的时候,total数据获取不到&#xff0c…

贝叶斯滤波计算4d毫米波聚类目标动静属性

机器人学中有些问题是二值问题,对于这种二值问题的概率评估问题可以用二值贝叶斯滤波器binary Bayes filter来解决的。比如机器人前方有一个门,机器人想判断这个门是开是关。这个二值状态是固定的,并不会随着测量数据变量的改变而改变。就像门…

使用FFmpeg+ubuntu系统转化flac无损音频为mp3

功能需求如上题,我们来具体的操作一下: 1.先在ubuntu上面安装FFmpeg:sudo apt install ffmpeg 2.进入有flac音频文件的目录使用下述命令: ffmpeg -i test.FLAC -c:a libmp3lame -q:a 2 output.mp3 3.如果没有什么意外的话,你就能看到你的文件夹里面已经有转化好的mp3文件了 批…

【考研数学】高等数学第六模块 —— 空间解析几何(2,向量的应用)

文章目录 引言二、向量的应用2.1 平面2.2 直线2.3 特殊曲面2.3.1 旋转曲面2.3.2 柱面 2.4 距离2.5 夹角 写在最后 引言 承接前文,介绍完向量的基本概念与运算后,我们来看看向量有哪些应用。 二、向量的应用 2.1 平面 (一)平面的…

【AWS】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅

使用 AI 编码配套应用程序更快、更安全地构建应用程序 文章目录 1.1 Amazon CodeWhisperper简介1.2 Amazon CodeWhisperer 定价2.1 打开VS Code2.2 安装AWS ToolKit插件 一、前言 1.1 Amazon CodeWhisperper简介 1️⃣更快地完成更多工作 CodeWhisperer 经过数十亿行代码的训…

游戏创业小知识:游戏运营的步骤和流程

游戏运营是确保游戏在持续运行中保持活跃和成功的过程。以下是游戏运营的一般步骤流程: 1.游戏发布前准备 游戏选择:了解并熟悉游戏的核心概念、目标受众和游戏玩法。 开发团队:组建开发团队,包括程序员、设计师、艺术家和声音设…