通过求解数学模型来选择编码节点的最佳数量和位置(Matlab代码实现)

news2024/10/2 1:26:38

 🍒🍒🍒欢迎关注🌈🌈🌈

📝个人主页:我爱Matlab


👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

🍌希望大家多多支持🍓~一起加油 🤗

💬语录:将来的我一定会感谢现在奋斗的自己!

🍁🥬🕒摘要🕒🥬🍁

此代码是数学模型的实现,该模型的开发用于确定某些故障情况下编码节点的最佳数量及其位置。除了降低成本和提高可靠性外,传感器网络最终还具有更高的延迟方面的性能,因为网络编码操作的总数减少;

可以使用不同的网络节点数量,笔者在这里使用 40 节点网络,如下所示:

✨🔎⚡运行结果⚡🔎✨

💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

%% Failure constraint

failureIsDest=zeros(length(FailureScenarios)*numberOfNodes,numberOfLinks);
failureIsSrc=zeros(length(FailureScenarios)*numberOfNodes,numberOfLinks);
e=0;
esrc=0;
% Failure sources
for f=1:length(FailureScenarios)
    for k=1:failedLinksInScen(f)
        workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
        for i=1:numberOfNodes
            for j=1:length(workingLinks)
                bool=isAgateway(workingLinks(j),1,gateways,network);
                if networkF(workingLinks(j),1)==i  && bool==false
                    failureIsSrc(i+e,workingLinks(j)+esrc)=1;
                else
                    failureIsSrc(i+e,workingLinks(j)+esrc)=0;
                end
            end
        end
        e=e+numberOfNodes;
    end
end

%% failure destination
e=0;
edest=0;
for f=1:length(FailureScenarios)
    for k=1:failedLinksInScen(f)
        
        workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
        for i=1:numberOfNodes
            for j=1:length(workingLinks)
                bool=isAgateway(workingLinks(j),1,gateways,network);
                if networkF(workingLinks(j),2)==i && bool==false
                    failureIsDest(i+e,workingLinks(j)+edest)=-1;
                else
                    failureIsDest(i+e,workingLinks(j)+edest)=0;
                end
            end
        end
        e=e+numberOfNodes;
    end
end

% adjFailure Matrix
adjFailure=failureIsSrc(:,:)+failureIsDest(:,:);

% store all the sources of failed links in sourcesF matrix
sourcesF=cell(1,numberOfFailScens);
for f=1:numberOfFailScens
    for l=1:failedLinksInScen(f)
        for n=1:numberOfNodes
            for j=1:numberOfLinks
                if networkF(j,1)==n && networkF(j,3)==FailureScenarios{f}(1,l)
                    sourcesF{f}(1,l)=networkF(j,1);  
                end
            end
        end
    end
end
%% Failure scenario:indicate the failed links in each failure scenario
e=0;
fCol=numberOfNodes+1;
fColEnd=fCol-1+numberOfLinks;

gmmaCol=numberOfNodes+numberOfLinks+1;
etaCol=numberOfLinks + numberOfNodes+failure_scen_var_length*numberOfLinks;
GRow=0;

for f=1:numberOfFailScens
    for i=1: failedLinksInScen(f)
        workingLinks=get_workingLinks_in_failureScen(f,failedLinksInScen,links,FailureScenarios);
        for j= 1:numberOfNodes
            Aeq(GRow+j+e,fCol:fColEnd)=adjFailure(j+e,1:numberOfLinks);
            if isSource(j,FailureScenarios{f}(1,i))==1
                sum_lPrime=sum_Working_Links(j,gammaTree,workingLinks,network);
                beq(GRow+j+e)=1-sum_lPrime;
            else
                Aeq(GRow+j+e,etaCol+j+e)=1;
                beq(GRow+j+e)=0;
            end
        end
        fCol=fColEnd+1;
        fColEnd=fColEnd+numberOfLinks;
        e=e+numberOfNodes;
        
    end
end

📜📢🌈参考文献🌈📢📜

[1]李想想. 面向传感网数据传输的网络编码方案研究[D].哈尔滨工程大学,2012.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54547.html

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

相关文章

【✨十五天搞定电工基础】电阻电路的分析方法

本章要求1. 掌握支路电流法、叠加原理和戴维宁定理等电路的基本分析方法; 2. 了解实际电源的两种模型及其等效变换; 3. 了解非线性电阻元件的伏安特性及静态电阻、动态电阻的概念,以及简单非线性电阻电路 的图解分析法。 目录 一、电阻串并联连接的等效变换 1、…

企业如何有效的防爬虫?

防爬虫,简单来说,就是在尽量减少对正常用户的干扰的情况下尽可能的加大爬虫的成本。 而反防爬虫,或者说制造隐蔽性强的爬虫,就是尽量模拟正常用户的行为。 这两者是动态博弈的。大公司基本都有防爬的项目,以保护数据…

一图了解es6常用数据迭代函数map,filter,fill,reduce

一、一图胜千言 前端开发中,js数组处理是最常用的,除了for循环外,随着es6的普及,像reduce()、filter()、map()、some()、every()以及…展开属性都是最常用到的。 今天偶然从网上看到这张图,真是眼前一亮,真…

