2020年认证杯SPSSPRO杯数学建模B题(第二阶段)分布式无线广播全过程文档及程序

news2025/6/9 23:30:35

2020年认证杯SPSSPRO杯数学建模

B题 分布式无线广播

原题再现:

  以广播的方式来进行无线网通信,必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题,在同一个时间段内,只有唯一一个拿到令牌的通信节点才能发送信息,发送完毕后则会将令牌传递给其他节点。但我们考虑这样的一个无线网:每个通信节点都是低功率的发射器,并且在进行着空间上的低速连续运动 (无法预知运动方向及其改变的规律),所以对一个节点而言,只有和它距离在一定范围之内的节点才能收到它的信号,而且节点会 (在未声明的情况下) 相互接近或远离。每个节点需要不定期地、断续地发送信息,但会时刻保持收听信息。发送和收听工作可以同时进行。在这个通信网络中,完全没有网络的基础设施,而且每个节点只需要把自己的信息广播出去,需要此条信息的节点只需要被动收听即可,并不需要点对点地持续交换信息。所有信息只能使用同一个频率发送,一旦有两个或多个节点的广播发生冲突,能同时收听到它们的节点就都能监听到冲突。
  第二阶段问题: 我们假设每条信息 (广播) 发送时所需的时间是不等长的,但都是某个最小时间单位 (不妨设为秒) 的整数倍。请建立合理的数学模型并解决如下问题。
  1. 假设对每个节点来说,发送信息所需的时间都服从泊松分布,但不同节点对应的泊松分布的参数 λ 不同,而且互相并不知道参数。那么以怎样的策略自动调整重发的时间段,才能使网络的整体通信效率尽可能高?
  2. 如果每个节点待发送的信息都分成两类,一类信息发送时所需的时间服从泊松分布,另一类所需的时间则服从幂律分布,这个改变对重发策略有什么影响?

整体求解过程概述(摘要)

  针对问题一,首先根据题中通信节点发送信息的无规律性,将连续的时间离散化,以此为基础分析每个单位时间节点上的网络系统状态,并根据通信节点的广播有效距离将冲突分为:有效冲突和无效冲突。接着设计内置算法的三种冲突重发方案:随机生成等待、等差递增等待和截断二进制指数退避。然后分类通信节点状态,并根据真实网络运行分析出通信节点状态相互转换规律,由此建立起通信模型。利用蒙特卡洛仿真实现该通信模型。求解模型时,借助 matlab 实现三种内置算法,考虑发送信息时间的泊松分布,作为输入仿真参数之一实现仿真过程。将广播来源率作为自变量,通信效率指标作为因变量,得到三种通信效率指标随广播来源率的变化,对比分析发现方案三(截断二进制指数退避)网络通信效率最佳。最后结合模型求解结果比较,在现有模型的基础上加以改进,设计自学习算法,动态调整参数,以适应当前的网络状态,提高系统的效率。
  针对问题二,首先分析两类发送信息特性,根据通信节点发送信息的无规律性将通信节点再分类为两类简化计算。然后结合现实网络发送信息时长特性,设置两类分布参数。接着用第一问中的通信模型及蒙特卡洛仿真,得出内置算法中三种冲突重发方案的网络通信效率随两类信息发送量比的变化对比,最后分析发现仍是方案三(截断二进制指数退避)网络通信效率最佳。最后通过实验进一步探究信息发送时长分布对网络通信效率的影响,发现整个网络信息发送时长的期望与网络通信效率成正相关,有力地验证了模型的合理性。

