Wireless-Sensor-Network-master_WSN_无线传感网络(Matlab代码实现)

    目录

💥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.

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值