深圳杯---无线回传拓扑规划
B题-无线回传拓扑规划(3人完成)
- 背景介绍
在城区建设基站,传输光纤部署最后一公里的成本高,光纤到站率低,全球综合来看低于60%;如果使用微波传输,由于微波只能在LOS(视距)场景下部署,而城区场景中LOS信道比例低于50%。
在农村网建设基站,单站业务量低,收入低,ROI(投资回报率)差,运营商建站对成本较为敏感。卫星传输租金、光纤传输建设费用对于运营商是很大的负担,而如果使用微波传输,对于相当一部分站点需要提升铁塔高度来满足微波的LOS场景要求,铁塔费用的增加对于运营商来说同样是不小的负担。
Relay无线回传方案利用FDD LTE或TDDLTE制式承载来为站点回传,相对微波有较强的NLOS(非视距)传输能力,可以解决城区、农网等场景下的传统传输方式不可达的问题,同时在部分场景下也可以替代微波,有效降低站高,节省加站费用。
图1 Relay架构
RRN(eRelay Remote Node),是Relay方案中的无线回传设备,它用于为基站提供无线回传服务。如图1所示。Relay组网包含宿主基站DeNB和中继站RN两个逻辑节点:
- DeNB是在普通基站(DeNB)上增加了Relay功能,DeNB支持普通手机(UE)接入,也支持RRN的接入;
- RN包括RRN和ReBTS两部分。RRN通过无线信号接入DeNB并建立空口承载;ReBTS可供覆盖范围内的UE接入;ReBTS的传输由RRN提供
为了方便理解,这里分别将DeNB和RRN称作宿主站和子站,一个宿主基站通常可以有1~3个宿主小区,分别覆盖不同的方向(可理解为扇区的定义),如图2所示。图2中方块代表子站,每个宿主小区可以接入一定数量的子站,子站与子站之间可以级联(即多跳),但跳数有限制。
图2 Relay拓扑关系示意图
- 任务表述
2.1 任务简述
本任务中,在给定一个地区中候选站点的位置分布的情况下,参赛队伍需要根据站点间的相互位置、站点间拓扑关系限制等条件,在满足一定回传质量(本次任务仅根据宿主站与子站的距离是否满足某门限来判断是否满足最低回传质量要求。而实际Relay部署时,影响回传质量的因素包括距离、地形阻挡、普通手机接入影响、ReBTS干扰、相邻基站干扰等多种复杂因素)的前提下,设计成本最优的部站方案,包括:
- 候选站点是安装子站还是宿主站?
- 候选站点间的连接关系如何?
结合现网中对于无线回传拓扑规划问题的具体需求,算法还应该具有以下特点:算法收敛速度快、尽可能覆盖更多的站点。
2.2 输入输出
1、输入:
每个地区内,所有站点列表,包括:
- 站点经纬度;
- 站型:RuralStar或蝴蝶站;
各种站型的综合成本,包括:
- 宿主站的综合成本;
- 子站的综合成本;
- 卫星设备成本;
2、约束
输出的拓扑关系,应满足如下限制条件:
- 首跳距离≤20km,之后每跳距离≤10km
- 站点包含RuralStar和蝴蝶站两种不同站型;其中,RuralStar共包含1个扇区,蝴蝶站共包含2个扇区;若该站点为宿主站,则每个扇区第一级最大接入子站数4,最大总接入子站数6;为了简化问题,暂不考虑蝴蝶站的扇区覆盖方向;
- 宿主站之间采用微波连接,最大通信距离为50KM
- 宿主站和子站以及子站之间采用无线回传连接
- 每个子站最多只能有2条无线回传连接;
- 任意子站只能归属一个宿主站,到达所属宿主站有且只有一条通路,且该通路包含的跳数小于等于3
- 任意宿主站都有且只有一颗卫星负责回传,成片连接的宿主站可共享同一颗卫星,但一颗卫星最多只能负担8个成片宿主站的回传数据
- 成片宿主站中,宿主站总数不设上限
例如,如下图所示的连接关系中
- 宿主小区2不满足“每个扇区第一级最大接入数4,最大总接入数6”
- 子站1、子站2不满足“任意子站只能归属一个宿主站,到达所属宿主站有且只有一条通路”
- 子站4不满足“任意子站只能归属一个宿主站,到达所属宿主站有且只有一条通路,且该通路包含的跳数小于等于3”中的“跳数小于等于3”
- 子站5不满足“任意子站只能归属一个宿主站,到达所属宿主站有且只有一条通路,且该通路包含的跳数小于等于3”中的“任意子站只能归属一个宿主站”
上图连接关系可修改如下(前提是其它约束条件也满足),即可满足约束条件:
3、输出:
按输入数据中站点顺序,输出以下数据:
输出文件包含以下两个
Graph.csv
包含:
- 二维矩阵表示所有站点间的连接关系,0表示没有连接关系,1表示采用无线回传连接,2表示采用微波连接;
Posi.csv
包含以下数组,按列存储:
- 一维数组表示站点类型,0表示子站,1表示宿主站;
例如:
如上图所示的连接关系,以上数组将表述为:
宿主站1 | 宿主站2 | 宿主站3 | 子站1 | 子站2 | 子站3 | 子站4 | 子站5 | 子站6 | 子站7 | 子站8 | |
宿主站1 | 0 | 2 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
宿主站2 | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
宿主站3 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
子站1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
子站2 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
子站3 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
子站4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
子站5 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
子站6 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
子站7 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
子站8 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
站点名 | 站点类型 |
宿主站1 | 1 |
宿主站2 | 1 |
宿主站3 | 1 |
子站1 | 0 |
子站2 | 0 |
子站3 | 0 |
子站4 | 0 |
子站5 | 0 |
子站6 | 0 |
子站7 | 0 |
子站8 | 0 |
算法效率:5分钟内
站点规模:1000站点左右
2.2 挑战目标
在拓扑架构满足约束条件的前提下,
挑战目标1(最高优先级):更低的总体成本
总体成本:宿主站数量*宿主站成本+子站数量*子站成本+卫星数量*卫星成本
平均成本=总体成本/地区内站点总数
这里,卫星的数量等于Ceil(宿主站数量/8),Ceil()表示向上取整。
下表为各种传输方式的成本,单位:W USD
宿主站成本 | 10 |
子站成本 | 5 |
卫星成本 | 50 |
挑战目标2:更低的回传路径损耗
虽然无线回传中存在NLOS影响,但为了简化问题,采用自由空间传播模型估计站点之间的路径损耗,公式如下:
PL=32.5+20*lg(D)+20*lg(F)
其中,PL是路径损耗,是两个站点之间的距离,D单位为km,F是发射频率,单位为MHz,这里默认采用900MHz。
系统平均损耗=所有无线回传连接的损耗之和/无线回传连接数
需要注意,该路径损耗只考虑子站回传部分,宿主站之间采用微波传输,只需满足距离限制,不计算该损耗。
附:球面距离公式
计算球面两点间距离的公式,设A点纬度β1,经度α1;B点纬度β2,经度α2,则距离S为:
S=R·arc cos[cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2]
其中R为地球半径,本题中取6378km;
相关文章:

