粒子群演算法在物流中心選址中的應用

2021-10-07 22:18:40 字數 4283 閱讀 9991

粒子群演算法在物流中心選址中的應用

設有一系列點分別代表**地和需求地 等 n 個物流節點,各自有一定量貨物需要以一定的運輸費率

運入或運出物流中心,選擇物流中心使得總運輸成本最小,即 min tc = åi = 1n viridi

式中:c 為總運輸成本,vi 為物流節點 i 的運輸量,ri 為到節 點 i 的運輸費率,di 為從位置待定的物流中心到節點 i 的距離。

步驟1 初始化。粒子群的規模 m ,最大迭代次數 gmax , 在可行域中隨機產生初始粒子群。

步驟2 計算各粒子的適應度值,求出粒子的個體最優位 置和全域性最優位置。

步驟3 如果當前迭代次數達到最大迭代次數 gmax ,輸出 全域性最優位置作為物流中心的選址結果,結束演算法;否則,轉步驟4.

步驟4 根據式(5)和式(6)進行計算,得到新一代的粒子位置,轉步驟2。

ps:第二題求**站的座標,演算法於上述一致,修改輸入資料即可:

本實驗將粒子優化演算法運用於物流中心選址問題,通過python進行重現**,資料取得不錯的效果。目前已將粒子優化演算法運用於大規模的選址問題,在諸多實際應用中也取得很好的優越性。粒子優化演算法必將在智慧型計算領域起到關鍵作用。

import random

m =40

gmax =

50w =

0.2c1 = c2 =

1.8#製造廠座標

p1 =[[

5.3,

6.6],[

9.3,

12.4],

[15.5

,18.7],

[5.5

,0.4],

[13.3

,10.2],

[9.5

,10.9],

[9.0

,14.8],

[5.9

,17.1],

[19.3

,19.3],

[14.5

,7.2],

[11.4

,4.1],

[5.7

,4.4],

[4.7

,2.3],

[11.1

,13.6],

[2.8

,16.4],

[3.0

,8.7]]

p2 =

[[random.randint(0,

20)for j in

range(1

,3)]

for i in

range

(m)]

#速度v =

#數量num =[3

,2,3

,4,3

,5,3

,3,6

,3,4

,3,2

,2,20

,30]#半徑

money =[5

,4,6

,4,5

,7,4

,4,6

,7,5

,4,5

,6,3

,3]#初始化pbest

pbest =

pbest1 =

for i in

range

(m):

for j in

range

(len

(p1)):

if j !=0:

pbest[i]+=(

((p2[i][0

]-p1[j][0

])**2

+(p2[i][1

]-p1[j][1

])**2

)**0.5)

else:(

(p2[i][0

]-p1[j][0

])**2

+(p2[i][1

]-p1[j][1

])**2

)**0.5)

)gbest =

min(pbest)

index = pbest.index(gbest)

for i in

range

(m):

v1 = c1*random.random(

)*p2[i][0

]+c2*random.random(

)*pbest1[index][0

] v2 = c1*random.random(

)*p2[i][1

]+c2*random.random(

)*pbest1[index][1

][v1,v2]

)print

(pbest1)

defreflash()

:global index

global gbest

for i in

range

(m):

for j in

range(2

):v[i]

[j]= w*v[i]

[j]+c1*random.uniform(0,

1)*(pbest1[i]

[j]-p2[i]

[j])

+c2*random.uniform(0,

1)*(pbest1[index]

[j]-p2[i]

[j])

p2[i]

[j]+= v[i]

[j]if

(p2[i]

[j]>20)

: p2[i]

[j]=

20elif

(p2[i]

[j]<0)

: p2[i]

[j]=

0 pingu(

)def

pingu()

:global gbest

global index

for i in

range

(m):

tmp =

0for j in

range(16

):

tmp +=

((p2[i][0

]-p1[j][0

])**2

+(p2[i][1

]-p1[j][1

])**2

)**0.5if tmp < pbest[i]

: pbest[i]

= tmp

pbest1[i]

= p2[i]

gbest =

min(pbest)

index = pbest.index(gbest)

defcost()

: c =

0for i in

range(16

):c += num[i]

*money[i]*(

(((p1[i][0

]-pbest1[index][0

])**2

)+(p1[i][1

]-pbest1[index][1

])**2

)**0.5)

print

(c)if __name__ ==

"__main__"

:for i in

range

(gmax)

: reflash(

)print

(pbest1[index]

) cost(

)``

粒子群演算法求解多物流中心選址問題(p 中值問題)

粒子群演算法 結果展示 店鋪位址 歡迎加入群智慧型討論群 p 中值問題模型是指在給定m個備選物流中心位置中,選取p個位置,並為每個需求點指定相應的物流中心,使得各個物流中心到需求點的運輸費用之和最低 如圖所示 各需求區域和備選物流中心均當作幾何上的點看待,各需求點的需求量和位置以及備選物流中心的位置...

粒子群演算法和遺傳演算法在陣列天線綜合中的對比

我前面的部落格已經介紹了通過遺傳演算法綜合陣列天線的方向圖,這次通過粒子群演算法綜合陣列天線,並比較兩種演算法在綜合陣列天線時的差異。粒子群演算法是通過python的演算法工具箱scikit opt實現的,對演算法進行了些修改,包括整數編碼,每個變數進行單獨的區間限制等。遺傳演算法同樣是基於演算法工...

演算法筆記 交叉熵的含義以及在機器學習中的應用

感謝原文 熵用來表示乙個隨機變數資訊量的期望 相對熵 kl散度 用來衡量隨機變數不同分布之間的差異。在機器學習的分類問題中,p表示標準分類結果,q表示學習得到的分類結果,那麼p和q之間的相對熵越小,就說明q的分類效果越好 接近正確結果p 訓練的目的就是獲得更加標註的分布q,使得p,q之間的交叉熵更小...