粒子群演算法在物流中心選址中的應用
設有一系列點分別代表**地和需求地 等 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之間的交叉熵更小...