盘点JAVA中延时任务的几种实现方式

场景描述 ①需要实现一个定时发布系统通告的功能,如何实现? ②支付超时,订单自动取消,如何实现? 实现方式 一、挂起线程 推荐指数:★★☆ 优点: JDK原生(JUC包下)支持,无需引入新…

RabbitMQ之集群管理

1、在node2、node3、node4三台Linux虚拟机中安装RabbitMQ。 2、从node2拷贝.erlang.cookie到node3、node4的相应目录 如果没有该文件,手动创建/var/lib/rabbitmq/.erlang.cookie ,生成Cookie字符串,或者启动一次RabbitMQ自动生成该文件。生产…

五年Java编程生涯,大专学历最终逆袭阿里,面试+学习+经历分享

五年时间,对于程序员来说,真的非常非常宝贵,掉的头发都够塞满键盘的缝隙了。就说新一代偶像 TFboys 吧,你应该知道这个组合吧,黄金合作期也就三五年的时间,现在基本上就处于各自单飞(solo&#…

深度学习笔记之受限玻尔兹曼机(一)玻尔兹曼分布介绍

机器学习笔记之受限玻尔兹曼机——玻尔兹曼分布介绍引言回顾:Hammersley-Clifford定理玻尔兹曼分布的物理意义引言 从本节开始,将介绍受限玻尔兹曼机。本节将从马尔可夫随机场开始,介绍玻尔兹曼机分布。 回顾:Hammersley-Cliffo…

NCP81239MNTXG 开关降压/升压控制器,USB 功率传递和 Type-C 应用

NCP81239MNTXG USB 功率传递 (PD) 控制器是一款同步降压/升压控制器,适用于为笔记本电脑、平板电脑、台式系统以及很多使用 USB PD 标准和 C−Type 线缆的其他消费设备提供电池电压或适配器电压到所需电源轨的转换。结合使用 USB PD 或 C−Type 接口控制器时完全符合…

【笔记】Java - VM options、Program arguments、Environment variables、eclipse variables

java使用ide开发的时候,运行程序(application)前都要设置启动配置: VM options、Program arguments、Environment variables 很多时候我们是默认配置启动的,所以没太注意。但是如果我们有特殊需求、项目上线时&#xf…

VSCode 安装教程(超详细)

文章目录VSCode 安装使用教程(图文版)那么,什么是 IDE 呢 ?目前,前端开发主流的 IDE 有以下 5 个下边我们开始玩转 VSCodeVSCode 下载、安装Window 版 VScode 安装流程1、下载 Vscode 安装文件2、下载完成单击运行&…

Postman的使用——设置全局参数,参数的传递,从登录接口的响应body中提取数据更新全局参数,从响应cookie中提取数据更新全局变量

Postman的使用——设置全局参数,引用全局参数,参数的传递,从登录接口的响应body中提取数据更新全局参数,从响应cookie中提取数据更新全局变量一、设置全局参数二、引用全局参数三、从登录接口的响应body中提取数据更新全局参数四、…

cmd命令以及一些操作

文章目录前言set和echoif语句判断有无指定文件夹相对路径创建文件夹创建bat脚本换行符前言 因为下载下来的代码用bash脚本写的,cmd不能完美运行,因此想着对照着转成cmd,这样就方便了。 set和echo set demohello world!!! echo %demo%这就是…

[附源码]计算机毕业设计springboot学生宿舍维修管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

动态规划——数字三角形模型

数字三角形模型: 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 输入格式&#…

力扣 895. 最大频率栈

题目 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果出现…

傻妞旧版本(合集)

目录一、前言二、下载三、新版傻妞订阅合集一、前言 傻妞旧版本(合集),包含amd和arm版本 二、下载 🅰️amd✅还未大改,init web未出 🔴[sillyGirl_amd_2022-08-05] ➡️百度网盘 ➡️天翼云盘(访问码:ha8s&#xff09…

如何开通小程序?开通小程序要钱吗?

关于如何开通小程序?开通小程序要钱吗?这两个问题,今天给大家做一个简单的解答。 一、如何开通小程序? “开通小程序”这个说法其实并不准确,能开通的是小程序账号,开通完小程序账号后还需要去制作小程序&…

计算机视觉之目标检测训练数据集(皮卡丘)《2》

在做目标检测,训练数据集的时候,可以先看前段时间的一篇基础文章:计算机视觉之目标检测(object detection)《1》https://blog.csdn.net/weixin_41896770/article/details/128062645先熟悉一些基本知识,如:锚框&#xf…

『.NET』.Net Core在Linux中生成验证码的实现封装

📣读完这篇文章里你能收获到 .Net跨平台在Linux中及Windows中都可生成验证码两套已验证过的实现方案代码封装,即Copy即用快速在Centos 7.x中安装Linux字体 文章目录一、安装Linux字体1. 查看字体库2. 运行安装字体库3. 安装ttmkfdir4. 查看字体库是否已…

搜索技术——模拟退火算法

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 一:算法及模型 物理退火过程 什么是退火:是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子…