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个问题了!看起来后面几个问题还有继续更的希望啊~~最后,祝各位国庆快乐!娱乐的同时也记得提前回来科研哦!

(纪念编辑最快的一次推文!缅怀!)

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