粒子群演算法優化BP神經網路

2021-08-02 08:52:04 字數 2319 閱讀 2440

剛學粒子群演算法,然後用粒子群演算法優化神經網路的隱藏節點數,**寫的不是太好,如果**有問題,請大家多多指教。第一次寫部落格,多多包涵。

本文的粒子群演算法用的是標準粒子群演算法,權重更新採用線性遞減策略。

這是sse圖

#pso引數設定

class pso():

def __init__(self,max_iter):

#self.w = 0.8

self.c1 = 2

self.c2 = 2

self.pn =10 #粒子數量

self.dim = 1 #搜尋維度

self.max_iter = max_iter #迭代次數

self.x = np.ones((self.pn,self.dim)) #所有粒子的位置和速度

self.v = np.zeros((self.pn,self.dim))

self.pbest = np.zeros((self.pn,self.dim)) #個體經歷的最佳位置和全域性最佳位置

self.gbest = np.zeros((1,self.dim))

self.p_fit = np.zeros(self.pn) #每個個體的歷史最佳適應值

self.fit = 1e10 #全域性最佳適應值

self.wmax=0.9

self.wmin=0.4

#目標函式

def fun(self,err):

fitness=err

return fitness

#初始化種群

def init_population(self):

for i in range(self.pn):

for j in range(self.dim):

self.x[i][j] = random.uniform(1,20)

self.v[i][j] = random.uniform(0,2)

self.pbest[i] = self.x[i]

for x in self.pbest[i]:

return x

bpnet = nl.net.newff([[-2*np.pi, 2*np.pi]], [int(x)+1, 1])

err = bpnet.train(myinput, mytarget, epochs=800, show=100, goal=0.02)

#out=net.sim(input)

tmp = self.fun(err)

self.p_fit[i] = tmp

if(tmp < self.fit):

self.fit = tmp

self.gbest = self.x[i]

#更新粒子位置

def iterator(self):

fitness =

for t in range(self.max_iter):

w=self.wmax-(self.wmax-self.wmin)*(float(t)/self.max_iter)

for i in range(self.pn):

for x in self.pbest[i]:

return x

print x

bpnet = nl.net.newff([[-2*np.pi, 2*np.pi]], [int(x)+1, 1])

err = bpnet.train(myinput, mytarget, epochs=800, show=100, goal=0.02)

temp = self.fun(err)

if(temp

粒子群優化演算法 粒子群演算法

粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...

BP神經網路演算法

bp神經網路是一種基於有監督的學習,使用非線性可導函式作為傳遞函式的前饋神經網路。一 模型 bp神經網路由輸入層 隱含層 輸出層組成。訓練過程分為網路輸入訊號正向傳播和誤差訊號反向傳播,按有監督學習方式進行訓練。1 相鄰層之間結點的連線有乙個權重wij,其值在 1,1 之間 2 每乙個神經單元都有一...

BP神經網路演算法

bp back propagation 神經網路是在1986年被rumelhart與mccelland等科學家提出的概念,正如名字所說,它是一種back propagation型的網路,它將訓練誤差進行逆向傳播,通過前饋的方式不斷修正網路中各神經元的權值,而進行自身學習的。bp神經網路拓撲結構包含有...