2018华为软件精英挑战赛总结
早在被淘汰的時候,就想寫一波總結了,還是忍到了比賽結束。
1.初賽賽題
整個賽題主要分為兩部分,“利用稀疏的少量數據預測接下來一段時間的銷量”+“二維裝箱問題”。
最開始我以為整個賽題的難點在第一部分,后來發現并不是。。。因為數據實在是太少了、太稀疏了,用一些模型得到的效果可能還沒有用平均數的效果好,所以其實考硬實力的主要是第二部分。
第一部分,我先后使用了“眾數”、“MLP”、“隨機森林”、“平均數”、“中位數”、“線性回歸”、“嶺回歸”、“帶一些約束的嶺回歸”,發現效果最好的是最后一個,其次是“平均數”。使用每天給的100次機會瘋狂調參。。。
第二部分,先是想了想如何用dp,后來師兄提出了一個更好的思路,就是用最優化的方法去解。這個題目中的“二維裝箱”問題可以看做一個“整數規劃”問題,可以使用“分支限界法”或者“割平面法”得到最優解,我這里使用的是割平面法。
就這樣水水的進入了復賽。
2.復賽賽題
復賽賽題增加了難度,修改了數據規模,同時出現了“高級樣例”,對我使用的方法帶來的影響就是:
①.第一部分要針對初中高級數據分別調參。
②.第二部分對整體使用一次“割平面法”時間消耗太大,得另辟蹊徑。
針對第一個問題,沒什么好說的,分三種情況瘋狂調參。
針對第二個問題,必須在“高利用率”和“低時間效率”進行一個權衡,我在代碼中先是加入了一個函數,用來限制第二部分代碼執行的時間,賽題給的時間是90s,我將第二部分限制為80秒,防止超時。然后,第二部分怎么做的呢?共有三種不同的“箱子”,我一個箱子一個箱子的放。對于三種不同的“箱子”,先嘗試將所有“貨物”放進一臺第一(二、三)種箱子,箱子有時候會放不滿,放不滿的情況下利用小“貨物”對箱子進行填充,然后看哪種箱子的利用率最高,選擇利用率最高的,作為第一個箱子。迭代上述過程,每次放的時候都對三種箱子進行嘗試,一直到“貨物”放完。在一個箱子一個箱子放的時候使用“割平面法”(也可以使用dp,我測試了,各有好處,有時割平面快,有時dp快)。最后在所有“貨物”都放完之后,再整體對“箱子”進行一次掃描,使用各類flavor進行填充(雖然預測出的flavor我們已經放完了,但是我們預測的又不一定準是吧)。
復賽差點出線,很遺憾。
總結
以上是生活随笔為你收集整理的2018华为软件精英挑战赛总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YOLOv2和YOLOv3效果对比
- 下一篇: ECCV 2016《SSD: Singl