Rozwiązywanie zadań optymalizacji 105
£d=f open ( ' optv4out. m' , 'wt');
fprintf(fd,'\nOptymalizacja za pomocą funkcji constr()\n\n')
x0 =[10 10 10] ;
vlb=[-10 -5 0];
vub=[1 5 ] ;
options=foptions;
options(1)=1; % wydruk tabelaryczny w trakcie optymalizacji
options(13)=2; % 2 ograniczenia równościowe [x, options,lambda] =. . .
)
constr]'optfg',x0,options,vlb,vub,'optgrad') fprintf (fd, ’ \n min xl/s2 + x2~3 + x3A4'); fprintf(fd,'\nprzy ograniczeniach funkcyjnych:
fprintf (fd, fprintf (fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, fprintf(fd, x=xO ;
\n
\n
\n
\n
\n
\n
\n
\n
\n
)
- nieliniowych równościowych'
) ;
-46 + xl'"2 + x2A2 + x3A2 = 0'
- liniowych równościowych'); xl + x2 + x3 = 10');
- nieliniowych nierownosciowych' 1.5+xl*x2-x3 < = 0');
-10 - xl*x2 < = 0');
- liniowych nierownosciowych');
2 *xl + 3 *x2 + 4*x3 <= 35');
\nprzy ograniczeniach nakładanych na zmienne’) \n -10 <= xl <= 1');
\n -5 <= x2 <= 5 ' ) ;
\n 0 <= x3 <= inf');
\n\n\n *** PRZED OPTYMALIZACJA ***');
x0
fprintf(fd,'\n Punkt startowy: x = fprintf(fd,'\n x(l) = %6.2f',x(l) );
fprintf(fd,’\n x(2) = %6.2f',x(2) );
fprintf(fd,'\n x(3) =%6.2f',x(3) );
[f,g] = optfg (x);
%f ' ,f) ;
fprintf(fd, '\n Funkcja celu przed optymalizacja f fprintf(fd,'\n Ograniczenia przed optymalizacja'); fprintf(fd,'\n - równościowe nieliniowe'); fprintf (fd, '\n xl~2+x2 "'2+x3 A2-46=0 , g (1) =% f ' ,g(l) ) fprintf(fd,1\n - równościowe liniowe'); fprintf(fd,'\n xl+x2+x3-10=0, g(2)=%f',g(2)); fprintf(fd,'\n - nierownosciowych nieliniowe'); fprintf(fd,'\n xl*x2+l.5<=0, g(3)=%f',g(3)); fprintf(fd,’\n -xl*x2-10<=0, g(4)=%f',g(4)); fprintf(fd,'\n - nierownosciowe liniowe'); fprintf(fd,'\n 2*xl+3*x2+4*x3-35<=0, g(5)=%f',g(5)
fprintf(fd,'\n ================================\n\n');
% optymalizacja za pomocą funkcji constr()
[x,options,lambda]=constr('optfg',x0,options,vlb,vub,'optgrad') [ f,g] = optfg(x) ;