粒子群演算法主要是求解路徑最優化這一類的問題,具體內容可以檢視其它資料。第一次接觸粒子群是在《高階人工智慧》這門課上,當時課堂上布置了乙個求解多項式最優解的問題,正好同時也在學習python這門語言,於是在課下實現了求解**,也算是第一段個人正式的python**吧,如下:
import random
c1=2
c2=2
w=1r1=round(random.random(),2)
r2=round(random.random(),2)
x=[random.uniform(-2,5) for i in range(0,4)]
pbestx=x
def f(a):
return a**3-5*a**2-2*a+3
def max(l):
global pbestx
temp=l[0]
x=0x=0
for value in l[1:]:
x+=1
if value>temp:
temp=value
x=xreturn pbestx[x],temp
#x0=random.randint(-2,5)
#x1=random.randint(-2,5)
#x2=random.randint(-2,5)
#x3=random.randint(-2,5)
#v0=random.randint(-2,2)
#v1=random.randint(-2,2)
#v2=random.randint(-2,2)
#v3=random.randint(-2,2)
v=[random.uniform(-2,2) for i in range(0,4)]
pbesty0=f(x[0])
pbesty1=f(x[1])
pbesty2=f(x[2])
pbesty3=f(x[3])
gbestx,gbesty=max([pbesty0,pbesty1,pbesty2,pbesty3])
def up_v(v,x,p):
global c1,c2,r1,r2,gbestx
return w*v+c1*r1*(p-x)+c2*r2*(gbestx-x)
def up_x(v,x):
return x+v
def get_position():
global pbestx,x,pbesty0,pbesty1,pbesty2,pbesty3
global v
n=0flag=1
turn=0
tempx=0
while turn<100000 and flag:
temp_py0=f(x[0])
temp_py1=f(x[1])
temp_py2=f(x[2])
temp_py3=f(x[3])
pbestx[0],pbesty0=max([pbesty0,temp_py1])
pbestx[1],pbesty1=max([pbesty0,temp_py0])
pbestx[2],pbesty2=max([pbesty0,temp_py2])
pbestx[3],pbesty3=max([pbesty0,temp_py3])
gbestx,gbesty=max([pbesty0,pbesty1,pbesty2,pbesty3])
v[0]=up_v(v[0],x[0],pbestx[0])
v[1]=up_v(v[1],x[1],pbestx[1])
v[2]=up_v(v[2],x[2],pbestx[2])
v[3]=up_v(v[3],x[3],pbestx[3])
for i in range(0,4):
x[i]=up_x(x[i],v[i])
turn+=1
if tempx==gbestx:
n+=1
else:
n=0if n>5:
print('aasaas')
break
tempx=gbestx
if __name__=="__main__":
get_position()
print('(',gbestx,',',gbesty,')')
有空再貼上**的具體細節。 粒子群演算法python實現
1 概述 粒子群演算法作為一種優化演算法,在很多領域都有應用。所謂優化,我的理解是對乙個問題求出它足夠好的解,目前的優化演算法有很多,如蟻群演算法 遺傳演算法等。粒子群演算法相對於這些演算法來說,它更簡單,而且有很快的收斂速度。2 演算法描述 舉乙個優化問題的例子,若求 粒子群演算法思想 於實際生活...
粒子群演算法實現之python
python實現粒子群演算法 粒子群演算法 pso 又可以叫做鳥群演算法,是學者觀察模仿鳥群的行為而發展的一種智慧型搜尋演算法,和遺傳演算法一樣,也是一種群智慧型演算法。總的來說,粒子群演算法也是一種進化演算法,粒子分布在空間中,粒子在空間中的座標組成的向量可以看做成遺傳演算法中的個體,或者是鳥群中...
粒子群優化演算法 粒子群演算法
粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...