日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

遗传算法总结

發(fā)布時(shí)間:2023/12/16 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遗传算法总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遺傳算法總結(jié)

遺傳算法是一種最優(yōu)化算法,或者說遺傳算法可以應(yīng)用于求解搜索問題或者最優(yōu)化問題。百度對(duì)遺傳算法的定義為:遺傳算法(Genetic Algorithm)是模擬達(dá)爾文生物進(jìn)化論的自然選擇和遺傳學(xué)機(jī)理的生物進(jìn)化過程的計(jì)算模型,是一種通過模擬自然進(jìn)化過程搜索最優(yōu)解的方法遺傳算法在工業(yè)界有著比較廣泛的應(yīng)用。我也是實(shí)習(xí)的時(shí)候才真正用到遺傳算法,下面是我的一些總結(jié)。

1:傳統(tǒng)優(yōu)化算法

遺傳算法可以用于求解最優(yōu)化問題,那么和傳統(tǒng)的優(yōu)化算法相比,遺傳算法有什么不一樣呢?https://blog.csdn.net/m0_37622530/article/details/81951597比較詳細(xì)的介紹了一些最優(yōu)化算法。

傳統(tǒng)的最優(yōu)化算法可以分為calculus-methods(精確計(jì)算方法):

1:對(duì)于一些無約束的最優(yōu)化問題,可以直接根據(jù)求偏導(dǎo)等于0,然后求得最優(yōu)點(diǎn)的坐標(biāo),但是這類算法只能對(duì)于凸函數(shù)和凹函數(shù)能夠得到全局最優(yōu)解。

2:對(duì)于帶有約束的最優(yōu)化問題,如果只有等值約束的話,使用拉格朗日乘子法可以求解,拉格朗日乘子法可以查看https://www.jiqizhixin.com/articles/2019-02-12-10,對(duì)于一般的約束(既有等值約束,也有不等式約束)的問題,使用拉格朗日乘子法以及KKT條件可以求解。例如SVM就是使用KKT條件加上拉格朗日乘子法使用對(duì)偶優(yōu)化方法進(jìn)行求解的。

上面的最優(yōu)化算法屬于calculus-methods(精確計(jì)算方法),除此之外,該方法還有一種enumerative scheme(迭代形式),比如說最速下降算法(梯度下降算法),牛頓法,共軛梯度法,動(dòng)態(tài)規(guī)劃等等。其中梯度下降算法衍生出了很多變種,如Adagrad,Adam,Momentum等等,都是為了解決陷入局部最優(yōu)問題而產(chǎn)生的改進(jìn)。

2:隨機(jī)優(yōu)化算法

傳統(tǒng)算法有著很多限制,比如說都需要求偏導(dǎo),連續(xù)(還有可能陷入局部最優(yōu)的問題),因此不是很魯棒(robust)。隨機(jī)優(yōu)化算法不需要這些限制(連續(xù)可求導(dǎo)),缺點(diǎn)就是找到的是一個(gè)近似的最優(yōu)解。

隨機(jī)優(yōu)化算法包含simulated anealing(模擬退火算法),詳情查看https://blog.csdn.net/google19890102/article/details/45395257,模擬退火算法的算法流程圖如下:

模擬退火算法通過隨機(jī)接受不產(chǎn)生下降的解的形式,有可能跳出局部最優(yōu)解到達(dá)全局最優(yōu)。

除了模擬退火算法外,遺傳算法也在算法中使用隨機(jī)的方法,如交叉,變異,繼承等操作。遺傳算法的一個(gè)應(yīng)用實(shí)例可以查看https://blog.csdn.net/saltriver/article/details/63679701,具體就是求解一個(gè)簡(jiǎn)單的函數(shù)在給定區(qū)間的最大值:?

求解上面函數(shù)在[-10,10]之間的最大值,實(shí)際上,上面的函數(shù)可以使用數(shù)值計(jì)算的方法進(jìn)行求解,因?yàn)樵摵瘮?shù)是連續(xù)可微的,求得函數(shù)的增區(qū)間,就能求[-10,10]的最大值。

如果使用遺傳算法求解這個(gè)問題的話,最重要的一步就是如何code我們需要求解的值x,為什么需要對(duì)x進(jìn)行編碼,因?yàn)槲覀冊(cè)谶z傳,變異,交叉的時(shí)候,是對(duì)編碼進(jìn)行操作,如果x=2如何進(jìn)行這些操作?因此我們需要對(duì)x進(jìn)行編碼,例如,如果我們假設(shè)x精確度為小數(shù)點(diǎn)后面4位的話,那么1可以分成10000個(gè)數(shù),-10到10之間存在20個(gè)數(shù),因此我們需要20*10000種編碼,也就是200000,如果我們使用二進(jìn)制(0,1)編碼的話,我們需要18位進(jìn)行編碼,因此2的18次方是262144,而2的17次方是131072,因此只有使用18位才能最小編碼200000個(gè)數(shù)。https://www.jianshu.com/p/971c5f76f88e里面包含一個(gè)例子。

上面是遺傳算法最簡(jiǎn)單的例子,遺傳算法包含很多有意思的應(yīng)用,如羅比清掃機(jī)器人https://blog.csdn.net/lynn0085/article/details/79016012,可以看到,進(jìn)化很多代之后,羅比機(jī)器人對(duì)于任意出現(xiàn)的垃圾,都能很好的清理。

除此之外,遺傳算法還可以對(duì)圖像進(jìn)行擬合,如https://songshuhui.net/archives/10462,得到的結(jié)果大概如下:

其中,每個(gè)個(gè)體就是一系列三角形的組合,每個(gè)三角形又包含位置,顏色,透明度等等屬性,最后使用MSE(mean square error)用組成的圖像和原始圖像進(jìn)行對(duì)比,使用mse衡量fitness?,最后得到的結(jié)果已經(jīng)非常相像。

遺傳算法除了這些應(yīng)用外,在工業(yè)界也有很多應(yīng)用,比如說論文"sapienz: multi-objective automated testing for android applications"使用GA(遺傳算法)解決多目標(biāo)(code coverage,sequence length,crash)優(yōu)化問題,facebook現(xiàn)在使用的自動(dòng)測(cè)試系統(tǒng)就是基于Sapienz開發(fā)的。

總結(jié)

以上是生活随笔為你收集整理的遗传算法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。