簡述
個人感覺差分進(jìn)化算法,是對遺傳算法的一種優(yōu)化麦箍,他詳細(xì)定制了變異漓藕,交叉的算法,他的改進(jìn)方向挟裂,是取決于種群內(nèi)其他的個體享钞,而并非基于概率的隨機(jī)生成。書中原話:差分進(jìn)化算法是一種自組織最小化方法诀蓉,用戶只需很少的輸入栗竖。它的關(guān)鍵思想與傳統(tǒng)進(jìn)化方法不同:傳統(tǒng)方法是用預(yù)先確定的概率分布函數(shù)決定向量擾動;而差分進(jìn)化算法的自組織程序利用種群中兩個隨機(jī)選擇的不同向量來干擾一個現(xiàn)有向量,種群中的每一個向量都要進(jìn)行干擾渠啤。差分進(jìn)化算法利用一個向量種群狐肢,其中種群向量的隨機(jī)擾動可獨立進(jìn)行,因此是并行的沥曹。如果新向量對應(yīng)函數(shù)值的代價比它們的前輩代價小份名,它們將取代前輩向量。
基礎(chǔ)理論
這里的基礎(chǔ)理論同之前的遺傳算法妓美,這里不再描述僵腺,直接介紹不同于遺傳算法的部分
基本差分算法
變異操作
對于每個目標(biāo)向量基本差法進(jìn)化算法的變異由下式產(chǎn)生:
變異
其中ri(i = 1, 2, 3)是三個互不相同的數(shù),F(xiàn)為變異算子,范圍[0,2]壶栋,負(fù)責(zé)控制偏差向量的放大作用
交叉操作
為了增加干擾參數(shù)向量的多樣性想邦,引入交叉操作,則試驗向量變?yōu)?
交叉操作
其中RC表示交叉算子委刘,rnbr是為了保證u中至少有一個v中的個體丧没。
選擇操作
依據(jù)貪婪準(zhǔn)則鹰椒,在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都能針對當(dāng)前的情況來調(diào)整數(shù)值漆际,書中給了一個算法是
自適應(yīng)算法
其中Gm為最大迭代次數(shù),G為當(dāng)前迭代次數(shù)夺饲,這樣當(dāng)G=1時奸汇,F(xiàn) = 2F0,這樣對于變異有較大的幫助往声,而當(dāng)G趨近于Gm時擂找,F(xiàn)會趨近于F0,這對結(jié)果的收斂有幫助
差分算法的流程
- 確定差分進(jìn)化算法的控制參數(shù)和所要采取的具體策略浩销。
- 隨機(jī)產(chǎn)生初始種群贯涎,進(jìn)化代數(shù)g=1
- 對種群進(jìn)行評價,即計算初始種群中每個個體的目標(biāo)函數(shù)數(shù)值
- 判斷是否達(dá)到終止條件或者最大進(jìn)化代數(shù):若是慢洋,進(jìn)化中止塘雳;否則,進(jìn)行下一步操作
- 進(jìn)行變異和交叉普筹,對邊界條件處理败明,得到臨時種群
- 對臨時種群評價,計算臨時種群的目標(biāo)函數(shù)值太防。
- 跟據(jù)貪心法則選擇出新一代的種群
- g = g+1妻顶,轉(zhuǎn)到4