华为codecraft2018总结

想来也是参加了第二次了,自己还是那么的菜。总结下今年的比赛,得奖是不存在的了,但是收获还是有的。

代码相关的都在这里了:https://github.com/huipengly/CodeCraft-2018-ecs

一、赛题

为了防止明年赛题官网更新,这里我传一份在网盘。

链接: https://pan.baidu.com/s/1C--5XEtVQq3LJQXWq_4yXw 密码: z5mc

二、赛题分析

首先,官方不让用第三方库了(上一年没参加,但是也是不让用了)。我参加的第一年,大家用库用的太疯狂了,不是编程大赛了。真是苦了python选手。

今年的赛题主要分为两个方面,第一是对flavor数量的预测。第二是对预测结果进行分配。

预测方面,这是一个时间序列预测的问题。数据中体现的特征有历史销量数据和flavor的型号参数。这里,我认为有助于预测的特征信息有1.flavor的cpu/mem比例。2.日期中的周末,节假日。从官方的给出的数据例子中,可以看出,节假日和周末的购买量明显的小。这两点看出来了,但是不知道怎么用,很无奈。

装箱方面,官方这里有一个小坑。赛题里提到了优化方向有cpu和mem两种,只需要将其中所需要的一个优化到最小。但是去仔细推导一下,由于系统不允许物理机资源超分,无论要求那个优化方向,只需要将总物理机数目优化到最小即可。所以装箱对整个赛题分数的影响较小,最重要的还是预测。

三、解题思路

3.1数据预测

数据预测用了挺多方法的,越做分越低(心疼自己)。

1.线性自回归(AR)

最简单的一个方法。初赛指导思路上给到的预测思路就是这个。这是统计学里做时间序列预测最简单的方法。AR方法认为,下一时刻的数据与之前n个时刻的数据是线性相关的,只是与每个时刻相关性不同,需要乘一个系数。最后的公式如下。3.3.2为矩阵形式,具体为3.3.3式。这里Xp是p时刻的数据。

知道形式之后,有两个问题需要确定,第一是之前p个时刻相关,这个p如何确定。第二是在确定p后,每个时刻的系数如何确定。

对于问题一,我没有学会,比赛代码中的阶数是随便试的。哎,数学能力太差。怀念本科做比赛只用写代码的日子。

对于问题二,一般使用的就是最小二乘法。预测做不到准确无误,最小二乘法就是寻找一个式3.3.2中的a,使得式子的误差最小。对于矩阵有求解公式,具体的推导可以看这篇博文https://blog.csdn.net/monsterhoho/article/details/46753673。

目标函数:

解:

当阶数p定的不好时,可能会不可逆。我的做法是,不可逆就降低阶数。

这个方法是一开始就实现了的。结果是分最高的,贼气,虽然也就68分。

2.神经网络

本科做数模,神经网络对于我就是一个工具箱,把数据导进去就好了。也不懂输出的是个啥,为啥这么输出。这次算是把全连接网络和bp(反向传播)看懂了。本应在上学期上课学会的。想出这个方法的人真牛逼。具体讲解、推导可以看这个。

https://www.zybuluo.com/hanbingtao/note/476663

然后就是c++实现,写了两天,没写出来,真丢人。一定程度上说明自己没有完全看透这个算法。然后用了别人的代码,跑了起来。

三层神经网络,第一层输入层,输入预测前三天的数据。第二层隐层,4个节点。第三层输出层,输出预测结果。梯度下降方法没看代码,不清楚。学习率0.5。

输入数据做了缩放处理,将所有历史数据缩放为0-1的数。历史数据中最大的数据为1,最小为0.

最后结果是60-65吧。

3.自回归滑动平均模型(ARMA)

在线性自回归中加入了对误差的使用。具体做法是,首先用比较高的阶数进行一次ar,会得到一个预测结果和预测误差,这里的预测误差就是MA所用到的误差值。第二部,使用误差来做arma。预测方法还是最小二乘法。简要的如下图。

具体的讲解可以看这三个pdf,把ar、ma、arma讲的很清楚。分数50多。

4.还是arma,但是有新想法

在这个时候,看了别人做天池,盐城车牌上牌量的比赛,我有了一个新的想法。这里我们需要预测几个flavor,把flavor整体先加起来,预测整体的数据,再将整体预测的数据拆分到每一个flavor。这样做的好处是让每天的数值更大,之前每个flavor时,数据比较稀疏,有较多的天数没有数据,我认为是不利于预测的。但是这样也有一个很大很大的坏处,最后没有很好的拆分想法,结果还是不理想。

总体预测。然后按照总的/最后30天的/最后7天的比例拆分,分数很低,而且是个下降的趋势。

把数据按照7天/3天先平均一下,分数更低。

加一点点随机值后,能够把分数提到69。改了评分bug之后,始终上不去70。

3.2预测结果装箱

由于上学期学习了智能优化方法,自己写过遗传算法的代码,所以决定使用遗传算法。遗传算法是一种启发式算法,通过模仿生物进化的优胜劣汰来巡游,并且有一定的跳出局部最优的能力。具体遗传算法的内容可以去网上搜,很多资料。这里讲主要思想。

遗传算法染色体编码有很多种,这里使用顺序编码,按照1-n的自然数进行编码,每个自然数出现且只出现一次。

染色体解码,首先将预测出的n个flavor按照1-n的自然数进行编号。染色体会是这n个编码的排列,例如预测了5个flavor,染色体可能是1|3|2|5|4,按照从前往后的顺序放入物理机,当物理机被装满时,向下一个物理机放置。直到染色体被放置完,完成染色体解码。

