Házik megoldása:
Contents
Rastrigin függvény
function ki=rastrigin(x)
ki=10+x(1)^2-10.*cos(2*pi*x(1))+x(2)^2-10*cos(2*pi*x(2));
Ismert, hogy az abszolút minimuma a [-5.12,5.12]X[-5.12,5.12] tartományon az origóban van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@rastrigin); xminR(i,:)=rechenberg(@rastrigin,[1,1]); xmin1(i,:)=esUc1(@rastrigin,2); xminU(i,:)=esUcn(@rastrigin,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:),2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:),2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2),2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2),2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 11 20 83 81
Ackley függvény
function ki=ackley(x) ki=-20*exp(-0.2*sqrt(0.5*x(1)^2+x(2)^2))... -exp(0.5*cos(2*pi*x(1))+cos(2*pi*x(2)))+exp(1)+20;
Ismert, hogy az abszolút minimuma a [-5,5]X[-5,5] tartományon az origóban van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@ackley); xminR(i,:)=rechenberg(@ackley,[1,1]); xmin1(i,:)=esUc1(@ackley,2); xminU(i,:)=esUcn(@ackley,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:),2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:),2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2),2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2),2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 96 99 100 100
Rosenbrock függvény
function ki=rosenbrock(x)
ki=100*(x(2)-x(1)^2)^2+(x(1)-1)^2;
Ismert, hogy az abszolút minimuma a [-5,5]X[-5,5] tartományon az [1,1]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(0,0,5,2,0.1,1000,@rosenbrock); xminR(i,:)=rechenberg(@rosenbrock,[0,0]); xmin1(i,:)=esUc1(@rosenbrock,2); xminU(i,:)=esUcn(@rosenbrock,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[1,1],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[1,1],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[1,1],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[1,1],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 24 100 0 0
Beale függvény
function ki=beale(x)
ki=(1.5-x(1)+x(1)*x(2))^2+(2.25-x(1)+x(1)*x(2)^2)^2+(2.625-x(1)+x(1)*x(2)^3)^2;
Ismert, hogy az abszolút minimuma a [-4.5,4.5]X[-4.5,4.5] tartományon az [3,0.5]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(0,0,5,2,0.1,1000,@beale); xminR(i,:)=rechenberg(@beale,[0,0]); xmin1(i,:)=esUc1(@beale,2); xminU(i,:)=esUcn(@beale,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[3,0.5],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[3,0.5],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[3,0.5],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[3,0.5],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 82 87 100 100
Booth függvény
function ki=booth(x)
ki=(x(1)+2*x(2)-7)^2+(2*x(1)+x(2)-5)^2;
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az [1,3]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(0,0,5,2,0.1,1000,@booth); xminR(i,:)=rechenberg(@booth,[0,0]); xmin1(i,:)=esUc1(@booth,2); xminU(i,:)=esUcn(@booth,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[1,3],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[1,3],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[1,3],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[1,3],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 100 100 100 100
Matyas függvény
function ki=matyas(x)
ki=0.26*(x(1)^2+x(2)^2)-0.48*x(1)*x(2);
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az [0,0]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@matyas); xminR(i,:)=rechenberg(@matyas,[1,1]); xmin1(i,:)=esUc1(@matyas,2); xminU(i,:)=esUcn(@matyas,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[0,0],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[0,0],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[0,0],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[0,0],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 100 100 100 100
Three-hump camel függvény
function ki=thCamel(x)
ki=2*x(1)^2-1.05*x(1)^4+x(1)^6/6+x(1)*x(2)+x(2)^2;
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az [0,0]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@thCamel); xminR(i,:)=rechenberg(@thCamel,[1,1]); xmin1(i,:)=esUc1(@thCamel,2); xminU(i,:)=esUcn(@thCamel,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[0,0],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[0,0],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[0,0],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[0,0],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 89 96 100 100
Easom függvény
function ki=easom(x)
ki=-cos(x(1))*cos(x(2))*exp(-(x(1)-pi)^2-(x(2)-pi)^2);
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az [pi,pi]-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@easom); xminR(i,:)=rechenberg(@easom,[1,1]); xmin1(i,:)=esUc1(@easom,2); xminU(i,:)=esUcn(@easom,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[pi,pi],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[pi,pi],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[pi,pi],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[pi,pi],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 99 100 100 100
McCormick függvény
function ki=mcCormick(x)
ki=sin(x(1)+x(2))+(x(1)-x(2))^2-1.5*x(1)+2.5*x(2)+1;
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az x=-0.54719, y=-1.54719-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@mcCormick); xminR(i,:)=rechenberg(@mcCormick,[1,1]); xmin1(i,:)=esUc1(@mcCormick,2); xminU(i,:)=esUcn(@mcCormick,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[-0.54719,-1.54719],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[-0.54719,-1.54719],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[-0.54719,-1.54719],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[-0.54719,-1.54719],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 0 55 3 4
Styblinski-Tang függvény
function ki=sTang(x)
ki=(x(1)^4-16*x(1)^2+5*x(1))/2+(x(2)^4-16*x(2)^2+5*x(2))/2;
Ismert, hogy az abszolút minimuma a [-10,10]X[-10,10] tartományon az x=-2.903534, y=-2.903534-ben van. Mindegyik megoldóval 100-szor keresve:
futasokszama=100; for i=1:futasokszama xminH(i,:)=hutes(1,1,5,2,0.1,1000,@sTang); xminR(i,:)=rechenberg(@sTang,[1,1]); xmin1(i,:)=esUc1(@sTang,2); xminU(i,:)=esUcn(@sTang,2); end
Hányszor találta meg a helyes minimumot:
sikeres=zeros(futasokszama,4); for i=1:futasokszama if norm(xminH(i,:)-[-2.903534,-2.903534],2)<10^-2 sikeres(i,1)=1; end if norm(xminR(i,:)-[-2.903534,-2.903534],2)<10^-2 sikeres(i,2)=1; end if norm(xmin1(i,1:2)-[-2.903534,-2.903534],2)<10^-2 sikeres(i,3)=1; end if norm(xminU(i,1:2)-[-2.903534,-2.903534],2)<10^-2 sikeres(i,4)=1; end end sum(sikeres)
ans = 76 1 100 99