!! ✨ Matlab版本为R2022b,与以前的版本兼容。本文摘录汇总于:INFO-An Efficient Optimization Algorithm based on Weighted Mean of Vectors-Expert Systems with Applications-ESWA-aliasgharheidaricom-2022.pdf。
向量加权平均(INFO, WeIghted meaN oF vectOrs)是一种改进的加权平均方法,其实现的核心内容即操作算子主要包括:
为了实现INFO向量加权平均优化算法,首先需要安装如下两个Matlab第三方包:
1、Matlab INFO加权平均优化算法的第三方工具包
安装方法如下所示,首先如下图所示点击附加功能
:
在弹出的界面中输入INFO
,如下图所示在其中找到INFO:Efficient Optimizer based on Weighted Mean of Vectors
。注意,该第三方软件包封装好了INFO
算法,可以很方便地通过INFO
函数实现INFO加权平均优化问题的求解。
点击它,如下图所示在弹出的界面中依次点击添加
添加到MATLAB
同意
,就完成了INFO算法的第三方Matlab工具包的安装。
如下图所示,INFO:Efficient Optimizer based on Weighted Mean of Vectors
第三方工具包主要包括三个Matlab函数BenchmarkFunctions.m
、INFO.m
与initialization.m
:
2、Matlab 函数绘制的第三方工具包
在附加资源管理器中
输入plot_func
,找到一个具有plot_func
的第三方工具,我这里选择的是Grey Wolf Optimizer (GWO)
:
本文以求解如下问题的最小值为例:
该函数已经在安装好的INFO:Efficient Optimizer based on Weighted Mean of Vectors
中的BenchmarkFunctions.m
中的F10
实现了,截取具体的实现代码如下图所示:
由上图可以看出,定义问题的边界为
,维度为
。
代码的实现与注释如下图所示:
% 1、初始参数设置
% (1)种群的个数
nP = 30;
% (2)测试函数名称
Func_name = 'F10';
% (3)最大迭代次数
MaxIt = 500;
% 2、使用BenchmarkFunctions实现测试函数,其返回值的含义如下所示:
% (1)lb:变量下边界;
% (2)ub:变量上边界;
% (3)dim:变量维度;
% (4)fobj:测试函数句柄
[lb,ub,dim,fobj] = BenchmarkFunctions(Func_name);
% 3、使用INFO函数对测试函数进行求解,得到其最小值,其返回值如下所示:
% (1)Best_fitness:目标函数的值;
% (2)Best_Positions:最佳变量值;
% (3)Convergence_curve:学习曲线。
[Best_fitness,Best_Positions,Convergence_curve] = INFO(nP,MaxIt,lb,ub,dim,fobj);
% 4、绘制结果
figure('Position', [290 206 648 287]); subplot(1,2,1);
func_plot(Func_name);
title('Test Function');
xlabel('x_1'); ylabel('x_2'); zlabel([Func_name, 'x_1, x_2'])
shading interp; light; lighting phong; shading interp; box on;
subplot(1,2,2); hold on
semilogy(Convergence_curve, 'Color', 'r', 'LineWidth', 2);
title('Convergence Curve')
xlabel('Iteration'); ylabel('Best Fitness Obtained So Far');
axis tight; box on; legend('INFO')
代码执行结果如下图所示:
由上图可以看出,如公式(1)所示的函数,INFO加权平均向量搜索的最小值的路径为上图的左边图所示,函数的最小值最终收敛到
,
的取值为
。
!! 🚀 注意: 在INFO工具包中的
BenchmarkFunctions
的函数中实现了F1~F23
个测试函数,可以用于测试INFO算法的不同性能。比如,我们可以通过将上面代码中的Func_name = 'F10';
修改为Func_name = 'F1';
,以查看INFO算法对F1
函数计算最小值的结果。具体可以参考INFO-An Efficient Optimization Algorithm based on Weighted Mean of Vectors-Expert Systems with Applications-ESWA-aliasgharheidaricom-2022.pdf。该文献详细介绍了INFO加权平均优化算法原理及试验结果,感兴趣可以仔细阅读,本文在第二部分进行了简要翻译介绍。
一组向量的平均值可以理解为其位置
的平均值,并结合向量适应度
进行加权。下图表示了一组解(向量)的加权平均,其中权重大的解具有更高效的加权平均解。
加权平均可以表示为如下数学公式:
其中,
为向量的数量。且通过小波函数计算每个向量的权重,小波函数用于在优化过程中构建有效波动。本文使用的母小波如下所示:
其中
表示膨胀系数(dilation parameter)。
如下图所示,(a)与(b)展示了三个向量,(c)展示了它们之间的不同。
三个向量的加权平均(WM, Weighted Mean)可以表示为如下公式:
其中,
其中,
表示
向量的适应函数。
向量加权平均(INFO, WeIghted meaN oF vectOrs)是一种流行的优化算法,它通过在搜索空间计算一组向量的加权平均来实现。该算法的种群是由一组潜在解组成。INFO算法通过连续更新种群来得到问题的最优解。INFO算法主要包括三个操作算子:
INFO向量加权平均算法的主要步骤如下所示。
在
维搜索空间中,INFO算法由包括
个向量的种群
组成,其中
表示进化的代数。INFO算法使用一种成为随机生成的简单方法来生成初始向量。
另外,INFO算法的初始化过程中主要包括两个两个控制参数:
(1)加权权重因子
(2)比例因子
:用于缩放向量的加权平均值。
这两个参数可以根据种群的迭代过程动态的更新,不需要用户对其进行调整。
1、更新规则整体思路
在INFO算法中,更新规则算子在搜索过程中增加了种群的多样性。更新规则使用向量加权平均值来创建新的向量。实际上,更新规则算子是INFO算法与其他算法的本质区别,它主要由两个部分组成:
INFO算法通过基于最佳、较好与最差解的MeanRule
指标来增加种群的多样性,MeanRule
可以表示为如下数学公式:
其中,
其中,
表示目标函数值;
表示从
区间随机选取的整数;
表示一个非常小的常数;
表示正态分布;
,
,
分别表示在
代的种群中最优的、较好的与最差的解向量。
表示位于
的一个随机数;
,
与
表示三个权重函数,用于计算加权平均向量,以实现INFO算法在全局解空间中搜寻最优解。
考虑到如下两个原因,本文根据小波理论,使用小波函数更新MeanRule
空间:
对算法的权重函数的振幅进行微调。
2、INFO算法控制参数的更新方法
(1)加权权重因子
的更新方法如下所示
其中,
为一个指数函数:
其中,
为最大的代数。
(2)比例因子
的更新方法如下所示
其中,
其中,
与
分别为2和4。注意,较大的
使得当前位置偏离加权平均向量;而较小的
使得当前位置趋向加权平均向量。
3、INFO算法的收敛加速部分
INFO算法也加入了收敛加速部分(CA, Convergence Acceleration),以提高全局搜索能力,其使用最佳向量在搜索空间中移动当前向量。收敛加速部分可以表示为
最终,新的向量可以通过如下公式进行计算:
优化算法通常应该在全局进行搜索以得到搜索域中更优的解空间。相应的,基于
、
,
与
的INFO算法的更新规则可以表示为如下两种情况:
其中,
与
为第
代的新向量。
为了增加INFO的种群多样性,在
的情况下,根据如下公式将上面计算得到新向量
与
与向量
结合生成新的第
向量
:
其中,
。
有效的局波搜索能力可以防止INFO算法落入局部最优解的情况。INFO算法的局部搜索算子通过考虑全局最优位置
与基于公式(2)的平均规则,对全局最优进一步进行搜索,以达到收敛到全局最优的目的。
基于上面的思路,如下所示,INFO算法生成了一个位于
附近的新颖的向量:
其中,
其中,
表示一个
区间的随机数;
为一个随机组合了
、
与
的新解。这中处理过程增加了INFO算法的随机性,以达到更好的在解空间中进行搜索操作。
和
为两个如下所示的随机数:
其中,
表示一个
区间一个随机数。
和
的引入增加了最佳位置对矢量的影响。