1.現代優化算法概論(Modern Optimization Algorithms, MOA)
現代優化算法又稱智能優化算法或啓發式算法,是一種具有全局優化性能強、通用性強、且適用於並行處理的算法。
基本思路:都是從任意解出發,按照某種機制,以一定的概率在整個求解空間中探尋最優解。由於他們可以把搜索空間擴展到整個問題空間,因而具有全局優化性能。
特點:
- 基於客觀世界中的一些自然現象;
- 建立在計算機迭代計算的基礎上;
- 具有普適性,可解決實際應用問題。
- 不依賴於初始條件
- 收斂速度慢,能獲得全局最優,適用於求解空間未知的情況
- SA、GA可應用於大規模、多峯多態函數、含離散變量等全局優化問題;求解速度和質量遠超過常規方法。
2.模擬退火算法 (Simulated Annealing Algorithm, SA)
算法目的:
- 解決NP複雜性問題
- 克服優化過程中陷入局部最小
- 克服初始值依賴性
在同一個溫度,分子停留在能量小的狀態的概率比停留在能量大的狀態的概率大(能量越高越不穩定)
數學表達:若在溫度T,當前狀態i → 新狀態j,若Ej<Ei,則接受 j 爲當前狀態; 否則,以概率 p=exp[-(Ej-Ei)/kBT] 接受j 爲當前狀態。即:p大於[0,1)區間的隨機數,則仍接受狀態 j 爲當前狀態; 否則保留狀態 i 爲當前狀態。
算法描述:
隨機產生一個初始解 x0 ,令xbest = x0 ,並計算目標函數值E( x0 );
設置初始溫度T = T0,迭代次數 i = 1 ;
do while T > Tmin
for j = 1 ~ k
對當前最優解 xbest 按照某一鄰域函數,產生一新的解 xnew 計算新的目標函數值E(xnew ),並計算目標函數值的增量 ∆E= E(xnew )- E(xbest );
if ∆E <0
xbest = xnew ;
if ∆E >0
p = exp (- ∆E / T(i));
if c = random[0,1]<p,
xbest = xnew
else
xbest = xbest End
for update T, i = i+1;
End Do 輸出當前最優點,計算結束
原則:產生的候選解因遍佈全部解空間(保證全局最優)
方法:在當前狀態的鄰域結構內以一定概率方式(均勻分佈,指數分佈,正態分佈等)產生
優點:質量高、初始魯棒性強、簡單通用易實現
缺點:由於要求較高的初始溫度、較慢的降溫速率、較低的終止溫度,以及各溫度下足夠多次的抽樣,因此優化過程較長。
改進:略
3.遺傳算法 (Genetic Algorithm, GA)
遺傳算法是一種基於自然羣體遺傳進化機制的自適應全局優化概率搜索算法。
基本思想(傳統簡單遺傳算法):遺傳算法模擬自然選擇和自然遺傳過程中發生的繁殖、交叉和基因突變現象,在每次迭代中都保留一組候選解,並按照某種指標從解羣中選取較優的個體,利用遺傳算子(選擇、交叉和變異)對這些個體進行組合,產生新一代的候選解羣,重複此過程,直到滿足某種收斂標準爲止。
進化規則:“適者生存”:較好的解被保留,較差的解被淘汰
個體:模擬生物個體是對問題中對象(一般就是問題的解)的一種稱呼,一個個體也就是搜索空間中的一個點。
種羣:模擬生物種羣是由若干個個體組成的羣體,它一般是整個搜索空間的一個很小的子集。
適應度:借鑑生物個體對環境的適應程度,對問題中的個體對象所設計的表徵其優劣的一種測度。
適應度函數:全體個體與其適應度之間的一個對應關係。它一般是一個實值函數,該函數就是遺傳算法中指導搜索的評價函數。
染色體:問題中個體的某種字符串形式的編碼表示。
基因:字符串中的字符
如何設計遺傳算法:
- 如何進行編碼
- 如何產生初始種羣
- 如何定義適應度函數
- 如何進行遺傳操作(選擇、交叉和變異)
- 如何產生下一代種羣
- 如何定義停止規則
選擇:選擇操作把當前種羣的染色體按與適應值成正比的概率複製到新的種羣中
輪盤賭:
-
- 將種羣中所有染色體編號,並根據各自的適應值計算按比例分配的概率
- 依次計算染色體累加概率
- 產生(0,1)間的隨機數,若其最多能大於序列中第m個值,則第m個染色體被選擇
輪盤賭算法描述:
- 在[0, 1]區間內產生一個均勻分佈的隨機數r。
- 若r≤q1,則染色體x1被選中。
- 若qk-1<r≤qk(2≤k≤N), 則染色體xk被選中。
其中的qi稱爲染色體xi (i=1, 2, …, n)的積累概率, 其計算公式爲
交叉:每次作用在從交配池中隨機選取的兩個個體上(交叉概率Pc)
GA利用選擇和交叉操作可以產生具有更高平均適應值和更好染色體的羣體
變異:以變異概率pm改變染色體id某個基因,當以二進制編碼時,變異的基因由0變成1,或者由1變成0。變異概率pm一般介於1/種羣規模與1/染色體長度之間,平均約1%-2%
比起選擇和交叉操作,變異操作是GA中的次要操作,但是它在恢復羣體失去的多樣性方面具有潛在的作用。
停止準則:
- 種羣中的個體的最大適應值超過預設定值
- 種羣中個體的平均適應值超過預設定值
- 種羣中個體的進化代數超過預設定值
基本步驟:
- 隨機產生初始種羣
- 計算種羣體中每個個體的適應度值,判斷是否滿足停止條件,若不滿足,則轉第(c)步,否則,轉第(f)步;
- 按由個體適應值所決定的某個規則選擇進入下一代的個體;
- 按交叉概率pc進行交叉操作,產生新個體
- 按變異概率pm進行變異操作,產生新個體;
- 輸出種羣中適應值最優的染色體作爲問題的最優解或滿意解
4.差分進化 (Differential Evolution Algorithm, DEA)
基於羣體差異的啓發式隨機搜索算法
特點:原理簡單,受控參數少,魯棒性強
與遺傳算法十分相似
流程:變異、交叉和選擇
選擇策略:競標賽選擇
交叉操作方式與遺傳算法大體相同
變異操作方面使用差分策略:
利用羣體中個體的差分量對個體進行擾動,實現個體變異
差分策略的變異方式,有效利用羣體分佈特徵,提高算法的搜索能力,避免遺傳算法中變異方式的不足
算法流程:
- 初始化種羣
- 變異操作:
常見的差分策略:隨機選取種羣中的兩個不同個體,將其向量差縮放後與待變異個體進行向量合成,即
- 交叉操作
- 爲了確保變異中間體{vi(g+1)}的每個“染色體”至少有一個“基因”遺傳給下一代,第一個交叉操作的基因是隨機取出vi(g+1)中的第jrand位“基因”作爲交叉後“染色體”ui(g+1)第jrand位等位“基因”。後續的交叉過程,則是通過交叉概率CR來選取xi(g)還是vi(g+1)的等位基因作爲ui(g+1)的等位基因。
- 選擇操作:
差分算法採用貪婪算法來選擇進入下一代羣體的個體
缺點:隨着代數的增加,個體間的差異會逐漸降低。個體差異性的減小又影響變異所帶來的多樣性,從而導致算法過早收斂到局部極值附近時,形成早收斂現象。
改進:略