智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
智能优化算法应用:基于麻雀搜索算法的积分计算
文章目录
- 智能优化算法应用:基于麻雀搜索算法的积分计算
- 1.麻雀优化算法
- 2.基于麻雀搜索算法的积分计算原理和步骤
- 3.算法实验
- 4.参考文献:
- 5.Matlab代码
摘要:本文提出了一种基于麻雀搜索算法的积分计算算法。该方法的基本思路是: 先在积分区间内产生一些随机分割点( 不一定是等距分割点),然后用麻雀优化算法对这些分割点进行优化,将优化后得到的最优分割点从小到大排序并作为该区间的分割点,这些分割点结合 Simpson3/8 积分公式进行数值计算。
1.麻雀优化算法
麻雀搜索算法具体原理请参照:https://blog.csdn.net/u011835903/article/details/108830958
2.基于麻雀搜索算法的积分计算原理和步骤
提出的基于麻雀算法求任意函数数值积分算法流程可归结如下:
Step1:初始化麻雀搜索算法相关参数,如种群数量,搜索维度等。在被积区间内[a,b]随机生成初始种群
X=(X1,X2,...,XN)(1)X = (X_1,X_2,...,X_N) \tag{1} X=(X1,X2,...,XN)(1)
其中:Xi=(Xi1,Xi2,...,Xin);Xik∈[a,b]X_i=(X_{i1},X_{i2},...,X_{in}); X_{ik}\in [a,b]Xi=(Xi1,Xi2,...,Xin);Xik∈[a,b]表示第 kkk 个节点,nnn表示积分区间内的节点数。
Step2:计算适应度并进行排序。先将随机产生的每个个体置于积分区间的左右端点之间,并按照升序排列,这样就得到 n+2n+2n+2个节点和 n+1n+1n+1 小段,再分别计算这 n+2n + 2n+2 个节点相邻节点之间的距离 dj,j=1,2,…,n+1d_j,j=1,2,…,n+1dj,j=1,2,…,n+1及这n+2n+2n+2个节点对应的函数值和每小段中点对应的函数值,确定每小段左右端点和中间点的 3个函数值中,记下最大函数值$max,Y_j
$ 、最小函数值minYj,j=1,2,…,n+1min\,Y_j,j = 1,2,…,n +1minYj,j=1,2,…,n+1. 并定义适应度为:
fj=∑j=1n+1∣maxYj−minYj∣dj(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:若未达到最大迭代次数 TmaxT_{max}Tmax ,则返回步骤4;否则,输出全局最优位置;
Step7:计算定积分值。将所求的最优分割点[a,x1,...,xn,b][a,x_1,...,x_n,b][a,x1,...,xn,b],分别代入数值积分式进行计算(a=x0,b=xn+1)(a = x_0,b=x_{n+1})(a=x0,b=xn+1),得出:
J1=∑j=0n+1{f(xj+1)+f(xj)}∗dj/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)
J2=∑j=0n+1{f(xj+1)+4f(xj+1+xj2)+f(xj)}∗dj/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)
J3=∑j=0n+1{f(xj+1)+3f(2xj+1+xj3)+3f(xj+1+2xj3)+f(xj)}∗dj/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]的积分值。函数信息如下:
f1=x2(5)f1 = x^2 \tag{5} f1=x2(5)
f2=x4(6)f2 = x^4 \tag{6} f2=x4(6)
f3=1+x2(7)f3 = \sqrt{1+x^2}\tag{7} f3=1+x2(7)
f4=1x+1(8)f4 =\frac{1}{x+1}\tag{8} f4=x+11(8)
f5=sin(x)(9)f5=sin(x)\tag{9} f5=sin(x)(9)
f6=ex(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代码
个人资料介绍
智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码相关推荐
- 智能优化算法:天牛须搜索算法
往期内容: 智能优化算法(一):海鸥算法原理及Matlab代码 智能优化算法(二):海鸥算法之改进篇 智能优化算法(三):基于量子的鸽群优化算法 智能优化算法(四):基于Powell优化的鸽群优化算法 ...
- 【智能优化算法】基于全局优化的改进鸡群算法求解单目标优化问题(ECSO)附matlab代码
1 简介 智能算法分为两种,一种是群体智能算法(swarmintelligencealgorithm),该算法大多模拟自然界中动植物的特有行为,并将其表达成数学语言,从而进行迭代寻优,如模拟蝙蝠回声定 ...
- 【智能优化算法】基于蝙蝠优化算法求解多目标优化问题附matlab代码
1 内容介绍 蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法.该算法是一种基于迭代的优化技术,初始化为一组随机解,然后 通过迭代 ...
- 【智能优化算法】基于黑寡妇优化算法求解单目标优化问题含Matlab源码
1 简介 本期为大家介绍黑寡妇优化算法(Black Widow Optimization Algorithm,BWO).该算法由Adria´n F. Peña-Delgado等人于2020年提出,主要 ...
- 【智能优化算法】基于融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法求解单目标优化问题附matlab代码
1 简介 针对基本海鸥算法存在的缺陷,提出一种融合改进Logistics混沌和正弦余弦算子的自适应t分布海鸥算法(ISOA).首先,采用改进Logistics混沌映射初始化种群,使海鸥更加均匀地分布于 ...
- 【智能优化算法】基于矮猫鼬优化算法求解单目标优化问题附matlab代码
1 简介 基于矮猫鼬优化算法求解单目标优化问题 2 部分代码 %___________________________________________________________________ ...
- 【智能优化算法】基于自适应策略的混合鲸鱼优化算法求解单目标优化问题附matlab代码
1 简介 针对鲸鱼优化算法在函数优化时存在收敛速度慢,易陷入局部最优等问题,提出了一种基于自适应策略的混合鲸鱼优化算法.该算法中先利用蝙蝠算法的局部搜索机制对当前鲸鱼算法最优解进行高斯扰动产生局部新解 ...
- 【智能优化算法】基于曲线自适应和模拟退火的蝗虫优化算法求解单目标优化问题附matlab代码
1 简介 针对蝗虫优化算法容易陷入局部极值点,收敛速度慢,精度较差等缺点,提出曲线自适应和模拟退火蝗虫优化算法.首先,引入曲线自适应代替蝗虫优化算法关键参数的线性自适应,提高了算法的全局搜索能力;其次 ...
- 【智能优化算法】基于遗传算法实现城市交通信号优化附matlab代码
1 简介 本文设计实时优化的配置方案对道路畅通的应急决策管理具有重要意义.本文在分析交通控制基本理论的基础上,根据交叉口的实际情况并考虑信号灯的转换与车辆的启动损失时间,采用四相位对称式放行方案,以车 ...
- 【智能优化算法】基于蚁狮算法求解多目标问题附Matlab代码
1 简介 蚁狮算法( ALO) 通过对随机解的探索,逐渐寻找近似最优解.与粒子群等优化算法不同的是,在 ALO 算法中有两类种群个体,即蚂蚁和蚁狮.ALO 算法的寻优过程模拟蚁狮捕食的六个基本步骤: ...
最新文章
- 计算摄影 | 计算机如何学会自动裁剪图片(自动构图)?
- FastJson常见问题
- 图片验证码的JAVA工具类
- 【135天】尚学堂高淇Java300集视频精华笔记(74-76)
- DBA用于查询当前数据库表格记录条数的脚本
- vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1
- iOS 如果刷新TableViewCell上得数据是空的 添加尾部暂无数据提示
- Lua元表(Metatable)简易教程
- 宇宙总统(洛谷-P1781)
- activity绑定service
- mysql group日期_MySQL GROUP BY使用datetime时的日期?
- java jxl 复制单元格_如何用JAVA(如poi、jxl等)读取excel文件中的下拉框单元格的值。...
- 【F2FS LFS SSR】华为如何打造智能终端的有趣灵魂?(上)
- 三维扫描仪[10]——如何设计一台云台式扫描仪(代码详解)
- 位置式与增量式PID代码(C语言实现)
- JMeter教程1 - 介绍环境搭建 (Mac)插件安装
- storm各组件特点
- 明翰英语教学系列之方法篇
- BGA焊接可靠性评价指引,为产品质量保驾护航
- 【NOIP2016提高A组模拟9.24】天使的分裂
热门文章
- 2.React学习笔记----修改模板并使用Ant Design
- linux内核打印%us,linux-kernel-使用us计时器跟踪Linux内核,按功能(仅最大)
- java 进制转换 栈 链表_c语言链表栈实现进制转换
- linux 完成量源码,Linux内核中等待队列 和完成量
- java 生成条形码_Springboot生成二维码,怎么搞?
- SQL:postgresql查询、删除名字中包含某些字段的视图
- jQuery特效:动画实现闪烁效果
- RDMA(远程直接数据存取)概述
- screen命令详解
- 自动驾驶_感知_目标检测(激光雷达)