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等.粒子群优化 ...
随机推荐
- JS 循环遍历JSON数据
JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...
- C/C++中的预编译指令
工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4 ...
- [转] Android PhoneGap Cordova 体系结构
说明: 本文档只针对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本. 一.总体结构 Cordova的目标是用HTML,JS,来完成手机客户端的开发,并且是只开发 ...
- DateTime季度的计算
//获取本季度的第一天 DateTime.Now.AddMonths(0 - (DateTime.Now.Month - 1) % 3).ToString("yyyy-MM-01" ...
- 读>>>>白帽子讲Web安全<<<<摘要→我推荐的一本书→1
<白帽子讲Web安全>吴翰清著 刚开始看这本书就被这本书吸引,感觉挺不错,给大家推荐下,最近读这本书,感觉不错的精华就记录下, 俗话说>>>好脑袋不如一个烂笔头< ...
- 使用mysql服务来记录用户的反馈
经过前几篇教程的学习,相信你对于微信的操作与SAE和webpy都有了些了解,那么这次我想加一个功能,通过mysql来记录用户的反馈,如用户输入fk+内容,然后通过一个页面来显示,最终的效果如下 htt ...
- [Effective JavaScript 笔记]第60条:支持方法链
无状态的API的部分能力是将复杂操作分解为更小的操作的灵活性.一个很好的例子是字符串的replace方法.由于结果本身也是字符串,可以对前一个replace操作重复执行替换.这种模式的一个常见用例是在 ...
- CUDA 6.5 && VS2013 && Win7:创建CUDA项目
运行环境: Win7+VS2013+CUDA6.5 1.创建win32空项目 2.右键项目解决方案-->生成项目依赖项-->生成自定义 3.右键项目解决方案-->属性-->配置 ...
- Find Leaves of Binary Tree
Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ...
- DropDownList1
循环绑定数据到DropDownList1 foreach (SPList ls in web.Lists) { LIColl.Add(ls.Title);//将数据保存list中 } dwlist.D ...