基于PSO工具箱的函数寻优算法

一、理论基础

1、工具箱介绍

粒子群算法具有操作简单、算法搜索高效等优点,该算法对优化函数没有连续可微的要求,通用性较强,对多变量、非线性、不连续及不可微的问题求解有较大的优势。PSO工具箱由美国北卡罗来纳州立大学航空航天与机械系教授Brian Birge开发,该工具箱将PSO算法的核心部分封装起来,提供给用户的为算法的可调参数,用户只需要定义需要优化的函数,并设置好函数自变量的取值范围、每步迭代允许的最大变化量等,即可进行优化。

2、工具箱函数解释

PSO工具箱中包括的主要函数如表1所列。

表1 函数名称及功能

在这里插入图片描述
该工具箱的主要函数是pso_Trelea_vectorized,通过配置该函数的输入参数,即可进行函数的优化。函数pso_Trelea_vectorized一共包含8个参数,具体解释如下:
[optOut, tr, te]=pso_Trelea_vectorized(functname, D, mv, VarRange, minmax, PSOparams, plotfcn, PSOseedValue)
(1)functname:优化函数名称。
(2)D:待优化函数的维数。
(3)mv:最大速度取值范围。
(4)VarRange:粒子位置取值范围。
(5)minmax:寻优参数,决定寻找的是最大化模型、最小化模型还是和某个值最接近。当minmax=1时,表示算法寻找最大化目标值;当minmax=0时,表示算法寻找最小化目标值;当minmax=2时,表示算法寻找的目标值与PSOparams数组中的第12个参数最相近。
(6)plotfcn:绘制图像函数,默认为“goplotpso”。
(7)PSOseedValue:初始化粒子位置,当PSOparams数组中的第13个参数为0时,该参数有效。
(8)PSOparams:算法中具体用到的参数,为一个13维的数组,如下所示:
PSOparams=[100 2000 24 2 2 0.9 0.4 1500 1e-25 250 NaN 0 0]
其中各参数的作用如下:
第1个参数表示MATLAB命令窗显示的计算过程的间隔数,100表示算法每迭代100次显示一次运算结果,如取值为0,不显示计算中间过程。
第2个参数表示算法的最大迭代次数,在满足最大迭代次数后算法停止,此处表示最大迭代次数为2000,。
第3个参数表示种群中个体数目,种群个体越多,越容易收敛到全局最优解,但算法收敛速度越慢,此处表示种群个体为24.
第4个参数、第5个参数为算法的加速度参数,分别影响局部最优值和全局最优值,一般采用默认值2.
第6个参数、第7个参数表示算法开始和结束时的权值,其他时刻的权值通过线性计算求得,此处表示算法开始时的权值为0.9,算法结束时的权值为0.4。
第8个参数表示当迭代次数超过该值时,权值取PSOparams中的第6个参数和PSOparams中的第7个参数的最小值。
第9个参数表示算法终止阈值,当连续两次迭代中对应种群最优值变化小于此阈值时,算法终止,此处值为1e-25。
第10个参数表示用于终止算法的阈值。当连续250次迭代中函数的梯度值仍然没有变化,则退出迭代。
第11个参数表示优化问题是否有约束条件,取NaN时表示为非约束条件下的优化问题。
第12个参数表示使用粒子群算法类型。
第13个参数表示种群初始化是否采用制定的随机种子,0表示随机产生种子,1表示用户自行产生种子。

二、案例背景

1、问题描述

本案例寻优的函数为 z = 0.5 ( x − 3 ) 2 + 0.2 ( y − 5 ) 2 − 0.1 (1) z=0.5(x-3)^2+0.2(y-5)^2-0.1\tag{1} z=0.5(x3)2+0.2(y5)20.1(1)该函数的最小值点为-0.1,对应的点坐标为(3,5)。

2、工具箱设置

PSO工具箱路径设置分为两步:
(1)在MATLAB的菜单栏单击“设置路径”,如图1所示。
(2)在弹出的对话框中单击“添加文件夹”按钮,然后找到工具箱所在位置,如图2所示。
在这里插入图片描述

图1 路径设置步骤1

在这里插入图片描述

图2 路径设置步骤2

三、MATLAB程序实现

1、适应度函数

适应度函数用于计算粒子的适应度值,程序代码如下:

