📦 組合最佳化:排箱與排程實戰
組合最佳化 (Combinatorial Optimization) 是電腦科學與作業研究的核心領域。它的目標是:在有限的資源下,找到最佳的安排方式。
- 排箱問題 (Bin Packing):如何把不同大小的物品裝進最少的箱子?
- 工作排程 (Job Scheduling):如何安排工作順序讓總完成時間最短?
- 資源分配:如何把有限的資源分配到最需要的地方?
這些問題在物流、製造業、雲端運算、人力資源管理中無所不在。學會組合最佳化,你就擁有了幫企業「用最少成本創造最大價值」的超能力!
💰 學這個能幫你賺多少錢?
- 工廠生產排程系統:很多傳產工廠還在用 Excel 人工排產。一套自動排程系統,接案報價 20-50 萬起跳。
- 物流倉儲最佳化:電商倉庫的貨物擺放、揀貨路線最佳化。一套 WMS 最佳化模組,開發費用 30-100 萬。
- 雲端成本最佳化:企業雲端資源的配置最佳化,幫客戶省下 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 求解器或啟發式演算法,你可以在可接受時間內得到「足夠好」的答案。