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

news/2024/7/7 19:31:06

    目录

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

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


http://lihuaxi.xjx100.cn/news/1102173.html

相关文章

33. Kubernetes 核心组件讲解——etcd

本章讲解知识点 etcd 概述Raft 原理简介etcd 其他应用场景etcd 不算 Kubernetes 自研组件,etcd 自身是一个开源组件,Kubernetes 集成了它而已。但我们还是有必要讲讲 etcd。 1. etcd 概述 1.1 概述 etcd 是一个高可用的分布式键值存储系统,被用来存储 Kubernetes 集群中的…

Vuex从了解到实际运用(二)——获取vuex中的全局状态(state getters)

vuex从了解到实际运用——获取vuex中的全局状态state getters 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现项目实战vuex定义一个store实例在store中定义数据在组件中获取值vuex的计算属性通过getters获取全局状态state和getters获取全局状态的区别 知识…

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署(亲测有效)

保姆级教程&#xff0c;看这一篇就够用了 环境准备 将宿主机和开发板接入同一个局域网&#xff0c;方便开发。 宿主机 PC电脑&#xff0c;x86_64, 带显卡, 配置不表, 能训练和开发即可。系统&#xff1a; ubuntu 22.04 LTS 版本( ubuntu 18.04 LTS 以上)自带的远程软件&…

从 PC 解锁 Android 手机的 6 种有效方法

在这个数字时代&#xff0c;手机已成为我们生活的重要组成部分。我们将它们用于各种用途&#xff0c;从跟踪我们的工作和社交日程到与亲人交流。 然而&#xff0c;有时我们的手机会成为令人沮丧的源头&#xff0c;尤其是当我们不小心将自己拒之门外时。但是您知道可以使用计算…

正则表达式匹配密码(字符串)

正则表达式匹配密码&#xff08;字符串&#xff09; 验证字符串至少由4种字符组成且长度大于等于8。 实例如下&#xff1a; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String input &quo…

搭建Stable Diffusion WebUI详细过程

文章目录 1、环境搭建1.1、GPU服务器选择1.2、配置服务器环境 2、源码和模型下载3、安装依赖库文件4、运行项目5、视频教程 1、环境搭建 为了方便&#xff0c;这里直接选择Vultr提供的已安装Anaconda的Ubuntu 22.04系统。 如果你自己电脑有足够的显存&#xff0c;你也可以在自…

30. Kubernetes 核心组件讲解——Scheduler

本章讲解知识点 Scheduler 概述Scheduler 原理分析Scheduler 旧版本的两阶段调度流程Scheduler Framework1. Scheduler 概述 Kubernetes Scheduler 是 Kubernetes 集群中的一个核心组件,用于将 Pod 调度到适合的 Node 上运行。在 Kubernetes 中,Pod 是最小的可调度单元,而 …

2023年开源社项目委员会介绍

2023 项目委员会成员 项目委员会主席&#xff1a;石垚 &#xff08;tech-querykaiyuanshe.org&#xff09; 项目委员会秘书 &#xff1a;丁文昊 &#xff08;dingwenhaokaiyuanshe.org&#xff09; 开源社官网项目组&#xff1a; 组长&#xff1a;石垚 &#xff08;tech-queryk…