2020年MathorCup高校数学建模挑战赛—大数据竞赛A题移动通信基站流量预测求解全过程文档及程序

2020年MathorCup高校数学建模挑战赛—大数据竞赛

A题 移动通信基站流量预测

原题再现:

  随着移动通信技术的发展,4G、5G 给人们带来了极大便利。移动互联网的飞速发展,使得移动流量呈现爆炸式增长,从而基站的流量负荷问题变得越来越重要。一方面,在流量高峰期,大量基站呈现出负荷超过容量的问题,使得即使信号条件很好,网络速度也非常的慢,给用户带来非常差的体验。为了改善这个问题,需要给基站增加载频的数量来扩容,使基站可以承载更多的流量;另一方面,由于基站潮汐现象,使得在某些时段,用户数量会大幅降低。如图 1 所示,是某基站下行流量随时间变化的曲线。
在这里插入图片描述
  在基站低流量时段,如果仍然按照高容量时段的载频数量来运行基站配置,会极大的浪费资源和能量。特别是现在每个城市的基站数量巨大,而且随着 5G 的不断部署,基站数量还会大幅增加。同时,每个基站的流量高峰和低谷的时段各不相同。如果所有基站都按照高容量时段来配置运行载频,则网络的能量消耗是非常巨大的。因此,需要根据流量的变化,计算需要的载频数量,从而可以在不同时段打开或者关闭部分载频使得基站既可以满足对用户的服务,又可以尽可能低的消耗能量和资源。
  由于基站数量巨大,无法通过人工实时关注每个基站的流量变化,需要给每个基站设置根据时段自动开关载频的程序。这样就需要知道一段时间内基站流量关于时段的变化值,特别是基站在每个小时的上下行流量值。从而可以知道基站在每个时段需要的载频的数量,进而设置一定时间内基站载频自动开关的程序。
  另外,无论基站流量随时段怎么波动,从长期来看,大部分基站的整体流量是呈逐渐增加趋势的。当整体流量增加到一定程度时,这种动态开关载频的方式已经无法满足基站在流量峰值时候的需求了,因此需要做物理扩容,新建扇区或者新建基站。由于物理扩容需要涉及采购、费用、总体布局等问题,因此规划需要的时间非常长,所以需要提早预估出基站需要物理扩容的时间,从而可以更早的进行规划和设计。
  基于以上背景,请你们的团队根据附件给出的数据,通过数据分析与建模的方法帮助移动通信运营商解决下面的问题:
  问题 1:对小区(基站的每个扇区)的上行和下行流量随时间的变化进行建模,并用附件 1 中的“训练数据”(部分小区 2018 年 3 月 1 日至 4 月19 日的小时级流量数据)训练模型,给出各个小区小时级上行和下行流量的预测模型,预测这些小区后面一周(4 月 20 日至 4 月 26 日)的小时级流量变化,并将附件 2“短期验证选择的小区数据集”中涉及的小区数据填充完成,填充结果提交到竞赛网站平台,请勿改变附件 2 中数据的格式及小区 ID 编号顺序。
  问题 2:预测小区上下行流量的长期变化趋势,给出每个小区长期流量预测模型,并对附件 3“长期验证选择的小区数据集”中涉及的小区,预测其在 2020 年 11 月 1 日至 11 月 25 日每天的总的上行和下行流量,填充该数据表,并提交到竞赛网站平台,请勿改变附件 3 中数据的格式及小区 ID编号顺序。
  问题 3:依据给出的样本数据集,你们觉得还有哪些问题值得研究,并给出你们的思路?

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

  随着移动通信技术的发展,基站作为移动通信的基础设施,其承载网络流量持续增加.本文建立基于流量时间序列特征的聚类模型对小区进行分类,基于基站智能开关载频算法对基站载频的流量阈值进行研究.该问题的研究能智能调节基站载频数,降低基站节能减排效率,符合中国能源结构的发展趋势.
  针对问题一,主要需要对小区进行分类.本文建立了二级聚类模型,首先我们对各小区流量的消耗量进行分析,利用消耗量的评级对小区进行第一级聚类划分.对附件一中的数据预处理,选取 6 个与小区流量消耗有关的特征:“小区日均上行业务量GB”、“小区上行业务量大于 1GB 的天数”、“小区上行业务量小于 0.2GB”、“小区日均值下行业务量”、“小区下行业务量大于 1GB 的天数”、“小区下行业务量小于 0.2GB的天数”.基于流量消耗特征对小区进行一级聚类,将小区划分为“活跃类”、“较活跃类”、“较平淡类”、“平淡类”.接着,选取 12 个有关流量时间序列的特征:“上行昼夜差均值”、“上行周差均值”、“上行近似熵”、“上行样本熵”、“上行白天消耗流量序列方差”以及对应的下行流量数据特征.基于时间序列特征对小区进行二级聚类,最终得到 16 个小区类型,并对每一类小区特点进行说明.
  针对问题二,需要给出基站载频的流量阈值的设置策略和具体结果.我们对基站能耗和用户服务这两个指标进行研究,基站能耗主要从基站业务负载和基站静态能耗上考虑,基站业务负载为小区用户使用的流量总和,基站静态能耗为维持基站运行的最小功耗.根据小区的业务量与基站分配的载频容量差值,确立了一种基站的动态分配载频机制,使基站分配给小区的载频数既能满足用户流量需求,也使基站能耗最低.基于基站能耗和服务质量这两个指标,采用线性加权法,对蜂窝网络整体综合评价,选择适当的权重,使得达到基站能耗和用户服务质量两者达到最优值.由于数据的限制,我们仿真计算时将模型简化为单基站多小区型.提取 186,221,546 等小区一周的数据,通过仿真得到载频阈值,最终确定了该基站开关流量阈值 2.485GB.
  最后,本文对第二问的模型进行稳定性检验,对不减函数进行多种函数的取样测试.结果得到在选取不同函数时,网络整体的评价趋势与得分都较为相似,由此可以得出该模型具有一定的稳定性.另外,我们对模型进行了优、缺点评价.最后经过分析检验,本文的模型具有合理性和一定的现实意义.

