智能优化算法:阴阳对优化算法-附代码
智能优化算法:阴阳对优化算法
摘要:阴阳对优化(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≤(P1j,P2j)≤1 ,其中,
j
=
1
,
2
,
3
,
…
,
D
j = 1,2,3,…,D
j=1,2,3,…,D 。
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=Sj−rδ(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=Sj−r(δ/2)else(2)
式中 下标—点号(或行);上标—决策变量号(或列);
r
、
δ
r 、δ
r、δ 意义同上;二进制矩阵
B
B
B 通过随机选择
0
~
2
D
-
1
0 ~ 2 D -1
0~2D-1 之间的唯一整数并转换成长度为
D
D
D 的二进制串来组成。
1.3 存储阶段
存储阶段是在满足所需数量的存储更新之后启动,且该存储阶段包含
2
I
2 I
2I 个点(
I
I
I 为存储阶段的更新次数大小),对应于在分裂阶段前每个更新中添加的 2 个点
P
1
、
P
2
P1 、P2
P1、P2 。若存储中的最佳点比点
P
1
、
P
2
P1 、P2
P1、P2更合适,则与点
P
1
、
P
2
P1 、P2
P1、P2 交换。存储阶段因此保持精英主义并且确保算法的单调收敛(即在任何迭代中确定的最佳点不会丢失)。在存储阶段结束时,存储矩阵设置为空,并且在其指定范围
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
P1、P2 的搜索半径;
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代码
个人资料介绍
相关文章
- EasyNVR智能云终端接入AI视频智能分析功能,用户可自定义接入自己的分析算法
- AI之DS:人工智能领域之数据科学领域六大实践场景(金融信用违约、反欺诈模型、客户偏好洞察、智能推荐、精准营销、客户流失管理)所对应的机器学习算法总结(持续更新)
- AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》
- 智能优化算法——蜜蜂优化算法(Matlab完整代码实现)
- 智能优化算法——哈里鹰算法(Matlab实现)
- 智能优化算法应用:基于蚁狮优化算法的工程优化案例-附代码
- 智能优化算法应用:基于麻雀搜索优化K-means图像分割算法 - 附代码
- 智能优化算法应用:基于麻雀搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
- 智能优化算法应用:基于GWO优化的对称交叉熵图像多阈值分割 - 附代码
- 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码
- 《Python智能优化算法:从原理到代码实现与应用》出版啦
- 智能优化算法:蜣螂优化算法-附代码
- 智能优化算法:向量加权平均算法-附代码
- 智能优化算法:金枪鱼群优化算法-附代码
- 智能优化算法:卷尾猴搜索算法-附代码
- 智能优化算法:蜜獾算法-附代码
- 智能优化算法:金鹰优化算法-附代码
- 智能优化算法:闪电连接过程算法 - 附代码
- 智能优化算法:蛾群优化算法-附代码
- 智能优化算法:黏菌优化算法 - 附代码
- 智能优化算法:正余弦优化算法-附代码
- 智能优化算法:探路者优化算法-附代码
- 智能优化算法:乌燕鸥优化算法-附代码
- 智能优化算法:黄金正弦算法 -附代码
- 智能优化算法:蜉蝣算法 - 附代码
- 智能优化算法:风驱动优化算法-附代码
- 智能优化算法:树种算法-附代码
- 智能优化算法:入侵杂草优化算法-附代码
- 智能优化算法:细菌觅食优化算法 - 附代码