天天看點

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

1 前言

在遺傳、選擇和變異的作用下,自然界生物體優勝劣汰,不斷由低級向進階進化和發展。人們注意到,适者生存的進化規律可以模式化,進而構成一些優化算法;近年來發展的進化計算類算法受到了廣泛的關注。

差分進化算法(Differential Evolution, DE) 是一種新興的進化計算技術[1] 。它是由S torn等人于1995年提出的, 其最初的設想是用于解決切比雪夫多項式問題,後來發現它也是解決複雜優化問題的有效技術。

差分進化算法是基于群體智能理論的優化算法,是通過群體内個體間的合作與競争而産生的智能優化搜尋算法。但相比于進化計算,它保留了基于種群的全局搜尋政策,采用實數編碼、基于差分的簡單變異操作和“一對一”的競争生存政策,降低了進化計算操作的複雜性。同時,差分進化算法特有的記憶能力使其可以動态跟蹤目前的搜尋情況,以調整其搜尋政策,它具有較強的全局收斂能力和穩健性,且不需要借助問題的特征資訊,适用于求解一些利用正常的數學規劃方法很難求解甚至無法求解的複雜優化問題[2-5]。是以,差分進化算法作為一種高效的并行搜尋算法,對其進行理論和應用研究具有重要的學術意義和工程價值。

目前,差分進化算法已經在許多領域得到了應用,如人工神經元網絡、電力、機械設計、機器人、信号處理、生物資訊、經濟學、現代農業和運籌學等。然而,盡管差分進化算法獲得了廣泛研究,但相對于其他進化算法而言,其研究成果相當分散,缺乏系統性,尤其在理論方面還沒有重大突破。

2 差分進化算法理論

2.1差分進化算法原理

差分進化算法是一種随機的啟發式搜尋算法,簡單易用,有較強的魯棒性和全局尋優能力。它從數學角度看是一種随機搜尋算法,從工程角度看是一種自适應的疊代尋優過程。除了具有較好的收斂性外,差分進化算法非常易于了解與執行,它隻包含不多的幾個控制參數,并且在整個疊代過程中,這些參數的值可以保持不變。差分進化算法是一種自組織最小化方法,使用者隻需很少的輸入。它的關鍵思想與傳統進化方法不同:傳統方法是用預先确定的機率分布函數決定向量擾動;而差分進化算法的自組織程式利用種群中兩個随機選擇的不同向量來幹擾一個現有向量,種群中的每一個向量都要進行幹擾。差分進化算法利用一個向量種群,其中種群向量的随機擾動可獨立進行,是以是并行的。如果新向量對應函數值的代價比它們的前輩代價小,它們将取代前輩向量。

同其他進化算法一樣,差分進化算法也是對候選解的種群進行操作,但其種群繁殖方案與其他進化算法不同:它通過把種群中兩個成員之間的權重差向量加到第三個成員上來産生新的參數向量,該操作

稱為“變異”; 然後将變異向量的參數與另外預先确定的目标向量參數按一定規則混合來産生試驗量,該操作稱為“交叉”;最後,若試驗向量的代價函數比目标向量的代價函數低,試驗向量就在下一代中代替目标向量,該操作稱為“選擇”。種群中所有成員必須當作目标向量進行一次這樣的操作,以便在下一代中出現相同個數競争者。

在進化過程中對每一代的最佳參數向量都進行評價,以記錄最小化過程。這樣利用随機偏差擾動産生新個體的方式,可以獲得一個收斂性非常好的結果,引導搜尋過程向全局最優解逼近[6-7]。

2.2差分進化算法的特點

差分進化算法從提出到現在,在短短二十幾年内人們對其進行了廣泛的研究并取得了成功的應用。該算法主要有如下特點:

(1)結構簡單,容易使用。差分進化算法主要通過差分變異算子來進行遺傳操作,由于該算子隻涉及向量的加減運算,是以很容易實作;該算法采用機率轉移規則,不需要确定性的規則。此外,差分進化算法的控制參數少,這些參數對算法性能的影響已經得到一定的研究,并得出了一些指導性的建議,因而可以友善使用人員根據問題選擇較優的參數設定。

(2)性能優越。差分進化算法具有較好的可靠性、高效性和魯棒性,對于大空間、非線性和不可求導的連續問題,其求解效率比其他進化方法好,而且很多學者還在對差分進化算法繼續改良,以不斷提高其性能。

(3)自适應性。差分進化算法的差分變異算子可以是固定常數,也可以具有變異步長和搜尋方向自适應的能力,根據不同目标函數進行自動調整,進而提高搜尋品質。

(4)差分進化算法具有内在的并行性,可協同搜尋,具有利用個體局部資訊和群體全局資訊指導算法進一步搜尋的能力。在同樣精度要求下,差分進化算法具有更快的收斂速度。

(5)算法通用,可直接對結構對象進行操作,不依賴于問題資訊,不存在對目标函數的限定。差分進化算法操作十分簡單,易于程式設計實作,尤其利于求解高維的函數優化問題。

3 差分進化算法種類

