基于PSO工具箱的函数寻优算法
文章目录
- 一、理论基础
- 1、工具箱介绍
- 2、工具箱函数解释
- 二、案例背景
- 1、问题描述
- 2、工具箱设置
- 三、MATLAB程序实现
- 1、适应度函数
- 2、主函数
- 3、仿真结果
- 四、延伸阅读
- 五、参考文献
一、理论基础
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(x−3)2+0.2(y−5)2−0.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(x1−x22)2+(x2−1)2(2)y=100(x_1-x_2^2)^2+(x_2-1)^2\tag{2}y=100(x1−x22)2+(x2−1)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.
基于PSO工具箱的函数寻优算法相关推荐
- 《MATLAB智能算法30个案例》:第17章 基于PSO工具箱的函数寻优算法
<MATLAB智能算法30个案例>:第17章 基于PSO工具箱的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
- 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法
<MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...
- 基于量子遗传算法的函数寻优算法—MATLAB实现
文章目录 一.算法概述 二.算法讲解 2.1 量子比特编码 2.2 量子门更新 三.MATLAB实现 3.1 案例描述 3.2 算法实现 3.2.1算法流程: 3.2.2算法实现: 3.2.3MATL ...
- 基于豹子捕猎的函数寻优算法
引言 基于生物习性的优化算法成为近年来一种热门,如蚁群算法,蝙蝠算法.但是这些算法很难越出局部寻优(如果要越出局部寻优,就要在每一次迭代中采用聚类),但个体捕猎反而更好实现,因此,参考网上的鲸鱼算法, ...
- 基于麻雀搜索算法的函数寻优算法
文章目录 一.理论基础 1.发现者位置更新 2.跟随者位置更新 3.警戒者位置更新 4.SSA算法伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 麻雀搜索算法(Sparrow Search A ...
- 基于闪电搜索算法的函数寻优算法
文章目录 一.理论基础 1.闪电搜索算法 2.LSA算法流程图 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.闪电搜索算法 闪电搜索算法(Lightning Search Algorithm ...
- 基于爬行动物搜索算法的函数寻优算法
文章目录 一.理论基础 1.爬行动物搜索算法 (1)初始化阶段 (2)包围阶段(探索) (3)狩猎阶段(开发) 2.RSA算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 本文提出了一种 ...
- 基于原子轨道搜索算法的函数寻优算法
文章目录 一.理论基础 1.原子轨道搜索算法 2.AOS算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.原子轨道搜索算法 在本文中,原子轨道搜索(Atomic orbital se ...
- 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法
<MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...
最新文章
- Centos5.5下lvs+keepalived集群
- linux 使用FIO测试磁盘iops
- Android获得图片资源的三种方式
- 直击!10万阿里小二的复工生活
- 【AI视野·今日Robot 机器人论文速览 第三期】Tue, 8 Jun 2021
- C++学习随笔之一:基础
- [Ext JS 7]7.2 事件(Event)
- 关于浏览器主页篡改修复
- 入手华为云学生机体验
- c++ opencv的简单数字识别
- 电网数字化转型经验分享
- springboot实现微信小程序二维码生成
- 淘宝获取sku详细信息
- 百词斩2021高频题汇总 | 备战春招,刷这30题就够了!
- 设置Asterisk座席实时监控
- python 找到装饰器_[译] 12步轻松搞定python装饰器
- 美国发布20项重大科技趋势,将在未来30年改变世界!
- WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
- PG的share_buffers设置
- 赞不绝口!仅靠阿里P9分享的 Redis 工作手册,拿到60W年薪Offer
热门文章
- C语言中%*s,%*c 是什么意思(还有%*.*s,%-*.*s)
- 什么是系统集成资质?对于企业的重要性具体是什么?
- 才云 Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生
- 那些好用的无版权免费图片网站
- 阿里云服务器企业用户最新配置表!
- Lucene高亮显示详解
- 百度CTO王海峰:亚洲丰富实践场景推动AI技术落地探索
- 我看“暴风影音”事件
- 关于一个web站点的欢迎页面
- fx5u以太网通讯设置_图文简述三菱FX 5U以太网通讯的8大功能,你会用几种?