目录
💥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
%explorar
c_greedy(1) = c_greedy(1) + 1;
[~,t] = max(rewards(hora(j)+1,:)); %obtenemos el periodo con mayor recompensa
T2 = T(T~=T(t)); %los sacamos para explorar otra opcion
t = T2(randi(length(T2))); %nuevo periodo
c_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;
else
%explotar
c_greedy(2) = c_greedy(2) + 1;
[~,t] = max(rewards(hora(j)+1,:)); %cogemos el periodo con mayor recompensa acumulada
t = T(t); %nuevo periodo
c_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;
end
%cogemos muestra
ja = j; %guardamos posicion anterior
j = j + t; %nueva posicion
if 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 nada
r_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 maximo
r_total = r_total + 1;
end
end
🎉3 参考文献
[1]高昊德. 恶劣环境下EH-WSN中数据可靠传输相关研究[D].内蒙古大学,2022.
部分理论引用网络文献,若有侵权联系博主删除。


















![【算法学习系列】03 - 由[1-5]等概率随机实现[2-10]等概率随机](https://img-blog.csdnimg.cn/b38795eb6ab44f54afdd7e5fa6bbd2de.png)
