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实现的粒子群优化算法的更多相关文章

  1. 带约束的粒子群优化算法C++实现

    2018年1月份给师姐做的一个小项目,本来不打算写的,因为论文还没发表,涉及查重等乱七八糟的问题.... 感觉现在不写,以后应该来不及了,因为已经在实习岗位了.... 不做过多介绍,只做大概的描述,我 ...

  2. MOPSO 多目标例子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

  3. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  4. 【CI】CN.一种多尺度协同变异的微粒群优化算法

    [论文标题]一种多尺度协同变异的微粒群优化算法 (2010) [论文作者]陶新民,刘福荣, 刘  玉 , 童智靖 [论文链接]Paper(14-pages // Single column) [摘要] ...

  5. 使用Golang编写优化算法 (1)

    动手写点东西是学习新知识很重要的一个阶段.之前用 Python 和 JavaScript 实现优化算法,现在用 Golang 来实现.语法上略有不爽,某些C语言的思维又回来了. - Golang 用 ...

  6. 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径

    模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...

  7. 分别使用 Python 和 Math.Net 调用优化算法

    1. Rosenbrock 函数 在数学最优化中,Rosenbrock 函数是一个用来测试最优化算法性能的非凸函数,由Howard Harry Rosenbrock 在 1960 年提出 .也称为 R ...

  8. 粒子群优化算法及其java实现

    憋了两周终于把开题报告憋出来了,再一次证明自己不适合搞学术,哎--,花了点时间把报告中提到的粒子群算法看了看,看了些资料,用java跑起来. 算法简介 粒子群算法最先由Barnhart博士和Kenne ...

  9. MOPSO 多目标粒子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

随机推荐

  1. Tomcat的目录结构及用途

    目录结构及用途 目录 用途 bin 包含启动/关闭脚本 conf 包含不同的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件we ...

  2. IOS开发/iphone开发多线程

    有时候可能有很多功能要同时实现,例如每隔多长时间就会检测程序网络连接,又或者有时候需要从服务器下载一个不小的文件,如果用单线程几乎是不可想的事情,程序将会卡的无法使用,用到多线程和不用多线程,给用户的 ...

  3. motto7

    与其羡慕别人,还不如模仿别人的过程.

  4. 和我一起来了解SEO

    基础知识 搜索引擎 搜索引擎爬虫会检索各个网站,分析他们的关键字,从一个连接到另一个连接,如果爬虫觉得这个关键字是有用的 就会存入搜索引擎数据库,反之如果没用的.恶意的.或者已经在数据库的,就会舍弃. ...

  5. WeakReference(弱引用)

    原地址:http://www.cnblogs.com/bayonetxxx/archive/2009/06/02/1494728.html 我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回 ...

  6. postgresql 函数demo

    create or replace function refresh_product_usage() returns void as $$ declare rec record; sub_rec re ...

  7. django静态文件查找逻辑

    最近被django的静态文件配置整疯了. 决定直捣黄龙,看看底层代码: 首先用manage finstatic xxxx.js 看看处理逻辑,发现主要在:C:\Python27\Lib\site-pa ...

  8. NOIP 2011 Day 1 部分题解 (Prob#1 and Prob#2)

    Problem 1: 铺地毯 乍一看吓cry,地毯覆盖...好像是2-dims 线段树,刚开头就这么难,再一看,只要求求出一个点,果断水题,模拟即可.(注意从标号大的往小的枚举,只要有一块地毯符合要求 ...

  9. 12 day 1

    #include <cstdio> int i,j,m,n,t; long long f[6000][6000]; inline int min(int a,int b){ return ...

  10. TFS和VSS的简单对比

    概念: TFS:Team Foundation Server(通常记作“TFS”) 是一种为 Microsoft 产品提供 源代码管理. 数据收集. 报告和项目跟踪,而为协作 软件开发 的项目. 可作 ...