?

粒子群算法優化研究

2018-05-03 08:39丁艷管燕明
合作經濟與科技 2018年10期
關鍵詞:粒子群算法

丁艷 管燕明

[提要] 粒子群算法控制參數較少、使用簡單,受到很多專家學者的關注。但是,傳統粒子群算法在求解非線性規劃問題時,比較容易陷入局部最優而找不到全局最優解。本文在算法設計過程中,對傳統的粒子群算法進行改進,以提高求解效果。

關鍵詞:非線性規劃;粒子群算法;回收網絡

中圖分類號:F27 文獻標識碼:A

收錄日期:2017年11月28日

一、引言

粒子群算法(Particle Swarm Optimization,PSO)為常見優化算法,是一種模擬鳥類覓食過程來尋求最優解的算法,很多問題的優化都可以使用,如核動力、車輛調度、巡回旅行等。因控制參數少、使用簡單、易實現,粒子群算法受到很多專家學者的關注。但是傳統粒子群算法在求解非線性規劃問題時,比較容易陷入局部最優而找不到全局最優解,本文在傳統的粒子群算法上進行了改進,以提高求解效果。

二、粒子群算法介紹

粒子群算法(PSO)是一種基于群體的隨機優化方法。傳統的粒子群算法思路如下:

設S在維目標搜索空間中,有m個微粒組成一個群體,那么其中粒子i可以表示為一個S維的向量xi=(xi1,xi2,…,xis),i=1,2,…,m。同理,群體中的每個粒子都可以以同樣的方式表示,每個粒子的位置就是一個可行解。將其預先設定的目標函數來計算每一個粒子的適應值,并根據適應值大小來衡量粒子所在位置的優劣程度。在搜索空間中第i個粒子的飛翔速度也是一個S維向量,記為V=(v1,v2,…,vs)。除了粒子的飛行位置和飛行速度以外,還需要記錄兩個重要的信息:第i個粒子迄今為止搜索到的最優位置為PbestiS=(Pbesti1,Pbesti2,…,Pbesti3);整個粒子群迄今為止搜索到的最優位置為GbestS=(Gbest1,Gbest2,…,Gbest3)。設f(x)為目標函數,則微粒當前最好位置由下式確定:

p(t+1)=pi(t) 若f(xi(t+1))≥f(pi(t))xi(t+1) 若f(xi(t+1))≤f(pi(t))

在基礎上進行微粒飛行迭代為兩步操作:位置移動和速度變化,基本迭代公式分別為:

v(t+1)=v(t)+c1·(Gbest[]-present[])+c2·(Pbest-p(t)) (1)

x(t+1)=x(t)+v(t+1) (2)

其中,學習因子c1、c2為非負常數,c1調節粒子飛向自身最好位置方向的步長,c2調節粒子飛向全局最好位置方向的步長。r1、r2為相互獨立的偽隨機數,服從[0,1]上的均勻分布。

經典的PSO算法步驟如下:

Step1:初始化一個規模為m的粒子群,并設定各個微粒的初始位置和速度。

Step2:設置適應度函數并計算每個微粒的適應值。

Step3:把每個微粒的適應值與其經歷過的最好位置時的適應值作比較,若當前微粒所在位置的適應值較好,則將其作為微粒當前的最好位置。

Step4:把每個微粒的適應值與整個粒子群經歷過的最好位置時的適應值作比較,若當前微粒所在位置的適應值較好,則將其作為當前的粒子群全局的最好位置。

Step5:根據方程(1)、(2)分別對粒子的速度和位置進行更新。

Step6:如果滿足終止條件,則輸出最優解;否則返回Step2。

三、改進的粒子群算法設計

基本粒子群算法在求解非線性規劃問題時,比較容易陷入局部最優而找不到全局最優解,因此,本文在算法設計過程中,對傳統的粒子群算法進行了改進,以提高求解效果。改進的算法分別采用強引導型粒子群算法和自適應粒子群算法對原有位置、速度迭代公式進行優化,對式(1)、(2)進行改進,使改進的位置迭代公式為:

x(t+1)=x(t)+(rand()+k)·v(t)+10-6·rand()

其中,rand()為0~1之間的隨機數,k為調節系數,隨著迭代次數的增加,調節系數逐漸降低,可取k=kmax-·iter,其中iter表示迭代次數。速度更新采用自適應速度更新公式,在傳統的速度更新公式中隨迭代次數改變?棕,例如迭代100次,可?。?/p>

?棕=0.5 1≤gen≤400.1 40≤gen≤600.001 60≤gen≤100

速度更新公式可表示為:

v()=?棕·v()+c1·rand()·(Gbest[]-present[])+c2·rand()(Pbest-present[])

其中,學習因子c1和c2為常數,避免粒子陷入局部最優并實現信息共享,以保證粒子的空間搜索能力,數值大小設置具體應視情況而定。

