2015-12-04 57 views
0

使用OpenSolver,我試圖解決一個基本assignment problem的問題大小的1000如何在Excel中有1000x1000矩陣時提高效率?

所以excel文件具有1000×1000的矩陣。矩陣內的每個值可以是0或1.

解決示例問題需要10個多小時才能完成,並且有100個樣本。但我有一個星期完成整個事情。

我懷疑效率低下的主要原因是由矩陣造成的,以及Excel如何處理它。

有什麼辦法可以加快這個過程嗎?有任何想法嗎?

任何幫助表示讚賞!謝謝。

+1

很難說沒有東西看或測試,會關閉自動計算幫助? – WhiteHat

+0

使用編程語言C,C++或Javato實現您想要的算法,這樣會更快。 – 11thdimension

+1

我同意WhiteHat,很難在沒有更多信息的情況下做出明智的建議。你使用什麼腳本?當你提到矩陣時,這是否意味着單元格中的值?如果考慮使用變量來存儲矩陣,因爲讀取寫入單元的操作需要比存儲在變量中更多的處理能力。但更多的細節會更好。 – nbayly

回答

1

我同意這可能是由於數據進出Excel的時間。這種大小的分配問題的解決時間最多應該是幾分鐘。有些時間參見here。問題不是很小:1000 x 1000意味着2k方程和1e6變量。然而,分配問題結構簡單,解決速度很快。看起來你想要連續運行幾個數據集,所以這是一個批處理操作而不是交互式任務。

一個簡單的方法是編寫一段代碼,爲數據集生成一個LP文件,然後在求解器(公有領域解算器將執行的操作,例如CBC,GLPK)中輸入它。然後創建一個貫穿所有數據集的批處理文件。

0

矩陣1000x1000。矩陣內的每個值可以是0或1.

該解決方案是數學方法。嘗試找到一些塊對角線結構並對每個塊進行對角化。這是一個非常困難的問題。

http://mathworld.wolfram.com/BlockDiagonalMatrix.html

+0

儘管此鏈接可能回答此問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面發生變化,僅鏈接答案可能會失效 – Marusyk

+0

作業問題其實並不難。這個尺寸的問題可以在幾分鐘內解決。 –

0

如果你喜歡OpenSolver,並希望堅持下去,嘗試QuickSolve選項。它可能適用於您,這取決於後續100次優化中的哪些更改。 OpenSolver通常會很慢地解決問題,但如果大部分時間都花在10個小時以上,那麼可以在幾分鐘內完成100個優化的其餘部分。你甚至可以讓VBA爲你做這件事。
或者您可以採取措施並嘗試SolverStudio。