1. 程式人生 > >2018華為軟挑總結

2018華為軟挑總結

作為菜雞,最後分數231.811,進了個64,但沒進複賽,其實挺有希望進複賽的,哎,練習階段的最後次提交都是前20,由於被浪費了很多次提交機會後,最後只調了一次引數,就沒機會了,哎,還是知足常樂吧,至少還有個入圍(笑cry)。發現和大佬差距真大,學習路途遙遠啊

題目大致是需要我們根據各個規格虛擬機器的歷史資料預測下一個時期的虛擬機器數量,然後對預測出來的各個規格的虛擬機器進行放置。需要資源利用率最大化

主要分為了兩大部分,一是預測,二是裝箱

3.9號12點出題,剛開始一籌莫展,因為沒有做過相關的工作,什麼叫訓練模型也不懂,後面看西瓜書學會的,先用的多線性迴歸,用最小二乘法求解。練習階段都沒問題,但是比賽時超時,可能是因為求解時有太多矩陣運算?

然後放置用的指示文件的首次優先,後來改為了最佳優先。由於不會提交,都浪費了一晚上,到半夜才第一次提交成功,61分左右。之後就開始修改。

正式比賽時,多線性迴歸超時,浪費一次免費機會

後來隊友提交了有BUG的放置,浪費了3次機會後,第4次提交的加權平均,只有215,然後第5次提交了一個版本,210多。第一天5次提交機會就用完了。晚上熬夜繼續搞,嘗試了MK檢測,還是不行,第6次,第7次隊友又用了有bug的程式碼,又浪費兩次。哎我那時候心態都炸了,也怪我那時候無心再檢查。第8次終於不亂改提交練習階段正常的三次指數平滑,228.566,貌似,然後第9次,調了2個引數,調到了231也就是最後成績,因為只剩一次機會了,不敢再動了。當時等排名的時候真的很煎熬,最後也和預計名次差不多。本來效果挺好的二次指數平滑版本都沒有提交,真的很鬱悶。所以在做事時,一定要細心再細心,心態要好,作為個團隊,要參與進去,積極參與檢查,這次比賽犯了很多我最不願意犯的錯誤。長記性!

再說預測方法

資料真的是毫無規律啊,在同樣的裝箱情況下,寫了隨機數都可以得到更好的結果,無語的不行。聽大佬說這道題的重點在於裝箱,而不是預測,但直到比賽結束才知道這點……(應該不是忽悠我吧)

預測都是一些簡單的時間序列,用過線性迴歸,1/2/3次指數平滑,動態自適應指數平滑(不知道為什麼這個方法效果不好,很奇怪),灰度預測,BP神經網路,加權平均。

裝箱用首次適應,最佳適應,動態規劃。

最後提交的是三次指數+動態規劃

在做預測時,首先分析資料特徵,讀取資料集後,用MATLAB分析資料,實在找不出特徵(後面聽大佬說,這些資料是沒規律的,吐血。。)對於這種沒規律的資料,發現去噪後,比如去除節假日,得分更低,所以也沒打算去噪了。去噪的方法可以用正態分佈,超過均值3倍sigma的就去掉。但是在這道題中,沒有去處理。對於這種具有突變點的資料,嘗試過做MK檢測,通過求資料的UFK和UBK找出突變點和突變範圍,但發現一直找不準,現在也不知道為什麼。

在將資料集傳入預測模型後,對資料進行了一些處理,因為是預測一個時間段的總數量,所以就產生了幾種想法,包括,每天的都預測,再求和。或者是時間分為幾段,分別預測每段,再求和。最後就是直接預測這一個時間段。

我們所採取的方法是預測整個時間段。把資料數量除以時間段的長度,就得到新的資料集長度。本以為丟棄了一些資料會影響結果,但想到那些大佬的方法是直接對最後7天求平均值,我真的是醉了。。。(在此膜拜平均數門派鼻祖——牛魔)

最後對預測的結果進行了一些校正,根據訓練集的資料校正。(大佬是加個隨機數。。。服了)

最後對結果放置。看了一些論文,想用遺傳演算法,但是實在太菜不會寫。。。

最後說幾句,在面對問題時,一定要先吃透問題,找出問題的關鍵,否則就是白忙活,還要與人多交流,確實需要交流啊,哎。現在回想著還是有小遺憾。

這次看到了這麼多大佬,能和大佬們做同一件事,真的感到很高興,喜歡這種能夠融入進去的感覺,真的十分十分崇拜他們。

4.15凌晨6點,結束了一個多月的比賽。現在再寫來回憶一下。

努力學習,早日成為小佬!