Python实现的粒子群优化算法
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)
Python实现的粒子群优化算法的更多相关文章
- 带约束的粒子群优化算法C++实现
2018年1月份给师姐做的一个小项目,本来不打算写的,因为论文还没发表,涉及查重等乱七八糟的问题.... 感觉现在不写,以后应该来不及了,因为已经在实习岗位了.... 不做过多介绍,只做大概的描述,我 ...
- MOPSO 多目标例子群优化算法
近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...
- [Algorithm] 群体智能优化算法之粒子群优化算法
同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...
- 【CI】CN.一种多尺度协同变异的微粒群优化算法
[论文标题]一种多尺度协同变异的微粒群优化算法 (2010) [论文作者]陶新民,刘福荣, 刘 玉 , 童智靖 [论文链接]Paper(14-pages // Single column) [摘要] ...
- 使用Golang编写优化算法 (1)
动手写点东西是学习新知识很重要的一个阶段.之前用 Python 和 JavaScript 实现优化算法,现在用 Golang 来实现.语法上略有不爽,某些C语言的思维又回来了. - Golang 用 ...
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- 分别使用 Python 和 Math.Net 调用优化算法
1. Rosenbrock 函数 在数学最优化中,Rosenbrock 函数是一个用来测试最优化算法性能的非凸函数,由Howard Harry Rosenbrock 在 1960 年提出 .也称为 R ...
- 粒子群优化算法及其java实现
憋了两周终于把开题报告憋出来了,再一次证明自己不适合搞学术,哎--,花了点时间把报告中提到的粒子群算法看了看,看了些资料,用java跑起来. 算法简介 粒子群算法最先由Barnhart博士和Kenne ...
- MOPSO 多目标粒子群优化算法
近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...
随机推荐
- iOS-Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
今天在XCode6.3上面重写TabBar的时候,自定义tabBar的代理遇到的一个问题 在重写tabBar的代理的时候遇到了一个警告. 解决方法: 在.m文件中 警告消失.
- Linux 查看CPU,内存,硬盘 !转
Linux 查看CPU,内存,硬盘 本文转自:http://hi.baidu.com/mumachuntian/item/a401368dbe8a66cab07154e8 1 查看CPU 1.1 查看 ...
- LDA(Linear discriminate analysis)线性判别分析
LDA 线性判别分析与Fisher算法完全不同 LDA是基于最小错误贝叶斯决策规则的. 在EMG肌电信号分析中,... 未完待续:.....
- Kik CEO Ted Livingston发博称要成为西方的微信?
加拿大手机聊天应用Kik是一款手机通信录的社交软件,和Snapchat.微信相似,上个月刚拿到3830万美元融资.近日,Kik CEO Ted Livingston在medium博客上发表了the r ...
- Android 遍历界面控件
//遍历界面上的控件 fubin.pan LinearLayout sLinerLayout = (LinearLayout)findViewById(R.id.layout_scr); for (i ...
- Difference between git pull and git pull --rebase
个人博客地址: http://www.iwangzheng.com/ 推荐一本非常好的书 :<Pro Git> http://iissnan.com/progit/ 构造干净的 Git ...
- Dynamic Morphing Square(动态变形矩阵)
题目描述: 解题思路: 先对输入的N进行判断,是否不小于3,如果小于3,需要继续输入一个新的数,知道输入的N比3大. 第一个打印的矩阵,*号为最外面一圈,其余全为-. 第二个打印的矩阵,*号向内缩减了 ...
- log2取整效率测试
RMQ问题中有个ST算法,当然还有个标准算法.LCA问题可以转化为带限制的RMQ(RMQ+-1)问题来解决.我们姑且认为这些问题的时间复杂度是查询$O(1)$的.但是,注意到对于RMQ(/+-1)问题 ...
- 一步步实现Nagios监控linux主机及飞信报警
一步步实现Nagios监控linux主机及飞信报警 上篇文章介绍了在linux主机上架设nagios监控服务,并对windows主机进行服务状态变化的监控,这次我们继续上次内容. 首先实现n ...
- 【leetcode】Subsets II
Subsets II Given a collection of integers that might contain duplicates, S, return all possible subs ...