www.gusucode.com > 几种多目标优化算法集合,包括MOEAD,MOPSO,NNIA,NSGA2等 > NNIAToolbox/OVcom.m

    function pa=OVcom(v,NO)
% OVcom: define the test problems,compute the objective values to v
% usage:
%        pa=OVcom(v,NO);
% where
%        NO:  the serial number of test problem
%        v:   the solutions in decision space
%        pa:  the solutions in objective space

% Authors: Maoguo Gong and Licheng Jiao
% April 7, 2006
% Copyright (C) 2005-2007 by Maoguo Gong (e-mail: gong@ieee.org)
%--------------------------------------------------------------------------
switch NO
%%1-3 are MISA's problems    
case 1 %%  MISA's Example 1
    x=v(:,1);y=v(:,2);
    f1=x; 
    f2=(1+10*y).*(1-(x./(1+10*y)).^2-(x./(1+10*y)).*sin(2*pi*4*x));
    pa=[f1,f2];
case 2%%  MISA's Example 2
    x=v;
    f1=zeros(size(v,1),1);
    f2=(x-5).^2;
    sx1=find(x<=1);x1=x(sx1);f1(sx1)=-x1;
    sx2=find(x>1&x<=3);x2=x(sx2);f1(sx2)=-2+x2;
    sx3=find(x>3&x<=4);x3=x(sx3);f1(sx3)=4-x3;
    sx4=find(x>4);x4=x(sx4);f1(sx4)=x4-4;
    pa=[f1,f2];
case 3 %% MISA's Example 5
    x=v(:,1);y=v(:,2);z=v(:,3);
    f1=-10*exp(-0.2*sqrt(x.^2+y.^2))-10*exp(-0.2*sqrt(y.^2+z.^2));
    f2=((abs(x)).^0.8+5*sin((x).^3))+((abs(y)).^0.8+5*sin((y).^3))+((abs(z)).^0.8+5*sin((z).^3));
    pa=[f1,f2];
    
%%4-18 are Veldhuizen's probems
case 4 %%  Binh (1)
    x=v(:,1);y=v(:,2);
    f1=x.^2+y.^2;
    f2=(x-5).^2+(y-5).^2;
    pa=[f1,f2];
case 5 %%  Binh (3)
    x=v(:,1);y=v(:,2);
    f1=x-10.^6;
    f2=y-2*10.^(-6);
    f3=x.*y-2;
    pa=[f1,f2,f3];
case 6 %%  Fonseca
    x=v(:,1);y=v(:,2);
    f1=1-exp(-(x-1).^2-(y+1).^2);
    f2=1-exp(-(x+1).^2-(y-1).^2);
    pa=[f1,f2]; 
case 7 %%  Fonseca (2)
    x=v(:,1);y=v(:,2);z=v(:,3);
    f1=1-exp(-(x-1/sqrt(3)).^2-(y-1/sqrt(3)).^2-(z-1/sqrt(3)).^2);
    f2=1-exp(-(x+1/sqrt(3)).^2-(y+1/sqrt(3)).^2-(z+1/sqrt(3)).^2);
    pa=[f1,f2];
case 8 %%  Laumanns
    x=v(:,1);y=v(:,2);
    f1=x.^2+y.^2; 
    f2=(x+2).^2+y.^2;
    pa=[f1,f2];
case 9 %%  Lis
    x=v(:,1);y=v(:,2);
    f1=(x.^2+y.^2).^(1/8); 
    f2=((x-0.5).^2+(y-0.5).^2).^(1/4);
    pa=[f1,f2];
case 10 %%  Murata
    x=v(:,1);y=v(:,2);
    f1=2* sqrt(x);
    f2=x.*(1-y)+5;
    pa=[f1,f2];
case 11 %%  Poloni
    x=v(:,1);y=v(:,2);
    A1=0.5*sin(1)-2*cos(1)+sin(2)-1.5*cos(2);
    A2=1.5*sin(1)-cos(1)+2*sin(2)-0.5*cos(2);
    B1=0.5*sin(x)-2*cos(x)+sin(y)-1.5*cos(y);
    B2=1.5*sin(x)-cos(x)+2*sin(y)-0.5*cos(y);
    f1=(1+(A1-B1).^2+(A2-B2).^2);
    f2=((x+3).^2+(y+1).^2);
    pa=[f1,f2];
case 12 %%  Quagliarella
    A1=(v(:,1).^2-10*cos(2*pi*v(:,1))+10)+(v(:,2).^2-10*cos(2*pi*v(:,2))+10)+(v(:,3).^2-10*cos(2*pi*v(:,3))+10);
    A2=((v(:,1)-1.5).^2-10*cos(2*pi*(v(:,1)-1.5))+10)+((v(:,2)-1.5).^2-10*cos(2*pi*(v(:,2)-1.5))+10)+((v(:,3)-1.5).^2-10*cos(2*pi*(v(:,3)-1.5))+10);
    f1=sqrt(A1/3);
    f2=sqrt(A2/3);
    pa=[f1,f2];
case 13 %%  Rendon
    x=v(:,1);y=v(:,2);
    f1=1./(x.^2+y.^2+1); 
    f2=x.^2+3*y.^2+1;
    pa=[f1,f2];
case 14 %%  Rendon (2)
    x=v(:,1);y=v(:,2);
    f1=x+y+1; 
    f2=x.^2+2*y-1;
    pa=[f1,f2];
