📦 組合最佳化:排箱與排程實戰

組合最佳化 (Combinatorial Optimization) 是電腦科學與作業研究的核心領域。它的目標是:在有限的資源下,找到最佳的安排方式。

  • 排箱問題 (Bin Packing):如何把不同大小的物品裝進最少的箱子?
  • 工作排程 (Job Scheduling):如何安排工作順序讓總完成時間最短?
  • 資源分配:如何把有限的資源分配到最需要的地方?

這些問題在物流、製造業、雲端運算、人力資源管理中無所不在。學會組合最佳化,你就擁有了幫企業「用最少成本創造最大價值」的超能力!

💰 學這個能幫你賺多少錢?

  1. 工廠生產排程系統:很多傳產工廠還在用 Excel 人工排產。一套自動排程系統,接案報價 20-50 萬起跳。
  2. 物流倉儲最佳化:電商倉庫的貨物擺放、揀貨路線最佳化。一套 WMS 最佳化模組,開發費用 30-100 萬。
  3. 雲端成本最佳化:企業雲端資源的配置最佳化,幫客戶省下 30% 以上的雲端費用。

🛠️ 我們會用到的技術

  • 🐍 Python — 建模與實作
  • 🔧 Google OR-Tools — Google 開源的組合最佳化套件
  • 📦 CP-SAT Solver — 約束滿足與整數規劃求解器
  • 📊 Pandas — 資料處理
  • 📈 Matplotlib — 結果視覺化(甘特圖)

🔥 Vibe Coding 核心 Prompt

【排程最佳化詠唱範例】 「請幫我使用 OR-Tools 解決工作排程問題: 1. 有 5 台機器與 20 個工作。每個工作有處理時間與指定機台。 2. 每個機台一次只能處理一個工作。 3. 目標是最小化所有工作完成時間 (Makespan)。 4. 使用 CP-SAT 求解器。 5. 輸出每個工作的開始時間與結束時間。 6. 畫出甘特圖 (Gantt Chart)。」

準備好讓演算法幫你做決策了嗎?讓我們開始吧!



課程導覽:這堂課你會學到什麼?

組合最佳化(Combinatorial Optimization)研究的是如何在有限的可能性中找到最佳解。這堂課涵蓋四個經典問題。

第一章:排箱問題 Bin Packing

用最少箱子裝完所有物品。學習 CP-SAT 精確求解和 FFD/BFD 近似演算法。

第二章:工作排程 Job Scheduling

在時間軸上安排工作順序,滿足截止時間和資源限制。學習 EDD、Moore-Hodgson 等排程策略。

第三章:旅行推銷員問題 TSP

找出一條經過所有城市且回到起點的最短路徑。學習 2-opt、Lin-Kernighan 等啟發式演算法。

第四章:切割與包裝問題 Cutting & Packing

排箱問題的二維和三維延伸。學習 Bottom-Left、Guillotine 等啟發式放置策略。

這些問題雖然 NP-hard,無法在多項式時間內求得最佳解——但透過 CP-SAT 求解器或啟發式演算法,你可以在可接受時間內得到「足夠好」的答案。