前言
提醒:
文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。
其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展及意見建議,歡迎評論區討論交流。
內容由AI輔助生成,僅經筆者審核整理,請甄別食用。
文章目錄
- 前言
- 一、SPEA2 算法的數學基礎
- 二、關鍵數學概念與公式
- 1. **支配關系(Dominance)**
- 2. **強度值(Strength Value)**
- 3. **原始適應度(Raw Fitness)**
- 4. **密度估計(Density Estimation)**
- 5. **擁擠度適應度(Crowding Distance Fitness)**
- 三、算法流程(數學化描述)
- 1. **初始化**
- 2. **適應度計算**
- 3. **外部存檔更新**
- 4. **選擇與進化**
- 5. **終止條件**
- 四、SPEA2 與 SPEA 的核心改進
- 五、數學性質分析
- 六、應用場景
一、SPEA2 算法的數學基礎
SPEA2(Strength Pareto Evolutionary Algorithm 2)是經典的多目標優化算法,通過強度值、密度估計和精確的適應度分配機制,在帕累托前沿的收斂性和分布性上取得平衡。其核心數學框架如下:
二、關鍵數學概念與公式
1. 支配關系(Dominance)
設兩個解x,yx, yx,y,若滿足:
?i∈{1,2,…,m}:fi(x)≤fi(y)且?j∈{1,2,…,m}:fj(x)<fj(y)\forall i \in \{1,2,\dots,m\}: f_i(x) \leq f_i(y) \quad \text{且} \quad \exists j \in \{1,2,\dots,m\}: f_j(x) < f_j(y) ?i∈{1,2,…,m}:fi?(x)≤fi?(y)且?j∈{1,2,…,m}:fj?(x)<fj?(y)
則稱xxx支配yyy,記作x?yx \prec yx?y。
(其中fif_ifi?是第iii個目標函數,mmm是目標數量)
2. 強度值(Strength Value)
個體xxx的強度值S(x)S(x)S(x)定義為:
S(x)=∣{y∈P∪A:x?y}∣S(x) = |\{y \in P \cup A: x \prec y\}| S(x)=∣{y∈P∪A:x?y}∣
即 被xxx支配的解的數量。
(PPP是當前種群,AAA是外部存檔)
3. 原始適應度(Raw Fitness)
個體xxx的原始適應度R(x)R(x)R(x)定義為:
R(x)=∑y∈P∪A:y?xS(y)R(x) = \sum_{y \in P \cup A: y \prec x} S(y) R(x)=y∈P∪A:y?x∑?S(y)
即 所有支配xxx的解的強度值之和。
- 物理意義:R(x)R(x)R(x)越小,說明xxx被支配的程度越低,解的質量越高。
4. 密度估計(Density Estimation)
SPEA2 引入 k - 最近鄰距離 衡量解的分布性:
σxk=歐氏距離(x,第k個最近鄰)\sigma_x^k = \text{歐氏距離}(x, \text{第} k \text{個最近鄰}) σxk?=歐氏距離(x,第k個最近鄰)
其中,σxk\sigma_x^kσxk?是個體xxx到其第kkk個最近鄰的距離。
- 參數選擇:通常取k=∣P∪A∣k = \sqrt{|P \cup A|}k=∣P∪A∣?。
5. 擁擠度適應度(Crowding Distance Fitness)
綜合原始適應度與密度信息,個體xxx的最終適應度為:
F(x)=R(x)+1σxk+2F(x) = R(x) + \frac{1}{\sigma_x^k + 2} F(x)=R(x)+σxk?+21?
- 設計邏輯:
- R(x)R(x)R(x)主導收斂性(值越小越優);
- 1σxk+2\frac{1}{\sigma_x^k + 2}σxk?+21?補償分布性(距離越大,擁擠度越小,值越小越優)。
三、算法流程(數學化描述)
1. 初始化
生成初始種群P0P_0P0?,初始化外部存檔A0=?A_0 = \varnothingA0?=?。
2. 適應度計算
對每個個體x∈Pt∪Atx \in P_t \cup A_tx∈Pt?∪At?:
- 計算強度值S(x)S(x)S(x);
- 計算原始適應度R(x)R(x)R(x);
- 計算kkk- 最近鄰距離σxk\sigma_x^kσxk?;
- 計算最終適應度F(x)=R(x)+1σxk+2F(x) = R(x) + \frac{1}{\sigma_x^k + 2}F(x)=R(x)+σxk?+21?。
3. 外部存檔更新
- 非支配解篩選:
At′={x∈Pt∪At:?y∈Pt∪At使得?y?x}A_t' = \{x \in P_t \cup A_t: \nexists y \in P_t \cup A_t \text{ 使得 } y \prec x\} At′?={x∈Pt?∪At?:?y∈Pt?∪At??使得?y?x} - 容量控制:
- 若∣At′∣≤NA|A_t'| \leq N_A∣At′?∣≤NA?(存檔容量),則At+1=At′A_{t+1} = A_t'At+1?=At′?;
- 若∣At′∣>NA|A_t'| > N_A∣At′?∣>NA?,則刪除 擁擠度最高的個體(即σxk\sigma_x^kσxk?最小的個體),直到∣At+1∣=NA|A_{t+1}| = N_A∣At+1?∣=NA?。
4. 選擇與進化
- 二元錦標賽選擇:
隨機選擇兩個個體x,yx, yx,y,若F(x)<F(y)F(x) < F(y)F(x)<F(y),則xxx被選中進入交配池。 - 交叉與變異:
- 交叉:x′,y′=Crossover(x,y)x', y' = \text{Crossover}(x, y)x′,y′=Crossover(x,y);
- 變異:x′′=Mutation(x′)x'' = \text{Mutation}(x')x′′=Mutation(x′);
- 生成子代種群Pt+1P_{t+1}Pt+1?。
5. 終止條件
重復步驟2 - 4,直到滿足終止條件(如達到最大迭代次數TTT)。
四、SPEA2 與 SPEA 的核心改進
-
精確的密度估計:
SPEA2 用kkk- 最近鄰距離替代 SPEA 的網格法,更精確地衡量解的分布性。 -
適應度計算優化:
引入1σxk+2\frac{1}{\sigma_x^k + 2}σxk?+21?項,確保擁擠區域的個體適應度更高(被優先淘汰)。 -
外部存檔更新機制:
直接刪除擁擠區域的解,而非隨機刪除,更好地保留多樣性。
五、數學性質分析
-
收斂性保證:
通過最小化R(x)R(x)R(x),算法傾向于保留非支配解,逐步逼近真實帕累托前沿。 -
分布性保證:
通過懲罰擁擠區域(σxk\sigma_x^kσxk?小)的解,推動種群向稀疏區域擴展。 -
時間復雜度:
主要由適應度計算(O(N2)O(N^2)O(N2))和存檔更新(O(Nlog?N)O(N \log N)O(NlogN))決定,其中N=∣P∣+∣A∣N = |P| + |A|N=∣P∣+∣A∣。
六、應用場景
SPEA2 適用于 2 - 3 個目標 的優化問題,典型場景包括:
- 工程設計:如汽車輕量化(同時優化重量、強度、成本);
- 資源分配:如電網調度(同時優化發電成本和污染排放);
- 機器學習:如模型訓練(同時優化準確率和計算效率)。
通過調整參數(如種群大小、存檔容量、交叉/變異率),可進一步優化算法性能。