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

news/2024/10/30 15:31:29/

    目录

💥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 matrixfor i=1:Mfor j=1:KW(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);endend[phi,cost] = Hungarian(-W); % Resuorce allocationfor i=1:Mphi2(iter,i) = phi(i);end%----FUE level------------------% Auxiliary Variablefor i=1:Mgamm(iter,i) = V/Q(iter,i) - 1/nu;  if (gamm(iter,i)<0)gamm(iter,i) = 0;endif (gamm(iter,i)> x_max(i))gamm(iter,i) = x_max(i);endend% Flow Controlfor 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:Mfor j=1:KQ(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);endendfor 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://www.ppmy.cn/news/62851.html

相关文章

python语法入门到面向过程编程(三)

函数 1、什么是函数&#xff1f; 在程序中,函数就具备某一功能的工具 事先将工具准备好即函数的定义 遇到应用场景拿来就用即函数的调用 所以务必记住:函数的使用必须遵循先定义,后调用的原则 2、为何要用函数,不用函数问题是&#xff1a; 1、程序冗长 2 程序的扩展性差 3 程…

Maya云渲染如何使用,Maya云渲染流程实操!

Maya 是一款专业的 3D 软件&#xff0c;用于创建逼真的角色和大片的效果&#xff0c;Maya可以加速工作流程&#xff0c;帮助您专注于创造力并按时完成任务。也可以为角色和场景添加精美的细节&#xff0c;并提供让客户满意的优质作品。更有无数业内顶级艺术家依靠 Maya来创作更…

可视化绘图技巧100篇分析篇(二)-生存曲线(LM曲线)(补充篇)

目录 前言 知识储备 生存分析中的基本概念 生存分析 (survival analysis) 事件 (event)

MAC OS安装Mysql和修改my.cnf文件,增加对日期0000-00-00 00:00:00默认值的支持

搜索: brew search mysql 安装早期版本,brew link可以理解为简易的配置环境变量的方式 brew install mysql5.6 brew link mysql5.6 安装新版本,不需要link brew install mysql 启动和停止: mysql.server start mysql.server stop 看mysql查找my.cnf (windows系统下熟知的…

Lecture 12(Preparation):Reinforcement Learning

目录 What is RL? (Three steps in ML) Policy Gradient Actor-Critic Reward Shaping No Reward: Learning from Demonstration It is challenging to label data in some tasks. 例如下围棋时&#xff0c;下一步下在哪个位置最好是不太好确定的&#xff0c;此时可以考虑…

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置&#xff08;可选…

Python——基于YOLOV8的车牌识别(源码+教程)

目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 &#xff08;教程&#xff09; 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求&#xff0c;今天完成了&#xff0c;在此记录和分享 首先&#x…

计算机二级java经典题目及其解析

解析: 栈的存储空间为S(1:50)&#xff0c;初始状态为top51&#xff0c;表示栈的可用空间从S(1)到S(50)&#xff0c;栈顶指针初始指向S(51)的位置&#xff0c;表示当前栈为空。 经过一系列正常的入栈与退栈操作后&#xff0c;top50&#xff0c;表示栈顶指针已经向下移动了一个位…