APP下载

基于细菌觅食算法求数值积分

2019-09-02郭德龙周锦程

科技视界 2019年10期
关键词:数值积分适应度

郭德龙 周锦程

【摘 要】在求解积分问题时,常常是运用微积分的基本定理得到其被积函数的原函数,之后采用牛顿-莱布尼茨公式完成求解。然而,很多被积函数的原函数时常不可以利用初等函数来表示,即便可以表示出,但计算也相当复杂。因此,本文提出利用细菌觅食算法再结合梯形求积公式的思想来求解数值积分,即将被积函数的积分区间进行随机分割选取分割点,然后将分割点进行优化求和得到最优解。最后数值仿真实验结果表明,求解精度较高、有较快的收敛速度。

【关键词】细菌觅食;数值积分;适应度;梯形公式

中图分类号: TM615 文献标识码: A文章编号: 2095-2457(2019)10-0112-003

DOI:10.19694/j.cnki.issn2095-2457.2019.10.047

Numerical Integration Based on Bacterial Foraging Algorithm.

GUO De-long1,2 ZHOU Jin-cheng1,2

(1.School of Mathematics and Statistics Qiannan Normal University for Nationalities,

Duyun Guizhou 558000,China)

(2.Key Laboratory of Complex Systems and Intelligent Computing,School of Mathematics and Statistics,

Duyun Guizhou 558000,China)

【Abstract】In solving the problem of integral,the original function of the integrand is often obtained by using the basic theorem of calculus,and then the Newton Leibniz formula is used to solve the problem.However,many primitive functions of integrable functions are often not expressed by elementary functions.Even though they can be expressed, computation is quite complicated.Therefore,this paper proposes to use the thought of the bacterial foraging algorithm and the trapezoid quadrature formula to solve the numerical integration,and then the integral interval of the integrand is randomly divided into the segmentation points,and then the optimal solution is obtained by optimizing the segmentation points. Finally, the numerical simulation results show that the algorithm has high accuracy and fast convergence speed.

【Key words】Bacterial foraging;Numerical integration;Fitness;Trapezoid formula

0 引言

在許多工作中经常会遇到数值积分问题,对于积分I=f(x)dx找到其被积函数f(x)的原函数F(x),再运用牛顿-莱布尼茨公式进行求解。但是许多积分原函数都不能用初等函数表达出来,例如(x=0),e;有些被积函数的原函数即使能用初等函数表达出来,在计算时也十分困难[1],例如f(x)=。求解积分的方式另外有牛顿-科特斯公式、辛普森公式、龙贝格求解公式、复合求解公式等[1]。在求解时,以上公式均有一个共用的不足,就是收敛速度慢,精度不高。因此,本文运用细菌觅食算法对这类问题进行求解,细菌觅食算法是等人在2002年给出的一种模拟优化计算方法——细菌觅食算法(),还被称作细菌觅食优化算法(,BFOA)[2]。该算法结合梯形公式的思想,通过Matlab编程在积分区间上随机选取分割点,作为被积函数计算的初始群体,然后利用细菌觅食算法将选取的分割点进行优化并求和得到最优解,该方法在计算过程上将传统公式的缺陷和不足进行了改进,并且能得到较高的结果。

1 细菌觅食算法

BFOA重点是模仿大肠杆菌在人类肠道内寻找食物的一种仿生优化计算方法。大肠杆菌在寻找食物时,依据所在处境的物质浓度产生远离或趋向该环境的行为,快速选择并达到食物丰富的地方。BFOA就是模拟大肠杆菌觅食的一种行为,该行为分为趋向、复制和迁移三种操作步骤。

(1)趋向性操作:把细菌往营养浓度高的地方汇集的活动称作趋向。在趋向流程中,细菌的行动形式包含翻转与挪动,把细菌朝任何方位挪移单个步长单位称作是翻转。假如细菌做完单次翻转之后所在位置浓度变得更高一些,则细菌持续朝着相同方位挪移若干步,此过程被称作移动[3]。

假如B(j,k,l)体现第i个菌体的位置,当中j代表细菌趋向性进行的数目,k的含义为细菌重复操作数目,l的意思是细菌迁移操作次数,那么第j+1次的位置是:B(j+1,k,l)=B(j,k,l)+C(i)Bi(j,k,l)

其中C(i)为翻转和迁移的步长向量[4]。

(2)复制操作:细菌在食物源充足的地区会通过二分裂的方式进行繁殖,这一行为定义为复制。复制操作遵循“优胜劣汰”的原则,当趋向操作次数达到给定的次数后,或生命周期结束后,细菌进行分裂繁殖,设菌落总数为N,当菌落每更新一个位置,都有一个新的适应度Fval(i),将趋向操作后细菌的适应值的累加和作为评价细菌优劣的标准,适应值靠后的半数细菌死亡,靠前的半数细菌进行自我复制操作后,得到的细菌后代个体与原来的细菌母体具有相同的特性,即同样的位置、步长和觅食能力[4]。

