直接從微信公衆號搬運的~~~
文章主題:WFG系列測試問題的定義,特徵,真實PF,使用方法
適用人羣:正在學習優化算法的同學
推薦閱讀時間:2mins
1. ZDT簡介
在學習多目標優化的過程中,WFG測試問題常常出現,但他的定義形式和代碼常常讓你摸不着頭腦。對,說得就是你!不然你爲什麼要進來?恰好前段時間看到了有關WFG問題的整理,就偷個懶當個搬運工。把定義和代碼都放這裏啦。希望小夥伴們可以收藏,以後用到的時候可以隨時查閱哦~
2. WFG函數定義
3. WFG代碼(MATLAB)
switch Problem
case 'WFG1'
t1 = zeros(N,K+L);
t1(:,K+1:end) = s_linear(z01(:,K+1:end),0.35);
t2 = zeros(N,K+L);
t2(:,K+1:end) = b_flat(t1(:,K+1:end),0.8,0.75,0.85);
t3 = zeros(N,K+L);
t3 = b_poly(t2,0.02);
t4 = zeros(N,M);
t4(:,M) = r_sum(t3(:,K+1:K+L),2*(K+1):2:2*(K+L));
x = zeros(N,M);
x(:,M) = t4(:,M);
case 'WFG2'
t1 = zeros(N,K+L);
t1(:,K+1:end) = s_linear(z01(:,K+1:end),0.35);
t2 = zeros(N,K+L/2);
for i = K+1 : K+L/2
t2(:,i) = r_nonsep(t1(:,K+2*(i-K)-1:K+2*(i-K)),2);
end
t3 = zeros(N,M);
t3(:,M) = r_sum(t2(:,K+1:K+L/2),ones(1,L/2));
x = zeros(N,M);
x(:,M) = t3(:,M);
case 'WFG3'
t1 = zeros(N,K+L);
t1(:,K+1:end) = s_linear(z01(:,K+1:end),0.35);
t2 = zeros(N,K+L/2);
for i = K+1 : K+L/2
t2(:,i) = r_nonsep(t1(:,K+2*(i-K)-1:K+2*(i-K)),2);
end
t3 = zeros(N,M);
t3(:,M) = r_sum(t2(:,K+1:K+L/2),ones(1,L/2));
x = zeros(N,M);
x(:,M) = t3(:,M);
case 'WFG4'
t1 = zeros(N,K+L);
t1 = s_multi(z01,30,10,0.35);
t2 = zeros(N,M);
t2(:,M) = r_sum(t1(:,K+1:K+L),ones(1,L));
x = zeros(N,M);
x(:,M) = t2(:,M);
case 'WFG5'
t1 = zeros(N,K+L);
t1 = s_decept(z01,0.35,0.001,0.05);
t2 = zeros(N,M);
t2(:,M) = r_sum(t1(:,K+1:K+L),ones(1,L));
x = zeros(N,M);
x(:,M) = t2(:,M);
case 'WFG6'
t1 = zeros(N,K+L);
t1(:,K+1:end) = s_linear(z01(:,K+1:end),0.35);
t2 = zeros(N,M);
t2(:,M) = r_nonsep(t1(:,K+1:end),L);
x = zeros(N,M);
x(:,M) = t2(:,M);
case 'WFG7'
t1 = zeros(N,K+L);
t1(:,K+1:end) = z01(:,K+1:end);
t2 = zeros(N,K+L);
t2(:,K+1:end) = s_linear(t1(:,K+1:end),0.35);
t3 = zeros(N,M);
t3(:,M) = r_sum(t2(:,K+1:K+L),ones(1,L));
x = zeros(N,M);
x(:,M) = t3(:,M);
case 'WFG8'
t1 = zeros(N,K+L);
for i = K+1 : K+L
t1(:,i) = b_param(z01(:,i),r_sum(z01(:,1:i-1),ones(1,i-1)),0.98/49.98,0.02,50);
end
t2 = zeros(N,K+L);
t2(:,K+1:end) = s_linear(t1(:,K+1:end),0.35);
t3 = zeros(N,M);
t3(:,M) = r_sum(t2(:,K+1:K+L),ones(1,L));
x = zeros(N,M);
x(:,M) = t3(:,M);
case 'WFG9'
t1 = zeros(N,K+L);
for i = 1 : K+L-1
t1(:,i) = b_param(z01(:,i),r_sum(z01(:,i+1:end),ones(1,K+L-i)),0.98/49.98,0.02,50);
end
t1(:,end) = z01(:,end);
t2 = zeros(N,K+L);
t2(:,K+1:end) = s_multi(t1(:,K+1:end),30,95,0.35);
t3 = zeros(N,M);
t3(:,M) = r_nonsep(t2(:,K+1:end),L);
x = zeros(N,M);
x(:,M) = t3(:,M);
end
Output = mean(x(:,M));
4. 後記
終於!更到第2個問題了!看起來後面幾個問題還有繼續更的希望啊~~最後,祝各位國慶快樂!娛樂的同時也記得提前回來科研哦!
(紀念編輯最快的一次推文!緬懷!)