编程语言
首页 > 编程语言> > 粒子群算法

粒子群算法

作者:互联网

启发式算法

定义:在可接受的花费下,给出待解决的优化问题的一个可行解。

可接受花费:如规定时间内。

优化问题:约束条件下中,函数的最值!

可行解:不一定是最优解,可接受即可。

常见启发式算法:粒子群、模拟退火、遗传算法等

一个简单的优化问题:找函数的最值点

基本思想①盲目搜索启发式搜索

盲目搜索

① 枚举法

尽可能划分更小的解空间x值,离散化,对比

②蒙特卡洛模拟

随机取N个点,选择最大值。只要时间够多,一定可以无限趋近最优解

无论哪一种,当变量增多,时间复杂度指数增长。

启发式搜索

①爬山法

随机选择一个点,判断左一步步长和右一步步长函数值,最终可以找到一个局部最优解

反复迭代,最终可得最值点

启发式搜索中,其中每一次迭代都需要根据上一步的结果,类似动态规划。

粒子群算法

背景 

根据鸟群个体信息共享,从无序到有序,获得问题可行解

思想

假设:①所有鸟都不知道食物位置(不清楚问题最优解)②它们知道自己离食物有多远③鸟群知道距离食物最近的鸟是谁

每个鸟在知道自己最佳位置的同时,受到绿色小鸟的信息共享,惯性,最终会把合力作为运动的矢量。

可得x(d)和v(d)的递推式。

术语解释

  

 粒子就是不断飞行的鸟,x1到x10就是说有10只鸟,每个xi代表一个个体

 

其中pbest和gbest就是自己最好和群体最好,鸟群图中的参数位置

 

w惯性指数的改进

线性

 

 自适应

与迭代次数以及例子适应度有关

 

随机惯性权重

线性递减改进,在前期缺少局部,后期缺少全局,因此改进之后产生了随机惯性权重

 思想就是把w变成随机数

压缩因子法

 

仅乘了压缩因子,控制了c1,c2 的差异

非对称学习因子

思想是让个体学习因子c1和群体学习因子c2变动 

就是线性递减&线性递增的关系 

 拓展

那么粒子群可不可以解决非线性约束?如 x1+x2=1

可以。我们只需保证初始例子,以及更新例子满足约束即可,不满足的直接丢弃

标签:粒子,因子,算法,搜索,启发式,最值
来源: https://blog.csdn.net/qq_44698709/article/details/123614253