(一)粒子的編碼形式。編碼過程是整個算法設計過程中的難點之一,高效的編碼方式能夠大大減輕模型運算的難度,提高模型求解效率,因此編碼的設計十分關鍵。再制造物流網絡中參數較多,編碼過程需要把每個變量進行合理編碼,以保證在交叉迭代過程中解得可行性,并保證迭代效率。主要的編碼設計思路為:分派過程中對粒子進行實數編碼,根據分派比例設定粒子的每一個分向量,如對I個回收點、J個倉儲點、K個分揀點的編碼可采用如下形式:

(x1,1…xi,j…xI,J||y1,1…yj,k…yJ,K||z1,1…zk,s…zK,S||v1,1…vi,j…vI,J||u1,1…uj,k…uJ,K||w1,1…wk,s…wK,S)x代表從回收點到倉庫段粒子的位置,y代表從倉庫到分揀中心段粒子的位置,z代表從分揀中心到再制造中心段粒子的位置,v代表x的變化速度,u代表y的變化速度,w代表z的變化速度,分揀中心到再利用中心的費用另外計算。

選址過程對粒子進行實數編碼,每一項代表各后選點建立倉庫或分揀中心的大小,若為0,表示此處將不建立物流節點。因此,J個倉庫備選點和K個分揀中心備選點的編碼為:

(x1,x2…xJ||y1,y2…yK||v1,v2…vJ||u1,u2…uK)

(二)粒子群規模和終止條件。由于粒子群算法有較強的收斂性和全局搜索能力,理論上粒子群規模較大能提高搜索效率,但考慮到計算機運算的復雜度,把粒子群體規模范圍設置在50~100之間可以達到理想效果。終止條件以迭代次數達到預先給定值時程序終止,一般可以設置迭代次數為100次。

四、實例驗算

假設某第三方企業需要建立一條廢舊物品回收再制造網絡。該企業回收3種廢舊物品,建立5個廢舊物品回收中心,有2個存儲中心候選點,擁有3家再制造客戶企業和2個分揀中心候選點。其中新建存儲中心10元/m2的單位維修費,15元/單位的分揀中心單位維修費,3種廢舊物在5個回收點的回收數量分別為:1(260,240,360),2(290,370,380),3(380,260,380),4(270,390,280),5(270,300,340);客戶企業回收各種物品的數量:C1(20,68,30),C2(18,28,20),C3(89,12,54);各個物流節點之間的運輸費率:回收點至存儲/分揀點運輸費率為:H1(0.13,0.21,0.06)/(0.10,0.07,0.06),H2(0.14,0.12,0.16)/(0.24,0.22,0.19),H3(0.24,0.18,0.09)/(0.13,0.07,0.24),H4(0.12,0.1,0.05)/(0.13,0.07,0.07),H5(0.22,0.23,0.19)/(0.17,0.16,0.18);分揀點至客戶企業運輸費率:1-1(0.09,0.08,0.16),1-2(0.07,0.04,0.15),2-1(0.17,0.05,0.08),2-2(0.17,0.22,0.09),3-1(0.05,0.13,0.09),3-2(0.21,0.08,0.14);存儲點至分揀點運輸費率:1-1(0.19,0.08,0.16),1-2(0.07,0.14,0.5),2-1(0.17,0.08,0.08),2-2(0.05,0.22,0.19);其他各種費率:3種廢舊物品的利潤率(元/件)分別為(150,130,100),(4,3,1)為分揀中心廢棄率(%),(1,7,3)為存儲中心物品廢棄率(%)。

(一)目標函數

maxh(X)=Q+O-T-W-B+A+C+D+P

(二)約束條件。約束條件可表示為:

可得各物流節點的容量為:2924和2201為存儲點I的存儲容量(m3),1636和1082為分揀點J的分揀量。

五、結論

鑒于傳統粒子群算法在求解非線性規劃問題時,比較容易陷入局部最優而找不到全局最優解,因此,本文在算法設計過程中,對傳統的粒子群算法進行了改進,對第三方廢舊物品回收企業建立一條物品再制造回收網絡進行求解,結果顯示改進的粒子群算法具有更好的效果。

主要參考文獻:

[1]劉建華.粒子群算法的基本理論及其改進研究[D].長沙:中南大學,2009.

[2]劉成洋,閻昌琪.粒子群遺傳算法及其應用[J].核動力工程,2012.33.4.

[3]李雅瓊.基于粒子群算法的遺傳算法優化研究[J].蘭州文理學院學報(自然科學版),2017.31.1.

[4]黃太安,生佳根.一種改進的簡化粒子群算法[J].計算機仿真,2013.30.2.

[5]蒲興成.基于改進粒子群算法的移動機器人多目標點路徑規劃[J].智能系統學報,2017.12.6.

猜你喜歡
粒子群算法
一種基于高維粒子群算法的神經網絡結構優化研究
基于PSODE混合算法優化的自抗擾控制器設計
電力市場交易背景下水電站優化調度研究
基于粒子群算法的產業技術創新生態系統運行穩定性組合評價研究
大型風電機組組合式塔架結構優化設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合