郭德龍 周錦程
【摘 要】在求解積分問(wèn)題時(shí),常常是運(yùn)用微積分的基本定理得到其被積函數(shù)的原函數(shù),之后采用牛頓-萊布尼茨公式完成求解。然而,很多被積函數(shù)的原函數(shù)時(shí)常不可以利用初等函數(shù)來(lái)表示,即便可以表示出,但計(jì)算也相當(dāng)復(fù)雜。因此,本文提出利用細(xì)菌覓食算法再結(jié)合梯形求積公式的思想來(lái)求解數(shù)值積分,即將被積函數(shù)的積分區(qū)間進(jìn)行隨機(jī)分割選取分割點(diǎn),然后將分割點(diǎn)進(jìn)行優(yōu)化求和得到最優(yōu)解。最后數(shù)值仿真實(shí)驗(yàn)結(jié)果表明,求解精度較高、有較快的收斂速度。
【關(guān)鍵詞】細(xì)菌覓食;數(shù)值積分;適應(yīng)度;梯形公式
中圖分類號(hào): TM615 文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 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 引言
在許多工作中經(jīng)常會(huì)遇到數(shù)值積分問(wèn)題,對(duì)于積分I=f(x)dx找到其被積函數(shù)f(x)的原函數(shù)F(x),再運(yùn)用牛頓-萊布尼茨公式進(jìn)行求解。但是許多積分原函數(shù)都不能用初等函數(shù)表達(dá)出來(lái),例如(x=0),e;有些被積函數(shù)的原函數(shù)即使能用初等函數(shù)表達(dá)出來(lái),在計(jì)算時(shí)也十分困難[1],例如f(x)=。求解積分的方式另外有牛頓-科特斯公式、辛普森公式、龍貝格求解公式、復(fù)合求解公式等[1]。在求解時(shí),以上公式均有一個(gè)共用的不足,就是收斂速度慢,精度不高。因此,本文運(yùn)用細(xì)菌覓食算法對(duì)這類問(wèn)題進(jìn)行求解,細(xì)菌覓食算法是等人在2002年給出的一種模擬優(yōu)化計(jì)算方法——細(xì)菌覓食算法(),還被稱作細(xì)菌覓食優(yōu)化算法(,BFOA)[2]。該算法結(jié)合梯形公式的思想,通過(guò)Matlab編程在積分區(qū)間上隨機(jī)選取分割點(diǎn),作為被積函數(shù)計(jì)算的初始群體,然后利用細(xì)菌覓食算法將選取的分割點(diǎn)進(jìn)行優(yōu)化并求和得到最優(yōu)解,該方法在計(jì)算過(guò)程上將傳統(tǒng)公式的缺陷和不足進(jìn)行了改進(jìn),并且能得到較高的結(jié)果。
1 細(xì)菌覓食算法
BFOA重點(diǎn)是模仿大腸桿菌在人類腸道內(nèi)尋找食物的一種仿生優(yōu)化計(jì)算方法。大腸桿菌在尋找食物時(shí),依據(jù)所在處境的物質(zhì)濃度產(chǎn)生遠(yuǎn)離或趨向該環(huán)境的行為,快速選擇并達(dá)到食物豐富的地方。BFOA就是模擬大腸桿菌覓食的一種行為,該行為分為趨向、復(fù)制和遷移三種操作步驟。
(1)趨向性操作:把細(xì)菌往營(yíng)養(yǎng)濃度高的地方匯集的活動(dòng)稱作趨向。在趨向流程中,細(xì)菌的行動(dòng)形式包含翻轉(zhuǎn)與挪動(dòng),把細(xì)菌朝任何方位挪移單個(gè)步長(zhǎng)單位稱作是翻轉(zhuǎn)。假如細(xì)菌做完單次翻轉(zhuǎn)之后所在位置濃度變得更高一些,則細(xì)菌持續(xù)朝著相同方位挪移若干步,此過(guò)程被稱作移動(dòng)[3]。
假如B(j,k,l)體現(xiàn)第i個(gè)菌體的位置,當(dāng)中j代表細(xì)菌趨向性進(jìn)行的數(shù)目,k的含義為細(xì)菌重復(fù)操作數(shù)目,l的意思是細(xì)菌遷移操作次數(shù),那么第j+1次的位置是:B(j+1,k,l)=B(j,k,l)+C(i)Bi(j,k,l)
其中C(i)為翻轉(zhuǎn)和遷移的步長(zhǎng)向量[4]。
(2)復(fù)制操作:細(xì)菌在食物源充足的地區(qū)會(huì)通過(guò)二分裂的方式進(jìn)行繁殖,這一行為定義為復(fù)制。復(fù)制操作遵循“優(yōu)勝劣汰”的原則,當(dāng)趨向操作次數(shù)達(dá)到給定的次數(shù)后,或生命周期結(jié)束后,細(xì)菌進(jìn)行分裂繁殖,設(shè)菌落總數(shù)為N,當(dāng)菌落每更新一個(gè)位置,都有一個(gè)新的適應(yīng)度Fval(i),將趨向操作后細(xì)菌的適應(yīng)值的累加和作為評(píng)價(jià)細(xì)菌優(yōu)劣的標(biāo)準(zhǔn),適應(yīng)值靠后的半數(shù)細(xì)菌死亡,靠前的半數(shù)細(xì)菌進(jìn)行自我復(fù)制操作后,得到的細(xì)菌后代個(gè)體與原來(lái)的細(xì)菌母體具有相同的特性,即同樣的位置、步長(zhǎng)和覓食能力[4]。
(3)遷移操作:當(dāng)細(xì)菌的生存環(huán)境不再適合細(xì)菌生存時(shí),細(xì)菌會(huì)轉(zhuǎn)移到一個(gè)新的環(huán)境中,這一過(guò)程定義為遷移。當(dāng)細(xì)菌的生存環(huán)境受到威脅,如:食物減少、高溫等因素可能導(dǎo)致該區(qū)域的細(xì)菌死亡,發(fā)生這些情況時(shí),細(xì)菌個(gè)體會(huì)根據(jù)一定的概率P隨機(jī)遷移到一個(gè)適合菌落生存的新位置[1]。
該算法的三大操作原理保證了算法的收斂性,加快收斂速度和避免陷入局部最優(yōu)的優(yōu)點(diǎn)。
2 梯形公式思想
如下圖,在f(x)的區(qū)間[a,b]上任取n-1個(gè)節(jié)點(diǎn),將[a,b]分割為n個(gè)小區(qū)間,即:
a=x0 將每個(gè)小區(qū)間[xi-1,xi](i=1,2,…,n)的距離記為d=x=x,這樣就將f(x)、x=a、x=b及x軸圍成的曲邊梯形分割成n個(gè)小曲邊梯形,再求和就得到曲邊梯形的面積[1]: 3 細(xì)菌覓食算法的求解數(shù)值積分的實(shí)現(xiàn)步驟 3.1 算法實(shí)現(xiàn)步驟 假設(shè)dim是搜尋空間維數(shù),N表示細(xì)菌菌落規(guī)模,Nc代表趨向性完成操作的數(shù)目,Nre的含義是重復(fù)操作的數(shù)目,Ned的意思是遷移操作頻次,Ns是細(xì)菌往前挪動(dòng)的步長(zhǎng)最大值,P是細(xì)菌的遷移概率,C(i)為細(xì)菌翻轉(zhuǎn)和遷移的步長(zhǎng),maxiter為最大迭代次數(shù)。 根據(jù)細(xì)菌的生長(zhǎng)繁殖規(guī)律,BFOA的主要步驟如下,: (1)在搜索空間上初始化參數(shù)N,Nc,Nre,Ned,P,令l=0,k=0,j=0。 (2)利用rand函數(shù)在積分區(qū)間隨機(jī)生成一個(gè)N*dim階矩陣,初始化每個(gè)細(xì)菌的位置。隨機(jī)生成N個(gè)細(xì)菌個(gè)體,每個(gè)個(gè)體相當(dāng)于一個(gè)分割節(jié)點(diǎn): pop=rand(N,dim)*(rp-lp)+lp 其中,將dim定義為搜索空間的維數(shù),lp為積分區(qū)間的左端點(diǎn),rp為積分區(qū)間右端點(diǎn)。 (3)計(jì)算適應(yīng)度:細(xì)菌每移動(dòng)一個(gè)新的位置都會(huì)產(chǎn)生一個(gè)適應(yīng)度值,當(dāng)數(shù)值積分的值接近或者等于精確值時(shí),其適應(yīng)度值良好。定義適應(yīng)度函數(shù)為F(i)=-S-S,S為目標(biāo)函數(shù)積分的精確值,S為本文算法對(duì)目標(biāo)函數(shù)積分所得的值。 細(xì)菌之間的距離為節(jié)點(diǎn)i與節(jié)點(diǎn)i+1之間的距離,即d(i)=abs(pop(i+1)-pop(i)),pop為積分區(qū)間上的位置矩陣。 (4)執(zhí)行細(xì)菌三層循環(huán)操作: ①如果j ②如果k ③假如l (5)反復(fù)執(zhí)行第四步,直到達(dá)到終止條件。 (6)條件終止時(shí),得到的結(jié)果便是群體最優(yōu)解。 4 數(shù)值實(shí)驗(yàn) 4.1 數(shù)值實(shí)例 本文選取一些具有代表性的例子來(lái)驗(yàn)證該算法的有效性和正確性,并與傳統(tǒng)算法進(jìn)行對(duì)比,驗(yàn)證本文算法的有效性。 該數(shù)值實(shí)驗(yàn)在以下硬件環(huán)境中進(jìn)行:CPU:Intel(R) Core(TM)i5-3230MCPU@2.60GHz2.60GHz ?內(nèi)存:4.00GB ?操作系統(tǒng):Windows7 ?系統(tǒng)類型:64位 ?程序執(zhí)行軟件:MATLAB R2014a。 參數(shù)設(shè)置:細(xì)菌總數(shù)N=100,趨化步驟數(shù)Nc=8,復(fù)制次數(shù)Nre=4,向前游動(dòng)的最大步長(zhǎng)數(shù)為Ns=2,細(xì)菌的遷移概率為Ped=5,最大迭代maxiter=20,翻轉(zhuǎn)或移動(dòng)的步長(zhǎng)為C(i)=0.2。 4.2 結(jié)果分析 從表1、表2、表3可知,該算法得到的結(jié)果與精確值的誤差很小,且結(jié)果優(yōu)于梯形公式算法和辛普森算法,說(shuō)明該算法與傳統(tǒng)算法比較更精確且有效。從例2、例3可得出,就算被積函數(shù)的原函數(shù)十分復(fù)雜,或者不存在,對(duì)于該算法來(lái)說(shuō)積分的計(jì)算也是可行的,而且本算法得到的結(jié)果與精確值誤差很小,而且從圖1至圖6可以看出,積分最后的結(jié)果都趨于穩(wěn)定。 5 結(jié)束語(yǔ) 本文給出的BFOA結(jié)合梯形公式求解數(shù)值積分方法,該方法在傳統(tǒng)的積分方法上進(jìn)行了改進(jìn)。數(shù)值實(shí)驗(yàn)結(jié)果表明,該方法得到的結(jié)果逼近精確值,值得推廣,但是在收斂速度的精度上還可以進(jìn)一步優(yōu)化和提高。 【參考文獻(xiàn)】 [1]李慶楊,王能超,易大義.數(shù)值分析[M].北京:清華大學(xué)出版社,2008. [2]Passino K M.Biomimicry of bacterial foraging for distributed optimization and control[J].IEEE Control S ystems Magazine,2002,22. [3]郭德龍,羅瓊,羅澤龍,周永權(quán).求數(shù)值積分的一種新算法[J].2014,34(2):95-97. [4]楊大煉,李學(xué)軍,蔣玲莉.一種細(xì)菌覓食算法的改進(jìn)及其應(yīng)用[J].2012,48(13):31-34. [5]周雅蘭,細(xì)菌覓食算法的研究與應(yīng)用[D].2010,46(20):16-21.