카테고리 없음2013. 4. 9. 22:25

clear all clear clc

 

rasio = 0.6; x = [1 7]; delx = [0.1 0.1]; tol = [0.001 0.001]; n=length(x); Fopt=fungsi(x(1),x(2)); xopt=x;F=Fopt; disp([xopt Fopt])


%checking delta


chekdel=strcat('if delx(1)<=tol(1)&delx(2)<=tol(2);','disp([xopt Fopt]);'...

    ,'disp(delx);','else;','del=delx*rasio;','delx=del;','eval(eksplorasi);'...

    ,'end;');


%repeating success step


ulsuk=strcat('while Fopt<F;','disp([xopt Fopt]);','for i=1:n;',... 

    'x(i)=xopt(i)+delx(i)*tanda(i);','end;','F=fungsi(x(1),x(2));',... 

    'if F<=Fopt;','xopt=x;', 'Fopt=F;','else;','break;','end;','end;',... 

    'eval(eksplorasi)');


%exploration:


eksplorasi=strcat('for ep=1:n;','tanda(ep)=0;','x(ep)=xopt(ep)+delx(ep);',... 

    'Fd=fungsi(x(1),x(2));','if Fd<=Fopt;','xopt(ep)=x(ep);','Fopt=Fd;','tanda(ep)=1;',... 

    'else;','x(ep)=xopt(ep)-delx(ep);','Fd=fungsi(x(1),x(2));','if Fd<=Fopt;',... 

    'xopt(ep)=x(ep);','Fopt=Fd;','tanda(ep)=-1;','end;','end;','end;','disp([xopt Fopt]);',... 

    'if abs(tanda(1))>0|abs(tanda(2))>0;','eval(ulsuk);','else;','eval(chekdel);',... 

    'end;'); eval(eksplorasi);




Posted by 오늘보다 나은 내일