Jmeter脚本 GUI和非GUI启动方式
2019独角兽企业重金招聘Python工程师标准>>> 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat 3.添加线程组 在TestPlan节点上右键,Add-->Threads(U…

前端效果参考地址
今天项目内容基本完善,没什么事情,就找了一些插件和好用的css动画,下面将一些链接地址分享出来 1、如果需要写阴影、圆角、渐变、弹性盒子等,请参考一下方式: 点击 2、轮播图、全屏滚动等动画: swiper效果 …
随机变量的数字特征(数学期望,方差,协方差与相关系数)
戳这里:概率论思维导图 !!! 数学期望 离散型随机变量的数学期望 (这里要求级数绝对收敛,若不绝对收敛,则E(X)不存在) 如果有绝对收敛,则有 ,其中 连续型…

Spring @bean冲突解决方案
引用2个jar都实现了相同的bean注入,这个是feign的Level Bean public Level feignLoggerLevel() {return Level.FULL; } 这样报错: escription:xxx required a single bean, but 2 were found:- feignLoggerLevel: defined by method feignLoggerLevel in class p…

javascript中实例方法与类方法的区别
在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问…
vue 集成富文本tinymce
开发环境 1. vscode开发语言 1. vue 2. javaScript插件安装 1. npm install tinymce -S 2. 可以使用里面的文件, 下载后可以在node_modules 里面查看如下未目录结构3. 可以将整个结构拷在static里面,为了节省打包后的文件大小可以将tinymce.min.js以cdn方…

c语言中如何设计和编写一个应用系统?
C程序中,如何设计和编写一个应用系统?一、 C语言文件的操作1、 文件操作的基本方法:C语言将计算机的输入输出设备都看作是文件。例如,键盘文件、屏幕文件等.向屏幕输出一个信息,例如“Hello”是#include.h>int main(){printf("Hello…

深圳杯---人才吸引力评价模型研究
人才吸引力评价模型研究 在世界各国和全国各地都加大争夺人才的背景下,一个城市要保持其竞争活力和创新力,必须与时俱进地但不盲目地调整相关人才吸引政策。2018年深圳市将加大营商环境改革力度作为一项重要工作,以吸引更多优秀的高新企业和…

不写容易出错的代码
下面2段代码都是完成商品名称的更新,只是第一种情况数据源是list第二种是map 第一代代码是从List里获取第0个 entity.setProduct_name(productList.get(0).getName()); 第二段代码从map里获取键值 entity.setProduct_name(productMap.get(pid).getName())); 如果…