问题分析:

  问题一分析
  对于问题一,根据题中通信节点发送信息的无规律性,将连续的时间离散化,以此为基础分析每个单位时间节点上的网络系统状态。接着由题中要求:对一个节点而言,只有和它距离在一定范围之内的节点才能收到它的信号,而且节点会 (在未声明的情况下) 相互接近或远离,将冲突分为:有效冲突和无效冲突,再针对冲突设计内置算法的三种冲突重发方案:随机生成等待、等差递增等待和截断二进制指数退避。然后分类通信节点状态,并根据真实网络运行分析出通信节点状态相互转换规律,建立起通信模型。利用蒙特卡洛仿真实现该通信模型。最后求解模型,借助 matlab 实现三种内置算法,考虑发送信息时间的泊松分布,作为输入仿真参数之一实现仿真过程。将广播来源率作为自变量,通信效率指标作为因变量,探究三种通信效率指标随广播来源率的变化,分析比较三种冲突重发方案的网络通信效率。最后结合模型求解结果分析,在现有模型的基础上加以改进,设计自学习算法,动态调整参数,以适应当前的网络状态,提高系统的效率。

  问题二分析
  对于问题二,首先分析两类发送信息特性,根据通信节点发送信息的无规律性将通信节点再分类为两类以简化计算。然后结合现实网络发送信息时长特性,设置两类分布参数。接着用第一问中的通信模型及蒙特卡洛仿真,得出内置算法中三种冲突重发方案的网络通信效率随两类信息发送量比的变化对比,分析三种冲突重发方案的网络通信效率。最后通过实验进一步探究信息发送时长分布对网络通信效率的影响以验证模型的合理性。

模型假设:

  1. 所有通信节点都只在单位时间节点上发送信息;
  2. 低功率发射器,忽略电磁波的传播时延;
  3. 通信节点在上一次广播还未发送或还未发送完时,不会需要发下一次广播;
  4. 信息的发送不考虑处理时延与排队时延,即总时延等于传播时延与发送时延之和;
  5. 所有的节点都拥有同样的内置算法,并拥有一个校准过的高精度时钟;
  6. 所有节点能正常运行,不会出现故障。

论文缩略图:

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

1. function[a1,a2,a3]=communicate(source,plan,self,s,f)
2.
3. %source(m*n)矩阵表示 m 个节点,n 个广播来源的时间点
4. %pointer(m*1)矩阵表示 m 个节点,每个节点当前已有广播来源的序号
5. %cache(m*4)矩阵表示 m 个节点,第一列表示下次重发时间点,第二列表示当前已
经重发次数,第三列表示当前缓冲区个数,第四列表示连续性(冲突置 1,发送置 0),
第五列表示其发送时间符合的分布(0 泊松分布,1 幂律分布,2 期望,3 方差),
第六列表示其分布参数

6. %send(m*1)表示 m 个节点,当前节点剩余发送时间点
7.
8. %设置环境
9. m=100; %节点数
10. %n=5000; %来源数(不一定都用得上)
11. %s=1; %轻载或重载
12. %t_z=50; %一次发送占用的时间数
13. k_=10; %截断
14. n_=16; %丢弃指标
15. %plan=0; %方案 3
16.
17. %初始化
18. chongtu=0;
19. diuqi=0;
20. t_sum=100000; %总的模拟时间数(在当前时间点处理下个时间间隔的过程)
21. t_now=1; %当前时间数
22. %source=fun1(m,n,s);
23. pointer=ones(m,1); %表示下一个要来的广播是多少号
24. cache=zeros(m,6)+fun3(m,f,s); %s 表示幂律占比,中间参数表示问题,只要占比
为 0 就是第一问
25. send=zeros(m,1);
26. channel=zeros(t_sum,1)-1; %用于记录信道状态
27.
28. %开始循环
29. for i=1:t_sum
30. send_now=sum(send~=0);
31. channel(i,1)=send_now;
32. %当前信道被占用
33. if send_now>=1
34. %当前信道只被一个节点占用
35. if send_now==1
36. %更新 send 矩阵
37. send=send-1;
38. send(send==-1)=0;
39.
40. %当前信道被多个节点占用(即发生冲突)
41. elseif send_now>=2
42. %调用退避函数,并清零 send 矩阵
43.
[cache,send,diuqi]=tuibi(plan,cache,send,t_now,k_,n_,diuqi,self,channel)
;
44. chongtu=chongtu+1;
45. end
46.
47. %当前信道未被占用
48. elseif send_now==0
49. for j=1:m
50. if cache(j,1)==0
51. if cache(j,3)>0
52. send(j,1)=t_z(cache(j,5),cache(j,6));
53. cache(j,3)=cache(j,3)-1;
54. if cache(j,4)==0
55. cache(j,2)=0;
56. elseif cache(j,4)==1
57. cache(j,4)=0;
58. end
59. end
60. end
61. end
62. send=send-1;
63. send(send==-1)=0;
64. end
65.
66. %最后更新 t_now 和 cache
67. [cache_t,pointer,cache]=fun2(source,pointer,cache,t_now);
68. cache=cache+[zeros(m,2),cache_t,zeros(m,3)];
69. t_now=t_now+1;
70. end
71.
72. a1=sum(channel==1)/t_sum;
73. a2=diuqi/sum(pointer);
74.
75. count=0;
76. for i=1:t_sum
77. if channel(i,1)>=2
78. count=count+channel(i,1);
79. elseif channel(i,1)==1
80. if i~=0
81. if channel(i-1)~=1
82. count=count+1;
83. end
84. end
85. end
86. end
87. a3=sum(channel(channel>=2))/count;
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

