智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
智能优化算法应用:基于麻雀搜索算法的积分计算
摘要:本文提出了一种基于麻雀搜索算法的积分计算算法。该方法的基本思路是: 先在积分区间内产生一些随机分割点( 不一定是等距分割点),然后用麻雀优化算法对这些分割点进行优化,将优化后得到的最优分割点从小到大排序并作为该区间的分割点,这些分割点结合 Simpson3/8 积分公式进行数值计算。
1.麻雀优化算法
麻雀搜索算法具体原理请参照:https://blog.csdn.net/u011835903/article/details/108830958
2.基于麻雀搜索算法的积分计算原理和步骤
提出的基于麻雀算法求任意函数数值积分算法流程可归结如下:
Step1:初始化麻雀搜索算法相关参数,如种群数量,搜索维度等。在被积区间内[a,b]随机生成初始种群
X
=
(
X
1
,
X
2
,
.
.
.
,
X
N
)
(1)
X = (X_1,X_2,...,X_N) \tag{1}
X=(X1,X2,...,XN)(1)
其中:
X
i
=
(
X
i
1
,
X
i
2
,
.
.
.
,
X
i
n
)
;
X
i
k
∈
[
a
,
b
]
X_i=(X_{i1},X_{i2},...,X_{in}); X_{ik}\in [a,b]
Xi=(Xi1,Xi2,...,Xin);Xik∈[a,b]表示第
k
k
k 个节点,
n
n
n表示积分区间内的节点数。
Step2:计算适应度并进行排序。先将随机产生的每个个体置于积分区间的左右端点之间,并按照升序排列,这样就得到
n
+
2
n+2
n+2个节点和
n
+
1
n+1
n+1 小段,再分别计算这
n
+
2
n + 2
n+2 个节点相邻节点之间的距离
d
j
,
j
=
1
,
2
,
…
,
n
+
1
d_j,j=1,2,…,n+1
dj,j=1,2,…,n+1及这
n
+
2
n+2
n+2个节点对应的函数值和每小段中点对应的函数值,确定每小段左右端点和中间点的 3个函数值中,记下最大函数值$max,Y_j
$ 、最小函数值
m
i
n
Y
j
,
j
=
1
,
2
,
…
,
n
+
1
min\,Y_j,j = 1,2,…,n +1
minYj,j=1,2,…,n+1. 并定义适应度为:
f
j
=
∑
j
=
1
n
+
1
∣
m
a
x
Y
j
−
m
i
n
Y
j
∣
d
j
(2)
f_j=\sum_{j=1}^{n+1}|maxY_j-minY_j|d_j\tag{2}
fj=j=1∑n+1∣maxYj−minYj∣dj(2)
越小表明分割方法越好。
Step3:根据计算的适应度
Step4:根据麻雀算法位置更新公式更新位置
Step5:计算适应度值,并更新最优位置
Step6:若未达到最大迭代次数 T m a x T_{max} Tmax ,则返回步骤4;否则,输出全局最优位置;
Step7:计算定积分值。将所求的最优分割点
[
a
,
x
1
,
.
.
.
,
x
n
,
b
]
[a,x_1,...,x_n,b]
[a,x1,...,xn,b],分别代入数值积分式进行计算
(
a
=
x
0
,
b
=
x
n
+
1
)
(a = x_0,b=x_{n+1})
(a=x0,b=xn+1),得出:
J
1
=
∑
j
=
0
n
+
1
{
f
(
x
j
+
1
)
+
f
(
x
j
)
}
∗
d
j
/
2
(3)
J_1 = \sum_{j=0}^{n+1}\{f(x_{j+1}) + f(x_j)\}*d_j/2 \tag{3}
J1=j=0∑n+1{f(xj+1)+f(xj)}∗dj/2(3)
J 2 = ∑ j = 0 n + 1 { f ( x j + 1 ) + 4 f ( x j + 1 + x j 2 ) + f ( x j ) } ∗ d j / 6 (3) J_2= \sum_{j=0}^{n+1}\{f(x_{j+1}) + 4f(\frac{x_{j+1}+x_j}{2})+f(x_j)\}*d_j/6 \tag{3} J2=j=0∑n+1{f(xj+1)+4f(2xj+1+xj)+f(xj)}∗dj/6(3)
J 3 = ∑ j = 0 n + 1 { f ( x j + 1 ) + 3 f ( 2 x j + 1 + x j 3 ) + 3 f ( x j + 1 + 2 x j 3 ) + f ( x j ) } ∗ d j / 8 (4) J3 =\sum_{j=0}^{n+1}\{f(x_{j+1}) + 3f(\frac{2x_{j+1}+x_j}{3})+3f(\frac{x_{j+1}+2x_j}{3})+f(x_j)\}*d_j/8 \tag{4} J3=j=0∑n+1{f(xj+1)+3f(32xj+1+xj)+3f(3xj+1+2xj)+f(xj)}∗dj/8(4)
3.算法实验
为了验证本文提出算法的有效性和正确性,选取了几个典型的数值积分函数。取 N= 20,D = 60,分别计算 6 个函数的在[0,2]的积分值。函数信息如下:
f
1
=
x
2
(5)
f1 = x^2 \tag{5}
f1=x2(5)
f 2 = x 4 (6) f2 = x^4 \tag{6} f2=x4(6)
f 3 = 1 + x 2 (7) f3 = \sqrt{1+x^2}\tag{7} f3=1+x2(7)
f 4 = 1 x + 1 (8) f4 =\frac{1}{x+1}\tag{8} f4=x+11(8)
f 5 = s i n ( x ) (9) f5=sin(x)\tag{9} f5=sin(x)(9)
f 6 = e x (10) f6 = e^x\tag{10} f6=ex(10)
名称 | f1 | f2 | f3 | f4 | f5 | f6 |
---|---|---|---|---|---|---|
理论精确解 | 2.667 | 6.400 | 2.958 | 1.099 | 1.416 | 6.389 |
麻雀计算法得到的J1 | 2.6674 | 6.404 | 2.9581 | 1.0987 | 1.4158 | 6.3896 |
麻雀计算法得到的J2 | 2.6667 | 6.400 | 2.9579 | 1.0986 | 1.4161 | 6.3891 |
麻雀计算法得到的J3 | 2.6667 | 6.400 | 2.9579 | 1.0986 | 1.4161 | 6.3891 |
收敛曲线如下图所示:
4.参考文献:
[1]黄基诞.基于改进灰狼优化算法的积分计算实验[J].实验室研究与探索,2020,39(11):16-19+66.
5.Matlab代码
个人资料介绍
相关文章
- HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的
- Java实现 蓝桥杯VIP 算法训练 步与血(递推 || DFS)
- Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重
- (算法)天平问题
- 算法常识——快速排序
- (算法)并查集及其应用
- PCL 方向向量约束的改进ICP算法
- 【前缀和算法】一维前缀和、二维前缀和算法介绍及其应用
- AI之Transformer:Transformer在CV计算机视觉领域的简介、代表性算法、案例应用之详细攻略
- CV之IPE之MobilenetV2:基于keras利用Mobilenet V2算法实现局部相似域的多人实时二维姿态估计(以詹姆斯扣篮+美女跳舞为例)案例应用
- ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调
- ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略
- DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 【回归预测-BP预测】基于思维进化算法优化BP神经网络在非线性函数拟合中的应用(Matlab代码实现)
- 智能优化算法应用:基于GWO优化的对称交叉熵图像多阈值分割 - 附代码
- 智能优化算法:共生生物搜索算法 - 附代码
- EM算法在高斯混合模型学习中的应用
- 《数据结构与算法分析》学习笔记(五)——二叉树
- 矩阵分解在协同过滤推荐算法中的应用
- 数据结构与算法_02 _ 如何抓住重点,系统高效地学习数据结构与算法
- 【ML 吴恩达】11 聚类Clustering的概念、应用和算法简介
- 目标检测论文解读复现之四:改进YOLOv5算法在停车场火灾检测中的应用