1.群体智能

群体智能源于对以蚂蚁、蜜蜂等为代表的社会性昆虫的群体行为的研究。最早被用在细胞机器人系统的描述中。它的控制是分布式的,不存在中心控制。群体具有自组织性。

群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。 群体智能优化算法的突出特点就是利用了种群的群体智慧进行协同搜索,从而在解空间内找到最优解。

一般情况下,群体智能应当遵循的5条基本原则:
(1) 临近原则:群体能够进行简单的空间计算和时间计算。
(2) 品质原则:群体能够响应环境中的品质因子。
(3) 多样性反应原则:群体的行动范围不应该太窄。
(4) 稳定性原则:群体不应当在每次环境变化的时候都改变自身的行为。
(5) 适应性原则:在所需代价不太高的情况下,群体能够在适当的时候改变自身的行为。

2.粒子群优化算法(PSO)

https://ieeexplore.ieee.org/abstract/document/494215

粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由J. Kennedy和R. C. Eberhart提出,源于对鸟群捕食的行为研究 。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。

参考:https://icode.best/i/29510734896984

PSO流程图与伪代码:

通过实例理解简单的PSO实现

一个简单的粒子群优化算法入门程序,求(x1-1)2+(x2-2)^2的最小值

#粒子群优化算法
import math
import numpy as np#粒子
class particle:def __init__(self):self.pos = (0, 0)  # 粒子当前位置self.speed = (0, 0)self.pbest = (0, 0)  # 粒子历史最好位置self.res = 9999class PSO:def __init__(self):self.w = 0.5  # 惯量权重self.c1 = 1self.c2 = 1self.gbest = (0, 0)  # 种群当前最好位置self.N = 3000  # 种群中粒子数量self.POP = []  # 种群self.iter_N = 100  # 迭代次数self.score = 10000# 适应度值计算函数def fitness(self, x):return (math.pow(x[0],2) + math.pow(x[1],2) - 2*x[0] - 4*x[1] + 5)# 找到全局最优解def g_best(self, pop):for bird in pop:if self.fitness(bird.pbest) < self.fitness(self.gbest):x = bird.pbest[0]y = bird.pbest[1]self.gbest = (x,y)# 初始化种群def initPopulation(self, pop, N):for i in range(N):bird = particle()#初始化鸟a = np.random.uniform(-10, 10)#均匀分布b = np.random.uniform(-10, 10)  # 均匀分布bird.pos = (a,b)bird.pbest = bird.posbird.res = self.fitness(bird.pbest)a = np.random.uniform(-3, 3)  # 均匀分布b = np.random.uniform(-3, 3)  # 均匀分布bird.speed = (a,b)pop.append(bird)# 找到种群中的最优位置self.g_best(pop)# 更新速度和位置def update(self, pop):for bird in pop:# 速度更新speedX = self.w * bird.speed[0] + \self.c1 * np.random.random() * \(bird.pbest[0] - bird.pos[0]) \+ self.c2 * np.random.random() * (self.gbest[0] - bird.pos[0])speedY = self.w * bird.speed[1] + self.c1 * np.random.random() * (bird.pbest[1] - bird.pos[1]) + self.c2 * np.random.random() * (self.gbest[1] - bird.pos[1])speed=(speedX, speedY)# 位置更新posX = bird.pos[0] + speedXposY = bird.pos[1] + speedYif -10 < posX < 10 and -10 < posY < 10: # 必须在搜索空间内bird.pos = (posX, posY)bird.speed = speed# 更新适应度bird.res = self.fitness(bird.pos)# 是否需要更新本粒子历史最好位置if bird.res < self.fitness(bird.pbest):bird.pbest = bird.pos# 最终执行def implement(self):# 初始化种群self.initPopulation(self.POP, self.N)# 迭代for i in range(self.iter_N):# 更新速度和位置self.update(self.POP)# 更新种群中最好位置self.g_best(self.POP)pso = PSO()
pso.implement()print(pso.gbest)