Flutter迁移到空安全步骤

Flutter迁移到空安全将你现有的代码带到空安全的世界https://dart.cn/null-safety/migration-guide1. 下载并使用Flutter 3.7.12 SDK, 2. 使用dart pub outdated 检查并更新你的依赖(然后使用下面的命令升级依赖) (1&#xff09…

django websocket

目录 核心代码 consumers.py from channels.generic.websocket import WebsocketConsumer from channels.exceptions import StopConsumer import datetime import time from asgiref.sync import async_to_sync class ChatConsumer(WebsocketConsumer):def websocket_conne…

HT81698 内置升压双声道 相互p2p兼容 HT81696

HT81698内置升压的立体声D类音频功率放大器,其支持单节锂电、双节锂电串联、5V、12V等多种输入,升压后的电压提供给功放供电,功放支持双通道立体声BTL输出以及并联PBTL单声道输出; HT81698内置的升压电路,可通过FB脚设置升压值&a…

HT760 2x30W12S输入,无电感,立体声D类放大器

HT760 典型应用图: HT760 引脚图: HT760 引脚定义信息: #HT760

Netty实战(待完善)

Netty组件 1. Bootstrap, ServerBootstrap Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。 2. NioEventLoop, NioEventLoopGroup NioEventLoop 中维护了一个线程和任务队列,支持异步提交执行任务,…

RK3568驱动指南|第九篇 设备模型-第103章 在总线下注册设备实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

LeetCode-Java(29)

29. 两数相除 结果肯定落在dividend上&#xff0c;于是对这个区间每一个数进行二分查找&#xff0c;判断方法就是 while (l < r) {long mid l r 1 >> 1;if (mul(mid, y) < x) {l mid;} else {r mid - 1;}} 其中mul是一个要定义的快速乘法。 完整代码如下 …

CH341StreamI2C参数解释

总体思路&#xff1a; 第一步&#xff1a;使用EEPROM写入相应的数据 第二步&#xff1a;使用EEPROM读取相应的数据 第三步&#xff1a;使用CH341StreamI2C函数还原读取过程 每一步需要逻辑分析仪进行对比。 第一步&#xff1a;数据写入CH341WriteEEPROM 使用CH341WriteE…

当AI遇见大脑:电脑与人脑协同“进化”

编者按&#xff1a;2023年是微软亚洲研究院建院25周年。借此机会&#xff0c;我们特别策划了“智启未来”系列文章&#xff0c;邀请到微软亚洲研究院不同研究领域的领军人物&#xff0c;以署名文章的形式分享他们对人工智能、计算机及其交叉学科领域的观点洞察及前沿展望。希望…

百度搜索金融:构建高时效、高可用的分布式数据传输系统

