当前位置: 首页 > news >正文

为减少来自环境使用的无线传感器网络的传输次数而开发的方法(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

随着无线传感器网络(Wireless Sensor Network,WSN)的广泛应用,业界开始应用环境能量收集技术解决传感器节点的能量补充问题。而这类网络被统称为能量收集型无线传感器网络(Energy Harvesting Wireless Sensor Network,EH-WSN)。在能量收集型无线传感器网络中感知数据的可靠传输是值得研究的问题。

📚2 运行结果

主函数部分代码:

clear all
close all
​
% Declaración de los elementos del texto para el split
comillas=char(34);
barra=char(47);
coma=char(44);
pcoma=char(59);
dpuntos=char(58);
novalinea=newline;
guio=char(45);
fle=char(62);
p1=char(40);
p2=char(41);
​
%%% Format fitxer PM10 i soroll
% Se abre el fichero y se obtienen los datos de cada elemento, son 8
fileID=fopen('dades_soroll_pm10.txt','r');
formatSpec=['%d' barra '%d' barra '%d'  '%d' dpuntos '%d' dpuntos '%d' pcoma '%d' pcoma '%d'];
C=textscan(fileID,formatSpec);
fclose(fileID);
​
% Se guarda cada elemento en su correspondiente variable
any=C{1}; 
mes=C{2};
dia=C{3};
hora=C{4}+14;
a=find(hora>=24);
hora(a)=double(hora(a)-24);
minut=C{5}+27;
a=find(minut>=60);
minut(a)=double(minut(a)-60);
​
%%% Transformació dels valors analògics a dBs
soroll=C{8}; %Ruido en analógico
y1=30;
x1=0;
y2=78.8;
x2=3326;
pendent=(y2-y1)/(x2-x1);
​
%%% Variables para transmitir
pm10=double(C{7}); %Contaminación atmosférica
soroll_dbs=double(pendent.*(soroll-x1)+y1); %Contaminación acústica
​
%%
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%
%
%%%
%%%
%%%
%%%
%%%
%%%
%%            PRUEBAS            %
%%%
%%%
%%%
%%%
%%%
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
​
% ESCENARIO IV: Multi-armed Bandit
%Obtenemos el periodo de muestreo mas optimo para cada hora del dia
m = length(pm10); %total de muestras
T = [2 3 5 10]; %periodos posibles
rewards = zeros(24, length(T)); %tabla de recompensas para cada hora y periodo
epsilon = 0.2; %epsilon con valor estandar
vr1 = pm10; %copia del vector de datos pm10
vr2 = soroll_dbs; %copia del vector de datos ruido
j = 1; %variable iniciada en 1 para el bucle e-greedy (posicion actual del vector)
ja = j; %variable para almacenar la posicion anterior en el bucle e-greedy y calcular la recompensa
rewards(1:24) = 0; %iniciamos el algoritmo con periodo 2
c_acciones = zeros(24, length(T)); %cantidad de veces que escoge una accion por hora
c_greedy = zeros(2,1); %cantidad de veces que decide explotar/explorar
c_rewards = zeros(24, length(T)); %cantidad de veces que sale cada recompensa
r_total = 0;
​
for i=1:100 %iteraciones de aprendizaje
​%recorremos vector explorando/explotando while j<m
​if rand < 0.05%explorarc_greedy(1) = c_greedy(1) + 1;[~,t] = max(rewards(hora(j)+1,:)); %obtenemos el periodo con mayor recompensaT2 = T(T~=T(t)); %los sacamos para explorar otra opciont = T2(randi(length(T2))); %nuevo periodoc_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;else%explotarc_greedy(2) = c_greedy(2) + 1;[~,t] = max(rewards(hora(j)+1,:)); %cogemos el periodo con mayor recompensa acumuladat = T(t); %nuevo periodoc_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;end
​%cogemos muestraja = j; %guardamos posicion anteriorj = j + t; %nueva posicionif j <= m%calculamos recompensa: se comprueban las muestras intermedias entre dos%transmisiones, si no superan el umbral se suma 1 a la recompensa,%si lo supera no se suma nadar_total = 0;for k=ja+1:j-1%%%%%%%%UMBRALES PM10%%%%%%%%               %if abs(vr1(k)-pm10(j)) == 0 %sin umbral%if abs(vr1(k)-pm10(j)) <= 1 %umbral minimo%if umbral_pm(vr1(k),pm10(k)) == 0 %umbral adaptado%%%%%%%%UMBRALES RUIDO%%%%%%%%if abs(vr2(k)-soroll_dbs(j)) == 0 %sin umbral%if abs(vr2(k)-soroll_dbs(j)) <= 3 %umbral minimo%if abs(vr2(k)-soroll_dbs(j)) <= 10 %umbral maximor_total = r_total + 1;endend

🎉3 参考文献

​[1]高昊德. 恶劣环境下EH-WSN中数据可靠传输相关研究[D].内蒙古大学,2022.

部分理论引用网络文献,若有侵权联系博主删除。

http://www.lryc.cn/news/68401.html

相关文章:

  • springboot+vue滴答拍摄影项目(源码+文档)
  • SQL基础培训13-索引和优化
  • 拥抱5G发展机遇,从边缘计算上车
  • “前端”工匠系列(二):合格的工匠,怎么做好价值落地 | 京东云技术团队
  • Oracle11g下载与安装
  • 考研复试-软件工程
  • 软件测试选择题
  • 有限合伙企业与有限公司的区别
  • 从洛克菲勒思想中洞悉的财富秘密
  • 如何训练自己的大型语言模型
  • Java中的SLF4J是什么?如何使用SLF4J进行日志管理
  • PHP程序员面对的压力大不大?我来聊聊程序员转行的就业方向
  • 牛客网专项练习Pytnon分析库(十)
  • leecode654——最大二叉树
  • 【笔试强训选择题】Day12.习题(错题)解析
  • 边缘计算与开放源代码的完美结合
  • 边缘计算网关在储能系统中的应用——提高储能系统的安全性和稳定性
  • 【FMC136】AD9467之4通道 250MSPS 采样率16位AD 采集子卡模块得设计原理图中文资料
  • 抖音SEO矩阵系统源码开发(一)
  • Mysql实现对某一字段排序并将排名写入另一字段
  • vector容器 [上]
  • React Native技术探究:开发高质量的跨平台移动应用的秘诀
  • C语言函数大全-- w 开头的函数(2)
  • kafka启动创建topic报错:zookeeper is not a recognized option
  • 11个超好用的SVG编辑工具
  • 低代码平台:10分钟从入门到原理
  • 【JavaScript】如何获取客户端IP地址?
  • 数据科学中使用的17 种相似性和相异性度量之欧氏距离
  • 朋友去华为面试,轻松拿到30K的Offer,羡慕了......
  • MySQL入门第五课:数据更新