2D 物料箱裝箱計算機將矩形物品指派到矩形箱中,每個物品使用兩個維度,但許多現實世界中被人們標記為「2D」的任務,其實可以化簡成每個物品只有單一尺寸的問題,而且用確定性的純量裝箱工具就能解決得一樣好。裝箱計算機正是做這件事:它採用一個共通的箱容量,接受最多 1,000 個以相同單位標示的物品尺寸,套用首次適配遞減 (First Fit Decreasing, FFD) 啟發式演算法,並回報每個箱的內容物、每個箱的已使用與剩餘容量、整體利用率,以及一個基於尺寸的下限。FFD 先將物品由大到小排序,然後依序將每個物品放入最早仍有空間的已開啟箱中;只有當現有箱都無法容納目前物品時,才會開啟新箱。相同尺寸會保留原本的輸入順序,所以「first」永遠指的是最早開啟的那個箱,相同的輸入也會重現完全相同的裝箱結果。整個處理都在瀏覽器中進行,因此不會上傳任何資料。

2d bin packing calculator
2d bin packing calculator

「2D 物料箱裝箱」通常的含義 vs. 純量裝箱

真正的 2D 物料箱裝箱將每個物品視為具有寬度與高度的矩形,目標是用最少數量、尺寸相同的矩形箱來容納全部物品,通常允許 90 度旋轉。幾何條件很重要:兩個 6×8 的矩形,總面積是 96,遠小於一個 10×10 箱的面積 100,但兩個並排擺放後會變成 12×8,就放不下了。純粹以面積計算會漏掉這類衝突,真正的 2D 解題器必須處理這些條件,如 Google OR-Tools 的裝箱參考資料所述。

純量裝箱則將每個矩形或每個物品摺疊為單一尺寸——總面積、最長邊、重量、記憶體用量,或任何其他一維資源——並忽略第二個維度。裝箱計算機就屬於這類純量工具。當所謂的「2D」問題其實是帶有旋轉、方向、平衡或堆疊規則的 2D 佈局問題時,純量工具不會強制執行這些規則。當問題本質上是一份一維數量的清單,只是剛好來自 2D 來源(已使用的板面積、所需管線長度、批次重量、記憶體區塊)時,純量裝箱既精確又更快。這個區別就是為什麼同一個查詢——「2D 物料箱裝箱計算機」——可能合理地把某些讀者帶到具備幾何感知能力的解題器,又把另一些讀者帶到確定性的 1D 裝箱工具。先釐清你實際上要解決的是哪種問題,才是第一個該做的決定。

如何使用裝箱計算機來裝箱物品

使用裝箱計算機是一個完全在瀏覽器中執行的三步驟流程。

  1. 輸入每個箱共通的可用容量。使用單一正數;稍後列出的每個物品都必須使用相同單位(公斤、平方公尺、兆位元組、長度公尺,或任何抽象的純量)。
  2. 每行列出一個物品。該行可以是單純一個數字,此時工具會自動指派標籤。如要保留自己的標籤,請寫成 label, size 格式——例如 Shelf-A, 42。請確保每個尺寸都大於零且不超過容量;未通過檢查的資料行會回傳明確的錯誤,而不是被悄悄忽略。
  3. 執行 FFD,檢視每個箱,然後複製裝箱結果。輸出會顯示箱數、每個箱內的物品、已使用與剩餘容量、整體利用率(總物品尺寸 ÷ 已開啟箱的總容量),以及基於尺寸的下限 ceil(總尺寸 ÷ 容量)。如果這個結果對你的規劃目的來說合理,請將它複製到工作表、配載草稿、記憶體配置範例或運籌學練習中使用。

由於演算法在相同尺寸下具備確定性與穩定性,相同的輸入清單永遠會重現相同的指派結果。這讓儲存的範例可以被稽核:你可以在編輯清單後重新執行,並清楚看到是哪個物品移動了、為什麼移動。

實作範例:六個物品裝入容量為 10 的箱

以下是一個小型的完整範例,用來展示演算法的實際運作。容量為 10,物品為 7、5、4、4、3、2 ——共六個數值,皆使用相同單位。

步驟 1——由大到小排序。FFD 首先將物品由大到小排序。排序後的清單為 7、5、4、4、3、2。

步驟 2——依序開啟並放置。

  • 放入 7。目前還沒有任何箱,因此開啟箱 1 並放入 7。箱 1 剩下 10 − 7 = 3。
  • 放入 5。5 大於箱 1 剩餘的 3,因此箱 1 無法容納。開啟箱 2 並放入 5。箱 2 剩下 5。
  • 放入 4。4 大於 3(箱 1 無法容納),但 4 ≤ 5(箱 2 可以)。將 4 放入箱 2。此時箱 2 共裝 5 + 4 = 9,剩下 1。
  • 放入 4。4 > 3(箱 1),4 > 1(箱 2)。開啟箱 3 並放入 4。箱 3 剩下 6。
  • 放入 3。3 ≤ 3(箱 1 剛好放滿)。將 3 放入箱 1。此時箱 1 共裝 7 + 3 = 10,剩下 0。
  • 放入 2。2 > 0(箱 1 已滿),2 > 1(箱 2 已滿)。2 ≤ 6(箱 3 可以)。將 2 放入箱 3。箱 3 共裝 4 + 2 = 6,剩下 4。

