複製鏈接
請複製以下鏈接發送給好友

智能算法

鎖定
“智能算法”是指在工程實踐中,經常會接觸到一些比較“新穎”的算法或理論,比如模擬退火遺傳算法禁忌搜索神經網絡天牛須搜索算法麻雀搜索算法,蜣螂優化算法等。這些算法或理論都有一些共同的特性(比如模擬自然過程。它們在解決一些複雜的工程問題時大有用武之地。
中文名
智能算法
所屬學科
工程

智能算法智能算法研究

這些算法都有什麼含義?首先給出個局部搜索,模擬退火,遺傳算法,禁忌搜索的形象比喻:
為了找出地球上最高的山,一羣有志氣的兔子們開始想辦法。
1.兔子朝着比現在高的地方跳去。他們找到了不遠處的最高山峯。但是這座山不一定是珠穆朗瑪峯。這就是局部搜索,它不能保證局部最優值就是全局最優值
2.兔子喝醉了。他隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,他漸漸清醒了並朝最高方向跳去。這就是模擬退火。
3.兔子們吃了失憶藥片,並被髮射到太空,然後隨機落到了地球上的某些地方。他們不知道自己的使命是什麼。但是,如果你過幾年就殺死一部分海拔低的兔子,多產的兔子們自己就會找到珠穆朗瑪峯。這就是遺傳算法
4.子們知道一個兔的力量是渺小的。他們互相轉告着,哪裏的山已經找過,並且找過的每一座山他們都留下一隻兔子做記號。他們制定了下一步去哪裏尋找的策略。這就是禁忌搜索

智能算法智能算法概述

智能優化算法要解決的一般是最優化問題。最優化問題可以分為(1)求解一個函數中,使得函數值最小的自變量取值的函數優化問題和(2)在一個解空間裏面,尋找最優解,使目標函數值最小的組合優化問題。典型的組合優化問題有:旅行商問題(Traveling Salesman Problem,TSP),加工調度問題(Scheduling Problem),0-1揹包問題(Knapsack Problem),以及裝箱問題(Bin Packing Problem)等。
優化算法有很多,經典算法包括:有線性規劃動態規劃等;改進型局部搜索算法包括爬山法最速下降法等,本文介紹的模擬退火、遺傳算法以及禁忌搜索稱作指導性搜索法。而神經網絡,混沌搜索則屬於系統動態演化方法。
優化思想裏面經常提到鄰域函數,它的作用是指出如何由當前解得到一個(組)新解。其具體實現方式要根據具體問題分析來定。
一般而言,局部搜索就是基於貪婪思想利用鄰域函數進行搜索,若找到一個比現有值更優的解就棄前者而取後者。但是,它一般只可以得到“局部極小解”,就是説,可能這隻兔子登“登泰山而小天下”,但是卻沒有找到珠穆朗瑪峯。而模擬退火,遺傳算法,禁忌搜索,神經網絡等從不同的角度和策略實現了改進,取得較好的“全局最小解”。

智能算法算法分類

智能算法模擬退火算法

模擬退火算法的依據是固體物質退火過程和組合優化問題之間的相似性。物質在加熱的時候,粒子間的布朗運動增強,到達一定強度後,固體物質轉化為液態,這個時候再進行退火,粒子熱運動減弱,並逐漸趨於有序,最後達到穩定。
模擬退火的解不再像局部搜索那樣最後的結果依賴初始點。它引入了一個接受概率p。如果新的點(設為pn)的目標函數f(pn)更好,則p=1,表示選取新點;否則,接受概率p是當前點(設為pc)的目標函數f(pc),新點的目標函數f(pn)以及另一個控制參數“温度”T的函數。也就是説,模擬退火沒有像局部搜索那樣每次都貪婪地尋找比現在好的點,目標函數差一點的點也有可能接受進來。隨着算法的執行,系統温度T逐漸降低,最後終止於某個低温,在該温度下,系統不再接受變化。
模擬退火的典型特徵是除了接受目標函數的改進外,還接受一個衰減極限,當T較大時,接受較大的衰減,當T逐漸變小時,接受較小的衰減,當T為0時,就不再接受衰減。這一特徵意味着模擬退火與局部搜索相反,它能避開局部極小,並且還保持了局部搜索的通用性和簡單性。
在物理上,先加熱,讓分子間互相碰撞,變成無序狀態,內能加大,然後降温,最後的分子次序反而會更有序,內能比沒有加熱前更小。就像那隻兔子,它喝醉後,對比較近的山峯視而不見,迷迷糊糊地跳一大圈子,反而更有可能找到珠峯。
值得注意的是,當T為0時,模擬退火就成為局部搜索的一個特例。
模擬退火的偽碼表達:
procedure simulated annealing
begin
t:=0;
initialize temperature T
select a current string vc at random;
evaluate vc;
repeat
repeat
select a new string vn in the neighborhood of vc; (1)
if f(vc)<f(vn)
then vc:=vn;
else if random [0,1] <exp ((f (vn)-f (vc))/T) (2)
then vc:=vn;
until (termination-condition) (3)
T:=g(T,t); (4)
T:=t+1;
until (stop-criterion) (5)
end;
上面的程序中,關鍵的是(1)新狀態產生函數,(2)新狀態接受函數,(3)抽樣穩定準則,(4)退温函數,(5)退火結束準則(簡稱三函數兩準則)是直接影響優化結果的主要環節。雖然實驗結果證明初始值對於最後的結果沒有影響,但是初温越高,得到高質量解的概率越大。所以,應該儘量選取比較高的初温。
上面關鍵環節的選取策略:
(1)狀態產生函數:候選解由當前解的鄰域函數決定,可以取互換,插入,逆序等操作產生,然後根據概率分佈方式選取新的解,概率可以取均勻分佈正態分佈、高斯分佈、柯西分佈等。
(2)狀態接受函數:這個環節最關鍵,但是,實驗表明,何種接受函數對於最後結果影響不大。所以,一般選取min [1, exp ((f (vn)-f (vc))/T)]。
(3)抽樣穩定準則:一般常用的有:檢驗目標函數的均值是否穩定;連續若干步的目標值變化較小;規定一定的步數;
(4)退温函數:如果要求温度必須按照一定的比率下降,SA算法可以採用,但是温度下降很慢;快速SA中,一般採用 。經常用的是 ,是一個不斷變化的值。
(5)退火結束準則:一般有:設置終止温度;設置迭代次數;搜索到的最優值連續多次保持不變;檢驗系統熵是否穩定。
為了保證有比較優的解,算法往往採取慢降温、多抽樣、以及把“終止温度”設的比較低等方式,導致算法運行時間比較長,這也是模擬退火的最大缺點。人喝醉了酒辦起事來都不利索,何況兔子?

智能算法遺傳算法

物競天擇,適者生存”,是進化論的基本思想。遺傳算法就是模擬自然界想做的事。遺傳算法可以很好地用於優化問題,若把它看作對自然過程高度理想化的模擬,更能顯出它本身的優雅——雖然生存競爭是殘酷的。
遺傳算法以一種羣體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了遺傳算法的遺傳操作參數編碼、初始羣體的設定、適應度函數的設計、遺傳操作設計、控制參數設定五個要素組成了遺傳算法的核心內容。作為一種新的全局優化搜索算法,遺傳算法以其簡單通用、健壯性強、適於並行處理以及高效、實用等顯著特點,在各個領域得到了廣泛應用,取得了良好效果,並逐漸成為重要的智能算法之一。
遺傳算法的偽碼:
procedure genetic algorithm
begin
initialize a group and evaluate the fitness value ; (1)
while not convergent (2)
begin
select; (3)
if random[0,1]<pc then
crossover; (4)
if random (0,1)<pm then
mutation; (5)
end;
end
上述程序中有五個重要的環節:
(1)編碼和初始羣體的生成:GA在進行搜索之前先將解空間的解數據表示成遺傳空間的基因型串結構數據,這些串結構數據的不同組合便構成了不同的點。然後隨機產生N個初始串結構數據,每個串結構數據稱為一個個體, N個體構成了一個羣體。GA以這N個串結構數據作為初始點開始迭代。
比如,旅行商問題中,可以把商人走過的路徑進行編碼,也可以對整個圖矩陣進行編碼。編碼方式依賴於問題怎樣描述比較好解決。初始羣體也應該選取適當,如果選取的過小則雜交優勢不明顯,算法性能很差(數量上佔了優勢的老鼠進化能力比老強),羣體選取太大則計算量太大。
(2)檢查算法收斂準則是否滿足,控制算法是否結束。可以採用判斷與最優解的適配度或者定一個迭代次數來達到。
(3)適應性值評估檢測和選擇:適應性函數表明個體或解的優劣性,在程序的開始也應該評價適應性,以便和以後的做比較。不同的問題,適應性函數的定義方式也不同。根據適應性的好壞,進行選擇。選擇的目的是為了從當前羣體中選出優良的個體,使它們有機會作為父代為下一代繁殖子孫。遺傳算法通過選擇過程體現這一思想,進行選擇的原則是適應性強的個體為下一代貢獻一個或多個後代的概率大。選擇實現了達爾文的適者生存原則。
(4)雜交:按照雜交概率(pc)進行雜交。雜交操作是遺傳算法中最主要的遺傳操作。通過雜交操作可以得到新一代個體,新個體組合了其父輩個體的特性。雜交體現了信息交換的思想。
可以選定一個點對染色體串進行互換,插入,逆序等雜交,也可以隨機選取幾個點雜交。雜交概率如果太大,種羣更新快,但是高適應性的個體很容易被淹沒,概率小了搜索會停滯。
(5)變異:按照變異概率(pm)進行變異。變異首先在羣體中隨機選擇一個個體,對於選中的個體以一定的概率隨機地改變串結構數據中某個串的值。同生物界一樣,GA中變異發生的概率很低。變異為新個體的產生提供了機會。
變異可以防止有效基因的缺損造成的進化停滯。比較低的變異概率就已經可以讓基因不斷變更,太大了會陷入隨機搜索。想一下,生物界每一代都和上一代差距很大,會是怎樣的可怕情形。
就像自然界的變異適和任何物種一樣,對變量進行了編碼的遺傳算法沒有考慮函數本身是否可導,是否連續等性質,所以適用性很強;並且,它開始就對一個種羣進行操作,隱含了並行性,也容易找到“全局最優解”。

智能算法禁忌搜索算法

為了找到“全局最優解”,就不應該執着於某一個特定的區域。局部搜索的缺點就是太貪婪地對某一個局部區域以及其鄰域搜索,導致一葉障目,不見泰山。禁忌搜索就是對於找到的一部分局部最優解,有意識地避開它(但不是完全隔絕),從而獲得更多的搜索區間。兔子們找到了泰山,它們之中的一隻就會留守在這裏,其他的再去別的地方尋找。就這樣,一大圈後,把找到的幾個山峯一比較,珠穆朗瑪峯脱穎而出。
當兔子們再尋找的時候,一般地會有意識地避開泰山,因為他們知道,這裏已經找過,並且有一隻兔子在那裏看着了。這就是禁忌搜索中“禁忌表(tabu list)”的含義。那隻留在泰山的兔子一般不會就安家在那裏了,它會在一定時間後重新回到找最高峯的大軍,因為這個時候已經有了許多新的消息,泰山畢竟也有一個不錯的高度,需要重新考慮,這個歸隊時間,在禁忌搜索裏面叫做“禁忌長度(tabu length)”;如果在搜索的過程中,留守泰山的兔子還沒有歸隊,但是找到的地方全是華北平原等比較低的地方,兔子們就不得不再次考慮選中泰山,也就是説,當一個有兔子留守的地方優越性太突出,超過了“best to far”的狀態,就可以不顧及有沒有兔子留守,都把這個地方考慮進來,這就叫“特赦準則(aspiration criterion)”。這三個概念是禁忌搜索和一般搜索準則最不同的地方,算法的優化也關鍵在這裏。
偽碼錶達:
procedure tabu search;
begin
initialize a string vc at random,clear up the tabu list;
cur:=vc;
repeat
select a new string vn in the neighborhood of vc;
if va>best_to_far then {va is a string in the tabu list}
begin
cur:=va;
let va take place of the oldest string in the tabu list;
best_to_far:=va;
end else
begin
cur:=vn;
let vn take place of the oldest string in the tabu list;
end;
until (termination-condition);
end;
以上程序中有關鍵的幾點:
(1)禁忌對象:可以選取當前的值(cur)作為禁忌對象放進tabu list,也可以把和當前值在同一“等高線”上的都放進tabu list。
(2)為了降低計算量,禁忌長度和禁忌表的集合不宜太大,但是禁忌長度太小容易循環搜索,禁忌表太小容易陷入“局部極優解”。
(3)上述程序段中對best_to_far的操作是直接賦值為最優的“解禁候選解”,但是有時候會出現沒有大於best_to_far的,候選解也全部被禁的“死鎖”狀態,這個時候,就應該對候選解中最佳的進行解禁,以能夠繼續下去。
(4)終止準則:和模擬退火,遺傳算法差不多,常用的有:給定一個迭代步數;設定與估計的最優解的距離小於某個範圍時,就終止搜索;當與最優解的距離連續若干步保持不變時,終止搜索;
禁忌搜索是對人類思維過程本身的一種模擬,它通過對一些局部最優解的禁忌(也可以説是記憶)達到接納一部分較差解,從而跳出局部搜索的目的。

智能算法人工神經網絡

人工神經網絡(Artificial Neural Network,ANN
神經網絡從名字就知道是對人腦的模擬。它的神經元結構,它的構成與作用方式都是在模仿人腦,但是也僅僅是粗糙的模仿,遠沒有達到全面的地步。和馮·諾依曼機不同,神經網絡計算非數字,非精確,高度並行,並且有自學習功能。
生命科學中,神經細胞一般稱作神經元,它是整個神經結構的最基本單位。每個神經細胞就像一條胳膊,其中像手掌的地方含有細胞核,稱作細胞體,像手指的稱作樹突,是信息的輸入通路,像手臂的稱作軸突,是信息的輸出通路;神經元之間錯綜複雜地連在一起,互相之間傳遞信號,而傳遞的信號可以導致神經元電位的變化,一旦電位高出一定值,就會引起神經元的激發,此神經元就會通過軸突傳出電信號
而如果要用計算機模仿生物神經,就需要人工的神經網絡有三個要素:(1)形式定義人工神經元;(2)給出人工神經元的連接方式,或者説給出網絡結構;(3)給出人工神經元之間信號強度的定義。
歷史上第一個人工神經網絡模型稱作M-P模型,非常簡單:
其中,表示神經元i在t時刻的狀態,為1表示激發態,為0表示抑制態;是神經元i和j之間的連接強度;表示神經元i的閾值,超過這個值神經元才能激發。
這個模型是最簡單的神經元模型。但是功能已經非常強大:此模型的發明人McCulloch和Pitts已經證明,不考慮速度和實現的複雜性,它可以完成當前數字計算機的任何工作。
以上這個M-P模型僅僅是一層的網絡,如果從對一個平面進行分割的方面來考慮的話,M-P網絡只能把一個平面分成個半平面,卻不能夠選取特定的一部分。而解決的辦法就是“多層前向網路”。
為了讓這種網絡有合適的權值,必須給網絡一定的激勵,讓它自己學習,調整。一種方法稱作“向後傳播算法(Back Propagation,BP)”,其基本思想是考察最後輸出解和理想解的差異,調整權值,並把這種調整從輸出層開始向後推演,經過中間層,達到輸入層
可見,神經網絡是通過學習來達到解決問題的目的,學習沒有改變單個神經元的結構和工作方式,單個神經元的特性和要解決的問題之間也沒有直接聯繫,這裏學習的作用是根據神經元之間激勵與抑制的關係,改變它們的作用強度。學習樣本中的任何樣品的信息都包含在網絡的每個權值之中。
BP算法中有考察輸出解和理想解差異的過程,假設差距為w,則調整權值的目的就是為了使得w最小化。這就又包含了前文所説的“最小值”問題。一般的BP算法採用的是局部搜索,比如最速下降法,牛頓法等,當然如果想要得到全局最優解,可以採用模擬退火,遺傳算法等。當前向網絡採用模擬退火算法作為學習方法的時候,一般成為“波爾茲曼網絡”,屬於隨機性神經網絡。
在學習BP算法學習的過程中,需要已經有一部分確定的值作為理想輸出,這就好像中學生在學習的時候,有老師的監督。如果沒有了監督,人工神經網絡該怎麼學習?
就像沒有了宏觀調控,自由的市場引入了競爭一樣,有一種學習方法稱作“無監督有競爭的學習”。在輸入神經元i的若干個神經元之間開展競爭,競爭之後,只有一個神經元為1,其他均為0,而對於失敗的神經元,調整使得向對競爭有利的方向移動,則最終也可能在一次競爭中勝利;
人工神經網絡還有反饋網絡如Hopfield網絡,它的神經元的信號傳遞方向是雙向的,並且引入一個能量函數,通過神經元之間不斷地相互影響,能量函數值不斷下降,最後能給出一個能量比較低的解。這個思想和模擬退火差不多。
人工神經網絡應用到算法上時,其正確率和速度與軟件的實現聯繫不大,關鍵的是它自身的不斷學習。這種思想已經和馮·諾依曼模型很不一樣。

智能算法粒子羣算法

粒子羣優化算法(PSO)是一種進化計算技術(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源於對鳥羣捕食的行為研究 。該算法最初是受到飛鳥集羣活動的規律性啓發,進而利用羣體智能建立的一個簡化模型。粒子羣算法在對動物集羣活動行為觀察基礎上,利用羣體中的個體對信息的共享使整個羣體的運動在問題求解空間中產生從無序到有序的演化過程,從而獲得最優解。
PSO同遺傳算法類似,是一種基於迭代的優化算法。系統初始化為一組隨機解,通過迭代搜尋最優值。但是它沒有遺傳算法用的交叉(crossover)以及變異(mutation),而是粒子在解空間追隨最優的粒子進行搜索。同遺傳算法比較,PSO的優勢在於簡單容易實現並且沒有許多參數需要調整。已廣泛應用於函數優化,神經網絡訓練,模糊系統控制以及其他遺傳算法的應用領域
PSO模擬鳥羣的捕食行為。設想這樣一個場景:一羣鳥在隨機搜索食物。在這個區域裏只有一塊食物。所有的鳥都不知道食物在那裏。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋離食物最近的鳥的周圍區域。
PSO從這種模型中得到啓示並用於解決優化問題。PSO中,每個優化問題的解都是搜索空間中的一隻鳥。我們稱之為“粒子”。所有的粒子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜索。
PSO 初始化為一羣隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個"極值"來更新自己。第一個就是粒子本身所找到的最優解,這個解叫做個體極值pBest。另一個極值是整個種羣找到的最優解,這個極值是全局極值gBest。另外也可以不用整個種羣而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是局部極值

智能算法天牛須搜索算法

天牛須搜索算法(Beetle Antennae Search Algorithm,BAS)
天牛須搜索算法是一種生物啓發的智能優化算法,是受到天牛覓食原理啓發而開發的算法,其仿生原理如下:
當天牛覓食時,天牛並不知道實物在哪裏,而是根據食物氣味的強弱來覓食。天牛有兩隻長觸角,如果左邊觸角收到的氣味強度比右邊大,那下一步天牛就往左飛,否則就往右飛,依據這一原理天牛可以找到食物。
食物的氣味就相當於一個函數,這個函數在三維空間每個點值都不同,天牛兩個須可以採集自身附近兩點的氣味值,天牛的目的是找到全局氣味值最大的點(即食物所在位置)。仿照天牛的行為,我們設計了該智能優化算法進行函數最優化求解。
天牛須搜索算法核心代碼:
dir=rands(k,1);dir=dir/norm(dir);%須的方向
xleft=x+dir*d0/2;xright=x-dir*d0/2;%須的座標
fleft=f(xleft);fright=f(xright);%須的氣味強度
x=x-step*dir*sign(fleft-fright);%下一步位置
天牛在三維空間運動,而天牛須搜索需要對任意維函數都有效才可以。因而,天牛須搜索是對天牛生物行為在任意維空間的推廣。採用如下模型描述天牛須搜索算法的尋優策略:
1. 天牛左右兩須位於質心兩邊。
2. 天牛步長step與兩須之間距離d0的比值是個固定常數即step=c*d0其中c是常數。即,大天牛(兩須距離長)走大步,小天牛走小步。
3. 天牛飛到下一步後,頭的朝向是隨機的。

智能算法麻雀搜索算法

麻雀搜索算法(Sparrow Search Algorithm, SSA)
麻雀搜索算法是一種羣智能優化算法,主要是受麻雀的覓食行為和反捕食行為的啓發而提出的,其仿生原理如下:
麻雀覓食的過程中,分為發現者和加入者,發現者在種羣中負責尋找食物併為整個麻雀種羣提供覓食區域和方向,而加入者則是利用發現者來獲取食物。為了獲得食物,麻雀通常可以採用發現者和加入者這兩種行為策略進行覓食。種羣中的個體會監視羣體中其它個體的行為,並且該種羣中的攻擊者會與高攝取量的同伴爭奪食物資源,以提高自己的捕食率。此外,當麻雀種羣受到捕食者的攻擊時會做出反捕食行為。 [1]  仿照麻雀的這些行為,我們設計了該算法進行函數最優化求解。具體求解方式如下:
(1)在SSA中,具有較好適應度值的發現者在搜索過程中會優先獲取食物。此外,因為發現者負責為整個麻雀種羣尋找食物併為所有加入者提供覓食的方向。因此,發現者可以獲得比加入者更大的覓食搜索範圍
(2)對於加入者,如前面所描述,在覓食過程中,一些加入者會時刻監視着發現者。或者同發現者進行食物的爭奪或者圍繞在發現者周圍進行覓食。
(3)當整個麻雀種羣受到捕食者威脅時,會進行反捕食行為:處在種羣外圍的麻雀極其容易受到捕食者的攻擊,需要不斷地調整位置以此來獲得更好的位置。與此同時,處在種羣中心的麻雀會去接近它們相鄰的同伴,這樣就可以儘量減少它們的危險區域。

智能算法蜣螂優化算法

蜣螂優化算法(Dung Beetle Optimizer, DBO)
蜣螂優化算法是一種新型的羣智能優化算法,在2022年底提出,主要是受蜣螂的的滾球、跳舞、覓食、偷竊和繁殖行為的啓發。具有收斂速度快,求解精度高的特點。可以將該算法應用到更為廣闊的場景,如無人機路徑規劃,神經網絡參數優化等各類優化問題

智能算法總結

模擬退火,遺傳算法,禁忌搜索,神經網絡和天牛須搜索算法在解決全局最優解的問題上有着獨到的優點,並且,它們有一個共同的特點:都是模擬了自然過程。模擬退火思路源於物理學中固體物質的退火過程,遺傳算法借鑑了自然界優勝劣汰的進化思想,禁忌搜索模擬了人類有記憶過程的智力過程,神經網絡更是直接模擬了人腦,天牛須搜索算法則是模擬了天牛在尋找事物或配偶時的搜索過程。麻雀搜索算法是模擬了麻雀的覓食行為和反捕食行為。蜣螂優化算法模擬了蜣螂的生活習性和自然特性。
它們之間的聯繫也非常緊密,比如模擬退火和遺傳算法為神經網絡提供更優良的學習算法提供了思路。把它們有機地綜合在一起,取長補短,性能將更加優良。
這幾種智能算法有別於一般的按照圖靈機進行精確計算的程序,尤其是人工神經網絡,是對計算機模型的一種新的詮釋,跳出了馮·諾依曼機的圈子,按照這種思想來設計的計算機有着廣闊的發展前景
參考資料