【Vue】IView之table组件化学习(二)
最基本的绑定table是这样的,需要columns和data两个属性。 <template><Card><h4>表格栗子</h4><Table :columns"cols" :data"stuList"></Table></Card> </template><script> export defa…

show-busy-java-threads查找CPU占用高
背景:需要查找线上CPU占用过高的Java线程在做什么。 可以使用top命令找出占CPU高的进程 #top 然后按shiftC 按CPU占比排序 然后把进程中占比高的线程id找出来,这个是常见的套路,但是这样做比较繁琐。 可以使用show-busy-java-threads工具…

了解机器学习的八大专业术语
转自:https://www.sohu.com/a/217453268_178466 1 自然语言处理 自然语言处理对于许多机器学习方法来说是一个常用的概念,它使得计算机理解并使用人所读或所写的语言来执行操作成为了可能。 自然语言处理最重要的最有用的实例: ① 文本分类…

34.TokenInterceptor防止表单重复提交
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 由于某些原因,用户在进行类似表单提交的操作后,以为表单未被提交,会进行多次的重复提交。为了避免用户多次提交给服务器带来负荷。我们会对表单提交这样的操作进…

使用arthas采集火焰图
火焰图是用图形化的方式来展现profiler工具采集的性能数据,对数据进行统计和分析,方便找出性能热点。 现在我们使用arthas采集JVM的火焰图。 1.首先你需要安装arthas 说是安装其实就是下载解压,arthas是不需要安装的。 下载 — Arthas 3.5…

sudo配置文件详解及实战
2019独角兽企业重金招聘Python工程师标准>>> 安装NGINX之后每次都需要切换ROOT用户做配置文件修改和启动,为了加强安全,ROOT用户一般是不允许直接提供给应用开发人员或者运维人员的,所以需要提供一种方法可以一般用户执行ROOT用户…

