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

news2024/11/24 9:32:12

    目录

💥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://www.coloradmin.cn/o/494582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10分钟吃透,python操作mysql数据库的增、删、改、查

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

聊聊汽车OTA测试技术方案

汽车OTA已成为时下热门话题&#xff0c;由于OTA的升级可能会带来一定的风险&#xff0c;针对OTA的测试就尤为重要。本文我们主要通过介绍OTA的发展背景、汽车OTA测试的必要性以及汽车OTA测试内容&#xff0c;为大家分享一套成熟的OTA测试方案。 什么是OTA OTA&#xff08;Over-…

以最大速度将数据迁移至AWS S3存储

数据上云&#xff0c;已经成为企业数据管理发展的必然趋势。 对于企业而言&#xff0c;数据上云“常态化”的趋势&#xff0c;无疑是一个巨大的技术红利。而数据规模爆发式增长的今天&#xff0c;移动和访问云端数据却成为困扰企业的一大难题。不过幸运的是&#xff0c;在对象…

ES6:promise简单学习

一、理解promise Promise将异步执行的程序变成同步执行&#xff0c;所谓的在开发中解决回调嵌套的问题 Promise 是异步编程的一种解决方案 从语法上讲&#xff0c;promise是一个对象 从它可以获取异步操作的消息 从本意上讲&#xff0c;它是承诺&#xff0c;承诺它过一段时间会…

Java入门超详细(内含Java基础 Java高级)

Java基础入门 - 内含Java基础&#xff0c;Java高级 Java 基本介绍Java 学习须知Java 学习文档Java 基础Java 基础语法Java 对象与类Java 基本数据类型Java 变量类型Java 修饰符Java 运算符Java 循环结构Java 条件语句Java switch caseJava 数组Java 日期与时间Java 正则表达式J…

Swift AsyncSequence — 代码实例详解

前言 AsyncSequence 是并发性框架和 SE-298 提案的一部分。它的名字意味着它是一个提供异步、顺序和迭代访问其元素的类型。换句话说&#xff1a;它是我们在 Swift 中熟悉的常规序列的一个异步变体。 就像你不会经常创建你的自定义序列一样&#xff0c;我不期望你经常创建一个…

2022 Jiangsu Collegiate Programming Contest A. PENTA KILL!

题目链接 Sample 1 Input 10 Bin Guigo Grevthar Bin GALA Grevthar GALA TitaN GALA Guigo GALA Aegis GALA Jojo GALA Grevthar Xiaohu Grevthar GALA Aegis Output PENTA KILL! Sample 3 Input 7 GALA Jojo Aegis Ming GALA Grevthar GALA Grevthar GALA Aegis GALA Guigo…

树莓派硬件介绍及配件选择

目录 树莓派Datasheet下载地址&#xff1a; Raspberry 4B 外观图&#xff1a; 技术规格书&#xff1a; 性能介绍&#xff1a; 树莓派配件选用 电源的选用&#xff1a; 树莓派外壳选用&#xff1a; 内存卡/U盘选用 树莓派Datasheet下载地址&#xff1a; Raspberry Pi …

CompletableFutrue异步处理

异步处理 一、线程的实现方式 1. 线程的实现方式 1.1 继承Thread class ThreadDemo01 extends Thread{Overridepublic void run() {System.out.println("当前线程:" Thread.currentThread().getName());} }1.2 实现Runnable接口 class ThreadDemo02 implements …

故障:更新后电脑卡顿

前一天下班的时候关电脑&#xff0c;关机选项变成了“更新并关机”&#xff0c;没多想&#xff0c;我点了。。。。早上上班就发现电脑卡得不行&#xff0c;看了下更新日志&#xff0c;装了一大堆东西&#xff0c;看了下任务管理器&#xff0c;内存直接跑到了90%&#xff0c;这电…

每日学术速递5.2

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.DataComp: In search of the next generation of multimodal datasets 标题&#xff1a;DataComp&#xff1a;寻找下一代多模态数据集 作者&#xff1a;Samir Yitzhak Gadre, Gab…

【JAVA模块六------ 综合案例基础巩固】

JAVA模块六------ 综合案例基础巩固 1 逢7跳过2 数组元素求和3 判断两个数组的内容是否相同4 查找某个数组元素索引5 数组元素反转输出&#xff1a;&#xff08;逆序输出&#xff09;6 评委打分7 随机产生验证码其他&#xff1a;方法抽取&#xff1a; 1 逢7跳过 要求&#xff1…

国产光伏仪器 6581太阳能电池板伏安特性测试仪

6581太阳能电池板伏安特性测试仪主要用于太阳能电池板生产的最终测试&#xff0c;也可以作为层压前测试使用&#xff0c;能大大提高一次封装成品率。该测试仪适合于单晶、多晶、薄膜等多种电池组件&#xff0c;可进行I-V曲线、P-V曲线、短路电流、开路电压、峰值功率等全部参数…

Hive SQL on Flink 构建流批一体引擎

摘要&#xff1a;本文整理自阿里巴巴开发工程师罗宇侠、阿里巴巴开发工程师方盛凯&#xff0c;在 Flink Forward Asia 2022 流批一体专场的分享。本篇内容主要分为五个部分&#xff1a; 1. 构建流批一体引擎的挑战 2. Hive SQL on Flink 3. 流批一体引擎的收益 4. Demo 5. 未来…

做到“有效沟通”,帮你达到这3个目的

在项目管理中&#xff0c;团队沟通是至关重要的。团队成员之间应该建立良好的沟通机制&#xff0c;及时沟通和协调问题&#xff0c;避免出现问题后甩锅的情况。 在实际项目中&#xff0c;很多问题出现的原因是团队沟通不畅&#xff0c;项目经理需要加强团队沟通的重要性&…

K8S二进制安装报错及各个组件功能介绍

目录 一、K8S安装二、安装时遇到的几个问题2.1、Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kuberne…

C语言复习笔记2

1.变量命名只能以数字、字母、下划线组成并且不能以数字开头。 #include<stdio.h> #include<unistd.h>//变量名只能由数字字母下划线组成&#xff0c;不能以数字开头 int main() {//int 2b;return 0; }2.内存中保存的是补码 0的补码取反得补码再求源码是-1。 源码…

提升论文影响力的方法

论文发表后&#xff0c;还有一些重要的工作去做&#xff0c;那就是去积极宣传和推广自己的论文&#xff0c;提高自己论文的影响力。这类似于一个电影上映后&#xff0c;主演们还得去做宣传一样&#xff0c;要想办法推销自己的作品。本文将介绍提升论文影响力的方法。 1. 开源数…

xray简单使用指南

前言收到需求如下 用户还需要一个报告 询问了群里的小伙伴推荐使用xray进行扫描 一、下载 https://github.com/chaitin/xray/releases windows下载amd64即可 解压后进入其目录下执行exe程序&#xff0c;帮我们生成一些yaml文件 生成 ca 证书 .\xray_windows_amd64.exe g…

创客匠人:五月,爱成长的力量,有爱必赢

2023年5月4日&#xff0c;创客匠人第六十九届铁军训练营在厦门举办&#xff0c;由创客匠人CEO蒋洪波、CSO张潇峰及HRM何巧婷为厦门总部的伙伴们带来精彩的回顾总结及主题分享。 一、四月总结 为了明确前进奋斗的方向&#xff0c;进一步提升团队战斗力&#xff0c;从而更好地帮助…