Python实现的粒子群优化算法
2024-08-29 21:25:28
01.from numpy import array
02.from random import random
03.from math import sin, sqrt
04.
05.iter_max = 10000
06.pop_size = 100
07.dimensions = 28.c1 = 29.c2 = 2
10.err_crit = 0.00001
11.
12.class Particle:
13. pass
14.
15.def f6(param):
16. '''Schaffer's F6 function'''
17. para = param*10
18. para = param[0:2]
19. num = (sin(sqrt((para[0] * para[0]) + (para[1] * para[1])))) * \
20. (sin(sqrt((para[0] * para[0]) + (para[1] * para[1])))) - 0.5
21. denom = (1.0 + 0.001 * ((para[0] * para[0]) + (para[1] * para[1]))) * \
22. (1.0 + 0.001 * ((para[0] * para[0]) + (para[1] * para[1])))
23. f6 = 0.5 - (num/denom)
24. errorf6 = 1 - f6
25. return f6, errorf6;
26.
27.#initialize the particles
28.particles = []
29.for i in range(pop_size):
30. p = Particle()
31. p.params = array([random() for i in range(dimensions)])
32. p.fitness = 0.0
33. p.v = 0.0
34. particles.append(p)
35.
36.# let the first particle be the global best
37.gbest = particles[0]
38.err = 999999999
39.while i < iter_max :
40. for p in particles:
41. fitness,err = f6(p.params)
42. if fitness > p.fitness:
43. p.fitness = fitness
44. p.best = p.params
45.
46. if fitness > gbest.fitness:
47. gbest = p
48. v = p.v + c1 * random() * (p.best - p.params) \
49. + c2 * random() * (gbest.params - p.params)
50. p.params = p.params + v
51.
52. i += 1
53. if err < err_crit:
54. break
55. #progress bar. '.' = 10%
56. if i % (iter_max/10) == 0:
57. print '.'
58.
59.print '\nParticle Swarm Optimisation\n'
60.print 'PARAMETERS\n','-'*9
61.print 'Population size : ', pop_size
62.print 'Dimensions : ', dimensions
63.print 'Error Criterion : ', err_crit
64.print 'c1 : ', c1
65.print 'c2 : ', c2
66.print 'function : f6'
67.
68.print 'RESULTS\n', '-'*7
69.print 'gbest fitness : ', gbest.fitness
70.print 'gbest params : ', gbest.params
71.print 'iterations : ', i+1
72.## Uncomment to print particles
73.#for p in particles:
74.# print 'params: %s, fitness: %s, best: %s' % (p.params, p.fitness, p.best)
最新文章
- TFS工作项数据统计及相关数据库结构分析
- 读艾伦的jQuery的无new构建,疑惑分析——jquery源码学习一
- Flex编译程序出现 Could not find compiled resource bundle &#39;SharedResources&#39; for locale &#39;en_US&#39;.
- C#回顾 - 3.NET的IO:字节流
- xcode 和 android studio中在Mac系统下的自动对齐快捷键
- google maps js v3 api教程(2) -- 在地图上添加标记
- tabbarcontroller 内嵌导航 控制器,2层push hide tabbar 后 ,第二层直接返回根视图控制器选择tabbarcontroller的其它vc 无法显示 tabbar的 问题解决方案
- 解决iframe缓存
- SASS、COMPASS 安装指南
- 有用的BitConverter
- asp.net MVC2.0学习笔记
- CF div2 D BFS
- MVC Remote 服务器验证
- Android为TV端助力 VelocityTracker 速度追踪器的使用及创建
- 文件处理----Properties文件处理
- Eclipse+maven 构建第一个简单的springmvc项目
- Servlet基本_サーブレットのライフサイクル、スレッドセーフ
- wpf根据X与Y轴获取内部值
- 基于TLS证书手动部署kubernetes集群(下)
- Andorid Dialog 显示宽度设置
热门文章
- C++ 中宏的使用 --来自:http://blog.csdn.net/hgl868/article/details/7058906
- Linux for windows cp 数据中文乱码
- SpringMVC利用拦截器防止SQL注入
- HNU 12827 NASSA’s Robot
- BestCoder Round #60 1001
- iPhone取消软件更新上边的1
- HDOJ 1870
- 使用msgfmt编译多语言文件
- 【Python】使用 sphinx 制作简洁而又美观的文档
- SpringMVC请求处理流程