2018华为软件精英挑战赛经验(一)

初赛、复赛。比赛耗时50天。忙忙碌碌、紧紧张张。
西北赛区真的很强,最终成绩初赛6/64 复赛6/36。真是666!!!

简单说一下赛题:
赛题围绕两个点展开:销量预测问题、放置优化问题。

请求预测问题与简单解析:赛题给出了用户对于虚拟机请求的2-3个月的历史数据文档(txt文件),需要做的是通过读取和抽取文件中关键信息(时间信息)、统计历史虚拟机的请求数量。根据历史数据去预测接下来一段时间(时间的长短、时间的间隔有一些小花样需要处理)的不同规格的虚拟机请求数量,预测结果的准确性是考察的一部分。
放置优化问题与简单解析:预测出来的虚拟机请求数量了,接下来,要去部署这些虚拟机去,怎么样来部署呢?需要把不同规格的虚拟机数量放置在固定规格的服务器上,服务器和虚拟机的规格(在一个input.txt)在文件给出,也是需要我们自己去获取关键信息,服务器的不同规格就像不同大小的容器(或者叫背包),虚拟机的不同规格就像不同大小的物品,我们要把这些不同规格的虚拟机(小物件)放在服务器(背包)上面。怎么样放得最满、最严实是我们要解决的问题。

举例
给出8种虚拟机:
flavor5 2 4096
flavor10 8 8192
flavor2 1 2048
flavor11  8  16384
flavor12  8  32768
flavor13  16  16384
flavor14  16  32768
flavor15  16  65536
给出3种服务器:
General  56  128  1200
Large-Memory  84  256  2400
High-Performance  112  192  3600
怎么解决:根绝历史数据,预测出8种不同规格虚拟机的请求数量,把预测出来的结果部署在3种不同规格的服务器上。预测的准确度和放置的利用率直接影响到最终的得分,最终的得分有评分公式。

先来一张图镇楼(假装很厉害)。96.841分
这是训练赛的截图,正式赛两次第6名,直接凉凉.....月色为你思念成河.....(我自己唱)
----------------------------------------------------------分界线----------------------------------------------------------------
废话不多说,下面分享干货:
预测方法:二次指数平滑(发现到后面用的方法大部分都是这个,确实好用,简单有效,胜过其他逼格很高的预测算法),通过一次差分数据、二次差分数据、三次差分数据(用二次差分数据做归一化处理)。用这个3种数据做二次指数平滑,再加上一个奇怪的系数,这个系数只有自己去慢慢试才能得知。
放置方法:定向遍历可行解(解系附近)30万次,加上竖贪心放置算法,加上矫正算法,再加上得分公式来权衡利弊,从30万个可行解中选取一个得分最好的解进行输出,鲁棒性很高、很稳定、很放心,毕竟是30万次尝试的结果,复赛最终的放置率可以达到99.5%以上,完美解决。
预测准确度和放置利用率之间的利弊权衡也很关键,在假设自己知道标准预测答案的前提下:怎么样去找见预测准确度和放置利用率之间的权衡点,通过评分公式去权衡,比如:我就牺牲部分预测准确度去成全更高、更完美的放置利用率又何尝不行呢? 


发布了81 篇原创文章 · 获赞 118 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/dlphay/article/details/79968889