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

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.mzph.cn/news/592605.shtml

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

相关文章

医院信息系统集成平台—数据交换层

医院集成平台核心是数据交换总线,这解决当前大部分医院最关注的电子病历与移动医疗等业务系统接口交互共享及消息数据状态同步(消息一体化机制)等问题。集成平台主要包括业务数据集并提供相应的标准处理接口API(含数据采集与数据发布查询更新),同时提供相应的适配器服务来…

20240102使用python3将视频切片改名之后合并

20240102使用python3将视频切片改名之后合并 2024/1/2 22:12 缘起:将迅雷下载的视频切片排序之后再通过ffmpeg合并!https://pri-cdn-tx.xiaoeknow.com/app1cE7gLFM1187/confusion_index/1703599111EAPoRE.m3u8?signf17e1a2cc0ddd77801f3c5110116369e&am…

C++ //习题14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。

C程序设计 (第三版) 谭浩强 习题14.2 习题14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代…

Qt:自定义一个好看的等待提示Ui控件

一、2024 永不卡顿 爱的魔力它转圈圈~ 等待样式控件是我们在做UI时出场率还挺高的控件之一,通常情况下有如下的几种实现方式: 1> 获取一张gif的资源图,然后使用QMovie 在一个QLabel 控件上加载显示gif的waiting等待动态。 2> 自定义绘图…

Linux 进程(五) 调度与切换

概念准备 当一个进程放在cpu上运行时,是必须要把进程的代码跑完才会进行下一个进程吗?答案肯定是 不对。现在的操作系统都是基于时间片轮转执行的。 时间片(timeslice)又称为“量子(quantum)”或“处理器片…

计算机网络【Cookie和session机制】

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Sess…

【Pytorch】学习记录分享11——PyTorch GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数(LOSS)3. GAN对抗生成网络LOSS损失函数说明 0. 工程实现 1. GAN对抗生成网络结构 2. GAN 构造损失函数(LOSS) LOSS公式与含义: LOSS…

javascript 常见工具函数(四)

31.RGB值和十六进制值之间的转换: (1)十六进制的颜色转为 RGB格式: /*16进制颜色转为RGB格式*/String.prototype.colorRgb function () {var sColor this.toLowerCase();if (sColor && reg.test(sColor)) {if (sColor.l…

C++初阶——类与对象

目录 C宏函数 在使用宏函数时,有几个常见的错误需要注意: 宏函数在某些情况下有以下优势: 1.C宏函数 在 C 中,宏函数(Macro Function)是使用预处理器定义的宏(Macro)&#xff0…

初识Linux下进程

🌎初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言: 我们在电脑上点开的一个个应用,其实就是一个个进程&am…

初识Java并发,一问读懂Java并发知识文集(4)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

智能标志桩:防盗防外物入侵_图像监测_态势感知_深圳鼎信

智能标志桩是一种新型的智能化标志设备,主要用于标识地下管道的位置、类型等,起警示作用。这与传统的标志桩大不相同,物联网的高速发展赋予了智能标志桩科技的力量,使它可以连接互联网,还具备图像监控的功能&#xff0…

2024年P气瓶充装证考试题库及P气瓶充装试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证考试题库及P气瓶充装试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机出的P气…

C++Qt6 多种排序算法的比较 数据结构课程设计 | JorbanS

一、 问题描述 在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法(例如搜索算法与合…

Linux系统操作常用指令

打开终端: ctrlshiftt:切换标签 ctrlshiftn:新增窗口 Linux命令大全(超详细版)_第二范式的博客-CSDN博客 VMware运行时以管理员身份运行,可以避免许多问题。 输入法切换 ctrl 空格 放大终端:ctrlshift"" 缩小终端:ctrl“…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT:李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的,也就是 Sequence to Sequence…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

【已解决】打印PDF文件,如何跳过不需要的页面?

打印PDF文件的时候&#xff0c;有时候我们只需要打印其中的几页&#xff0c;并不需要全部打印&#xff0c;那如何在打印时跳过那些不需要的页面呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 如果你是通过网页打开PDF文件&#xff0c;那么可以在页面中找到并点击“打…

[每周一更]-(第53期):Python3和Django环境安装并搭建Django

Python和Django 的安装 Python和Django 兼容情况 django 1.11.x python 2.7 3.4 3.5 3.6 LTS python 目前在用版本 Python 3.6.5 2018-03-28 更新Python 2.7.15 2018-05-01 更新Python 2.7.5 2013-05-12 更新 python和python3安装pip 同时安装上 python2.7.18、python3.11…

c语言结构体学习上篇

文章目录 前言一、结构体的声明1&#xff0c;什么叫结构体?2&#xff0c;结构体的类型3,结构体变量的创建和初始化4&#xff0c;结构体的类型5&#xff0c;结构体的初始化 二、结构体的访问1&#xff0c;结构体成员的点操作符访问2&#xff0c;结构体体成员的指针访问 前言 昨…