資源簡(jiǎn)介
簡(jiǎn)單的PSO算法Python實(shí)現(xiàn)(包括自定義一維或高維函數(shù))
代碼片段和文件信息
#?coding:?utf-8
import?numpy?as?np
import?random
import?matplotlib.pyplot?as?plt
#?----------------------PSO參數(shù)設(shè)置---------------------------------
class?PSO():
????def?__init__(self?pN?dim?max_iter):
????????self.w?=?0.8
????????self.c1?=?2
????????self.c2?=?2
????????self.r1?=?0.6
????????self.r2?=?0.3
????????self.pN?=?pN??#?粒子數(shù)量
????????self.dim?=?dim??#?搜索維度
????????self.max_iter?=?max_iter??#?迭代次數(shù)
????????self.X?=?np.zeros((self.pN?self.dim))??#?所有粒子的位置和速度
????????self.V?=?np.zeros((self.pN?self.dim))
????????self.pbest?=?np.zeros((self.pN?self.dim))??#?個(gè)體經(jīng)歷的最佳位置和全局最佳位置
????????self.gbest?=?np.zeros((1?self.dim))
????????self.p_fit?=?np.zeros(self.pN)??#?每個(gè)個(gè)體的歷史最佳適應(yīng)值
????????self.fit?=?1e10??#?全局最佳適應(yīng)值
????#?---------------------目標(biāo)函數(shù)Sphere函數(shù)-----------------------------
????def?function(self?X):
????????return?X**2-4*X+3
????#?---------------------初始化種群----------------------------------
????def?init_Population(self):
????????for?i?in?range(self.pN):
????????????for?j?in?range(self.dim):
????????????????self.X[i][j]?=?random.uniform(0?1)
????????????????self.V[i][j]?=?random.uniform(0?1)
????????????self.pbest[i]?=?self.X[i]
????????????tmp?=?self.function(self.X[i])
????????????self.p_fit[i]?=?tmp
????????????if?tmp?????????????????self.fit?=?tmp
????????????????self.gbest?=?self.X[i]
????????????????#?---
評(píng)論
共有 條評(píng)論