基于精英混沌搜索策略的交替正余弦算法-附代码
基于精英混沌搜索策略的交替正余弦算法
文章目录
摘要:正余弦算法是一种新的基于种群的随机寻优方法,利用正余弦函数使解震荡性地趋于全局最优解,其线性调整策略及较弱的局部搜索能力严重地影响了算法的性能.为了提高正弦余弦算法的计算精度,提出基于精英混沌搜索策略的交替正余弦算法.新算法采用基于对数曲线的非线性调整策略修改控制参数,利用精英个体的混沌搜索策略增强算法的开发能力,并将基于该策略的正余弦算法与反向学习算法交替执行增强算法的探索能力,降低算法的时间复杂度,提高算法的收敛速度。
1.正余弦算法
基础正余弦算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107762654
2.改进正余弦算法
2.1 控制参数的非线性调整策略
在 SCA中, 参数
r
1
r_1
r1 起着平衡全局探索能力和局 部搜索能力的重要作用. 当
r
1
<
1
r_1<1
r1<1 时使下一代的解 位于当前解与目标解之间, 强调算法的开发能力; 当
r
1
>
1
r_1>1
r1>1 时解位于当前解和目标解之外, 强调算法的探索能力. 由式 (2) 可以看出,
r
1
r_1
r1 随迭代次数的增加线性 递减, 在算法迭代初期,
r
1
r_1
r1 的值较大, 使算法具有较强 的全局探索能力, 在算法迭代后期,
r
1
r_1
r1 的值较小, 增加 了算法的开发能力. 但是, 线性变化方式不能有效地 增加 SCA 的寻优精度, 本文通过非线性函数
[
5
]
[5]
[5] 对
r
1
r_1
r1 进行改进. 利用自然对数在
[
1
,
e
]
[1, e]
[1,e] 上非线性递增的特 性,
r
1
r_1
r1 的调整策略为
r
1
(
t
)
=
a
start
−
(
a
start
−
a
end
)
ln
(
1
+
(
e
−
1
)
η
⋅
t
t
max
)
(3)
\begin{aligned} &r_1(t)= a_{\text {start }}-\left(a_{\text {start }}-a_{\text {end }}\right) \ln \left(1+\frac{(e-1)}{\eta} \cdot \frac{t}{t_{\max }}\right) \end{aligned} \tag{3}
r1(t)=astart −(astart −aend )ln(1+η(e−1)⋅tmaxt)(3)
其中:
a
start
、
a
end
a_{\text {start }} 、 a_{\text {end }}
astart 、aend 为控制参数
a
a
a 的初始值和最终值,
a
start
>
a
e
n
d
⩾
0
;
η
>
0
a_{\text {start }}>a_{\mathrm{end}} \geqslant 0 ; \eta>0
astart >aend⩾0;η>0 为调节系数. 由式(3)可以 看出,
r
1
r_1
r1 随着迭代次数的增加非线性变化, 可以有效 地平衡 SCA 的探索和开发能力, 提高算法的寻优能 力和收敛速度.
2.2 反向学习策略
反向学习
(
O
B
L
)
[
6
]
(\mathrm{OBL})^{[6]}
(OBL)[6] 是增强随机优化算法性能的 重要方法,通过贪婪选择目标函数在当前解和反向解 种群的适应度值, 增强了种群的多样性, 提高了算法 接近全局最优解的能力. 文献 [4] 提出的
O
B
S
C
A
\mathrm{OBSCA}
OBSCA 在 基本 SCA 中加入反向学习策略, 提高了 SCA 的求解 精度. 本文旨在将
S
C
A
\mathrm{SCA}
SCA 与反向学习策略交替进行, 以 降低算法的复杂性, 从而在改进种群多样性的同时提 高算法的收敛速度.
定义 1 反向解. 设第
t
t
t 代种群中第
i
i
i 个个体为
x
i
t
=
(
x
i
1
t
,
x
i
2
t
,
⋯
,
x
i
n
t
)
x_i^t=\left(x_{i 1}^t, x_{i 2}^t, \cdots, x_{i n}^t\right)
xit=(xi1t,xi2t,⋯,xint), 记
a
j
、
b
j
a_j 、 b_j
aj、bj 为搜索空间中第
j
j
j 维的下界和上界, 令
x
ˉ
i
j
t
=
a
j
+
b
j
−
x
i
j
t
.
(4)
\bar{x}_{i j}^t=a_j+b_j-x_{i j}^t . \tag{4}
xˉijt=aj+bj−xijt.(4)
称
x
ˉ
i
t
=
(
x
ˉ
i
1
t
,
x
ˉ
i
2
t
,
⋯
,
x
ˉ
i
n
t
)
\bar{x}_i^t=\left(\bar{x}_{i 1}^t, \bar{x}_{i 2}^t, \cdots, \bar{x}_{i n}^t\right)
xˉit=(xˉi1t,xˉi2t,⋯,xˉint) 为其反向解.
由式 (4) 可知, 反向学习算法通过反向策略产生
N
N
N 个反向解,使算法在
2
N
2 N
2N 个个体中挑选优秀个体进 入下一代, 增强了种群的多样性和全局探索能力, 同 时贪婪选择策略又增加了算法的收敛速度.
2.3 精英混沌搜索策略
群智能算法的优劣在于有效地平衡算法的探索 与开发能力,为了提高算法的开发能力利用混沌的 随机性、遍历性和规律性的特点, 对精英个体
[
7
]
{ }^{[7]}
[7] 进行 混沌变异. 对种群中
N
N
N 个个体按适应度值升序排序, 选择前
m
=
p
r
⋅
N
m=\mathrm{pr} \cdot N
m=pr⋅N 个个体作为精英个体,
p
r
∈
[
0
,
1
]
\mathrm{pr} \in[0,1]
pr∈[0,1] 为选择比例, 记精英个体为
{
e
x
1
t
,
e
x
2
t
,
⋯
,
e
x
m
t
}
⊂
\left\{\mathrm{ex}_1^t, \mathrm{ex}_2^t, \cdots, \mathrm{ex}_m^t\right\} \subset
{ex1t,ex2t,⋯,exmt}⊂
{
x
1
t
,
x
2
t
,
⋯
,
x
N
t
}
,
ex
i
t
=
(
ex
i
1
t
,
ex
i
2
t
,
⋯
,
e
x
i
n
t
)
,
i
=
\left\{x_1^t, x_2^t, \cdots, x_N^t\right\}, \operatorname{ex}_i^t=\left(\operatorname{ex}_{i 1}^t, \operatorname{ex}_{i 2}^t, \cdots, \mathrm{ex}_{i n}^t\right), i=
{x1t,x2t,⋯,xNt},exit=(exi1t,exi2t,⋯,exint),i=
1
,
2
,
⋯
,
m
1,2, \cdots, m
1,2,⋯,m. 其第
j
(
j
=
1
,
2
,
⋯
,
n
)
j(j=1,2, \cdots, n)
j(j=1,2,⋯,n) 维的上下界
[
8
]
{ }^{[8]}
[8] 分 别为
{
e
b
j
t
=
max
(
e
x
1
j
t
,
e
x
2
j
t
,
⋯
,
e
x
m
j
t
)
,
e
a
j
t
=
min
(
e
x
1
j
t
,
e
x
2
j
t
,
⋯
,
e
x
m
j
t
)
(5)
\left\{\begin{array}{l} \mathrm{eb}_j^t=\max \left(\mathrm{ex}_{1 j}^t, \mathrm{ex}_{2 j}^t, \cdots, \mathrm{ex}_{m j}^t\right), \\ \mathrm{ea}_j^t=\min \left(\mathrm{ex}_{1 j}^t, \mathrm{ex}_{2 j}^t, \cdots, \mathrm{ex}_{m j}^t\right) \end{array}\right. \tag{5}
{ebjt=max(ex1jt,ex2jt,⋯,exmjt),eajt=min(ex1jt,ex2jt,⋯,exmjt)(5)
将精英个体
ex
i
t
\operatorname{ex}_i^t
exit 由解空间按式 (6)映射到
[
0
,
1
]
[0,1]
[0,1], 得到混 沌变量
C
i
t
=
(
C
i
1
t
,
C
i
2
t
,
⋯
,
C
i
n
t
)
C_i^t=\left(C_{i 1}^t, C_{i 2}^t, \cdots, C_{i n}^t\right)
Cit=(Ci1t,Ci2t,⋯,Cint), 有
C
i
j
t
=
e
x
i
j
t
−
e
a
j
t
e
b
j
t
−
e
a
j
t
.
(6)
C_{i j}^t=\frac{\mathrm{ex}_{i j}^t-\mathrm{ea}_j^t}{\mathrm{eb}_j^t-\mathrm{ea}_j^t} .\tag{6}
Cijt=ebjt−eajtexijt−eajt.(6)
利用式 (7) 对
C
i
j
t
C_{i j}^t
Cijt 进行混沌迭代, 有
C
i
j
t
(
k
+
1
)
=
μ
C
i
j
t
(
k
)
(
1
−
C
i
j
t
(
k
)
)
.
(7)
C_{i j}^t(k+1)=\mu C_{i j}^t(k)\left(1-C_{i j}^t(k)\right) .\tag{7}
Cijt(k+1)=μCijt(k)(1−Cijt(k)).(7)
其中:
μ
\mu
μ 为常数, 取值为
4
;
k
4 ; k
4;k 为混沌迭代次数,
0
⩽
k
⩽
0 \leqslant k \leqslant
0⩽k⩽
ceil
(
t
/
10
)
,
ceil
(
x
)
\operatorname{ceil}(t / 10), \operatorname{ceil}(x)
ceil(t/10),ceil(x) 表示对
x
x
x 向上取整.
当
k
k
k 达到最大迭代次数
k
max
k_{\max }
kmax 时, 得到第
i
i
i 个精英 个体对应的混沌变量
C
i
k
max
C_i^{k_{\max }}
Cikmax, 利用下式将其映射至
[
e
a
j
t
,
e
b
j
t
]
\left[\mathrm{ea}_j^t, \mathrm{eb}_j^t\right]
[eajt,ebjt] 内, 得到对应混沌个体
x
C
i
t
x C_i^t
xCit, 有
x
C
i
j
t
=
C
i
j
k
max
(
e
b
j
t
−
e
a
j
t
)
+
e
a
j
t
.
(8)
x C_{i j}^t=C_{i j}^{k_{\max }}\left(\mathrm{eb}_j^t-\mathrm{ea}_j^t\right)+\mathrm{ea}_j^t .\tag{8}
xCijt=Cijkmax(ebjt−eajt)+eajt.(8)
对混沌个体
x
C
i
t
x C_i^t
xCit 与原个体
ex
i
t
\operatorname{ex}_i^t
exit, 由下式生成候选 解:
x
i
t
(
λ
)
=
λ
ex
i
t
+
(
1
−
λ
)
x
C
i
t
,
(9)
x_i^t(\lambda)=\lambda \operatorname{ex}_i^t+(1-\lambda) x C_i^t,\tag{9}
xit(λ)=λexit+(1−λ)xCit,(9)
其中
λ
\lambda
λ 为收缩因子, 其值为
λ
=
t
max
−
t
t
max
.
(10)
\lambda=\frac{t_{\max }-t}{t_{\max }} .\tag{10}
λ=tmaxtmax−t.(10)
在得到的候选解
x
i
t
(
λ
)
x_i^t(\lambda)
xit(λ) 与对应精英个体
e
x
i
t
\mathrm{ex}_i^t
exit 之间 采用贪婪选择策略, 选择优秀的个体
e
x
i
t
′
\mathrm{ex}_i^{t^{\prime}}
exit′ 取代当前个 体
ex
i
t
\operatorname{ex}_i^t
exit, 即
ex
i
t
′
=
{
ex
i
t
,
f
(
ex
i
t
)
⩽
f
(
x
i
t
(
λ
)
)
x
i
t
(
λ
)
,
f
(
ex
i
t
)
>
f
(
x
i
t
(
λ
)
)
(11)
\operatorname{ex}_i^{t^{\prime}}=\left\{\begin{array}{l} \operatorname{ex}_i^t, f\left(\operatorname{ex}_i^t\right) \leqslant f\left(x_i^t(\lambda)\right) \\ x_i^t(\lambda), f\left(\operatorname{ex}_i^t\right)>f\left(x_i^t(\lambda)\right) \end{array}\right. \tag{11}
exit′={exit,f(exit)⩽f(xit(λ))xit(λ),f(exit)>f(xit(λ))(11)
由式(10) 可以看出, 设计的收缩因子
λ
\lambda
λ 随着迭代 次数的增加逐渐减小. 式(9) 表明,
λ
\lambda
λ 越小,
e
x
i
t
\mathrm{ex}_i^t
exit 对候选 解
x
i
t
(
λ
)
x_i^t(\lambda)
xit(λ) 的影响越小. 因此, 算法随着迭代次数的增 加, 精英个体的上下界范围逐渐缩小至目标解附近, 候选解
x
i
t
(
λ
)
x_i^t(\lambda)
xit(λ) 越侧重随机性、多样性较强的混沌个 体
x
C
i
t
x C_i^t
xCit, 局部搜索能力越强. 精英个体的混沌变异策 略所控制的混沌搜索范围随算法迭代次数的增加逐 渐缩小, 实验验证该策略具有较强的局部搜索能力.
基于精英混沌搜索策略的交替正余弦算法(COSCA)步骤如下:
Step 1: 算法参数设置. 种群规模
N
N
N, 控制参数
a
a
a 的初始值
a
start
a_{\text {start }}
astart 和最终值
a
end
a_{\text {end }}
aend , 最大化迭代次数
t
max
t_{\max }
tmax,调节系数
η
>
0
\eta>0
η>0, 精英选择比例pr.
Step 2: 初始化. 令
t
=
0
t=0
t=0, 随机在解搜索空中产生
N
N
N 个个体, 组成种群
G
G
G.
Step 3: 对 G G G 中的个体执行式 (4) 的反向策略, 形 成种群 G ˉ \bar{G} Gˉ, 计算 G ˉ ∪ G \bar{G} \cup G Gˉ∪G 中个体的函数值, 按从小到大 排序, 选择前 N N N 个个体组成初始种群 G t G^t Gt, 并记录最优 个体 x ∗ t x_*^t x∗t.
Step 4: 若 t t t 为奇数, 则执行 Step 4.1; 若 t t t 为偶数, 则 执行 Step 4.2:
Step 4.1: 对 G t G^t Gt 中的个体执行 S C A \mathrm{SCA} SCA 算法, 其中控 制参数 r 1 r_1 r1 如式 (3) 所示, 对个体按适应度值由小到大 排序得到种群 G z t + 1 G_z^{t+1} Gzt+1;
Step 4.2: 对 G t G^t Gt 中的个体进行式 (4) 的 OBL 策略 更新得到 G ˉ t \bar{G}^t Gˉt, 对 G ˉ ⋃ G \bar{G} \bigcup G Gˉ⋃G 中的个体按函数值从小到大 排序, 选择前 N N N 个个体组成种群 G z t + 1 G_z^{t+1} Gzt+1.
Step 5: 对
G
z
t
+
1
G_z^{t+1}
Gzt+1 中的前
m
m
m 个精英个体进行式
(5) (11) 所示的精英混沌搜索, 其余
N
−
m
N-m
N−m 个个体 不变,形成种群
G
t
+
1
G^{t+1}
Gt+1.
Step 6: 记录 G t + 1 G^{t+1} Gt+1 中最优个体 x ∗ t + 1 x_*^{t+1} x∗t+1, 若 f ( x ∗ t ) < f\left(x_*^t\right)< f(x∗t)< f ( x ∗ t + 1 ) f\left(x_*^{t+1}\right) f(x∗t+1), 则 x ∗ t + 1 = x ∗ t x_*^{t+1}=x_*^t x∗t+1=x∗t.
Step 7: 判断算法是否满足结束条件, 若满足, 输 出最优值 f ( x ∗ t + 1 ) f\left(x_*^{t+1}\right) f(x∗t+1), 否则令 t = t + 1 t=t+1 t=t+1, 转至 Step 4 .
3.实验结果
4.参考文献
[1]郭文艳,王远,戴芳,刘婷.基于精英混沌搜索策略的交替正余弦算法[J].控制与决策,2019,34(08):1654-1662.
5.Matlab代码
6.python代码
相关文章
- Facebook允许用户查看并删除搜索历史
- 火端搜索v2.1自行二开加入xml伪静态
- Java实现 LeetCode 212 单词搜索 II(二)
- Python排序搜索基本算法之归并排序实例分析
- Python排序搜索基本算法之归并排序实例分析
- 算法导论第十二章 二叉搜索树
- ExtJs 备忘录(6)—— GirdPanl表格(二) [ 搜索分页 ]
- Algorithm:C++语言实现之图论算法相关(图搜索广度优先BFS、深度优先DFS,最短路径SPF、带负权的最短路径Bellman-ford、拓扑排序)
- ML之SVM:利用SVM算法(超参数组合进行单线程网格搜索+3fCrVa)对20类新闻文本数据集进行分类预测、评估
- 【优化模型】在交通网络中设计算法搜索最优路径
- 智能优化算法:原子搜索优化算法 -附代码
- 智能优化算法:回溯搜索优化算法-附代码
- 具有随机分形自适应搜索策略的蚁狮优化算法-附代码
- 具有自适应搜索策略的灰狼优化算法-附代码
- Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
- 算法7-4:宽度优先搜索
- 平衡二叉搜索树(最小高度树)
- 【设计和算法分析】3、二进制搜索
- 搜索框中“请输入搜索keyword”
- VC++调用STL算法函数有效提升STL列表的搜索速度(附源码)
- 小样本学习,阿里做得比较早,但是效果未知——小样本有3类解决方法(算法维度):迁移学习、元学习(模型基础上学习模型)、度量学习(相似度衡量,也就是搜索思路),数据维度还有GAN
- CSDN 搜索工具使用体验与对比分析
- 基于变邻域搜索平衡优化算法与粘菌算法的柔性车间调度(Matlab代码实现)
- 基于Astar算法的栅格地图最优路径搜索matlab仿真,可以修改任意数量栅格
- 数据结构和算法 十一、二叉搜索树/AVL树