function fitness = test_func(individual)
%% 计算粒子的适应度值
% individual    input         粒子个体
% fitness       output        适应度值
x = individual(:, 1);
y = individual(:, 2);
for i = 1:size(individual, 1)
    fitness(:, i) = 0.5 * (x(i)-3)^2+0.2 * (y(i)-5)^2-0.1;
end

2、主函数

主函数编程实现基于粒子群工具箱的函数寻优,程序代码如下:

%% 基于粒子群工具箱的函数优化算法
%% 清空环境
clear
clc

%% 参数初始化
x_range = [-50, 50];                     % 参数x变化范围
y_range = [-50, 50];                     % 参数y变化范围
range = [x_range; y_range];              % 参数变化范围(组成矩阵)
Max_V = 0.2 * (range(:, 2)-range(:, 1)); % 最大速度取变化范围的10%~20%
n = 2;                                                            % 待优化函数的维数,此例子中仅x、y两个自变量,故为2

% 算法参数
PSOparams = [25 2000 24 2 2 0.9 0.4 1500 1e-25 250 NaN 0 0];

%% 粒子群寻优
pso_Trelea_vectorized('test_func', n, Max_V, range, 0, PSOparams)  % 调用PSO核心模块

3、仿真结果

本案例中PSO算法的基本参数设置为:种群中个体数目为24,算法进化次数为2000,加速度参数为2,初始权值为0.9,结束权值为0.4,权值线性变化,算法每次迭代的终止阈值为1e-25,采用标准粒子群算法,随机产生初始化种群。
算法经过仿真,得到的最优值为(3,5),对应的最优适应度值为-0.1,算法仿真过程如图3所示。
在这里插入图片描述

图3 仿真过程

从仿真过程可以看出,PSO工具箱能够快速找到函数的最小值点,并且搜索速度快,算法很快收敛。

四、延伸阅读

采用PSO工具箱寻找Rosenbrock函数极值,函数形式为 y = 100 ( x 1 − x 2 2 ) 2 + ( x 2 − 1 ) 2 (2) y=100(x_1-x_2^2)^2+(x_2-1)^2\tag{2} y=100(x1x22)2+(x21)2(2)函数图形如图4所示。
在这里插入图片描述

图4 Rosenbrock函数图形

该函数的最优值位置为(1,1),对应的最优值为0,算法参数设置与上述案例一致。
算法经过仿真,得到的最优解为(1,1),对应的最优值为0,算法仿真过程如图5所示。
在这里插入图片描述

图5 算法仿真过程

五、参考文献

[1] 张丽平. 粒子群优化算法的理论及实践[D]. 杭州: 浙江大学, 2015.
[2] 吕振肃, 侯志荣. 自适应变异的粒子群优化算法[J]. 电子学报, 2004, 32(3): 416-420.
[3] 郁磊, 史峰, 王辉, 等. MATLAB智能算法30个案例分析(第2版)[M]. 北京: 北京航空航天大学出版社, 2015.

  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
Matlab中的pso(Particle Swarm Optimization)算法工具箱是一个用于实现粒子群优化算法工具箱。粒子群优化算法是一种启发式优化算法,模拟了鸟群觅食的行为,通过群体中个体之间的信息交流和协作来找到最优解。 在Matlab中使用pso算法工具箱,首先需要定义目标函数。目标函数是需要优化的函数,可以是任何自定义的函数。然后,需要设置算法相关的参数,如种群大小、迭代次数、跟踪最优解的方式等。 接下来,使用pso工具箱pso函数来运行算法pso函数的输入参数包括目标函数算法参数等。运行算法后,将得到一个最优解,这个最优解可以通过访问pso函数的输出参数获得。 在使用pso算法工具箱时,还可以使用一些其他的函数来操作和可视化结果。例如,可以使用plot函数来绘制优化过程中适应度值的变化趋势图,帮助我们了解算法的收敛过程。还可以使用scatter函数来绘制粒子的位置分布图,以直观地展示粒子搜索空间的探索过程。 除了基本的使用方法,Matlab中的pso算法工具箱还提供了一些高级功能,如自定义适应度函数、约束条件等。可以根据具体的问题需求来灵活使用这些功能,实现更精确的优化过程。 总而言之,Matlab中的pso算法工具箱提供了一个方便易用的平台,可以帮助我们快速实现粒子群优化算法并解决各种优化问题。它的使用方法简单明了,同时也提供了一些高级功能可供个性化的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值