作者Edster (Edster)
看板R_Language
標題[問題] 多維度pareto最佳化效能
時間Sun Nov 6 12:48:28 2016
效能諮詢(我想讓R 跑更快)
[問題敘述]:
我自己想了一支多維度pareto front / pareto optimize
演算法的部分是自己跟同事想的,沒有參照別人的code,
line 6 資料排序的部分有po過版,是C版幫解決的。
目前發現這隻稍慢,希望速度更快一點, 不知有沒有什麼好的寫法。
如果哪天我把這隻跟其他最佳化的function傳上cran,會放幫忙修改的人的名字的。
[程式範例]:
請見
http://pastebin.com/A3Uh73Dx
P是一個matrix, column 是目標函數
執行範例
MPF(matrix(runif(100),20,5))
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.4.176
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1478407711.A.20D.html
※ 編輯: Edster (58.114.4.176), 11/06/2016 12:51:11
1F:→ Edster: 說明一下,平常可能用到的維度是 rows = 10^6, cols = 6. 11/06 12:52
3F:→ celestialgod: 部分邏輯沒實現,因為沒看懂XDD 11/06 18:59
4F:→ celestialgod: m[i] %in% r那段ifelse,我看不出來else的必要 11/06 18:59
5F:→ celestialgod: 所以你測試看看你的情況 11/06 18:59
6F:→ celestialgod: 我只是把你的8~11行改成我的35行那樣寫法 11/06 19:00
7F:→ celestialgod: 速度主要差異在那 11/06 19:00
8F:→ Edster: 那段只是為了找下一個i, 剛開始寫的時候while停不下來. 11/06 20:56
9F:→ Edster: 陸陸續續加一堆條件,舊得也沒有重整,成為現在樣子。 11/06 21:00
10F:→ Edster: 包含矩陣P中不能有NA也是後來使用一陣子才加的條件。 11/06 21:05
11F:→ Edster: 最讓我感到神奇的是,這段我寫了應該有一個禮拜,佩服C版 11/06 21:06
12F:→ celestialgod: 恩恩,我不確定我拿掉那塊會不會出問題 11/06 21:25
13F:→ celestialgod: 你自己改成你可以用的就好~~ 11/06 21:25
14F:→ celestialgod: 主要是兩個迴圈跟重新alocate x,y花太久 11/06 21:26
15F:→ celestialgod: 用sweep做到一次比完 在配上rowsums去做any條件就好 11/06 21:26