天天看點

優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)

我們在​​免疫算法求解配送中心選址問題(附MATLAB代碼)​​這篇推文中講解了使用免疫算法求解配送中心選址問題,在這篇推文基礎上,今天我們來講一講使用模拟退火算法(SA)求解配送中心選址問題。

▎引言

從物流發展的趨勢來看,配送中心不僅執行一般的物流職能,而且要越來越多地執行指揮排程、處理資訊等職能,是整個物流網絡的關鍵所在,受到各方面的廣泛重視,是以,物流配送中心的合理選擇是企業發展的戰略決策問題。

一個成功的配送中心選址方案,可以縮短配送距離,加快配送速度,降低配送成本,提高服務品質,還可以促進生産和消費的有機協調與銜接,使整個物流系統處于平衡發展的狀态。配送中心選址決策就是要确定配送中心的數量、位置及每個配送中心服務的客戶群體。

配送中心的選擇要遵循經濟性原則,即要找到成本最低的地方,是以通常我們建立的配送中心選址模型的目标函數基本上都是總費用最低。為了模組化友善以及簡化計算,文獻中通常會做出若幹假設,進而簡化總費用的計算,如現有文獻中基本上都隻考慮固定建設費用和運輸費用,不考慮貨物周轉費用。

在實際的選址過程中,存儲費用是影響配送中心運作效益的一個重要因素。存儲費用是物資在庫存過程中發生的費用,一般與存儲數量和存儲時間成正比關系,存儲費用包括倉庫保管費用、存貨損壞費用等。倉庫保管費用是指倉庫的保險費、稅金等,存貨損壞費用是指存貨的陳舊貶值及過時削價損失等。由于不同倉庫存儲條件不同,因而存儲費率會有所不同。

▎數學模型

多配送中心選址問題可以描述為:某個地區内有若幹個需求點,已知各個需求點的需求量,現欲在該區域内若幹個配送中心備選點中選擇一部分,建立配送中心,以滿足該地區需求點的需求,并使得包括固定費用、運輸費用以及存儲費用在内的總費用最少。

為了簡化問題,我們先做出如下假設:

1)僅在給定的配送中心備選點中選擇一部分建立配送中心。

2)運輸費用與運量成正比。

3)配送中心容量足夠大,可以滿足所有需求。

4)各需求點的需求量已知

假設有​個需求點,各個需求點的需求量已知,現欲從​個備選地中選取​個建立配送中心,使得整個配送系統的總費用最少。

為了建立數學模型,首先引入以下變量:

:需求點個數;

:配送中心備選地個數;

:拟建配送中心個數;

  :第個需求點的年需求量;

  :配送中心為需求點供應的貨物量;

  :從配送中心到需求點的機關運費(包括裝卸、運輸費);

  :在第個備選點建立配送中心的年固定費用;

  :在第個配送中心存儲機關貨物的存儲費;

在備選地建立配送中心未在備選地建立配送中心

使得總費用最低的多配送中心選址問題可以表示成如下整數線性規劃模型:

模型中的目标函數(1)表示極小化總費用,其中第一項表示從配送中心到需求點的總運輸費用,第二項表示配送中心的固定費用,第三項表示配送中心的存儲費用。

限制條件(2)式表示各個需求點的需求量必須得到滿足;(3)式表示在個備選地中選取個建立配送中心;(4)式表示如果一個備選地為某些需求點提供貨物,則需要在該地建立配送中心,其中是一個很大的正數;(5)式表示變量的取值限制。

▎模拟退火算法

01 | 模拟退火算法原理

模拟退火算法來源于固體退火原理,将固體加溫至充分高,再讓其冷卻。加溫時,固體内部粒子随溫升變為無序狀,内能增大;而冷卻時粒子漸趨有序,在每個溫度上都達到平衡态,最後在常溫時達到基态,内能減為最小。

根據Metropolis準則,粒子在溫度  時趨于平衡的機率為  ,其中  為溫度  時的内能,  為其改變量。用固體退火模拟組合優化問題,将内能  模拟為目标承數值,溫度演化成控制參數,即得到解組合優化問題的模拟退火算法。

