直接从微信公众号搬运的~~~
文章主题: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个问题了!看起来后面几个问题还有继续更的希望啊~~最后,祝各位国庆快乐!娱乐的同时也记得提前回来科研哦!
(纪念编辑最快的一次推文!缅怀!)