zl程序教程

您现在的位置是:首页 >  后端

当前栏目

智能优化算法:阴阳对优化算法-附代码

2023-09-14 09:06:12 时间

智能优化算法:阴阳对优化算法


摘要:阴阳对优化(YYPO)算法是 Varun Punnathanam等人于 2016 年基于阴阳平衡原理提出的一种新型元启发式优化算法。目前已在函数、多目标优化等领域得到应用。

1.算法原理

该算法基于 2 个点集(P1 和P2),其中 P1 设计为专注于开发变量空间,P2 设计为专注于探索变量空间,通过开发与探索 2 个矛盾行为之间的相互协调、补充达到平衡,并利用分裂、存储 2 个阶段进行迭代更新来求解最优化问题。

1.1 设置待优化

设置待优化问题维度 D D D ,随机初始化 2 个点集 P 1 = { P 1 1 , P 1 2 , . . . , P 1 D } P1 = \{P1^1,P1^2,...,P1^D\} P1={P11,P12,...,P1D} P 2 = { P 2 1 , P 2 2 , . . . , P 2 D } P2 = \{P2^1,P2^2,...,P2^D\} P2={P21,P22,...,P2D}
。对点集 P1 和 P2 进行归一化处理,即 0 ≤ ( P 1 j , P 2 j ) ≤ 1 0 ≤ (P1^j ,P2^j ) ≤1 0(P1jP2j)1 ,其中, j = 1 , 2 , 3 , … , D j = 1,2,3,…,D j=123D

1.2 分裂阶段

a) 单向分裂:在 YYPO 算法中,点 P P P 的二维相同副本被存储为 S S S,其可以被认为是尺寸为 2 D × D 2D × D 2D×D 的矩阵。 S S S 中每个点的一个变量用下面的公式修改:
{ S j j = S j + r δ j = 1 , 2 , 3 , . . . , D S D + j j = S j − r δ (1) \begin{cases} S_j^j=S^j+r\delta \\ \quad \quad \quad \quad \quad \quad \quad j=1,2,3,...,D\\ S_{D+j}^j = S^j -r\delta \tag{1} \end{cases} Sjj=Sj+rδj=1,2,3,...,DSD+jj=Sjrδ(1)
式中 下标—点号;上标—正被修改的决策变量号; r r r —在 0 和 1 之间的随机数,对于 S S S中任意点的每个变量产生新的 r r r ,共 需2D ×D 个 0 和 1 之间的随机数; δ \delta δ —搜索半径。

b) D 向分裂:在 YYPO 算法中,点 P P P 的2D相同副本被存储为 S S S,其可以被认为是 2 D × D 2D × D 2D×D 大小的矩阵,生成包含长度为 D D D的二维随机二进制矩阵 B B B,使得每个二进制串是唯一的。随后,使用以下等式来修改任意点的每个变量:
{ S k j = S j + r ( δ / 2 )   i f   B k j = 1 j = 1 , 2 , 3 , . . . , D S k j = S j − r ( δ / 2 )   e l s e (2) \begin{cases} S_k^j=S^j+r(\delta/\sqrt{2})\, if\,B_k^j=1 \\ \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad j=1,2,3,...,D\\ S_{k}^j = S^j -r(\delta/\sqrt{2})\, else \tag{2} \end{cases} Skj=Sj+r(δ/2 )ifBkj=1j=1,2,3,...,DSkj=Sjr(δ/2 )else(2)
式中 下标—点号(或行);上标—决策变量号(或列); r 、 δ r 、δ rδ 意义同上;二进制矩阵 B B B 通过随机选择 0 ~ 2 D - 1 0 ~ 2 D -1 02D1 之间的唯一整数并转换成长度为 D D D 的二进制串来组成。

1.3 存储阶段

存储阶段是在满足所需数量的存储更新之后启动,且该存储阶段包含 2 I 2 I 2I 个点( I I I 为存储阶段的更新次数大小),对应于在分裂阶段前每个更新中添加的 2 个点 P 1 、 P 2 P1 、P2 P1P2 。若存储中的最佳点比点 P 1 、 P 2 P1 、P2 P1P2更合适,则与点 P 1 、 P 2 P1 、P2 P1P2 交换。存储阶段因此保持精英主义并且确保算法的单调收敛(即在任何迭代中确定的最佳点不会丢失)。在存储阶段结束时,存储矩阵设置为空,并且在其指定范围 I m i n I_{min} Imin I m a x I_{max} Imax ( I m i n I_{min} Imin I m a x I_{max} Imax 分别为存储更新的最小数和最大数)内随机生成存储更新 I I I 的新值。搜索半径 δ 1 δ_1 δ1 δ 2 δ_2 δ2 的更新公式如下:
{ δ 1 = δ 1 − ( δ 1 / a ) δ 2 = δ 2 + ( δ 2 / a ) (3) \begin{cases} \delta_1 = \delta_1- (\delta_1/a)\\ \delta_2 = \delta_2+ (\delta_2/a) \tag{3} \end{cases} {δ1=δ1(δ1/a)δ2=δ2+(δ2/a)(3)
式中 δ 1 、 δ 2 δ 1、δ2 δ1δ2 —点集 P 1 、 P 2 P1、P2 P1P2 的搜索半径; a a a —扩张/收缩因子。YYPO 算法的特点在于随机生成的点集数量取决于问题维度,针对高维优化问题将生成较多的点,这种自适应能力能有效解决不同维度问题并获得待优化问题的最优解。

2.算法流程

step1 初始化YYPO相应参数

step2 初始化2个点集P1,P2;

step3 利用目标函数评估点集 P1、P2 的适应度值,若 P1 优于 P2,则 P1、P2 互换;存储 P1、P2,并令 i = i + 1 。

step4 分别执行 P1、P2 分裂和存储操作,并获得更新的 P1、P2 以及对应的适应度值;若存储中的最佳点比点 P1、P2 更合适,则与点 P1、P2 交换。

step5 更新点集 P1、P2 的搜索半径 δ 1 和 δ 2

step6 存储矩阵设置为空,并在其指定范围I min 和 I max 内随机生成存储更新 I 的新值,存储阶段结束。

step7 断算法是否达到最大迭代次数 T ,若是,输出最佳点适应度值及所处空间位置,即待优化问题最优解,算法结束;否则重复 Step3—7

3.算法结果

在这里插入图片描述

4.参考文献

[1]何国栋,崔东文.基于阴阳对算法优化的随机森林与支持向量机组合模型及径流预测实例[J].人民珠江,2019,40(03):33-38.

[2] Varun Punnathanam, Prakash Kotecha. Yin-Yang-pair Optimization: A novel lightweight optimization algorithm. 2016, 54:62-79.

5.Matlab代码

个人资料介绍