最近在研究選址問題,順便就做了一個歸納整理。
這篇文章是第一部分,關于傳統(tǒng)的、基于統(tǒng)計學的選址。
之后會有另一篇,是關于機器學習、深度學習在現代的選址問題的應用。
以下內容純理論~~
1 選址問題
【來自百度】選址問題是運籌學中經典的問題之一。選址問題在生產生活、物流、甚至軍事中都有著非常廣泛的應用,如工廠、倉庫、急救中心、消防站、垃圾處理中心、物流中心、導彈倉庫的選址等。選址是最重要的長期決策之一,選址的好壞直接影響到服務方式、服務質量、服務效率、服務成本等,從而影響到利潤和市場競爭力,甚至決定了企業(yè)的命運。好的選址會給人民的生活帶來便利,降低成本,擴大利潤和市場份額,提高服務效率和競爭力,差的選址往往會帶來很大的不便和損失,甚至是災難,所以,選址問題的研究有著重大的經濟、社會和軍事意義。
所謂選址問題,就是指在規(guī)劃區(qū)域里選擇一個或多個設施的位置,使得目標最優(yōu)。
PS:這個“設施”可以是工廠、飯店等實體,為了統(tǒng)一,我們都稱呼它為設施。
從它的定義,我們可以抓住四個要素:設施、規(guī)劃區(qū)域、位置(距離)、目標,我們來一個個分析:
1.1 設施
按照設施的空間維度劃分,可以將選址問題分為:
- 立體選址問題:設施的高度不能被忽略,如集裝箱裝箱問題。
- 平面選址問題:設施的長、寬不能被忽略,如貨運站的倉位布局問題。
- 線選址問題:設施的寬度不能被忽略,如在倉庫兩邊的傳送帶布局問題。
- 點選址問題:設施可以被簡化為一個點,絕大多數時候我們遇到的都是這類問題。
還有,按照設施的規(guī)劃數量劃分,可以將選址問題分為:
- 單設施選址
- 多設施選址
1.2 規(guī)劃區(qū)域
按照規(guī)劃區(qū)域的結構劃分,可以將選址問題分為:
- 連續(xù)選址問題:設施可以在給定范圍的任意位置選址,設施的候選位置為無窮多。
- 離散選址問題:設施的候選位置是有限且較少的,實際中最常遇到這類問題。
- 網格選址問題:規(guī)劃區(qū)域被劃分為許多的小單元,每個設施占據其中有限個單元。
1.3 位置
或許說距離會更合適,因為我們確定設施位置的目的,就是為了獲得設施與其他需求點的距離。
按照設施與需求點位置的關系,可以將所要獲取的距離分為:
- 間接距離
如下賦權有向圖,從點v1到點v7有許多條路徑,上面的數字代表了距離,不考慮中途的成本、時間等因素,如何選擇路線使得距離最短?(學過運籌學的同學應該都知道標號法吧)
- 直接距離:
如果沒有向上圖那樣特別給出,我們需要根據兩點坐標自行計算,一般可以選擇Lp距離作為兩點之間的距離,又稱閔式距離(Minkowski Distance)。Lp距離計算方式如下:
d = (Σ(x1i-x2i)p)1/p
特別地,當:
- p=1:L1范式,又稱曼哈頓距離,在二維平面上 d=|x1-x2|+|y1-y2|。假設在曼哈頓街區(qū)乘坐出租車從 P 點到 Q 點,白色表示高樓大廈,灰色表示街道,則下圖中紅線、藍線、黃線的行駛距離都是一樣的,都是曼哈頓距離。
- p=2:L2范式,又稱歐氏距離,定義于歐幾里得空間中,是最常見的距離度量方式,在二維平面上 d=((x1-x2)2+(y1-y2)2)1/2,即兩點間的直線距離,上圖中的綠線。
上面兩種距離用得最多,再介紹一個不太常用的距離:- p=∞:切比雪夫距離(Chebyshev distance),在二維平面上 d=max(|x1-x2|, |y1-y2|)。玩過國際象棋的都知道,國王走一步能夠移動到相鄰的8個方格中的任意一個位置,那么國王從格子(x1,y1)走到格子(x2,y2)最少的步數就是切比雪夫距離??梢栽囋嚳矗聢D已經標注國王到達任意位置所需要的步數。
1.4 目標
我們的目標是找到最好的位置,那么什么是最好的位置呢,換句話說,該如何量化這個目標呢?距離最短、費用最少、利潤最大,或者其他定制的目標?
按照目標的數量,可以將選址問題分為:
- 單目標選址問題:這個很好理解。
- 多目標選址問題:實際的問題往往都是多目標規(guī)劃問題,比如既想距離盡可能短,又想要費用盡可能少,如何均衡這些多目標呢。
2 三個基本問題與模型
可能洋洋灑灑看了上面一堆,對于選址問題還是沒有一個清晰的概念,所以我整理了三個選址問題中的基本問題。而目前選址問題里的一些難題,都是它們的拓展(或者說延伸),比如無容量限制設施選址問題。
2.1 P中值問題 P-Median Problem
研究:在備選設施集合里,如何選擇p個設施,使所有需求點得到服務,并且需求點到其最近設施的加權距離總和最小。
這是一個MinSum問題,可由以下整數規(guī)劃模型表示:


應用場景:在物流領域應用得非常廣泛,加權距離代表了運輸成本,目標是總成本最少。
2.2 P中心問題 P-Center Problem
研究:在備選設施集合里,如何選擇p個設施,使所有需求點得到服務,并且每個需求點到其最近設施的最大距離最小。
這是一個MinMax問題,可由以下整數規(guī)劃模型表示(符號說明與上面類似):

應用場景:應急設施的選址,比如警局、消防局、醫(yī)院,要求盡可能快地到達任意位置。
2.3 覆蓋問題 Covering Problem
覆蓋問題分為最大覆蓋問題和集覆蓋問題兩類。
- 集覆蓋問題
研究:在備選設施集合里,已知每個設施的服務范圍,如何選擇設施,使所有需求點得到服務,并且設施數p最小或成本最小。

- 最大覆蓋問題
研究:在備選設施集合里,已知每個設施的服務范圍,如何選擇p個設施,使得服務的需求點數最多或需求量最大。
應用場景:追求覆蓋面的場景,比如移動基站的選址、物流中心的選址。
3 算法
對于算法的解釋,我總是比較偷懶的,因為解釋起來很麻煩,所以就做個總結,感興趣的話再自行搜索哈。
按照求解的方式,可以分為:
3.1 定性求解
“定性”很好理解,不要求具有統(tǒng)計意義,但是憑借研究者的經驗以及有關的技術,能有效地洞察研究對象的性質,以及可能帶來的影響等。
一般是如下步驟:
- 建立一套基于某些指標的、普適的評價體系
- 對給定的多種方案進行綜合評價
- 基于評價結果,選出相對最優(yōu)方案
常用的評價方法有:加權因素評分法、模糊綜合評判法、風險型方法、德爾菲法(Delphi)
定性方法有著明顯的缺點——受主觀影響極大。可實際過程中,很多東西都是無法定量的,比如政策、環(huán)境的影響~因此定性分析具有非常強的實際意義,往往與定量分析相輔相成。
3.2 定量求解
解析解
求解純數學模型,找到最優(yōu)方案。
上述三個基本問題都是NP-Hard問題,在規(guī)模較小時可行,但隨著規(guī)模的增大,在多項式時間內無法獲得解析解。近似解
常用的有松弛算法:將約束吸收到目標函數中。啟發(fā)式算法
在狀態(tài)空間不斷搜索局部最優(yōu),并更新狀態(tài),循環(huán)往復直至無法再更新。仿真法
對于大型、復雜的選址問題,通過仿真重現系統(tǒng)活動。其他……
有一些算法被證明是可以較好地逼近最優(yōu)解,比如模擬退火、遺傳算法、神經網絡等。
3.2.1 貪婪取走啟發(fā)式算法
給大家介紹一個效率挺高的算法,不一定最好,但我看了還不錯,很多作者靠它水了一些文章哈哈哈~
目標是從N個備選位置里,選擇p個位置建設施,使得目標最優(yōu)。
- 步驟1:初始化p個設施的位置,并計算目標函數值。
- 步驟2:選擇一個設施點i,i∈p,和一個設施點j,j?p,交換組合新設施集合,計算目標函數。
- 步驟3:循環(huán)步驟2,找到最優(yōu)交換組合,使得目標函數值減小最多,永久交換并更新狀態(tài)。
- 步驟4:循環(huán)步驟3,直到再也無法找到最優(yōu)交換組合。
該算法的優(yōu)點和缺點:
優(yōu)點
可并行,運算快。缺點:由于每次都找局部最優(yōu),因此算法的效果受初始位置影響很大。解決方法是循環(huán)整個算法n次,再選擇最優(yōu)組合。
因為時間太短,沒時間研究得太深,其他算法就不班門弄斧了~
下回試試用Python解決幾個實際問題。