【群体智能优化算法】粒子群算法(PSO)入门实践相关推荐

  1. c语言计算极值范围用粒子最优算法,智能优化算法——粒子群算法小实践

    实验六 粒子群算法 一.实验目的与要求: 目的:通过本次实验,学生可以掌握粒子群算法基本原理.基本粒子群算法流程和关键参数的设置. 要求:上机仿真,调试通过. 二. 实验设备: 计算机.Matlab软 ...

  2. 【老生谈算法】标准粒子群算法(PSO)及其Matlab程序和常见改进算法——粒子群算法

    1.算法详解: 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]标准粒子群算法(PSO)及其Matlab程序和常见改进算法.docx 2 ...

  3. 智能优化算法——粒子群算法原理与仿真程序

    目录 遗传算法的简介与应用 - 子木的文章 - 知乎https://zhuanlan.zhihu.com/p/49055485一.粒子群算法的概念 二.粒子群算法分析 1.基本思想 2.更新规则 3. ...

  4. MATLAB优化工具箱 粒子群算法 particleswarm优化包

    记录几篇对我应用MATLAB粒子群particleswarm优化包很有帮助的文档. [1] <Tune Particle Swarm Optimization Process>matlab ...

  5. 智能优化算法——粒子群算法原理(附代码)

    目录 基本概念 算法实现 粒子群算法的构成要素分析 C++程序测试Sphere函数 总结 visual studio2017c++源代码 源文件下载地址 基本概念 粒子群优化算法(particle s ...

  6. matlab中fic算法,粒子群算法在函数优化问题中的应用最终版(全文完整版)

    <粒子群算法在函数优化问题中的应用.doc>由会员分享,可免费在线阅读全文,更多与<粒子群算法在函数优化问题中的应用(最终版)>相关文档资源请在帮帮文库(www.woc88.c ...

  7. MATLAB智能优化算法 - 粒子群算法及MATLAB实例仿真

    一.粒子群算法理论 粒子群算法来源于鸟类集体活动的规律性,进而利用群体智能建立简化模型.它模拟的是鸟类的觅食行为,将求解问题的空间比作鸟类飞行的时间,每只鸟抽象成没有体积和质量的粒子,来表征一个问题的 ...

  8. 蜜蜂采蜜最短路径c语言算法,粒子群算法解最短路径.doc

    摘要 粒子群优化算法(Particle Swarm Optimization,PSO)是由美国的Eberhart和Kennedy在1995年提出的一种高效的并行优化算法.由于该算法具有深刻的智能背景, ...

  9. 【转】粒子群算法----粒子群算法简介

    一.粒子群算法的历史  粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比如研究鸟群系统,每个鸟在这个系统 ...

  10. 基于群智能的三维路径规划算法 —— 粒子群算法

    目录 一. PSO算法的基本理论 二. PSO算法程序设计流程 三. MATLAB编程实现 四. 算法举例 一. PSO算法的基本理论 粒子群(PSO)算法是依托群鸟觅食的模型寻找最优解.群体特征基于 ...

最新文章

  1. 外包工作经历暨2021年终总结
  2. HttpClient连接池设置引发的一次雪崩
  3. Python面对对象编程——公有与私有
  4. java简历达内_达内教你怎么写大牛简历
  5. 深度之眼课程打卡-python入门05
  6. stm32串口学习(二)
  7. HttpClient_002_中文乱码、HttpClient中文乱码透析、总结
  8. django开发-在Docker中部署django项目
  9. Vitalik 系统设计中的封装复杂性和系统复杂性
  10. c语言写入数据到txt,c语言如何将printf产生的数据写到txt文件中
  11. html360全景图原理,通过HTML5 Canvas实现360度全景图
  12. play框架在idea开发工具上的简单配置
  13. 谷歌chrome安卓版_谷歌Chrome安卓版测试全新共享界面:二维码和截图来了
  14. CatBoost 模型中标称型特征转换成数字型特征
  15. CentOS 安装 laradock 以及运行 Laravel 项目
  16. mysql gbk编码 转utf8_MySQLGBKUTF-8 编码转换
  17. Linux mem 1.3 分页寻址(Paging)机制详解
  18. TMS320C6678开发笔记---SRIO例程2
  19. Codeforces Round #668 (Div. 2)E. Fixed Point Removal
  20. java静态和动态的区别_Java 静态与动态的区别

热门文章

  1. 西部数据携全线产品亮相IDF 2014
  2. AI学习者必备 | 圣母大学公开统计计算课程讲义(视频+PPT+作业)
  3. echart 地图加阴影效果 四川地图为例
  4. office2013关闭登录账户登录功能
  5. 构建CMS:结构和样式
  6. 忆阻器取代晶体管?时间问题!
  7. 现漏洞政府天价难护航
  8. QT6.3离线安装包下载
  9. 软件测试薪资待遇如何
  10. 51单片机开发环境搭建 - VS Code 从编写到烧录