2016-02-12 69 views
0

我需要大量不同尺寸(100米以下)的電纜,電纜只能以100米長度出售。優化電纜總數

因此,爲了優化我的購買,我想要一個代碼,我可以輸入我需要的所有電纜的長度。該代碼將在約束條件下將我的輸入結合到100以下,同時儘量減少我需要購買的100米長電纜的總數。

如果任何人都可以幫助VBA,Matlab或Python中的代碼,我將非常感激。

+0

謝謝馬修。我首先想到的一樣。但是這種方法不起作用,因爲電纜只能被切斷,不能連接。因此,通過將所有小電纜段的總和除以100,將不遵守「件數之和<100」的限制。 – Gabriella

+0

這絕對是一個覆蓋包裝問題,應該可以通過inlinprog或linprog在MATLAB中解決 –

回答

1

這就是所謂的bin-packing problem,實際上很難(計算上)找到最佳解決方案。

然而,這是一個實際解決問題的問題(正如你自己看到的那樣),所以有幾種方法試圖找到一個近似的解決方案 - 一個「足夠好」而不保證它是最好的解決方案。我做了一個快速搜索,發現this course website,它有一些可能會幫助你的例子。

如果你正在尋找一個確切的解決方案,你可以問相關的問題「我能夠適應我需要的電纜到100米電纜?」。這個可行性問題可以表示爲一個「二進制程序」,這是一個「混合整數線性程序」的特例,MATLAB有一個名爲intlinprog(需要優化工具箱)的解算器。

對不起,我沒有任何代碼來解決你的問題,但我希望這至少給你一些關鍵字來幫助你找到更多的資源!

1

我相信這就像cutting stock problem。有一些很好的方法可以解決這個問題。 Here是一個實現和一些背景。爲此編寫Excel前端並不難(請參閱here)。

enter image description here enter image description here

如果谷歌爲「割問題」你會發現很多參考資料。