使用OpenSolver,我試圖解決一個基本assignment problem的問題大小的1000如何在Excel中有1000x1000矩陣時提高效率?
所以excel文件具有1000×1000的矩陣。矩陣內的每個值可以是0或1.
解決示例問題需要10個多小時才能完成,並且有100個樣本。但我有一個星期完成整個事情。
我懷疑效率低下的主要原因是由矩陣造成的,以及Excel如何處理它。
有什麼辦法可以加快這個過程嗎?有任何想法嗎?
任何幫助表示讚賞!謝謝。
使用OpenSolver,我試圖解決一個基本assignment problem的問題大小的1000如何在Excel中有1000x1000矩陣時提高效率?
所以excel文件具有1000×1000的矩陣。矩陣內的每個值可以是0或1.
解決示例問題需要10個多小時才能完成,並且有100個樣本。但我有一個星期完成整個事情。
我懷疑效率低下的主要原因是由矩陣造成的,以及Excel如何處理它。
有什麼辦法可以加快這個過程嗎?有任何想法嗎?
任何幫助表示讚賞!謝謝。
我同意這可能是由於數據進出Excel的時間。這種大小的分配問題的解決時間最多應該是幾分鐘。有些時間參見here。問題不是很小:1000 x 1000意味着2k方程和1e6變量。然而,分配問題結構簡單,解決速度很快。看起來你想要連續運行幾個數據集,所以這是一個批處理操作而不是交互式任務。
一個簡單的方法是編寫一段代碼,爲數據集生成一個LP文件,然後在求解器(公有領域解算器將執行的操作,例如CBC,GLPK)中輸入它。然後創建一個貫穿所有數據集的批處理文件。
這1000個1000個單元是否由鏈接和引用組成。或者你有腳本寫這些1和0?如果您正在刷新1000 x 1000個鏈接,則工作簿將減慢抓取速度。如果可以,請複製>粘貼特殊值>,以免工作簿不斷更新。
另外,看到這個。
http://datapigtechnologies.com/blog/index.php/ten-things-you-can-do-to-speed-up-your-excel-vba-code/
矩陣1000x1000。矩陣內的每個值可以是0或1.
該解決方案是數學方法。嘗試找到一些塊對角線結構並對每個塊進行對角化。這是一個非常困難的問題。
儘管此鏈接可能回答此問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面發生變化,僅鏈接答案可能會失效 – Marusyk
作業問題其實並不難。這個尺寸的問題可以在幾分鐘內解決。 –
如果你喜歡OpenSolver,並希望堅持下去,嘗試QuickSolve選項。它可能適用於您,這取決於後續100次優化中的哪些更改。 OpenSolver通常會很慢地解決問題,但如果大部分時間都花在10個小時以上,那麼可以在幾分鐘內完成100個優化的其餘部分。你甚至可以讓VBA爲你做這件事。
或者您可以採取措施並嘗試SolverStudio。
很難說沒有東西看或測試,會關閉自動計算幫助? – WhiteHat
使用編程語言C,C++或Javato實現您想要的算法,這樣會更快。 – 11thdimension
我同意WhiteHat,很難在沒有更多信息的情況下做出明智的建議。你使用什麼腳本?當你提到矩陣時,這是否意味着單元格中的值?如果考慮使用變量來存儲矩陣,因爲讀取寫入單元的操作需要比存儲在變量中更多的處理能力。但更多的細節會更好。 – nbayly