作者 | 搜索技术平台研发部 导读 分布式数据传输系统是一种用于在多个计算节点之间高效传输大量数据的系统&#xff0c;诣在高效的解决大规模数据迁移、备份、跨地域复制等问题&#xff0c;其广泛应用在实时数据流传输、跨数据中心数据迁移、多媒体传输等场景&#xff0c;在大多…

一文读懂$mash 通证的 “Fair Launch” 规则,将公平发挥极致

Solmash 是Solana生态中由社区主导的铭文资产LaunchPad平台&#xff0c;该平台旨在为Solana原生铭文项目&#xff0c;以及通过其合作伙伴SoBit跨链桥桥接到Solana的Bitcoin生态铭文项目提供更广泛的启动机会。有了Solmash&#xff0c;将会有更多的Solana生态的铭文项目、资产通…

【逗老师的无线电】ICOM IC-705终端模式Terminal Mode直连反射器配置-外置Pi-Star网关篇

各位友台大家好呀&#xff0c;逗老师最近整了一台IC-705&#xff0c;最吸引人的莫过于这玩意可以通过USB连接树莓派直接进行通联。下面简单介绍一下这个功能和其配置方法 一、功能 终端模式Terminal Mode允许IC-705电台作为终端直接连接反射器&#xff0c;基于不同的连接方式…

雍禾医疗以患者为中心 雍禾植发医生文志清专注做精每一台手术

随着生活方式的改变&#xff0c;晚睡、长期使用电子产品等原因让脱发成为消费者不可忽视的问题。有相关数据显示&#xff0c;76%消费者关注自己的头皮健康状况&#xff0c;53%的人群受到脱发困扰&#xff0c;已经有20%消费者认识到专业毛发医疗机构的重要性&#xff0c;选择到专…

MyBatis学习二:Mapper代理开发、配置文件完成增删改查、注解开发

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html Mapper代理开发 目的 解决…

innovus:Patch Wire(补丁线)

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 在修补一些min area的drc时&#xff0c;会有一些danling wire的drc冒出来&#xff0c;为了避免这些假错&#xff0c;可以使用工具patch wire功能。 1&#xff09;选中wire &…

linux centos 添加临时ip

### 1.添加ip ip addr add IP/mask dev 网络设备 例&#xff1a;ip addr add 172.104.210.247/24 dev ens5f1 ### 2.启动网卡 ip link set up 网络设备 例&#xff1a;ip link set up ens3f0 ### 3.设置默认路由 ip route add default via GATEWAY 例&#xff1a;ip route add …

关于MIPS上手应知应会-如何把C语言改写为MIPS!

文章目录 寄存器指令使用技巧翻译C/Cif/else语句switch语句for循环while 循环do...while循环一维数组定义与使用二维数组定义与使用例 &#xff1a;哈密顿回路 注意立即数被符号位扩展 参考链接 寄存器 NameReg. NumUsage z e r o zero zero0constant value 0(恒为0) a t at a…

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

一、图的遍历的定义&#xff1a; 从图的某个顶点出发访问遍图中所有顶点&#xff0c;且每个顶点仅被访问一次。&#xff08;连通图与非连通图&#xff09; 二、深度优先遍历&#xff08;DFS&#xff09;&#xff1b; 1、访问指定的起始顶点&#xff1b; 2、若当前访问的顶点…

SoapUI 怎么下载:实用指南

SoapUI Windows 版本下载 今天带大家过一遍 SoapUI 在 Windows 系统下的安装教程吧&#xff01;各位 开发小伙伴 们可以跟着我一起来~ 下载安装包 下载链接&#xff1a;www.soapui.org/downloads/s… 安装 安装非常简单&#xff0c;只需双击它即可启动&#xff0c;安装程序…

CSS效果(工作中常用)

1、css文字溢出省略号 overflow: hidden; // 溢出隐藏 text-overflow: ellipsis; // 溢出用省略号显示 white-space: nowrap; // 规定段落中的文本不进行换行 overflow: hidden; // 溢出隐藏 text-overflow: ellipsis; // 溢出用省略…