1. 優(yōu)化算法的分類
(以下描述院究,均不是學(xué)術(shù)用語康愤,僅供大家快樂的閱讀)
1.1常見的優(yōu)化算法
在分類之前半开,我們先列舉一下常見的優(yōu)化算法(不然我們拿什么分類呢?)枢冤。
1遺傳算法Genetic algorithm
2粒子群優(yōu)化算法Particle Swarm Optimization
3差分進(jìn)化算法Differential Evolution
4人工蜂群算法Artificial Bee Colony
5蟻群算法Ant Colony Optimization
6人工魚群算法Artificial Fish Swarm Algorithm
7杜鵑搜索算法Cuckoo Search
8螢火蟲算法Firefly Algorithm
9灰狼算法Grey Wolf Optimizer
10鯨魚算法Whale Optimization Algorithm
11群搜索算法Group search optimizer
12混合蛙跳算法Shuffled Frog Leaping Algorithm
13煙花算法fireworks algorithm
14菌群優(yōu)化算法Bacterial Foraging Optimization
以上優(yōu)化算法是我所接觸過的算法鸠姨,沒接觸過的算法不能隨便下結(jié)論,知之為知之淹真,不知為不知讶迁。其實(shí)到目前為止優(yōu)化算法可能已經(jīng)有幾百種了,我們不可能也不需要全面的了解所有的算法核蘸,而且優(yōu)化算法之間也有較大的共性巍糯,深入研究幾個之后再看其他優(yōu)化算法上手速度會灰常的快。
優(yōu)化算法從提出到現(xiàn)在不過50-60年(遺傳算法1975年提出)客扎,雖種類繁多但大多較為相似鳞贷,不過這也很正常,比較香蕉和人的基因相似度也有50%-60%虐唠。當(dāng)然算法之間的相似度要比香蕉和人的相似度更大,畢竟人家都是優(yōu)化算法惰聂,有著相同的目標(biāo)疆偿,只是實(shí)現(xiàn)方式不同。就像條條大路通羅馬搓幌,我們可以走去杆故,可以坐汽車去,可以坐火車去溉愁,也可以坐飛機(jī)去处铛,不管使用何種方式,我們都在去往羅馬的路上拐揭,也不會說坐飛機(jī)去要比走去更好撤蟆,交通工具只是一個工具,最終的方案還是要看我們的選擇堂污。
1.2優(yōu)化算法的模型
上面列舉了一些常見的算法家肯,即使你一個都沒見過也沒關(guān)系,后面會對它們進(jìn)行詳細(xì)的介紹盟猖,但是對后面的分類可能會有些許影響讨衣,不過問題不大,就先當(dāng)總結(jié)看了式镐。
再對優(yōu)化算法分類之前反镇,先介紹一下算法的模型,在筆記(一)中繪制了優(yōu)化算法的流程娘汞,不過那是個較為簡單的模型歹茶,此處的模型會更加復(fù)雜。上面說了優(yōu)化算法有較大的相似性,這些相似性主要體現(xiàn)在算法的運(yùn)行流程中辆亏。
優(yōu)化算法的求解過程可以看做是一個群體的生存過程风秤。
有一群原始人,他們要在野外中尋找食物扮叨,一個原始人是這個群體中的最小單元缤弦,他們的最終目標(biāo)是尋找這個環(huán)境中最容易獲取食物的位置,即最易存活下來的位置彻磁。每個原始人都去獨(dú)自尋找食物碍沐,他們每個人每天獲取食物的策略只有采集果實(shí)、制作陷阱或者守株待兔衷蜓,即在一天之中他們不會改變他們的位置累提。在下一天他們會根據(jù)自己的策略變更自己的位置。到了某一天他們又聚在了一起磁浇,選擇了他們到過的最容易獲取食物的位置定居斋陪。
一群原始人=優(yōu)化算法中的種群、群體置吓;
一個原始人=優(yōu)化算法中的個體无虚;
一個原始人的位置=優(yōu)化算法中個體的位置、基因等屬性衍锚;
原始人變更位置=優(yōu)化算法中總?cè)旱母虏僮鳎?br>
該位置獲取食物的難易程度=優(yōu)化算法中的適應(yīng)度函數(shù)友题;
一天=優(yōu)化算法中的一個迭代;
這群原始人最終的定居位置=優(yōu)化算法所得的解戴质。
優(yōu)化算法的流程圖如下:
1.3優(yōu)化算法的分類
對優(yōu)化算法分類得有個標(biāo)準(zhǔn)度宦,按照不同的標(biāo)準(zhǔn)分類也會得到不一樣的結(jié)果。首先說一下我所使用的分類標(biāo)準(zhǔn)(動態(tài)更新告匠,有了新的感悟再加):
- 算法的由來戈抄,即算法是模擬了某種動物的覓食、搜索過程后专,還是模擬了群體交配呛凶、繁衍的過程,亦或是模擬了人工行贪、物理過程漾稀。
- 算法的更新過程,上面的模型介紹了算法的抽象流程建瘫,使用更新過程分類即看算法中的個體按照什么方式來更新自己的位置崭捍。
1.3.1按照由來分類
按由來分類比較好理解,就是該算法受何種現(xiàn)象啟發(fā)而發(fā)明啰脚,本質(zhì)是對現(xiàn)象分類殷蛇。
算法 | 由來 | 類別 |
---|---|---|
1遺傳算法 | 進(jìn)化論 | 人類理論 |
2粒子群優(yōu)化算法 | 鳥群覓食 | 生物生存 |
3差分進(jìn)化算法 | 進(jìn)化論 | 人類理論 |
4人工蜂群算法 | 蜜蜂覓食 | 生物生存 |
5蟻群算法 | 螞蟻覓食 | 生物生存 |
6人工魚群算法 | 魚群覓食 | 生物生存 |
7杜鵑搜索算法 | 杜鵑產(chǎn)卵 | 生物生存 |
8螢火蟲算法 | 螢火蟲求偶 | 生物生存 |
9灰狼算法 | 狼群覓食 | 生物生存 |
10鯨魚算法 | 鯨魚覓食 | 生物生存 |
11群搜索算法 | 生產(chǎn)消費(fèi)跟隨模型 | 人類理論 |
12混合蛙跳算法 | 青蛙覓食 | 生物生存 |
13煙花算法 | 煙花 | 物理現(xiàn)象 |
14菌群優(yōu)化算法 | 菌群生長 | 生物生存 |
可以看出算法根據(jù)由來可以大致分為有人類的理論創(chuàng)造而來实夹,向生物學(xué)習(xí)而來,受物理現(xiàn)象啟發(fā)粒梦。其中向生物學(xué)習(xí)而來的算法最多亮航,其他類別由于舉例有偏差,不是很準(zhǔn)確匀们,而且物理現(xiàn)象也經(jīng)過人類總結(jié)缴淋,有些與人類現(xiàn)象相交叉,但仍將其獨(dú)立出來泄朴。
類別分好了重抖,那么為什么要這么分類呢?
當(dāng)然是因?yàn)橐獪愖謹(jǐn)?shù)啦祖灰,啊呸钟沛,當(dāng)然是為了更好的理解學(xué)習(xí)這些算法的原理及特點(diǎn)。
向動物生存學(xué)習(xí)而來的算法一定是一種行之有效的方法局扶,能夠保證算法的效率和準(zhǔn)確性恨统,因?yàn)椋绻褂迷摬呗缘膭游餆o法存活到我們可以對其進(jìn)行研究三妈,我們也無法得知其生存策略延欠。(而這也是一種幸存者偏差,我們只能看到行之有效的策略沈跨,但并不是我們沒看到的策略都是垃圾,畢竟也發(fā)生過小行星撞地球這種小概率毀滅性事件兔综。講個冷笑話開cou心zhi一shu下:一只小恐龍對他的小伙伴說饿凛,好開心,我最喜歡的那顆星星越來越亮了(完)软驰。)但是由于生物的局限性涧窒,人們所創(chuàng)造出的算法也會有局限性:我們所熟知的生物都生存在三維空間,在這些環(huán)境中锭亏,影響生物生存的條件比較有限纠吴,反應(yīng)到算法中就是這些算法在解決較低維度的問題時效果很好,當(dāng)遇到超高維(維度>500)問題時慧瘤,結(jié)果可能不容樂觀戴已,沒做過實(shí)驗(yàn),我也不敢亂說锅减。
受人類理論得出的算法糖儡,與在處理較高維問題時應(yīng)該會有著較好的結(jié)果,因?yàn)槿祟惖睦碚撝械木S度不受現(xiàn)實(shí)束縛怔匣,可能會有超高維的情況握联,比如基因的數(shù)量。但是能人類的理論都是在人類的理解范圍內(nèi),可能有些理論與人類認(rèn)知不符金闽,或者該理論其實(shí)是錯誤的纯露,只是大家都沒有發(fā)現(xiàn)。這就尷尬了代芜,從錯誤的理論上學(xué)習(xí)而來的東西埠褪,有較大的概率其實(shí)也是錯誤的。所有這類優(yōu)化算法能夠處理維度較高的問題蜒犯,但是很有可能得不出較好的結(jié)果组橄。
最后實(shí)名diss一下由物理現(xiàn)象發(fā)展而來的算法。物理現(xiàn)象罚随,沒有任何智能玉工,其現(xiàn)象完全取決于觀測者,因果不明淘菩,為什么敢說能解決問題遵班,我也不清楚,可能只是想套用一下物理現(xiàn)象潮改,其實(shí)算法與現(xiàn)象關(guān)系不大狭郑,其他類別也大多如此(不小心把實(shí)話說出來了不會有事吧)。
1.3.2按照更新過程分類
按更新過程分類相對復(fù)雜一點(diǎn)汇在,主要是根據(jù)優(yōu)化算法流程中更新位置操作的方式來進(jìn)行分類翰萨。更新位置的操作按我的理解可大致分為兩類:1.跟隨最優(yōu)解;2.不跟隨最優(yōu)解糕殉。
還是上面原始人的例子亩鬼,每天他有一次去往其他位置狩獵的機(jī)會,他們采用何種方式來決定今天自己應(yīng)該去哪里呢阿蝶?
如果他們的策略是“跟隨最優(yōu)解”雳锋,那么他們選取位置的方式就是按一定的策略向群體已知的最佳狩獵位置(歷史最佳)或者是當(dāng)前群體中的最佳狩獵位置(今天最佳)靠近,至于是直線跑過去還是蛇皮走位繞過去羡洁,這個要看他們?nèi)后w的策略玷过。當(dāng)然,他們的目的不是在最佳狩獵位置集合筑煮,他們的目的是在過去的途中看是否能發(fā)現(xiàn)更加好的狩獵位置辛蚊,去往已經(jīng)到過的狩獵地點(diǎn)再次狩獵是沒有意義的,因?yàn)槊總€位置獲取食物的難易程度是固定的真仲。有了目標(biāo)嚼隘,大家都會朝著目標(biāo)前進(jìn),總有一日袒餐,大家會在謀個位置附近相聚飞蛹,相聚雖好但不利于后續(xù)的覓食容易陷入局部最優(yōu)谤狡。
什么是局部最優(yōu)呢?假設(shè)在當(dāng)前環(huán)境中有一“桃花源”卧檐,擁有上帝視角的我們知道這個地方就是最適合原始人們生存的墓懂,但是此地入口隱蔽“山有小口,仿佛若有光”霉囚、“初極狹捕仔,才通人∮蓿”揍很,是一個難以發(fā)現(xiàn)的地方麻裁。如果沒有任何一個原始人到達(dá)了這里,大家向著已知的最優(yōu)位置靠近時,也難以發(fā)現(xiàn)這個“桃源之地”膘融,而當(dāng)大家越聚越攏之后马昙,“桃源”被發(fā)現(xiàn)的可能性越來越低森爽。雖然原始人們得到了他們的解颅悉,但這并不是我們所求的“桃源”,他們聚集之后失去了尋求“桃源”的可能奠骄,這群原始人便陷入了局部最優(yōu)豆同。
如果他們的策略是“不跟隨最優(yōu)解”,那么他們的策略是什么呢含鳞?我也不知道影锈,這個應(yīng)該他們自己決定。畢竟“是什么”比“不是什么”的范圍要小的多蝉绷⊙纪ⅲ總之不跟隨最優(yōu)解時,算法會有自己特定的步驟來更新個體的位置潜必,有可能是隨機(jī)在自己附近找,也有可能是隨機(jī)向別人學(xué)習(xí)沃但。不跟隨最優(yōu)解時磁滚,原始人們應(yīng)該不會快速聚集到某一處,這樣一來他們的選擇更具多樣性宵晚。
按照更新過程對上面的算法分類結(jié)果如下
算法 | 類別 |
---|---|
1遺傳算法 | 不跟隨最優(yōu)解 |
2粒子群優(yōu)化算法 | 跟隨最優(yōu)解 |
3差分進(jìn)化算法 | 不跟隨最優(yōu)解 |
4人工蜂群算法 | 跟隨最優(yōu)解 |
5蟻群算法 | 跟隨最優(yōu)解 |
6人工魚群算法 | 跟隨最優(yōu)解 |
7杜鵑搜索算法 | 跟隨最優(yōu)解 |
8螢火蟲算法 | 跟隨最優(yōu)解 |
9灰狼算法 | 跟隨最優(yōu)解 |
10鯨魚算法 | 跟隨最優(yōu)解 |
11群搜索算法 | 跟隨最優(yōu)解 |
12混合蛙跳算法 | 跟隨最優(yōu)解 |
13煙花算法 | 跟隨最優(yōu)解 |
14菌群優(yōu)化算法 | 跟隨最優(yōu)解 |
可以看出上面不跟隨最優(yōu)解的算法只有遺傳算法和差分進(jìn)化算法垂攘,他們的更新策略是與進(jìn)化和基因的重組有關(guān)。因此這些不跟隨最優(yōu)解的算法淤刃,他們大多依據(jù)進(jìn)化理論更新位置(基因)我把他們叫做進(jìn)化算法晒他,而那些跟隨群體最優(yōu)解的算法,他們則大多依賴群體的配合協(xié)作逸贾,我把這些算法叫做群智能算法陨仅。
1.4總結(jié)
目前我只總結(jié)了這兩種津滞,分類方法,如果你有更加優(yōu)秀的分類方法灼伤,我們可以交流一下:
進(jìn)化算法 | 群智能算法 | |
---|---|---|
人類理論 | 1遺傳算法 3差分進(jìn)化算法 |
11群搜索算法 |
生物生存 | 2粒子群優(yōu)化算法 4人工蜂群算法 5蟻群算 6人工魚群算法 7杜鵑搜索算法 8螢火蟲算法 9灰狼算法 10鯨魚算法 12混合蛙跳算法 14菌群優(yōu)化算法 |
|
物理現(xiàn)象 | 13煙花算法 |
目錄
上一篇 優(yōu)化算法筆記(一)優(yōu)化算法的介紹
下一篇 優(yōu)化算法筆記(三)粒子群算法(1)