由初始解  和控制參數初值開始,對目前解重複“産生新解→計算目标承數差→接受或舍棄”的疊代,并逐漸減小 ,算法終止時的目前解即為所得近似最優解,這是基于Monte Carlo 疊代求解法的一種啟發式随機搜尋過程。

退火過程由冷卻進度表控制,包括控制參數的初值  及其衰減因子  、每個  值時的疊代次數 

02 | 模拟退火算法主要思想

模拟退火的主要思想是:在搜尋區間随機遊走(即随機選擇點),再利用Metropolis抽樣準則,使随機遊走逐漸收斂于局部最優解。而溫度是Metropolis算法中的一個重要控制參數,可以認為這個參數的大小控制了随機過程向局部或全局最優解移動的快慢。

Metropolis是一種有效的重點抽樣法,其算法為:系統從一個能量狀态變化到另一個狀态時,相應的能量從變化到,其機率為:

如果  ,系統接受此狀态;否則,以一個随機的機率接受或丢棄此狀态。狀态2被接受的機率為:

這樣經過一定次數的疊代,系統會逐漸趨于一個穩定的分布狀态。重點抽樣時,新狀态下如果向下,則接受(局部最優);若向上(全局搜尋),則以一定機率接受。

模拟退火算法從某個初始解出發,經過大量解的變換後,可以求得給定控制參數值時組合優化問題的相對最優解。然後減小控制參數的值,重複執行Metropolis算法,就可以在控制參數趨于零時,最終求得組合優化問題的整體最優解。控制參數的值必須緩慢衰減。

溫度是Metropolis算法的一個重要控制參數,模拟退火可視為遞減控制參數Metropolis算法的疊代。開始時 ,可以接受較差的惡化解;随着  的減小,隻能接受較好的惡化解;最後在  趨于0時,就不再接受任何惡化解了。

在無限高溫時,系統立即均勻分布,接受所有提出的變換。  的衰減越小,  到達終點的時間越長;但可使馬爾可夫(Markov)鍊減小,以使到達準平衡分布的時間變短。

03 | 模拟退火算法的特點

模拟退火算法适用範圍廣,求得全局最優解的可靠性高,算法簡單,便于實作;該算法的搜尋政策有利于避免搜尋過程因陷入局部最優解的缺陷,有利于提高求得全局最優解的可靠性。模拟退火算法具有較強的魯棒性,這是因為比起普通的優化搜尋方法,它采用許多獨特的方法和技術。主要有以下幾個方面:

  • 以一定的機率接受惡化解
  • 引進算法控制參數
  • 對目标函數要求少

04 | 模拟退火算法流程

優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)

圖1 模拟退火算法流程圖

▎實際案例

某連鎖企業的需求點分布在江蘇省的 20 個城市(如表1所示),為了提高客戶服務效率以及降低物流成本,該企業決定在省内建立若幹配送中心,配送中心備選地分别是灌雲縣、宿遷市、淮安市、高郵市、寶應縣、南通市、高淳縣、溧水縣。表1是需求點和序号的對應表格,表2~表4分别列出了各個需求點的需求量、機關存儲費用、年固定成本以及需求點與備選點之間的機關運費等。采用模拟退火算法從8個備選地中選擇3個建立配送中心,使得總費用最低。

優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)
優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)
優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)
優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)

▎算法結果

采用Matlab求解,得到3個配送中心分别應該建在淮安市、寶應縣和高淳縣,最小總費用為1613952元。根據計算結果,畫出模拟退火算法求出的配送中心與需求點之間的配置設定表(見表5)及總成本變化趨勢圖(見圖2)。

優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)
優化算法 | 模拟退火算法(SA)求解多配送中心選址問題(附MATLAB代碼)

圖2 總成本變化趨勢圖

▎代碼擷取方式

在公衆号背景回複關鍵詞【SADCLP】,即可提取本篇推文代碼。

▎參考

[1]李珍萍. 物流配送中心選址與路徑優化問題[M]. 機械工業出版社,2014.

繼續閱讀