文章目录

  • 一、理论基础
    • 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工具箱的函数寻优算法相关推荐

  1. 《MATLAB智能算法30个案例》:第17章 基于PSO工具箱的函数寻优算法

    <MATLAB智能算法30个案例>:第17章 基于PSO工具箱的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...

  2. 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法

    <MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...

  3. 基于量子遗传算法的函数寻优算法—MATLAB实现

    文章目录 一.算法概述 二.算法讲解 2.1 量子比特编码 2.2 量子门更新 三.MATLAB实现 3.1 案例描述 3.2 算法实现 3.2.1算法流程: 3.2.2算法实现: 3.2.3MATL ...

  4. 基于豹子捕猎的函数寻优算法

    引言 基于生物习性的优化算法成为近年来一种热门,如蚁群算法,蝙蝠算法.但是这些算法很难越出局部寻优(如果要越出局部寻优,就要在每一次迭代中采用聚类),但个体捕猎反而更好实现,因此,参考网上的鲸鱼算法, ...

  5. 基于麻雀搜索算法的函数寻优算法

    文章目录 一.理论基础 1.发现者位置更新 2.跟随者位置更新 3.警戒者位置更新 4.SSA算法伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 麻雀搜索算法(Sparrow Search A ...

  6. 基于闪电搜索算法的函数寻优算法

    文章目录 一.理论基础 1.闪电搜索算法 2.LSA算法流程图 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.闪电搜索算法 闪电搜索算法(Lightning Search Algorithm ...

  7. 基于爬行动物搜索算法的函数寻优算法

    文章目录 一.理论基础 1.爬行动物搜索算法 (1)初始化阶段 (2)包围阶段(探索) (3)狩猎阶段(开发) 2.RSA算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 本文提出了一种 ...

  8. 基于原子轨道搜索算法的函数寻优算法

    文章目录 一.理论基础 1.原子轨道搜索算法 2.AOS算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.原子轨道搜索算法 在本文中,原子轨道搜索(Atomic orbital se ...

  9. 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法

    <MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...

最新文章

  1. Centos5.5下lvs+keepalived集群
  2. linux 使用FIO测试磁盘iops
  3. Android获得图片资源的三种方式
  4. 直击!10万阿里小二的复工生活
  5. 【AI视野·今日Robot 机器人论文速览 第三期】Tue, 8 Jun 2021
  6. C++学习随笔之一:基础
  7. [Ext JS 7]7.2 事件(Event)
  8. 关于浏览器主页篡改修复
  9. 入手华为云学生机体验
  10. c++ opencv的简单数字识别
  11. 电网数字化转型经验分享
  12. springboot实现微信小程序二维码生成
  13. 淘宝获取sku详细信息
  14. 百词斩2021高频题汇总 | 备战春招,刷这30题就够了!
  15. 设置Asterisk座席实时监控
  16. python 找到装饰器_[译] 12步轻松搞定python装饰器
  17. 美国发布20项重大科技趋势,将在未来30年改变世界!
  18. WebGIS——OpenLayers 3 地图叠加自定义卫星/航拍/手绘地图(任意瓦片图)
  19. PG的share_buffers设置
  20. 赞不绝口!仅靠阿里P9分享的 Redis 工作手册,拿到60W年薪Offer

热门文章

  1. C语言中%*s,%*c 是什么意思(还有%*.*s,%-*.*s)
  2. 什么是系统集成资质?对于企业的重要性具体是什么?
  3. 才云 Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生
  4. 那些好用的无版权免费图片网站
  5. 阿里云服务器企业用户最新配置表!
  6. Lucene高亮显示详解
  7. 百度CTO王海峰:亚洲丰富实践场景推动AI技术落地探索
  8. 我看“暴风影音”事件
  9. 关于一个web站点的欢迎页面
  10. fx5u以太网通讯设置_图文简述三菱FX 5U以太网通讯的8大功能,你会用几种?