case 15 %%  Schaffer  
    x=v;
    f1=x.^2;
    f2=(x-2).^2;
    pa=[f1,f2];
case 16 %%  Viennet 
    x=v(:,1);y=v(:,2);
    f1=x.^2+(y-1).^2; 
    f2=x.^2+(y+1).^2+1;
    f3=(x-1).^2+y.^2+2;
    pa=[f1,f2,f3];
case 17 %%  Viennet (2)
    x=v(:,1);y=v(:,2);
    f1=(x-2).^2/2+(y+1).^2/13+3; 
    f2=(x+y-3).^2/36+(-x+y+2).^2/8-17; 
    f3=(x+2*y-1).^2/175+(-x+2*y).^2/17-13;
    pa=[f1,f2,f3];
case 18 %%  Viennet (3)
    x=v(:,1);y=v(:,2);
    f1=(x.^2+y.^2)/2+sin(x.^2+y.^2); 
    f2=(3*x-2*y+4).^2/8+(x-y+1).^2/27+15; 
    f3=1./(x.^2+y.^2+1)-1.1*exp(-x.^2-y.^2);
    pa=[f1,f2,f3];
%DTLZ
    case 19 %%DTLZ1
        vg=v(:,3:7);
        gx=100*(5+sum((vg-0.5).^2-cos(20*pi*(vg-0.5)),2));
        f1=0.5*v(:,1).*v(:,2).*(1+gx);
        f2=0.5*v(:,1).*(1-v(:,2)).*(1+gx);
        f3=0.5*(1-v(:,1)).*(1+gx);
        pa=[f1,f2,f3];
    case 20 %%DTLZ2
        vg=v(:,3:12);
        gx=sum((vg-0.5).^2,2);
        f1=(1+gx).*cos(v(:,1)*0.5*pi).*cos(v(:,2)*0.5*pi);
        f2=(1+gx).*cos(v(:,1)*0.5*pi).*sin(v(:,2)*0.5*pi);
        f3=(1+gx).*sin(v(:,1)*0.5*pi);
        pa=[f1,f2,f3];
    case 21%%DTLZ3
        vg=v(:,3:12);
        gx=100*(10+sum((vg-0.5).^2-cos(20*pi*(vg-0.5)),2));
        f1=(1+gx).*cos(v(:,1)*0.5*pi).*cos(v(:,2)*0.5*pi);
        f2=(1+gx).*cos(v(:,1)*0.5*pi).*sin(v(:,2)*0.5*pi);
        f3=(1+gx).*sin(v(:,1)*0.5*pi);
        pa=[f1,f2,f3];
    case 22%%DTLZ4
        vg=v(:,3:12);
        gx=sum((vg-0.5).^2,2);
        f1=(1+gx).*cos((v(:,1).^100)*0.5*pi).*cos((v(:,2).^100)*0.5*pi);
        f2=(1+gx).*cos((v(:,1).^100)*0.5*pi).*sin((v(:,2).^100)*0.5*pi);
        f3=(1+gx).*sin((v(:,1).^100)*0.5*pi);
        pa=[f1,f2,f3];   
%     case 23%DTLZ5
%         vg=v(:,3:12);
%         gx=sum((vg-0.5).^2,2);
%         Q1=(1./(2*(1+gx))).*(1+2*gx.*v(:,1));
%         Q2=(1./(2*(1+gx))).*(1+2*gx.*v(:,2));
%         f1=(1+gx).*cos(Q1*0.5*pi).*cos(Q2*0.5*pi);
%         f2=(1+gx).*cos(Q1*0.5*pi).*sin(Q2*0.5*pi);
%         f3=(1+gx).*sin(Q1*0.5*pi);
%         pa=[f1,f2,f3];
    case 24%%DTLZ6
        vg=v(:,3:22);
        gx=1+(9/20)*sum(vg,2);
        f1=v(:,1);
        f2=v(:,2);
        hf=3-(f1./(1+gx)).*(1+sin(3*pi*f1))-(f2./(1+gx)).*(1+sin(3*pi*f2));
        f3=(1+gx).*hf;
        pa=[f1,f2,f3];
%%ZDT
    case 25 %ZDT1
        vg=v(:,2:30);
        gx=1+9*(sum(vg,2)/29);
        f1=v(:,1);
        f2=gx.*(1-sqrt(v(:,1)./gx));
        pa=[f1,f2];
    case 26 %ZDT2
        vg=v(:,2:30);
        gx=1+9*(sum(vg,2)/29);
        f1=v(:,1);
        f2=gx.*(1-(v(:,1)./gx).^2);
        pa=[f1,f2];
    case 27 %ZDT3
        vg=v(:,2:30);
        gx=1+9*(sum(vg,2)/29);
        f1=v(:,1);
        f2=gx.*(1-sqrt(v(:,1)./gx)-(v(:,1)./gx).*sin(10*pi*v(:,1)));
        pa=[f1,f2];
    case 28 %ZDT4
        vg=v(:,2:10);
        gx=1+10*9+(sum(vg.^2-10*cos(4*pi*vg),2));
        f1=v(:,1);
        f2=gx.*(1-sqrt(v(:,1)./gx));
        pa=[f1,f2];
%     case 29 %ZDT5
    case 30 %ZDT6
        vg=v(:,2:10);
        gx=1+9*(sum(vg,2)/9).^0.25;
        f1=1-(exp(-4*v(:,1))).*(sin(6*pi*v(:,1))).^6;
        f2=gx.*(1-(f1./gx).^2);
        pa=[f1,f2];
end