差分進化算法

簡述

個人感覺差分進化算法,是對遺傳算法的一種優(yōu)化,他詳細定制了變異,交叉的算法,他的改進方向,是取決于種群內(nèi)其他的個體,而并非基于概率的隨機生成。書中原話:差分進化算法是一種自組織最小化方法,用戶只需很少的輸入。它的關(guān)鍵思想與傳統(tǒng)進化方法不同:傳統(tǒng)方法是用預(yù)先確定的概率分布函數(shù)決定向量擾動;而差分進化算法的自組織程序利用種群中兩個隨機選擇的不同向量來干擾一個現(xiàn)有向量,種群中的每一個向量都要進行干擾。差分進化算法利用一個向量種群,其中種群向量的隨機擾動可獨立進行,因此是并行的。如果新向量對應(yīng)函數(shù)值的代價比它們的前輩代價小,它們將取代前輩向量。

基礎(chǔ)理論

這里的基礎(chǔ)理論同之前的遺傳算法,這里不再描述,直接介紹不同于遺傳算法的部分

基本差分算法

變異操作

對于每個目標向量基本差法進化算法的變異由下式產(chǎn)生:

變異

其中ri(i = 1, 2, 3)是三個互不相同的數(shù),F(xiàn)為變異算子,范圍[0,2],負責(zé)控制偏差向量的放大作用

交叉操作

為了增加干擾參數(shù)向量的多樣性,引入交叉操作,則試驗向量變?yōu)?


交叉操作

其中RC表示交叉算子,rnbr是為了保證u中至少有一個v中的個體。

選擇操作

依據(jù)貪婪準則,在x和u中選擇組合成下一代的種群

next_gen = []
for i in length(x):
    if fit_x[i] > fit_z[i]: ##這里的大于號只是表示更優(yōu),而并非數(shù)學(xué)意義上的大于
        next_gen[i] = x[i]
    else:
        next_gen[i] = u[i]

差分的其他形式

QQ截圖20201110125434.png

自適應(yīng)差分算法

主要針對變異算子F的一個計算過程,在每一次迭代的過程中使F都能針對當前的情況來調(diào)整數(shù)值,書中給了一個算法是

自適應(yīng)算法

其中Gm為最大迭代次數(shù),G為當前迭代次數(shù),這樣當G=1時,F(xiàn) = 2F0,這樣對于變異有較大的幫助,而當G趨近于Gm時,F(xiàn)會趨近于F0,這對結(jié)果的收斂有幫助

差分算法的流程

  1. 確定差分進化算法的控制參數(shù)和所要采取的具體策略。
  2. 隨機產(chǎn)生初始種群,進化代數(shù)g=1
  3. 對種群進行評價,即計算初始種群中每個個體的目標函數(shù)數(shù)值
  4. 判斷是否達到終止條件或者最大進化代數(shù):若是,進化中止;否則,進行下一步操作
  5. 進行變異和交叉,對邊界條件處理,得到臨時種群
  6. 對臨時種群評價,計算臨時種群的目標函數(shù)值。
  7. 跟據(jù)貪心法則選擇出新一代的種群
  8. g = g+1,轉(zhuǎn)到4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容