一、VARE簡介
VARE(Vector Autoregressive Evolution)算法是2023年提出的一種新型的動態多目標優化(DMO)算法,旨在有效處理隨時間變化的多目標優化問題。它通過結合向量自回歸(VAR)模型和環境感知超變異(EAH)策略,動態適應環境變化,預測新的 Pareto 最優解,并保持種群多樣性。VARE 的主要貢獻在于提出了一個能夠考慮決策變量之間相互關系的 VAR 模型用于種群預測,并引入 EAH 策略來動態調整種群多樣性。
(1)向量自回歸(VAR)模型
VAR 模型是一種用于預測相互聯系的時間序列系統的統計模型。在 VARE 算法中,VAR 模型用于預測新環境中的解,考慮了決策變量之間的相互關系。VAR 模型的數學形式如下:
x t = α + β 1 x t ? 1 + β 2 x t ? 2 + ? + β l x t ? l + μ x_t = α + β_1x_{t-1} + β_2x_{t-2} + \cdots + β_lx_{t-l} + μ xt?=α+β1?xt?1?+β2?xt?2?+?+βl?xt?l?+μ
其中:
- x t x_t xt?是一個 n 維內生變量向量,表示當前時刻的決策變量。
- α α α 是一個 n 維常數向量。
- β 1 , β 2 , … , β l β_1, β_2, \ldots, β_l β1?,β2?,…,βl?是模型的系數矩陣,表示不同滯后階數對當前值的影響。
- l l l 是滯后階數,表示模型考慮的過去時間步數。
- μ μ μ是一個零均值白噪聲向量,表示模型的誤差項。
在 VARE 中,為了處理高維決策變量帶來的參數稀疏問題,使用主成分分析(PCA)進行降維。首先將歷史解數據映射到低維空間,然后在低維空間中構建 VAR 模型,最后將預測結果映射回原始決策空間。
(2)環境感知超變異(EAH)策略
EAH 策略用于動態調整種群多樣性,以應對環境變化。EAH 根據目標空間和決策空間的變化估計環境變化的嚴重程度,并據此調整超變異的分布指數。具體計算如下:
客觀空間變化度量
在目標空間,EAH 計算所有目標的相對差異平均值 (?F):
? F = 1 M N ∑ i = 1 N ∑ j = 1 M ∣ f j ( x i , t + 1 ) ? f j ( x i , t ) f j ( x i , t ) + ε ∣ ?F = \frac{1}{MN} \sum_{i=1}^N \sum_{j=1}^M \left| \frac{f_j(x_i, t+1) - f_j(x_i, t)}{f_j(x_i, t) + ε} \right| ?F=MN1?i=1∑N?j=1∑M? ?fj?(xi?,t)+εfj?(xi?,t+1)?fj?(xi?,t)? ?
其中:
- M M M 是目標數量。
- N N N是種群大小。
- f j ( x i , t ) f_j(x_i, t) fj?(xi?,t)是個體 x i x_i xi?在時間 t t t的第 j j j個目標值。
- ε ε ε是一個小常數,用于防止除以零。
決策空間變化度量
在決策空間,EAH 計算每個個體的相對決策差異平均值 (?X):
? X = 1 N n ∑ i = 1 N ∑ j = 1 n ∣ x ^ i , j ? x i , j x i , j + ε ∣ ?X = \frac{1}{Nn} \sum_{i=1}^N \sum_{j=1}^n \left| \frac{\hat{x}_{i,j} - x_{i,j}}{x_{i,j} + ε} \right| ?X=Nn1?i=1∑N?j=1∑n? ?xi,j?+εx^i,j??xi,j?? ?
其中:
- n n n是決策變量的數量。
- x i , j x_{i,j} xi,j?是個體 x i x_i xi?在時間 t t t 的第 j j j個決策變量值。
- x ^ i , j \hat{x}_{i,j} x^i,j?是個體 x i x_i xi? 在時間 t + 1 t+1 t+1 的第 j j j 個決策變量值。
分布指數調整
根據 ? F ?F ?F 和 ? X ?X ?X計算超變異的分布指數 η η η:
η = 20 × max ? ( e ? ( ? F + ? X ) , 0.1 ) η = 20 \times \max(e^{-(?F + ?X)}, 0.1) η=20×max(e?(?F+?X),0.1)
該公式將 η η η 的取值范圍限制在 [2, 20],其中 η = 20 η = 20 η=20 表示沒有環境變化,而 η ≥ 2 η ≥ 2 η≥2則確保超變異的解不會過于隨機。
(3)自適應變化響應機制
VARE 算法通過自適應變化響應機制,在 VAR 預測和 EAH 之間進行選擇。選擇機制基于過去環境變化中不同策略的成功率。具體來說,為每個參考方向 λ i λ_i λi? 定義選擇 VAR 預測的概率 π i π_i πi?:
π i = ρ i , p ρ i , p + ρ i , m π_i = \frac{ρ_{i,p}}{ρ_{i,p} + ρ_{i,m}} πi?=ρi,p?+ρi,m?ρi,p??
其中:
- ρ i , s ρ_{i,s} ρi,s?是策略 s s s(可以是 VAR 預測或 EAH)在過去 L L L個環境變化中生成的個體被保留下來的比率。
- L L L 是過去環境變化的數量,通常設置為等于 VAR 模型的滯后階數 l l l。
(4)算法流程
- 初始化:生成均勻分布的參考方向,初始化種群和 VARE 概率向量。
- 環境變化檢測:在每一代開始時檢測環境是否發生變化。
- 響應環境變化:
- 如果檢測到環境變化,將當前種群存檔,并根據 VARE 概率決定使用 VAR 預測還是 EAH 生成新個體。
- 若未檢測到環境變化,則通過遺傳操作生成新種群。
- 多樣性中心排序:對當前種群和新生成的個體進行多樣性中心排序,更新種群。
- 更新 VARE 概率:根據個體保留的成功率更新 VARE 概率。
(5)關鍵創新點
- 向量自回歸(VAR)模型:用于考慮決策變量之間的相互關系,預測新環境中的解。通過主成分分析(PCA)進行降維,提高模型參數估計效率。
- 環境感知超變異(EAH):根據目標空間和決策空間的變化估計環境變化的嚴重程度,動態調整超變異的分布指數,增加種群多樣性。
- 自適應變化響應機制:根據過去環境變化中不同策略的成功率,自適應選擇 VAR 預測或 EAH 作為響應機制。
(6)參考文獻
[1] Jiang S , Wang Y , Hu Y ,et al. Vector Autoregressive Evolution for Dynamic Multi-Objective Optimisation[J]. ArXiv, 2023, abs/2305.12752.DOI:10.48550/arXiv.2305.12752.
二、VARE求解DF1-DF14
(1)CEC2018 動態多目標測試函數介紹
CEC2018 競賽定義了 14 個動態多目標測試函數(DF1-DF14),分為兩類:
- 雙目標問題(DF1-DF9):這些函數具有兩個目標,用于測試算法在動態環境下的性能。
- 三目標問題(DF10-DF14):這些函數具有三個目標,增加了優化的復雜性。
這些測試函數設計了不同的動態特性,以評估動態多目標優化算法的性能。動態特性包括:
- 目標位置變化:Pareto 最優前沿(PF)或 Pareto 最優解集(PS)的位置隨時間變化。
- 約束條件變化:動態約束條件的引入或變化。
- 目標數量或決策變量數量變化:在某些測試函數中,目標數量或決策變量數量可能隨時間變化。
測試函數 | 目標數量 | 動態特性 |
---|---|---|
DF1 | 2 | PF 的位置隨時間線性移動 |
DF2 | 2 | PF 的位置隨時間非線性移動 |
DF3 | 2 | PF 的位置和形狀隨時間變化 |
DF4 | 2 | PF 的位置和形狀隨時間劇烈變化 |
DF5 | 2 | PF 的凸性隨時間變化 |
DF6 | 2 | PF 的凹性隨時間變化,并引入局部最優解 |
DF7 | 2 | PF 的不同部分以不同方向和速度移動 |
DF8 | 2 | PF 的不同部分以不同方向和速度移動,且存在多個膝點 |
DF9 | 2 | PF 斷裂成多個部分 |
DF10 | 3 | PF 的位置隨時間移動 |
DF11 | 3 | PF 的位置和形狀隨時間變化 |
DF12 | 3 | PF 的位置和形狀隨時間劇烈變化 |
DF13 | 3 | PF 的凸性隨時間變化 |
DF14 | 3 | PF 的凹性隨時間變化,并引入局部最優解 |
(2)部分MATLAB代碼
%% 計算POF
for i=1:size(ArchiveResult{1,1}{1,1},1)/(10*nt*taut)k1=1+(i-1)*(10*nt*taut);k2=k1+nt*taut;if prob_ids<110data=ArchiveResult{1,1}{1,1}(k1:k2,end-1:end);elsedata=ArchiveResult{1,1}{1,1}(k1:k2,end-2:end);endresult(i).data=data;% plot(data(:,1)+i,data(:,2)+i,'ro')% hold on
end
%% 計算TurePOF
prob=problem(prob_ids);
k=1;
for t=0:1:100/taut-1PF(k).data=generatePF(prob,t);PF(k).t=t;k=k+1;
end%% 畫圖
figure
Fm=size(PF,2);
Tm=size(PF(1).data,2);
if Tm<3for t=1:Fmplot(result(t).data(:,1)+PF(t).t,result(t).data(:,2)+PF(t).t,'ro');hold onplot(PF(t).data(:,1)+PF(t).t,PF(t).data(:,2)+PF(t).t,'g.');endxlabel('f1+t')ylabel('f2+t')
elsefor t=1:Fmplot3(result(t).data(:,1)+PF(t).t,result(t).data(:,2)+PF(t).t,result(t).data(:,3)+PF(t).t,'ro');hold onplot3(PF(t).data(:,1)+PF(t).t,PF(t).data(:,2)+PF(t).t,PF(t).data(:,3)+PF(t).t,'g.');endxlabel('f1+t')ylabel('f2+t')zlabel('f3+t')
end
title(prob.name)