求解高维优化问题的改进正弦余弦算法

一、理论基础

1、正弦余弦算法

请参考这里
算法步骤如算法1所示。
算法1 基本SCA

在这里插入图片描述

2、改进的正弦余弦算法

(1)反向学习初始化

反向学习(opposition- based learning, OBL)是近年来智能计算领域出现的一种新技术,目前已在PSO、DE等群体智能优化算法中得到了成功的应用。因此,本文将反向学习策略嵌入到标准SCA中进行种群初始化,为改善算法性能奠定基础。
定义1 反向点(opposite point)。 假设在 [ l , u ] [l,u] [l,u]上存在数 x x x,则 x x x的反向点定义为 x ′ = l + u − x x'=l+u-x x=l+ux。将反向点的定义扩展到 d d d维空间,设 p = ( x 1 , x 2 , ⋯   , x d ) p=(x_1,x_2,\cdots,x_d) p=(x1,x2,,xd) d d d维空间的一个点,其中 x i ∈ [ l i , u i ] , i = 1 , 2 , ⋯   , d x_i∈[l_i,u_i],i=1,2,\cdots,d xi[li,ui],i=1,2,,d,则其反向点定义为 p ′ = ( x 1 ′ , x 2 ′ , ⋯   , x d ′ ) p'=(x_1',x_2',\cdots,x_d') p=(x1,x2,,xd),其中 x i ′ = l i + u i − x i x_i'=l_i+u_i-x_i xi=li+uixi
根据上述定义,利用反向学习策略产生初始群体的具体步骤如算法2所示。
算法2 基于反向学习的初始化方法
在这里插入图片描述合并 { X ( N ) ∪ O X ( N ) } \{X(N)∪OX(N)\} {X(N)OX(N)},从中选取适应度值最好的 N N N个个体作为初始种群。

(2)修改个体位置更新方程

为了提高标准SCA的收敛精度和加快收敛速度,受PSO算法启发,本文在个体位置更新方程式中引入惯性权重 w w w,得到改进的个体位置更新公式如下: X ( t + 1 ) = { w X ( t ) + r 1 × sin ⁡ r 2 × ∣ r 3 × X ∗ − X ( t ) ∣ , r 4 < 0.5 w X ( t ) + r 1 × cos ⁡ r 2 × ∣ r 3 × X ∗ − X ( t ) ∣ , r 4 ≥ 0.5 (1) X(t+1)=\begin{dcases}wX(t)+r_1×\sin r_2×|r_3×X^*-X(t)|,\quad r_4<0.5\\wX(t)+r_1×\cos r_2×|r_3×X^*-X(t)|,\quad r_4≥0.5\end{dcases}\tag{1} X(t+1)={wX(t)+r1×sinr2×r3×XX(t),r4<0.5wX(t)+r1×cosr2×r3×XX(t),r40.5(1)其中, w w w为惯性权重。
较大的惯性权重 w w w有利于全局搜索,较小的惯性权重 w w w有利于局部搜索。因此,本文提出一种自适应变化的惯性权重策略,即惯性权重随迭代次数增加而线性减小。 w ( t ) = w max ⁡ − ( w max ⁡ − w min ⁡ ) × t t max ⁡ (2) w(t)=w_{\max}-(w_{\max}-w_{\min})×\frac{t}{t_{\max}}\tag{2} w(t)=wmax(wmaxwmin)×tmaxt(2)其中, t t t为当前迭代次数; t max ⁡ t_{\max} tmax为最大迭代次数; w max ⁡ w_{\max} wmax w min ⁡ w_{\min} wmin分别为惯性权重的最大值和最小值。由式(2)可以清晰地看出,惯性权重 w w w随迭代次数的增加而递减,在进化前期 w w w选取较大的值利于全局搜索,在进化后期 w w w选取较小的值利于局部精确搜索,从而提高算法的收敛精度和加快算法的收敛速度。

(3)算法步骤

本文提出的ISCA流程如图1所示。
在这里插入图片描述

图1 ISCA流程

二、仿真实验与结果分析

1、测试函数

为了验证本文提出的ISCA的寻优性能,从文献中选取八个高维标准函数进行测试,其具体表达式及变量范围如表1所示,八个函数的理论最优值均为0。

表1 测试函数

在这里插入图片描述

2、实验结果

(1)和原始SCA对比

采用本文所提出的ISCA对八个标准测试函数进行求解,并与基本SCA进行比较。八个函数的维数均设置为D=30维。为了比较的公平性,ISCA和SCA的种群规模均设置为50,最大迭代次数设置为1000,即最大适应度函数计算次数为50000。另外,经过反复多次实验确定ISCA其他参数设置如下:惯性权重最大值 w max ⁡ = 0.8 w_{\max}= 0.8 wmax=0.8,惯性权重最小值 w min ⁡ = 0.1 w_{\min}=0.1 wmin=0.1。ISCA和SCA分别对八个测试函数单独运行30次,记录其最优值、最差值、平均值和标准差,结果如表2所示。所有仿真实验均在Intel® Core™ i7-7700、8GB内存、3.60GHz主频的计算机上实现,程序采用MATLAB 2018a语言实现。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述上图为ISCA和SCA对八个函数的收敛曲线。
最优值、最差值、平均值和标准差显示如下:

函数:F1
SCA:最优值: 2.7822e-08,最差值:0.68443,平均值:0.022971,标准差:0.12493
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F2
SCA:最优值: 3.5802e-08,最差值:5.3033e-05,平均值:6.7198e-06,标准差:1.0976e-05
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F3
SCA:最优值: 32.3308,最差值:12280.1818,平均值:1979.5323,标准差:2491.4823
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F4
SCA:最优值: 0.38054,最差值:24.9364,平均值:11.3292,标准差:6.9102
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F5
SCA:最优值: 0,最差值:0,平均值:0,标准差:0
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F6
SCA:最优值: 7.6934e-08,最差值:141.0587,平均值:17.3916,标准差:33.1537
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F7
SCA:最优值: 1.3262e-05,最差值:20.29,平均值:14.0356,标准差:8.6221
ISCA:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0
函数:F8
SCA:最优值: 6.3289e-06,最差值:0.70051,平均值:0.16298,标准差:0.1883
ISCA:最优值: 0,最差值:0,平均值:0,标准差:0

从以上仿真对比结果可以清晰地看出,与基本SCA相比,ISCA 在八个测试函数上均能获得较高的收敛精度和较快的收敛速度。

(2)不同维度下的收敛情况

对ISCA在不同维度下进行测试,以F3、F4、F6、F7为例,分别在 D = 100 , 500 , 10000 D=100,500,10000 D=100,500,10000的维度下进行测试,结果显示如下。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F3
D=100:最优值: 0,最差值:0,平均值:0,标准差:0
D=500:最优值: 0,最差值:0,平均值:0,标准差:0
D=1000:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F4
D=100:最优值: 7.1418e-314,最差值:5.7055e-263,平均值:2.0728e-264,标准差:0
D=500:最优值: 3.9186e-229,最差值:1.4142e-202,平均值:4.7264e-204,标准差:0
D=1000:最优值: 4.362e-206,最差值:5.2109e-179,平均值:1.7394e-180,标准差:0
函数:F6
D=100:最优值: 0,最差值:0,平均值:0,标准差:0
D=500:最优值: 0,最差值:0,平均值:0,标准差:0
D=1000:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F7
D=100:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0
D=500:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0
D=1000:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0

从上图可以看出,虽然ISCA在不同高维问题上最终获得了相同的收敛精度,但其收敛速度稍有不同。从上述结果可以看出,ISCA在求解高维优化问题时显示出较强的寻优能力。

三、参考文献

[1] 徐松金, 龙文. 求解高维优化问题的改进正弦余弦算法[J]. 计算机应用研究, 2018, 35(9): 2574-2577.

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心️升明月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值