本文為公眾號「小鼴鼠談供應鏈」的第46篇原創文章,轉載需附帶作者和出處,如需加白名單請在後臺留言。
上一篇聊了《網絡規劃中的重心法--人人能懂的算法》,所謂人人能懂得前提是你沒完全忘記初中數學。所幸的是會點開這類標題讀的小夥伴,果然都能想起來勾股定理,算是人人能懂了。這篇來聊一下,理論上是依賴經驗人人都能做的: 網絡規劃中的啟發式算法。但人人能做不代表結果能做好,啟發式算法有高效的地方,也能把人帶溝裡。
先看定義,啟發式算法(heuristic algorithm):一個基於直觀或經驗構造的算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每一個實例的一個可行解,該可行解與最優解的偏離程度一般不能被預計。
在網絡規劃中,所謂的最短路徑問題有很多種意思, 使用啟發式算法指的是一個在一個搜尋樹的節點上定義的函數,用於評估從此節點到目標節點最便宜的路徑。啟發式算法是一種技術,這種技術使得在可接受的計算成本內去搜尋最好的解,但不一定能保證所得的可行解是最優解,甚至在多數情況下,無法闡述所得解同最優解的近似程度。
看到這裡還能忍住沒關掉這文的小夥伴給自己鼓個掌,堅持著再看點背景內容就更明白些了。物流網絡規劃是算法的應用,它的抽象表達方式就是數學模型。運籌學的的一個分支是解決離散的優化問題,通過對數學的應用解決離散事件的最優編排、分組、順序或篩選。應用於信息技術、經濟管理、工業工程、交通運輸等領域。
通俗的解釋就是,人在解決問題時所採取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的 步驟去尋求答案。啟發式解決問題的方法是與算法相對立的。算法是把各種可能性都一一進行嘗試,最終能找到問題的答案,但它是在很大的問題空間內,花費大量 的時間和精力才能求得答案。啟發式方法則是在有限的搜索空間內,大大減少嘗試的數量,能迅速地達到問題的解決。但由於這種方法具有嘗試錯誤的特點,所以也 有失敗的可能性。科學家的許多重大發現,常常是利用極為簡單的啟發式規則。
啟發式算法的優勢是相對簡單直觀,多數情況下運算快,程序簡單易於修改,但它的劣勢是表現不穩定,不能保證最優解,算法的好壞依賴於實際問題、經驗和設計者的技術,可能無法避免陷入局部最優解。
比如生產製造企業有2個工廠,客戶分布在8個區域,規劃建立3處配送中心,有5個配送中心備選,分別已知各備選配送中心的固定成本和單位變動成本,各工廠產量和各區域客戶需求量,利用啟發式算法可以求解。抱歉公式輸入太過耗時,書上的直接拍照貼上來又不清晰,就不解釋具體算法了。這個簡單的案例中,啟發式算法可以快速找出不同貨量區間下的倉庫選點。
算法是程序設計的靈魂,代表著用系統的方法描述解決問題的策略與機制。作為網絡規劃程序的使用者,即便不需要清楚具體的公式,也需要了解算法背後的底層邏輯,這樣才能在實際應用時的比較選擇中做出更靠譜的判斷。希望這篇對你了解算法有幫助。