最終的箱:箱 1 = {7, 3}(已用 10,剩餘 0);箱 2 = {5, 4}(已用 9,剩餘 1);箱 3 = {4, 2}(已用 6,剩餘 4)。

步驟 3——合理性檢查。總物品尺寸為 7 + 5 + 4 + 4 + 3 + 2 = 25。已開啟箱的總容量為 3 × 10 = 30。利用率爲 25 ÷ 30 ≈ 83.33%。基於尺寸的下限為 ceil(25 ÷ 10) = ceil(2.5) = 3 個箱。FFD 產生了剛好 3 個箱,因此本次結果符合下限——但符合下限本身並不代表已達最佳化,因為個別物品的組合也可能限制可行性。請用相同的數字在裝箱計算機上跑一次以做確認。

解讀輸出:箱、與利用率、下限

箱數是啟發式演算法所開啟的箱總數。在上述範例中為 3。

就每個箱而言,工具會依放置順序列出分配到該箱的物品,以及已使用容量(該箱內物品的尺寸總和)。剩餘容量是容量減去已使用容量,代表純量模型中未使用的空間——不一定是可回收的實體容積。每個工具回報的箱,其已使用加上剩餘必等於原始容量,因為演算法會拒絕任何會溢出的放置。

利用率是總物品尺寸除以已開啟箱的總容量。當 25 個物品單位裝入 30 個容量單位時,利用率為 25 ÷ 30 ≈ 83.33%。利用率接近 100% 代表浪費空間很少;遠低於 100% 通常代表有個箱子幾乎是空的,輸入可以再重新組織。試著用不同的方式排序輸入,或是將非常小的物品與非常大的物品配對,以縮小空隙。

基於尺寸的下限為 ceil(總物品尺寸 ÷ 容量)。這是一個硬性下限:沒有任何裝箱結果能用少於這個數量的箱,因為物品根本就放不下。FFD 不一定會達到下限,即使達到了,符合下限也不代表具有最佳化憑證。個別物品組合可能迫使所需的箱數超越尺寸下限。介面把下限與啟發式結果並列呈現,不會把任一方詮釋為虛假的保證。

純量裝箱能解決哪些 2D 相鄰問題

並非所有被標記為「2D」的問題都需要幾何解題器。大多數搜尋 2D 物料箱裝箱計算機的讀者,手上其實是以下三種工作之一:從板片裁切矩形、將工作量分成相等的批次,或是裝箱帶標籤的物品但第二維度並不重要。第一項工作需要真正的 2D 解題器;第二與第三項本質上是披著外衣的純量問題。下表區分這些情境,協助你判斷哪種工具適合。

問題最佳工具原因
從固定板片裁切矩形專用的 2D 容器裝載解題器寬 × 高以及 90° 旋轉會影響可行性
將工作量分成相等批次裝箱計算機每個工作量只有單一尺寸;所有箱都相等
將帶標籤的物品分批裝箱裝箱計算機純量尺寸、相等箱、FFD 即足夠
將實體箱子裝入車輛專門的貨櫃裝載軟體涉及平衡、堆疊、車軸限制與安全規則
將任務排入時段排程或背包問題解題器容量、價值與優先順序與純粹裝箱不同

純量資料列的精確數字永遠來自工具本身;在挑選方法時,重要的是最右欄那個定性方向。若想從稍微不同的讀者角度了解 1D 純量情況的入門說明,請參考 裝箱計算機:將尺寸裝入箱指南。同一個引擎、同樣的 FFD 規則,只是以不同的工作流程來呈現。

Limits and Where to Use a True 2D Solver

Three categories of limits apply to the Bin Packing Calculator and are worth knowing before you build a workflow around it.

Input limits. Up to 1,000 items per run. Every size must be greater than zero and no larger than one bin. Capacity must be positive. Rows with only a number get automatic labels; rows with custom labels use exactly one comma between label and size. Commas inside labels are outside the simple import format. Items that fail validation return a clear error rather than being silently dropped.

Algorithmic limits. FFD does not guarantee the globally smallest bin count. Bin packing is computationally hard, and a locally sensible early placement can prevent a better later combination. The displayed lower bound is a size bound — no plan can beat it, but matching it does not by itself prove the plan is optimal. The tool does not split items, combine capacities, reserve space, or apply values and priorities; those are different problems (cutting stock, knapsack, multiple-knapsack, scheduling) with different objectives, and the Lehigh analysis of cutting stock problems (An Analysis of Cutting Stock Problems) shows how quickly objectives diverge once you allow leftover stock to be reused.

Physical limits. Sizes are abstract scalars. They can stand for weight, memory, workload, length, or another one-dimensional resource as long as capacity and every item share the same unit. They do not represent three-dimensional box dimensions, orientation, balance, fragility, stacking strength, center of gravity, hazardous separation, or vehicle axle limits. "Container loading" in the broad physical sense needs specialist software with safety rules; the Bin Packing Calculator is transparent planning assistance, not a proof of safe loading or minimum cost. For logistics, cloud capacity, manufacturing, or safety-critical loading, run the plan through a validated domain solver and confirm the final assignment. The educational value of a deterministic, inspectable plan is real; the operational value depends on the constraints you still need to enforce elsewhere.

Related reading: How to Calculate the Height of a Hemisphere (It Equals r).