遗传算法总结
遺傳算法總結
遺傳算法是一種最優化算法,或者說遺傳算法可以應用于求解搜索問題或者最優化問題。百度對遺傳算法的定義為:遺傳算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法遺傳算法在工業界有著比較廣泛的應用。我也是實習的時候才真正用到遺傳算法,下面是我的一些總結。
1:傳統優化算法
遺傳算法可以用于求解最優化問題,那么和傳統的優化算法相比,遺傳算法有什么不一樣呢?https://blog.csdn.net/m0_37622530/article/details/81951597比較詳細的介紹了一些最優化算法。
傳統的最優化算法可以分為calculus-methods(精確計算方法):
1:對于一些無約束的最優化問題,可以直接根據求偏導等于0,然后求得最優點的坐標,但是這類算法只能對于凸函數和凹函數能夠得到全局最優解。
2:對于帶有約束的最優化問題,如果只有等值約束的話,使用拉格朗日乘子法可以求解,拉格朗日乘子法可以查看https://www.jiqizhixin.com/articles/2019-02-12-10,對于一般的約束(既有等值約束,也有不等式約束)的問題,使用拉格朗日乘子法以及KKT條件可以求解。例如SVM就是使用KKT條件加上拉格朗日乘子法使用對偶優化方法進行求解的。
上面的最優化算法屬于calculus-methods(精確計算方法),除此之外,該方法還有一種enumerative scheme(迭代形式),比如說最速下降算法(梯度下降算法),牛頓法,共軛梯度法,動態規劃等等。其中梯度下降算法衍生出了很多變種,如Adagrad,Adam,Momentum等等,都是為了解決陷入局部最優問題而產生的改進。
2:隨機優化算法
傳統算法有著很多限制,比如說都需要求偏導,連續(還有可能陷入局部最優的問題),因此不是很魯棒(robust)。隨機優化算法不需要這些限制(連續可求導),缺點就是找到的是一個近似的最優解。
隨機優化算法包含simulated anealing(模擬退火算法),詳情查看https://blog.csdn.net/google19890102/article/details/45395257,模擬退火算法的算法流程圖如下:
模擬退火算法通過隨機接受不產生下降的解的形式,有可能跳出局部最優解到達全局最優。
除了模擬退火算法外,遺傳算法也在算法中使用隨機的方法,如交叉,變異,繼承等操作。遺傳算法的一個應用實例可以查看https://blog.csdn.net/saltriver/article/details/63679701,具體就是求解一個簡單的函數在給定區間的最大值:?
求解上面函數在[-10,10]之間的最大值,實際上,上面的函數可以使用數值計算的方法進行求解,因為該函數是連續可微的,求得函數的增區間,就能求[-10,10]的最大值。
如果使用遺傳算法求解這個問題的話,最重要的一步就是如何code我們需要求解的值x,為什么需要對x進行編碼,因為我們在遺傳,變異,交叉的時候,是對編碼進行操作,如果x=2如何進行這些操作?因此我們需要對x進行編碼,例如,如果我們假設x精確度為小數點后面4位的話,那么1可以分成10000個數,-10到10之間存在20個數,因此我們需要20*10000種編碼,也就是200000,如果我們使用二進制(0,1)編碼的話,我們需要18位進行編碼,因此2的18次方是262144,而2的17次方是131072,因此只有使用18位才能最小編碼200000個數。https://www.jianshu.com/p/971c5f76f88e里面包含一個例子。
上面是遺傳算法最簡單的例子,遺傳算法包含很多有意思的應用,如羅比清掃機器人https://blog.csdn.net/lynn0085/article/details/79016012,可以看到,進化很多代之后,羅比機器人對于任意出現的垃圾,都能很好的清理。
除此之外,遺傳算法還可以對圖像進行擬合,如https://songshuhui.net/archives/10462,得到的結果大概如下:
其中,每個個體就是一系列三角形的組合,每個三角形又包含位置,顏色,透明度等等屬性,最后使用MSE(mean square error)用組成的圖像和原始圖像進行對比,使用mse衡量fitness?,最后得到的結果已經非常相像。
遺傳算法除了這些應用外,在工業界也有很多應用,比如說論文"sapienz: multi-objective automated testing for android applications"使用GA(遺傳算法)解決多目標(code coverage,sequence length,crash)優化問題,facebook現在使用的自動測試系統就是基于Sapienz開發的。
總結
- 上一篇: hdu 4899 Hero meet d
- 下一篇: The Devil is in the