模型假设:

  1、假设所调查的有关基站的数据都比较准确;
  2、假设基站使用宏基站能耗模型;
  3、假设小区所属基站不会因为人工或自然原因突然损坏;
  4、假设附件中所给小区覆盖地区的流量使用不考虑新建基站的影响;
  5、假设网络模型为蜂窝网络模型.

问题分析:

问题一的分析

  问题一主要需要我们提取附件 1 中小区上行和下行流量的时间序列数据的特征,对小区进行分类.在小区的分类中并不依赖于其本身的特征属性,而是主要参考覆盖范围内的主导场景.不同基站由于其覆盖范围内用户、使用业务的差异性,其流量模式也存在极大的差异.比如,在工作区域,小区流量高峰一般出现在早上 7-11 点和下午 13-17 点处于上班时间;在餐饮区域,基站流量高峰一般出现在中午和晚上吃饭时间.但是,由于小区覆盖范围内场景的混合性以及不同场景的相似性,这种划分并不具备代表性.
  对于第一问,我们提出了一种基于时间序列特征的聚类方式,从时间序列的分布、熵、稳定性、尺度变化提取时间序列的特征形成时间序列特征向量.
  为了对小区进行更细一步的划分,我们先基于能量消耗模型对小区进行第一层聚类,选取“小区日均上行业务量 GB”、“小区上行业务量大于 1GB 的天数”、“小区上行业务量小于 0.2GB”、“小区日均值下行业务量”、“小区下行业务量大于 1GB 的天数”、“小区下行业务量小于 0.2GB 的天数”作为一级聚类特征.根据流量使用量,利用聚类算法,将小区流量使用划分活跃类、较活跃类、较平淡类、平淡类.基于第一层聚类后的小区,我们再使用时间序列特征的聚类方式对小区进行第二层聚类,选取“上行昼夜差均值”、“上行周差均值”、“上行近似熵”、“上行样本熵”、“上行白天消耗流量序列方差”、“下行夜晚消耗 1 流量序列方差”、“下行昼夜差均值”、“下行周差均值”、“下行近似熵”、“下行样本熵”、“下行白天消耗流量序列方差”、“下行夜晚消耗流量序列方差”作为二级聚类特征向量,利用聚类算法,对小区进行更细一步的划分.并将每一类的小区绘制出一周的流量趋势图,说明该类小区的流量趋势特点.
  关于问题一的具体思路图如下:
