WFG系列問題-多目標優化測試問題

直接從微信公衆號搬運的~~~

文章主題: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個問題了!看起來後面幾個問題還有繼續更的希望啊~~最後,祝各位國慶快樂!娛樂的同時也記得提前回來科研哦!

(紀念編輯最快的一次推文!緬懷!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章