3.1基本差分進化算法

基本差分進化算法的操作程式如下[8]:

(1)初始化;

(2)變異;

(3)交叉;

(4)選擇;

(5)邊界條件處理。

初始化

差分進化算法利用NP個維數為D的實數值參數向量,将它們作為每

一代的種群,每個個體表示為:

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】
【優化算法】差分進化算法(DE)【含Matlab源碼 134期】
【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

另外一個方法是進行邊界吸收處理,即将超過邊界限制的個體值設定為臨近的邊界值。

3.2差分進化算法的其他形式

上面闡述的是最基本的差分進化算法操作程式,實際應用中還發展了差分進化算法的幾個變形形式,用符号DE/x/y/z加以區分,其中:x限定目前被變異的向量是“随機的”或“最佳的”;y是所利用的差向量的個數;z訓示交叉程式的操作方法。前面叙述的交叉操作表示為“bin”。利用這個表示方法, 基本差分進化算法政策可描述為DE/rand/1/bin。

還有其他形式[5,如:

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

3.3改進的差分進化算法

自适應差分進化算法

作為一種高效的并行優化算法,差分進化算法發展很快,出現了很多改進的差分進化算法。下面介紹一種具有自适應算子的差分進化算法[9].

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】
【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

4差分進化算法流程

差分進化算法采用實數編碼、基于差分的簡單變異操作和“一對一”的競争生存政策,其具體步驟如下:

(1)确定差分進化算法的控制參數和所要采用的具體政策。差分進化算法的控制參數包括:種群數量、變異算子、交叉算子、最大進化代數、終止條件等。

(2)随機産生初始種群,進化代數k=1。

(3)對初始種群進行評價,即計算初始種群中每個個體的目标函數值。

(4)判斷是否達到終止條件或達到最大進化代數:若是,則進化終止,将此時的最佳個體作為解輸出;否則,繼續下一步操作。

(5)進行變異操作和交叉操作,對邊界條件進行處理,得到臨時種群。

(6)對臨時種群進行評價,計算臨時種群中每個個體的目标函數值。

(7)對臨時種群中的個體和原種群中對應的個體,進行“一對-”的選擇操作,得到新種群。

(8)進化代數k=k+1,轉步驟(4)。

差分進化算法運算流程如圖3.1所示。

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

5關鍵參數的說明

控制參數對一個全局優化算法的影響是很大的,差分進化算法的控制變量選擇也有一些經驗規則。

種群數量NP

一般情況下,種群的規模AP越大,其中的個體就越多,種群的多樣性也就越好,尋優的能力也就越強,但也是以增加了計算的難度。是以,NP不能無限取大。根據經驗,種群數量NP的合理選擇在5D~

10D之間,必須滿足NP≥4,以確定差分進化算法具有足夠的不同的變異向量。

變異算子F

變異算子FE[0,2]是一個實常數因數,它決定偏差向量的放大比例。變異算子熨小,則可能造成算法“早熟”。随着/值的增大,防止算法陷入局部最優的能力增強,但當F>1時,想要算法快速收斂到最優值會變得十分不易;這是由于當差分向量的擾動大于兩個個體之間的距離時,種群的收斂性會變得很差。目前的研究表明,F小于0.4和大于1的值僅偶爾有效,/=0.5通常是一個較好的初始選擇。若種

群過早收斂,那麼F或NP應該增大。

交叉算子CR

交叉算子CR是一個範圍在[0,1]内的實數,它控制着一個試驗向量參數來自于随機選擇的變異向量而不是原來向量的機率。交叉算子CK越大,發生交叉的可能性就越大。CR的一個較好的選擇是0.1,但

較大的CK通常會加速收斂,為了看看是否可能獲得一個快速解,可以先嘗試CR=0.9或CF=1.0.

最大進化代數G

最大進化代數6是表示差分進化算法運作結束條件的一個參數,表示差分進化算法運作到指定的進化代數之後就停止運作,并将目前群體中的最佳個體作為所求問題的最優解輸出。一般,6取100~500。

終止條件

除最大進化代數可作為差分進化算法的終止條件外,還可以增加其他判定準則。一般當目标函數值小于門檻值時程式終止,門檻值常選為10-6。上述參數中,F、CR與NP一樣,在搜尋過程中是常數,一般F和CR影響搜尋過程的收斂速度和穩健性,它們的優化值不僅依賴于目标函數的特性,還與NP有關。通常可通過對不同值做一些試驗之後,利用試驗和結果誤差找到F、CR和NP的合适值。

【優化算法】差分進化算法(DE)【含Matlab源碼 134期】
【優化算法】差分進化算法(DE)【含Matlab源碼 134期】
【優化算法】差分進化算法(DE)【含Matlab源碼 134期】

1 matlab版本

2014a

2 參考文獻

[1] 包子陽,餘繼周,楊杉.智能優化算法及其MATLAB執行個體(第2版)[M].電子工業出版社,2016.

[2]張岩,吳水根.MATLAB優化算法源代碼[M].清華大學出版社,2017.

繼續閱讀