天牛須和貪心演算法 天牛須演算法

2021-10-18 18:09:28 字數 2318 閱讀 1876

【例項簡介】

仿生原理

天牛須搜尋是受到天牛覓食原理啟發而開發的演算法

天牛須搜尋的生物原理:

當天牛覓食時,天牛並不知道實物在**,而是根據

食物氣味的強弱來覓食。天牛有兩隻長觸角,如果

左邊觸角收到的氣味強度比右邊大,那下一步天牛

就往左飛,否則就往右飛。依據這一簡單原理天牛

就可以有效找到食物。

天牛須搜尋對我們的啟發:

食物的氣味就相當於乙個函式,這個函式在三維空間

每個點值都不同,天牛兩個須可以採集自身附近兩點

的氣味值,天牛的目的是找到仝局氣味值最大的點

仿照天牛的行為,我們就可以高效的進行函式尋優

仿生原理

天牛尋找食物**

真的再吃,會胖

右須訊號強,右運動

右須訊號強,右運動

左須訊號強左運動

右須訊號強,右運動

左須訊號強,左運動

出發吧,沿著

香味的方向,

去尋找披薩

演算法·天牛在三維空間運動,而天牛須搜尋需要對任意維

函式都有效才可以。因而,天牛須搜尋是對天牛生

物行為在任意維空間的推廣

●我們採用如下的簡化模型假設描述天牛:

1.天牛左右兩須位於質心兩邊

2天牛步長step與兩須之間距離d0的比是個固定常數即

step=c*d0其中c是常數。即,大天牛(兩須距離長)走大步

小天牛走小步。

天牛質心

3.天牛飛到下一步後,頭的朝向是隨機的

天牛左須

天牛右須

簡化模型

兩須之間的距離d0

建模(n維空間函式f最小化)

°第一步:對於乙個n維空間的優化問題,我們用xl表

示左須座標,xr表示右須座標,x表示質心座標,用

d0表示兩須之間距離。根據假設3,天牛頭朝向任意

因而從天牛右須指向左須的向量的朝向也是任意的

所以可以產生乙個隨機向量dir= rands(m,1)來表示它

對此歸一化:dir=dir/norm(dir);我們這樣可以得到

xl-xr=d0dir;顯然,xl,x還可以表示成質心的表

達式:xl=x+d0*dir/2;xr=x-d0*dir/2

天牛質心

天牛左須

天牛右須

簡化模型

兩須之間的距離d0

建模●第二步:對於待優化函式f,求取左右兩須的值:

eft-f(x); fright=f(xr);判斷兩個值大小,

口如果為了探尋的最小值,則天牛向著左須

方向行進距離

口如果為了探尋的最小值,則天牛向著右須

方向行進距離

口如上兩種情況可以採用符號函式統一寫成:

(注:其中

是歸一化函式)

建模基本步驟就這兩步。總結下:

odir= rands(n,1);dir=dir/norm(dir);%須的方向

xl=x+d0*dir/2;xr=x-d0*dir/2.%須的座標

迴圈迭o fleft=f(xl); fright=f(xr);%須的氣味強度

*dir

%下一步位置

◆幾點說明:

核心**如上,只有行

實用中可以設定可變步長,由於假設中我們認為

其中是常數,變

步長意味著

為變化的

關於步長

◆關於變步長,推薦如下兩種:

每步迭代中採用

,其中在之間靠近,通常可取

引入新變數和最終解析度

◆關於初始步長:初始步長可以盡可能大,最好與自變數最大長度相當

matlab程式

function bas(

● clear

allclose a

6初始化部分

eta=0.95;

e c=5 ratio between step and do

o step=1: initial step set as the largest input range

n=100. iterations

o k=20 space dimension

x=rands(k, 1);%/intial value

xbest=x

e fbest=f(xbest)

● tbest store≡ tbest;

x_store=[0; x; tbest]

isplay([o: ',xbest=[, num2str(xbest ), 1, fbest=, num2str(fbest)1)

【例項截圖】

【核心**】

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...

演算法 貪心演算法

貪心演算法,又稱貪婪演算法 greedy algorithm 是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優解出發來考慮,它所做出的僅是在某種意義上的區域性最優解。貪婪演算法是一種分階段的工作,在每乙個階段,可以認為所做決定是最好的,而不考慮將來的後果。這種 眼下能夠拿到...