染色体交叉,这里我使用了ox的方式。可以看这个网站了解染色体交叉的信息。https://blog.csdn.net/u012750702/article/details/54563515。使用轮盘赌的方式选择交叉的染色体。轮盘赌可以看这个网站:https://www.cnblogs.com/adelaide/articles/5679475.html

我测试的分配的速度、结果都不错。

四、结果

渣渣效果,我觉得时预测阶段没做好。还是自己数学能力太弱了,满脑子都是编程。最后测试用例300分,就拿了220分。

写这个博客纪念一下这个比赛吧,虽然自己很菜。

转载于:https://www.cnblogs.com/huipengly/p/8728834.html

华为codecraft2018总结相关推荐

  1. 华为CodeCraft2018 周进展

    上周: python验证lstm,效果不好.很多拟合的是直线.C++抄了个lstm,输出也是直线,不知道是程序的问题,还是模型的问题. 尝试bp神经网络求解.代码是抄的.回看天数是写死的,隐层只有一层 ...

  2. 2021年华为与小康-北汽-长安

    2021年华为与小康-北汽-长安 华为造不造车?这是之前汽车圈内最有意思的话题,关于内部想要造车的消息也频繁被曝出.直至华为心声社区发布了一篇任正非签发的决议,就是华为不造车,谁以后再建言造车,干扰公 ...

  3. 华为八爪鱼自动驾驶云

    华为八爪鱼自动驾驶云 2019年10月世界智能网联汽车大会上,华为轮值董事长徐直军做了主题演讲,阐述了华为智能汽车业务战略,描绘了智能汽车解决方案的五大业务板块:智能网联.智能驾驶.智能座舱.智能电动 ...

  4. 特斯拉fsd全自动驾驶与华为自动驾驶

    特斯拉fsd全自动驾驶与华为自动驾驶 华为自动驾驶能力很强. 不认为这会对特斯拉造成威胁或者压力. 因为特斯拉的核心竞争力并不是自动驾驶- 起码身边的车主来说,100个车主里能有一个买fsd的就不错了 ...

  5. 华为不造车,广汽合作智能驾驶

    华为不造车,广汽合作智能驾驶 2021年5月21日,华为再度发布声明重申华为不造车.华为公司表示,这一长期战略在2018年就已明确,没有任何改变."华为表示,至今为止并未投资任何车企.未来也 ...

  6. 华为+长安研发芯片?长安蔚来更名“阿维塔科技”

    华为+长安研发芯片?长安蔚来更名"阿维塔科技" 5月20日长安.华为和宁德时代合作造车的重要进展,阿维塔科技公司正式披露.而在整车制造之外,合作方(长安.华为)其实还瞄准了汽车用半 ...

  7. 华为托起小康股份、北汽蓝谷、长安汽车股价

    华为托起小康股份.北汽蓝谷.长安汽车股价 2021年5月24日上午,华为一再重申的"华为不造车"言论,再度"重创"相关上市车企. 受此消息影响,北汽蓝谷.长安汽 ...

  8. 华为计算平台MDC810发布量产

    华为计算平台MDC810发布量产 塞力斯的发布会刚刚结束,会上塞力斯SF5自由远征版也确实让人眼前一亮. 全球首款4S级加速能力.1000+km续航新能源作为这款车的卖点. 续航1000+km成了最近 ...

  9. 华为4D成像雷达、智能驾驶平台MDC 810

    华为4D成像雷达.智能驾驶平台MDC 810 2020年10月底,华为发布了HI品牌,在今年2021年上海国际车展前夕,华为以 "专新致智" 为主题,举办HI新品发布会,发布了包括 ...

最新文章

  1. TCP性能和发送接收Buffer的关系
  2. vue 表格左右拖拽调整列宽_解决 | iview低版本实现表格拖拽,滚动条列宽计算问题...
  3. UVa11646 - Athletics Track(水题)
  4. leetcode算法题--旋转链表
  5. .NET中如何通过文本框中按回车键进行的提交数据
  6. Redox随笔(2)-用Rust语言编写的类UNIX操作系统
  7. 2021 .NET Conf China 主题分享之-轻松玩转.NET大规模版本升级
  8. type pdf c语言课程设计,c语言课程设计-.pdf
  9. Splash resource_timeout 属性
  10. 为什么C++编程让人觉得那么难学?
  11. HBase简介及使用
  12. Linux Shell 实现网页爬虫
  13. 伍德里奇 第6版 计量经济学导论_伍德里奇《计量经济学导论》(第6版)笔记和课后习题详解...
  14. 基于python的客流统计_基于深度学习的客流量统计方法
  15. bootstrap编写响应式页面
  16. 熔断机制什么意思_熔断机制是什么意思?什么是熔断机制?
  17. 选择4G工业路由器需要注意的细节
  18. AFNetworking2.5使用
  19. 巨头侵蚀下,社交电商的“蜂群”当如何生存?
  20. mysql distinct数量_MySQL SELECT DISTINCT和计数?

热门文章

  1. 【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~
  2. CSS属性 - color
  3. 国家会议中心:参加百度【框广天下,搜赢未来】推广会议
  4. 给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识
  5. vue报错:If you want to include a polyfii,you can use an empty module like this:resolve.fallback
  6. Eclipse启动慢分析及解决 / Eclipse启动参数整理
  7. 生产者消费者模型(一)
  8. android音频杂音问题_android – 使用audiorecorder从音频样本记录中删除噪音
  9. 转:当你拼命的时候别人会有多少在拼命
  10. 求最大公约数(更相减损法)