在这里插入图片描述

问题二的分析

  问题二主要需要我们对基站阈值的设置进行研究,基站的能源消耗主要来着小区的流量使用.而流量本身存在“潮汐现象”,如果基站以高容量的载频来运行,则对基站能耗是一个很大问题;如果基站关闭一些载频数来降低能耗,在一定程度上,使得用户的服务质量下降.基站智能开关载频算法是我们解决问题的关键,寻找既能使用户达到满足状态,确保用户的服务质量,又能使基站开启较低的载频数,使基站的能耗消耗较低.
  通过蜂窝网络结构模型,建立小区覆盖下的用户与基站的联系.基站能耗从基站业务负载和基站静态能耗上考虑,基站的业务负载为该基站下所有小区用户所需要满足的流量总和,基站静态能耗是指基站没有传输数据时,维持基站运行的最小功耗.小区的流量使用一般会有时间性,不同的时间下用户使用流量的需求不同.对此,我们确立了基站的动态分配载频机制.如果某一时刻小区的业务量高于基站分配小区的载频容量,那么说明基站需要分配格外的载频以满足需求;如果小区的业务量等于基站分配小区的载频容量,那么说明基站与小区业务量之间达到了平衡,无需额外的操作;如果小区的业务量小于基站分配的载频容量,说明基站可以关闭一部分的载频数.一方面除了考虑基站能耗,另一方面还要考虑用户的服务质量,指需要为用户提供更好的服务能力.
  基于基站能耗和用户服务这两个指标,对蜂窝网络整体综合评价,采用线性加权法,作为目标函数.基于需求,改变权重系数来改变模型的适应性.基站根据小区业务量的变化,分配小区最合适的载频数,使得既能满足用户的流量需求,也能使基站能耗达到最低,使整个蜂窝网络能耗达到最低.

模型的建立与求解整体论文缩略图

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

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

程序代码:

部分Python程序如下:

used_feat = ['HOUR','DAY','NAME','MON']
train_x = train[used_feat]
train_y = train['LABEL1']
test_x = test1[used_feat]
print(train_x.shape, test_x.shape)# -----------------------------------------------
scores = []params = {'learning_rate': 0.1, 'boosting_type': 'gbdt', 'objective': 'regression','metric': 'rmse','min_child_samples': 46, 'min_child_weight': 0.01,'feature_fraction': 0.8, 'bagging_fraction': 0.8, 'bagging_freq': 2, 'num_leaves': 16, 'max_depth': 5, 'n_jobs': -1, 'seed': 2019, 'verbosity': -1, }oof_train = np.zeros(len(train_x))
preds = np.zeros(len(test_x))
folds = 5
seeds = [2048, 1997]
for seed in seeds: kfold = KFold(n_splits=folds, shuffle=True, random_state=seed)for fold, (trn_idx, val_idx) in enumerate(kfold.split(train_x, train_y)):print('fold ', fold + 1)x_trn, y_trn, x_val, y_val = train_x.iloc[trn_idx], train_y.iloc[trn_idx], train_x.iloc[val_idx], train_y.iloc[val_idx]train_set = lgb.Dataset(x_trn, y_trn)val_set = lgb.Dataset(x_val, y_val)model = lgb.train(params, train_set, num_boost_round=5000,valid_sets=(train_set, val_set), early_stopping_rounds=25,verbose_eval=50)oof_train[val_idx] += model.predict(x_val) / len(seeds)preds += model.predict(test_x) / folds / len(seeds)del x_trn, y_trn, x_val, y_val, model, train_set, val_setgc.collect()mse = (mean_squared_error(oof_train, train['LABEL1']))print('-'*120)print('rmse ', round(mse, 5))test1['LABEL1'] = preds
train_x = train[used_feat]
train_y = train['LABEL2']
test_x = test1[used_feat]
print(train_x.shape, test_x.shape)# -----------------------------------------------
scores = []params = {'learning_rate': 0.1, 'boosting_type': 'gbdt', 'objective': 'regression','metric': 'rmse','min_child_samples': 46, 'min_child_weight': 0.01,'feature_fraction': 0.8, 'bagging_fraction': 0.8, 'bagging_freq': 2, 'num_leaves': 16, 'max_depth': 5, 'n_jobs': -1, 'seed': 2019, 'verbosity': -1, }oof_train = np.zeros(len(train_x))
preds = np.zeros(len(test_x))
folds = 5
seeds = [2048, 1997]
for seed in seeds: kfold = KFold(n_splits=folds, shuffle=True, random_state=seed)for fold, (trn_idx, val_idx) in enumerate(kfold.split(train_x, train_y)):print('fold ', fold + 1)x_trn, y_trn, x_val, y_val = train_x.iloc[trn_idx], train_y.iloc[trn_idx], train_x.iloc[val_idx], train_y.iloc[val_idx]train_set = lgb.Dataset(x_trn, y_trn)val_set = lgb.Dataset(x_val, y_val)model = lgb.train(params, train_set, num_boost_round=5000,valid_sets=(train_set, val_set), early_stopping_rounds=25,verbose_eval=50)oof_train[val_idx] += model.predict(x_val) / len(seeds)preds += model.predict(test_x) / folds / len(seeds)del x_trn, y_trn, x_val, y_val, model, train_set, val_setgc.collect()mse = (mean_squared_error(oof_train, train['LABEL2']))print('-'*120)print('rmse ', round(mse, 5))test1['LABEL2'] = preds
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

