所以,要打包以不同的權重w_i成具有最大重量容量的W¯¯箱ň項目。將最大容量爲W的容器裝入n個物品時,最小化容器數量,同時最大限度地減少容器空間浪費?
這就像你的通用裝箱問題,但下面的約束使得不同(可能更容易):
- 中的項目順序爲W_1,...,w_i,...,w_n和在考慮下一個項目之前,必須先放置該項目。
最後,您還希望儘量減少每個垃圾箱浪費的空間。這是由一個目標函數定義的 - 普通人的一般行爲是這樣的:如果只有小於或等於垃圾箱的5%被浪費,那麼你沒有問題,並且沒有記錄。否則,如果大於5%被浪費,則會被記錄下來,您不希望這樣做。
目標:儘量減少垃圾箱的數量,同時最大限度地減少浪費的空間。 優先考慮的是首先儘量減少箱數。
什麼是最好的算法/方法呢?
我不太確定這是不是垃圾包裝的問題變種,但我問它好像它是反正。如果你們知道哪種問題更適合哪種問題,請告訴我。
此外,我想知道所有可能的方法,我可以用來解決這種問題(動態編程或貪婪的方法)。
在解決一些未實現的嘗試:
- 我試圖將類似於第一擬合算法貪心方法,但它並不總是最佳的解決方案。有時,浪費的空間並不總是最小化,因爲沒有考慮其他組合。 (而那些其他組合的空間浪費更少)
- 我也考慮過Dijkstra算法的一些變體,只關注最小化浪費的空間。然而,這一次,我發現它並不總是產生最小數目的垃圾箱。
就是這樣。到目前爲止,我只嘗試過貪婪的方法,因爲我希望有一個簡單的方法來解決它。如果沒有,那麼請賜教。即使疼痛我也會接受。謝謝!
編輯: 我只想知道它是否可以用另一種貪婪的方法解決。另外,我想知道我可以搜索和學習的通用問題,以便它可以幫助我解決這個問題。
由於我們不是「做我的家庭作業」服務,我正在投票結束這個問題作爲題外話題。將你的代碼顯示爲[mcve]並陳述你的**特定**問題。 – Olaf
「在考慮下一個項目之前必須先放置項目」這個條件究竟意味着什麼? –
@ n.m。在考慮下一個項目之前,先來的物品必須放置在當前的垃圾箱中。我的不好,現在還不清楚。 –