a*算法matlab代码_粒子群算法及MATLAB代码仿真实例

e05d8b9561fe3d6083034eca2d1f6048.png

1 PSO算法的提出

1.1 标准PSO算法

PSO算法最早提出于1995年,是一种基于随机初始解的搜索算法。算法以“群体”和“进化”为基本概念,将每个解看作搜索空间中的一个粒子。每个粒子都有一定的速度,其大小根据自身历史经验和种群经验进行动态调整。粒子通过不断地迭代飞行来寻找空间中最优解的位置,每次迭代,粒子的速度和位置按照下式进行更新。

fd3547245f54db4d4132e0db9a65792b.png
粒子速度位置更新公式

式中c1和c2表示粒子的学习因子;r1和r2为两个随机数;v和x表示粒子的速度和位置;w为惯性权重。标准PSO的性能很大程度上处决于其各项参数,参数选择不当会导致在算法初期,容易陷入局部最优或在算法后期收敛速度慢、精度低等问题。

1.2 PSO算法的改进思路

标准PSO算法容易陷入局部最优问题主要是由于其惯性权重被固定,不能根据算法实际收敛情况进行调整而导致的。因此,让惯性权重能够根据种群收敛情况进行动态调节是对算法进行改进的主要思路,目前提出的改进粒子群算法也大多是采用这种思路。

2 用PSO算法求函数极值示例

2.1 求一元函数最大(小)值问题

例:求函数下面一元函数在指定区间的最小值

8a075dbd972217adba5f3f6481fa157a.png

在Matlab中绘制该函数的图像如下:

9e017e10dad619af63ac615c80ceb9eb.png

下面开始在Matlab中求该函数的最小值,具体代码如下:

首先绘制函数图像并显示出粒子的初始分布

%% 绘制函数图像

结果如下:

33e4a2da02b487d160f80ee8c953a851.png

开始迭代寻优过程,得出结果

%% 进入迭代寻优过程

结果如下:

f6d7f2f584c452ad8b6b880df4612eb9.png

2.2 求二元函数最大(小)值问题

例:求函数下面二元函数在指定区间的最大值

2c98ee5e930bc661c12cd8fb57d4767d.png

同样,首先在Matalb中绘制改函数的图像,如下:

c182e1d28caed09258229afb25a334f3.png

绘制函数图像并显示出粒子的初始分布

%% 绘制函数图像

结果如下:

6d716ca682b2c251b679f995f021e396.png

开始迭代寻优过程,得出结果

e6fae7880338e5e91cad7004883da8d4.png

下图为粒子的适应度变化曲线

074addf0c8d7bc7316908269171dbf3b.png

3 结束语

PSO算法是一类不确定算法,不确定性体现了自然界生物的生物机制,并且在求解某些特定问题方面优于确定性算法;同时它也是是一类概率型的全局优化算法其优点在于算法能有更多机会求解全局最优解。它不依赖于优化问题本身的严格数学性质,是一种基于多个智能体的仿生优化算法。该算法物理概念明确,收敛性好。但也存在易陷入局部最优、参数依赖性大等不足。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值