数模美赛分享(时间安排+获奖技巧+比赛思路)

数模美赛分享(时间安排获奖技巧比赛思路数模分工) 本贴所有内容全部干货,时间有限,先简单分享一下,深入学习,请见附录b站视频 一、 时间安排 二、获奖技巧 三、 比赛思路 四、 数模分工 三个人分工如下&…

2023年MathorCup数模A题赛题

A 题 量子计算机在信用评分卡组合优化中的应用 在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过 各种审核规则对客户的信用等级进行评定,通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则…

2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

赛道 B:北京移动用户体验影响因素研究 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使…

2023年MathorCup数模C题赛题

C 题 电商物流网络包裹应急调运与结构优化问题 问题C,题目的设置就是本科生专科生选题,因此在题目难度上应该会和AB,有明显的区别。整个问题的设置还是很符合妈杯的风格设置,下面我们简要的看一下各个题目设置。 问题 1&#xff1…

【数模研赛】“华为杯”第十九届中国研究生数学建模竞赛C题分享——(四)问题二模型建立

写在前面: 第十九届数模研赛在22年10月6-10日开展,我和我的两名队友肝了5天,整出来一篇论文。因为不确定自己做的好不好,所以一直没写博客。前两天结果出来了,我们队拿了国二,在C题里排名88/1134&#xff0…

8月的数模比赛,适合小白为国赛热热身,可以报名了!

​经常有同学在交流群问:小白怎么入门?该从什么学起? 在入门指导的文章中曾讲过:实战是最好的学习。直接参赛,遇到不会的就去搜、去翻书,现学现用,多做几次比赛就入门了。 现在8月份的华数杯已…

2019-12-02 校内数模新手赛

调查地铁站的路径选择问题 摘要 对于一二线城市,地铁已成为民众不可或缺的出行方式,为了减少在上班上学路上消耗的时间,人们也可谓绞尽脑汁。这次,我们要帮助p同学,在他解决地铁"最佳门"问题时提供耗时最短…

2021年MathorCup高校数学建模挑战赛——大数据竞赛赛道A -思路分享

4.8号公布了复赛获奖名单,比赛正式告一段落,为什么现在才开始写呢?其实一是最近一直很忙,二是感觉自己做的不咋地,趁今天有空就写写吧,时间一长就又不想写了。 好了胡扯到此结束,言归正传&#…

第五届“传智杯”全国大学生计算机大赛(练习赛)传智杯 #5 练习赛] 平等的交易

