目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
近年来,随着对等网络、云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用。无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个由称为传感器节点的微小、小型、昂贵和高度智能化的设备组成的网络。传感器节点位于被观测空间内的不同位置,通过无线通信信道交换从监测领域收集的数据。收集的数据被发送到sink节点,sink节点要么本地处理数据,要么将数据发送到处理能力更强的其他网络。
该项目的目标是设计一种路由算法,该算法应在同一WSN上提供数据完整性和延迟差异化服务。
📚2 运行结果










主函数部分代码:
%% -----Generate problem instances---------
M = 5; % number of secondary users
K = 1; % number of orthogonal channels
Iters = 4*1e3/1;
rho = 0.2 ;%+ 0.01*(2*rand(1,K)-1); % QoS constraints of primary users
p1 = 0.2 + 0.1*(2*rand(1,K) - 1); % vector of idle-channel prob
p2 = 0.8 + 0.1*(2*rand(1,K) - 1);
% link capacities
c_bar = zeros(1,M);
c = c_bar + 0.5*(2*rand(1,M));
c_max = 1;
c2 = c_bar + 0.5*(2*rand(1,K));
% secondary users' flow rates
x = zeros(Iters,M);
x_max = c(1:M);
gamm = zeros(Iters,M);
phi = zeros(M,K); % resource matrix
phi2 = zeros(Iters,M); % resource matrix
[phi,cost] = Hungarian(phi);
%phi_bak = zeros(M,K,Iters);
C_MUE = zeros(Iters,K); % collision variable
% Virtual Queues
Q = zeros(Iters,M);
Z = zeros(Iters,M);
H = zeros(Iters,K);
% Channel state
% S = zeros(Iters,K);
V = 2; % Define Non-negative weight of penanty function
nu = 1; % weight of proportionally fair utility function
%% -----Algorithms-----------------------------------------
t_change = 2000;
W = zeros(M,K);
p = p1; % high channel occupancy
operation = [zeros(1,1600) ones(1,400)]; %# Fill the vector with 0 and 1
S = operation(randperm(2000))'; %# Randomly reorder it
for iter = 1:t_change
%----CFBS level-----------------
% Performance weighted matrix
for i=1:M
for j=1:K
W(i,j) = Z(iter,i)*c(i)*p(j) - H(iter)*(1-S(iter));
%W(i,j) = Z(iter,i)*c(i)*p(j) - H(iter)*(1-p(j))*c2(j);
end
end
[phi,cost] = Hungarian(-W); % Resuorce allocation
for i=1:M
phi2(iter,i) = phi(i);
end
%----FUE level------------------
% Auxiliary Variable
for i=1:M
gamm(iter,i) = V/Q(iter,i) - 1/nu;
if (gamm(iter,i)<0)
gamm(iter,i) = 0;
end
if (gamm(iter,i)> x_max(i))
gamm(iter,i) = x_max(i);
end
end
% Flow Control
for i=1:M
% cvx_begin
% variable x_min
% minimize ((Z(iter,i)-Q(iter,i))*x_min)
% subject to
% x_min <= x_max(i);
% x_min >= 0;
% cvx_end
% x(iter,i) = x_min;
% f_min = cvx_optval; % optimal value of LP
%fprintf(1,'Optimal value of LP is %0.4f.\n\n',f_min);
f = Z(iter,i)-Q(iter,i);
A = 1;
b = x_max(i);
lb = zeros(1,1);
[x_min,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
x(iter,i) = x_min;
f_min = fval;
end
%----Update Virtual Queues------
C_MUE(iter) = 0;
for i=1:M
for j=1:K
Q(iter+1,i) = max(Q(iter,i) + gamm(iter,i) - x(iter,i),0);
Z(iter+1,i) = max(Z(iter,i) + x(iter,i) - c(i)*p(j)*phi(i),0);
C_MUE(iter,j) = C_MUE(iter,j) + (1-S(iter))*phi(i);
%C_MUE(iter) = C_MUE(iter) + (1-p(j))*phi(i)*c2(j);
end
end
for i=1:K
%H(iter+1,i) = max(H(iter,i) - rho*c2(i),0) + C_MUE(iter);
H(iter+1,i) = max(H(iter,i) - rho,0) + C_MUE(iter);
end
🎉3 参考文献
[1]董志乾.基于无线传感器网络的主机温度采集监测系统[J].内燃机与配件,2022(04):230-232.
部分理论引用网络文献,若有侵权联系博主删除。



