Centos中文输入法安装以及切换
鼓捣鼓捣(我是一只菜鸟),终于在我的Centos上面装上我的大中华输入法了,哈哈哈哈下面就简单描述下安装过程吧!!!centos6.5用yum安装中文输入法打开终端,进入root用户(命令…

【MATLAB】矩阵信息的获取
1、矩阵结构 矩阵的结构是指矩阵子元素的排列方式。 函数名称函数功能isempty(A)检测矩阵是否为空isscalar(A)检测矩阵是否是单元素的标量矩阵isvector(A)检测矩阵是否是只具有一行或一列元素的一维向量issparse(A)检测数组是否是系数矩阵 返回1表示该矩阵是某一特定类型的矩…
Android Gradle Plugin 源码解析(上)
一、源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.3.0 gradle 版本:4.1 Gradle源码总共30个G,为简单起见,方便大家看源码,此处通过gradle依赖的形式来查看源码,依赖源…

Guice系列之用户指南(七)
原文地址:https://code.google.com/p/google-guice/wiki/ToConstructorBindings Constructor Bindings(构造器绑定):在父类型上绑定子类实现的构造函数。 贴代码: 12345678910111213141516171819202122232425262728293…

Linux系统火焰图
CentOS7.8 安装perf #yum install perf 执行perf 执行perf record 命令,记录该PID的行为 #perf record -a -g -p 14851 -- sleep 30 --30秒后退出 需要注意后面生成svg图片的所有命令要和当前perf在同一目录,不然会报错。 #perf report 安装git …

深圳杯---垃圾焚烧厂的经济补偿问题
垃圾围城是世界性难题,在今天的中国显得尤为突出。2012年全国城市生活垃圾清运量达到1.71亿吨,比2010年增长了1300万吨。数据显示,目前全国三分之二以上的城市面临垃圾围城问题,垃圾堆放累计侵占土地75万亩。因此,垃圾…

make -j8以及linux下查看cpu的核数
# 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu …

IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法
因为IDEA2021.3.2 的Maven是3.8.1后,mvn编译的时候总是提示拉不到依赖,报错如下: Could not validate integrity of download from http://0.0.0.0/... 因为使用HTTP协议下载依赖,可能会导致中间人攻击。 所以Maven 3.8.1就禁止…

2013高教社杯---B碎纸片的拼接复原
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展&a…

oracle--with as
with as把一段查询结果放在临时表,后面的查询中可多次使用 语法: with 别名 as(select * from table) 或 with 别名1 as(select * from table1), ............. 别名n as(select * from tablen) 示例: with 别名 as(select * from table wher…

Flask上下文管理源码分析
略略略...转载于:https://www.cnblogs.com/dzf123456/p/9446220.html

IDEA函数调用关系图插件
Call Graph是一款IDEA插件,用于可视化基于IntelliJ平台的IDE的函数调用图。 这个插件的目标是让代码更容易理解,有助于读懂和调试代码。 安装插件 安装后,通过View - Tool Windows - Call Graph ,激活窗口 激活后,需要…

[Notice]博客地址转移 vitostack.com
个人博客地址转移至vitostack.com 这里可能不会经常更新。 欢迎访问新地址。 转载于:https://www.cnblogs.com/Vito2008/p/5595430.html

【MATLAB】find 函数 总结
【MATLAB版本为2014a】 MATLAB中函数find函数的作用是进行矩阵元素的查找,它通常与关系函数和逻辑运算相结合。 indfind(X,...):该函数查找矩阵中的非零元素,函数返回这些元素的双下标[row,col]find(X,...):该函数查找矩阵X中的…

与HTTP关系密切的协议:IP、TCP、DNS
TCP/IP协议族的协议挺多的,我们精力有限,不可能一个个都了如指掌,那就挑一些与HTTP协议关系了解吧~ 负责传输的IP协议 按层次分,IP协议位于网络层。 IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里࿰…