用蒙特卡洛算法解概率相關的路線規劃問題
寫給小陳~
參考文獻:
Chou X., Gambardella L.M., Montemanni R. (2018) Monte Carlo Sampling for the Probabilistic Orienteering Problem. In: Daniele P., Scrimali L. (eds) New Trends in Emerging Complex Real Life Problems. AIRO Springer Series, vol 1. Springer
- 蒙特卡洛算法可以用來解很多帶概率的組合優化問題,本篇中用於舉例的是【有時間限制的概率路線規劃問題】
I. 什麽是概率路線規劃問題?
假設你是個推銷員,任務是在有限時間內拜訪一大堆的客戶。每個客戶在時限前成功拜訪都有不同的收益,但是客戶都挺忙的有一定概率不在,而且你的時間也不夠拜訪所有客戶。那麽問題來了:如何規劃一條最短且收益期望最高的路線?
註:每個藍色的點代表一個客戶的實際地理位置,圓圈內數字是收益獎勵,紅色的點則是固定的起點和終點,無獎勵
II. 概率路線規劃問題的解決難點
首先我們需要把問題建成一個數學模型。這裏的變量和約束條件都是很明確的,難點在於目標函數:如何表達旅行距離的期望值和獲得收益的期望值。
假設我們用旅行時間來表示兩點之間的距離,根據每個點的概率排列組合出所有路線組合,還是可以寫出一個旅行時間的期望值公式的。那麽收益的期望值呢?
對於任意一個藍點來說,這個客戶的獎勵拿不拿的到取決於兩點:1. 到達時間有沒有超過時限 2.客戶在不在。
對於條件1來說,在不同的路線走法中,同一個點的到達時間是不一樣的,所以並沒有一個簡單的公式來表達這個收益的期望值。而條件2也會導致路線決策的變化:
例:在下面四條可能的路線中,第二條路線的收益最高。然而這兩位都是大概率不在的客戶,那麽就收益的期望值來說,第三條路線似乎更高。
綜上,這個問題並不能簡單的寫成一個數學模型然後直接丟進cplex,gurobi等牛逼的求解器裏去解。這種情況下,蒙特卡洛算法似乎是個不錯的選擇。
III. 如何用蒙特卡洛算法解決?
簡單來說,只要對於一個路線我們有辦法算出它目標函數的期望值,那麽接下來就可以通過各種局部搜索算法(啟發式算法或精確算法)去對比各種可能存在的路線的目標函數值,最終決策出滿足目標函數的最優路線。而蒙特卡洛在表達這個目標函數的期望值這一點上很有優勢。
具體來說,根據每個客戶在的概率,我們隨機取樣。在任何一個樣本中,客戶在或不在是確定的事情。不在的客戶可以直接跳過去下一個在的客戶。這樣一來,在任何一個樣本中這條路線的總時間和總收益是一個確定值,則目標函數也有一個確定值。所有樣本的目標函數的平均值就是目標函數的期望值。只要樣本的數量足夠大,蒙特卡洛取樣法就可以跳過復雜的概率公式直接得到目標函數的期望值。
蒙特卡洛取樣在實際操作中非常之快,尤其對於客戶數量極大的問題。而樣本數的抉擇,是需要調試來找到最適合這個問題的樣本數。參考文獻中有對於該問題的具體實驗數據,及用於改良提速的啟發式算法思路。
下一篇我們討論該問題及算法的實際應用案例。 感謝閱讀。
用蒙特卡洛算法解概率相關的路線規劃問題