真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

智能優(yōu)化算法之粒子群算法(PSO)的實現(xiàn)(Python附源碼)-創(chuàng)新互聯(lián)

一、粒子群算法的實現(xiàn)思路

粒子群算法(Particle Swarm Optimization,PSO)是于1995年被Kennedy等人提出的一種模擬自然界中鳥群進行覓食過程的一種群智能優(yōu)化算法,該算法將待求解問題的每一個候選解視作鳥群中的每一個個體的具體位置信息,每個候選解對應(yīng)的最優(yōu)適應(yīng)度值作為每個個體在該位置處所能搜索到的食物的量,通過個體間位置信息的相互交流來發(fā)現(xiàn)目標范圍內(nèi)的最優(yōu)適應(yīng)度值對應(yīng)的最優(yōu)候選解。
在使用粒子群算法進行優(yōu)化問題的求解時,需要進行理解的概念主要有兩個,一個是粒子的位置信息,一個是粒子的速度信息。
粒子的位置信息通常對應(yīng)著待優(yōu)化問題的候選解,最初需要對此位置信息在目標范圍內(nèi)進行初始化,然后通過此位置信息計算獲得此粒子的適應(yīng)度值,在每次迭代的過程中粒子需要對自己的位置信息進行更新,具體的更新公式如下:
在這里插入圖片描述
該公式表示個體i在第t次迭代后的位置信息等于在第t次迭代前的位置信息加上第t次迭代時的速度。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)溫縣,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

在對個體的位置信息進行更新前,需要通過計算獲得個體新的速度信息,這一速度信息一般包括了個體在接下來的一次迭代過程中的移動方向和移動距離,其具體的計算公式如下:
在這里插入圖片描述
等號右邊分成三部分,第一部分是慣性因子乘以上一次迭代時的速度,第二部分為自我學(xué)習(xí)部分,括號中是該個體歷史最優(yōu)位置信息減去該個體上一次迭代時的位置信息,第三部分為種群學(xué)習(xí)部分,括號中是該種群歷史最優(yōu)位置信息減去該個體上一次迭代時的位置信息。w為慣性因子,c1、c2為加速因子,其中前者為每個粒子的個體學(xué)習(xí)加速因子,后者為每個粒子的全局學(xué)習(xí)加速因子,通常這兩個數(shù)被設(shè)置為常數(shù)2,但也可設(shè)為其他的常數(shù),但其取值范圍處于[0,4]之間,r1與r2均為0到1之間的隨機數(shù)。

二、算法步驟

粒子群算法的算法步驟可以總結(jié)如下:

  1. 按照問題的候選解形式,在目標范圍內(nèi)隨機生成多個種群個體,然后分別計算出每個個體的適應(yīng)度值;
  2. 將每個個體適應(yīng)度值作為其歷史最優(yōu)適應(yīng)度值,對應(yīng)的位置信息作為歷史最優(yōu)的位置信息;
  3. 比較種群中所有個體的適應(yīng)度值,將最好的適應(yīng)度值作為全局歷史最優(yōu)適應(yīng)度值,將對應(yīng)的位置信息作為全局歷史最優(yōu)位置信息;
  4. 對每個個體依次其速度信息和位置信息進行更新;
  5. 對更新后的個體計算它們的適應(yīng)度值,將此適應(yīng)度值與個體歷史最優(yōu)適應(yīng)度值進行比較,若更新后的適應(yīng)度值更優(yōu),則對個體歷史最優(yōu)適應(yīng)度值以及對應(yīng)的個體歷史最優(yōu)位置信息進行更新,反之則不更新;
  6. 選出此時種群中適應(yīng)度值最優(yōu)的個體,將其適應(yīng)度值與全局歷史最優(yōu)適應(yīng)度值進行比較,若最優(yōu)的適應(yīng)度值較全局歷史最優(yōu)適應(yīng)度值更好,則對全局歷史最優(yōu)適應(yīng)度值以及對應(yīng)的全局歷史最優(yōu)位置信息進行更新,反之則不更新;
  7. 重復(fù)步驟4到步驟6,當(dāng)達到大迭代次數(shù)或滿足停止迭代條件后停止迭代,然后輸出此時種群中的全局歷史最優(yōu)個體的位置信息。
三、實例

待求解問題:
Rosenbrock’s,取值范圍為[-10,10],取值范圍內(nèi)的理想最優(yōu)解為0,將其搜索的空間維度設(shè)為20。
在這里插入圖片描述

實現(xiàn)源碼:

#庫的導(dǎo)入
import numpy as np
import random
import matplotlib.pyplot as plt
#待求解問題
def function(x):
    y1 = 0
    for i in range(len(x) - 1):
        y2 = 100 * ((x[i + 1] - x[i] ** 2) ** 2) + (x[i] - 1) ** 2
        y1 = y1 + y2
    y = abs(0 - y1)
    return y

rangepop=[-10,10]    #取值范圍
pn=30   #種群數(shù)量
iterators = 1000    #迭代次數(shù)
w=0.9   #慣性因子
#兩個加速系數(shù)
c1=2
c2=2
#a1用于存儲種群個體位置信息,v用于存儲種群個體移動速度,fitness用于存儲個體適應(yīng)度值
a1=np.zeros((pn,20))
v = np.zeros((pn, 20))
fitness=np.zeros(pn)

#對種群個體、移動速度進行初始化,計算初始適應(yīng)度值
for j in range(pn):
    a1[j] = np.random.uniform(low=-10, high=10,size=(1, 20))
    v[j] = np.zeros((1,20))
    fitness[j] = function(a1[j])
#allpg,bestpg分別表示種群歷史最優(yōu)個體和適應(yīng)度值
allpg,bestpg=a1[fitness.argmin()].copy(),fitness.min()
#poppn,bestpn分別存儲個體歷史最優(yōu)位置和適應(yīng)度值
poppn,bestpn=a1.copy(),fitness.copy()
#bestfitness用于存儲每次迭代時的種群歷史最優(yōu)適應(yīng)度值
bestfitness=np.zeros(iterators)
#開始迭代
for i in range(iterators):
    print("generation:",i)
    for m in range(pn):
        r1 = np.random.rand()
        r2 = np.random.rand()
        #計算移動速度
        v[m]=w*v[m]+c1*r1*(poppn[m]-a1[m])+c2*r2*(allpg-a1[m])
        #計算新的位置
        a1[m]=a1[m]+v[m]
        #確保更新后的位置在取值范圍內(nèi)
        a1[a1rangepop[1]]=rangepop[1]
        #計算適應(yīng)度值
        fitness[m] = function(a1[m])
        #更新個體歷史最優(yōu)適應(yīng)度值
        if fitness[m]'weight':'normal','size': 30})
x=range(1,1001,1)
plt.plot(x,bestfitness,color="red",label="PSO",linewidth=3.0, line)
plt.tick_params(labelsize=25)
plt.xlabel("Epoch",fontdict={'weight':'normal','size': 30})
plt.ylabel("Fitness value",fontdict={'weight':'normal','size': 30})
plt.xticks(range(0,1001,100))
plt.legend(loc="upper right",prop={'size':20})
plt.savefig("PSO.png")
plt.show()

圖中橫軸為迭代次數(shù),縱軸為最優(yōu)適應(yīng)度值。
在這里插入圖片描述

參考源碼

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


標題名稱:智能優(yōu)化算法之粒子群算法(PSO)的實現(xiàn)(Python附源碼)-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/poegj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部