python编写PSO算法
来源:互联网 发布:mac版foxmail邮箱设置 编辑:程序博客网 时间:2024/06/05 18:19
关键在于赋值的关系:
浅赋值:对原来的引用
深度赋值:才是对值影响
#! /user/bin/env python#encoding=utf-8__author__ = 'chw'import timeimport numpy as npimport copyimport matplotlib.pyplot as pltstart=time.time()c1=2c2=2PopMax=100Vmax=PopMax/10SizePop=20D=2Maxgen=200Wmax=0.9Wmin=0.4pop=np.random.rand(SizePop,D)*2*PopMax-PopMaxv=np.random.rand(SizePop,D)*Vmax*2-Vmaxdef fun(x1,x2): return x1**2+x2**2fitness=np.zeros((SizePop,1),dtype=float)for i in xrange(SizePop): fitness[i]=fun(pop[i,0],pop[i,1])bestfitness=max(fitness)for i in xrange(SizePop): if fitness[i]==bestfitness: zbest=pop[i,:] breakgbest=popfitnessgbest=fitnessfitnesszbest=bestfitness# yy=np.zeros((Maxgen,1),dtype=float)yy=np.random.rand(Maxgen,1)x=np.arange(Maxgen)for i in xrange(Maxgen): if i==0: w=Wmax else: w=Wmax-i*0.5/Maxgen for j in xrange(SizePop): v[j,:]=w*v[j,:]+c1*np.random.rand()*(gbest[j,:]-pop[j,:])+c2*np.random.rand()*(zbest-pop[j,:]) pop[j,:]=pop[j,:]+v[j,:] for t in xrange(D): if pop[j,t]>PopMax: pop[j,t]=PopMax if pop[j,t]<-PopMax: pop[j,t]=-PopMax if v[j,t]>Vmax: v[j,t]=Vmax if v[j,t]<-Vmax: v[j,t]=-Vmax fitness[j]=fun(pop[j,0],pop[j,1]) for j in xrange(SizePop): if fitness[j]<fitnessgbest[j]: gbest[j,:]=copy.deepcopy(pop[j,:]) fitnessgbest[j]=copy.deepcopy(fitness[j]) for j in xrange(SizePop): if fitnessgbest[j]<fitnesszbest: zbest=copy.deepcopy(gbest[j,:]) fitnesszbest=copy.deepcopy(fitnessgbest[j]) yy[i]=copy.deepcopy(fitnesszbest)print zbestprint fitnesszbestplt.figure()plt.plot(x,yy)plt.show()print time.time()-start# s1=[0,1,2]# s2=[2,3,4]# plt.figure()# plt.plot(s1,s2)# plt.show()
参考:http://blog.csdn.net/just_do_it_123/article/details/50927348
http://www.jb51.net/article/61902.htm
0 0
- python编写PSO算法
- 【PSO】熟悉PSO算法
- 【PSO】Python 实现粒子群算法
- python DEAP PSO 算法的学习
- Python实现粒子群算法PSO
- pso算法
- PSO粒子群算法的python简单实现备忘录
- pso-svm 算法实现(1):python DEAP
- 【PSO】基本PSO算法和改进历史
- 粒子群PSO算法
- 粒子群算法(PSO)
- pso粒子群算法
- PSO 粒子群算法
- 粒子群算法-PSO
- PSO算法学习心得
- 粒子群算法(PSO)
- PSO粒子群算法
- 粒子群算法PSO
- 深度学习(二)Sparse Filtering稀疏滤波
- Min Stack 解题报告
- Git window安装教程
- hr设置线条颜色
- centos下Apache服务器ThinkPHP伪静态的设置方法
- python编写PSO算法
- java项目使用pageHelper做分页
- Myeclipse安装AspectJ插件
- log4j2 使用详解
- [leetcode: Python]141.Linked List Cycle
- 深度学习(三)单层非监督学习网络分析
- PHP中读取字符串前N个字符
- mysqlbinglog基于即时点还原
- slf4j log4j logback关系详解和相关用法