[传智杯 #5 练习赛] 平等的交易 题目描述 你有 n n n 件道具可以买,其中第 i i i 件的价格为 a i a_i ai​。 你有 w w w 元钱。你仅能用钱购买其中的一件商道具。当然,你可以拿你手中的道具换取其他的道具,只是这些商道具的价值之和&…

数学建模相关比赛汇总(含各赛事官方网站链接)

前言 官网可以进行资料下载,历年的建模题等可在官网下载; 注册、报名、缴费、选题、显示论文收到与否、最新Summary论文模板的下载、查询获奖结果。 按含金量笔者分为四个梯队,如有不妥,请发私信联系楼主。 第一梯队:…

MathorCup高校数学建模挑战赛——大数据竞赛 赛道A 移动通信基站流量预测baseline

文章目录 前言一、简单分析二、具体程序1.引入库2.读入数据3.数据处理4.模型训练和预测5.结果文件输出 总结 前言 本文给出2020年MathorCup高校数学建模挑战赛——大数据竞赛中的赛道A移动通信基站流量预测的baseline,这个题目的具体描述和数据集请见链接。 整个程…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 问题一建模方案及代码实现详解

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中) 更新进展 2022年12月21日 12:20 发布问题一、二思路及问题一的python代码实现 2022年12月22日 15:00 发…

鬼畜提问变身指南:ChatGPT十个打破常规的提问公式

Chatgpt的恐怖之处不在于它有多么的准确,很多时候它的回答甚至充满常识性错误,比如你问美国为什么轰炸珍珠岛它都能一本正经的回答你(这当然也有中文语料数据投喂不足和中文本身就复杂而难以理解的原因,听说用英文提问的准确性会提…

ChatGPT怎么用?30句提问公式,一定有你的行业能用到的一句

在使用ChatGPT过程中,总感觉用ChatGPT的效果没有那么好。经过多次使用和摸索,终于发现了问题,原来不是ChatGPT不好用,效果不好,而是因为我之前不会提问。 话不多说,给大家准备了30句ChatGPT提问公式&#…

pdfGPT|无需阅读,让 PDF 和自己对话

目前 ChatGPT 无法直接与外部数据进行交互。如果我们能将自己的数据投喂给它,并且让它根据数据与我们对话,那么我们就能将 ChatGPT 变成自己的知识库。这种方法将使 ChatGPT 更加智能化和可定制化,更好地满足用户的需求。 因 OpenAI gpt-3.5…

学生作业形同虚设!ChatGPT作弊成风!OpenAI:正在自研审核工具

本文来源 机器之心 编辑:泽南、蛋酱 「对学生有负面影响」,这么大责任 OpenAI 可担不起。 语言生成模型来了,学校的作业会不会从此变得形同虚设?近日,纽约市教育官员宣布禁止学生在公立学校使用 ChatGPT 的事件引发了…

聚观早报|马斯克将TruthGPT挑战ChatGPT;腾讯披露自研芯片新进展

今日要闻:马斯克将TruthGPT挑战ChatGPT;苹果在印度年销售额近60亿美元;腾讯披露自研芯片沧海最新进展;特斯拉中国工厂普通工人月薪约1万元;飞猪将直接向阿里CEO张勇汇报 马斯克将TruthGPT挑战ChatGPT 4 月 18 日消息&…

微信公众号(一)每日推送详细教程(含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送)

微信公众号(一)每日推送,天气推送 (含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送),另有小白网页版配置 版本介绍1. 相关…

《花雕学AI》用AI创造清晨的美好:ChatGPT+DALL-E 2 生成“早上好”的场景图

早晨是一天中最美好的时刻,也是最适合与AI对话的时刻。想象一下,当你醒来,打开手机,就能看到一个AI为你生成的“早上好”的场景图,是不是很温馨?这就是ChatGPTDALL-E 2(新Bing) 的魅…

我踩过的那些坑,浅谈一下如何更优雅地使用 Linux

前言 相信很多尝鲜过桌面 Linux 系统的朋友,对它一个很深刻的印象就是稳定性差:不知道怎么就把系统搞崩了,又找不到问题的具体原因和解决方法,只能尝试重装,直到心力交瘁地回到了 Windows 或 macOS。但另一方面&#…