💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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.
部分理论引用网络文献,若有侵权联系博主删除。