💥1 概述
本文複現論文算法RODDPSO+K-Means,用優化的粒子群算法對K-Means算法求初始的簇心,以達到優化聚類算法的目的。
分布式時滞表現出獨特的空間性質,可模拟在特定時間段内通過一定數量的并行通道/路徑分布的信号傳播延遲。到目前為止,具有分布式時間延遲的複雜系統(例如神經網絡[33],[44])的動力學行為已經得到了很好的研究。直覺地說,一個自然的想法是在PSO算法中引入一定的分布式時滞,希望增強從局部最優逃逸的能力,擺脫過早收斂的問題。與[34],[36]和[48]中的離散時間延遲相比,分布式時間延遲具有以下兩個優點:1)更好地利用更長(更多累積)的種群進化曆史,導緻更好的準确性和2)更複雜的動力學行為導緻捕獲局部最優的可能性更小。此外,為了在收斂性和多樣性之間做出适當的權衡,引入的分布式時滞可以以合理的小機率随機發生。是以,本文的主要目的是啟動一項關于新型随機發生的分布式延遲PSO(RODDPSO)算法及其在醫療保健資訊學中的應用的重大研究。
受上述讨論的啟發,本文的目的是提出一種基于RODDPSO的聚類算法,并應用于分析A&E資料。本文的主要貢獻可歸納為以下三個方面。
- 引入了一種新的RODDPSO算法,其中随機出現的分布式時滞項不僅有助于:a)對整個搜尋空間的徹底探索;b)捕獲局部最優的可能性顯着降低;c)在本地和全球搜尋能力之間取得适當的平衡。
- 該文提出一種将RODDPSO算法與傳統算法相結合的新型聚類算法K -表示聚類算法。所提出的基于RODDPSO的聚類算法不依賴于聚類質心的初始狀态,進而有助于實作更好的聚類分區。
📚2 運作結果
部分代碼:
# 疊代尋優
t = 0
record_RODDPSO = np.zeros(maxgen)
while t < maxgen:
#慣性權重更新
w=W_MAX-((W_MAX-W_MIN)*t/maxgen)
#加速度系數更新
c1=((c1f-c1i)*(maxgen-t)/maxgen)+c1i
c2=((c2f-c2i)*(maxgen-t)/maxgen)+c2i
c3=c1
c4=c2
#計算每個粒子的平均距離
d=dist(pop)
#更新Ef
Ef=(d[i]-np.min(d))/(np.max(d)-np.min(d))
#根據Ef尋找進化狀态
if 0<=Ef<0.25:
epsilonk=1
if 0.25<=Ef<0.5:
epsilonk=2
if 0.5<=Ef<0.75:
epsilonk=3
if 0.75<=Ef<=1:
epsilonk=4
ml,mg=evo_state[epsilonk]
# 速度更新
mcr3=0
mcr4=0
for tao in range(N):
if t>=tao:
mcr3+=alpha[tao]*(gbest_history[t-tao]-pop)
mcr4+=alpha[tao]*(zbest_history[t-tao]-pop)
else:
mcr3+=alpha[tao]*(gbest_history[t]-pop)
mcr4+=alpha[tao]*(zbest_history[t]-pop)
v = w * v + c1 * np.random.random() * (gbest - pop) + c2 * np.random.random() * (zbest - pop)\
+ml*c3* np.random.random()*mcr3+mg*c4*np.random.random()*mcr4
v[v > Vmax] = Vmax # 限制速度
v[v < Vmin] = Vmin
# 位置更新
pop = pop + v;
pop[pop > popmax] = popmax/2 # 限制位置
pop[pop < popmin] = popmin/2
'''
# 自适應變異
p = np.random.random() # 随機生成一個0~1内的數
if p > 0.8: # 如果這個數落在變異機率區間内,則進行變異處理
k = np.random.randint(0,2) # 在[0,2)之間随機選一個整數
pop[:,k] = np.random.random() # 在標明的位置進行變異
'''
# 計算适應度值
fitness = k_means(dataset,sizepop,pop)