(3)迁移操作:当细菌的生存环境不再适合细菌生存时,细菌会转移到一个新的环境中,这一过程定义为迁移。当细菌的生存环境受到威胁,如:食物减少、高温等因素可能导致该区域的细菌死亡,发生这些情况时,细菌个体会根据一定的概率P随机迁移到一个适合菌落生存的新位置[1]。

该算法的三大操作原理保证了算法的收敛性,加快收敛速度和避免陷入局部最优的优点。

2 梯形公式思想

如下图,在f(x)的区间[a,b]上任取n-1个节点,将[a,b]分割为n个小区间,即:

a=x0

将每个小区间[xi-1,xi](i=1,2,…,n)的距离记为d=x=x,这样就将f(x)、x=a、x=b及x轴围成的曲边梯形分割成n个小曲边梯形,再求和就得到曲边梯形的面积[1]:

3 细菌觅食算法的求解数值积分的实现步骤

3.1 算法实现步骤

假设dim是搜寻空间维数,N表示细菌菌落规模,Nc代表趋向性完成操作的数目,Nre的含义是重复操作的数目,Ned的意思是迁移操作频次,Ns是细菌往前挪动的步长最大值,P是细菌的迁移概率,C(i)为细菌翻转和迁移的步长,maxiter为最大迭代次数。

根据细菌的生长繁殖规律,BFOA的主要步骤如下,:

(1)在搜索空间上初始化参数N,Nc,Nre,Ned,P,令l=0,k=0,j=0。

(2)利用rand函数在积分区间随机生成一个N*dim阶矩阵,初始化每个细菌的位置。随机生成N个细菌个体,每个个体相当于一个分割节点:

pop=rand(N,dim)*(rp-lp)+lp

其中,将dim定义为搜索空间的维数,lp为积分区间的左端点,rp为积分区间右端点。

(3)计算适应度:细菌每移动一个新的位置都会产生一个适应度值,当数值积分的值接近或者等于精确值时,其适应度值良好。定义适应度函数为F(i)=-S-S,S为目标函数积分的精确值,S为本文算法对目标函数积分所得的值。

细菌之间的距离为节点i与节点i+1之间的距离,即d(i)=abs(pop(i+1)-pop(i)),pop为积分区间上的位置矩阵。

(4)执行细菌三层循环操作:

①如果j

②如果k

③假如l

(5)反复执行第四步,直到达到终止条件。

(6)條件终止时,得到的结果便是群体最优解。

4 数值实验

4.1 数值实例

本文选取一些具有代表性的例子来验证该算法的有效性和正确性,并与传统算法进行对比,验证本文算法的有效性。

该数值实验在以下硬件环境中进行:CPU:Intel(R) Core(TM)i5-3230MCPU@2.60GHz2.60GHz  内存:4.00GB  操作系统:Windows7  系统类型:64位  程序执行软件:MATLAB R2014a。

参数设置:细菌总数N=100,趋化步骤数Nc=8,复制次数Nre=4,向前游动的最大步长数为Ns=2,细菌的迁移概率为Ped=5,最大迭代maxiter=20,翻转或移动的步长为C(i)=0.2。

4.2 结果分析

从表1、表2、表3可知,该算法得到的结果与精确值的误差很小,且结果优于梯形公式算法和辛普森算法,说明该算法与传统算法比较更精确且有效。从例2、例3可得出,就算被积函数的原函数十分复杂,或者不存在,对于该算法来说积分的计算也是可行的,而且本算法得到的结果与精确值误差很小,而且从图1至图6可以看出,积分最后的结果都趋于稳定。

5 结束语

本文给出的BFOA结合梯形公式求解数值积分方法,该方法在传统的积分方法上进行了改进。数值实验结果表明,该方法得到的结果逼近精确值,值得推广,但是在收敛速度的精度上还可以进一步优化和提高。

【参考文献】

[1]李庆杨,王能超,易大义.数值分析[M].北京:清华大学出版社,2008.

[2]Passino K M.Biomimicry of bacterial foraging for distributed optimization and control[J].IEEE Control S ystems Magazine,2002,22.

[3]郭德龙,罗琼,罗泽龙,周永权.求数值积分的一种新算法[J].2014,34(2):95-97.

[4]杨大炼,李学军,蒋玲莉.一种细菌觅食算法的改进及其应用[J].2012,48(13):31-34.

[5]周雅兰,细菌觅食算法的研究与应用[D].2010,46(20):16-21.

猜你喜欢

数值积分适应度
基于计算前沿面的实时仿真数值积分并行构造及其数值模型解耦加速方法
改进的自适应复制、交叉和突变遗传算法
一种基于改进适应度的多机器人协作策略
Euler梁弯曲分析的无网格高阶曲率光顺方案
基于辛普生公式的化工实验中列表函数的一种积分方法
基于空调导风板成型工艺的Kriging模型适应度研究
自适应遗传算法
少数民族大学生文化适应度调查
自适应遗传算法的改进与应用*