优化工具箱

无约束优化例子

 function f=objfun1(x);

  f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

x0=[-1,1];

options=optimset('Largescale','off');

[x,fval]=fminunc(@objfun1,x0,options)

 

Optimization terminated  successfully:

 Current search direction is a descent  direction, and magnitude of

 directional derivative in search direction  less than 2*options.TolFun

x =

   0.5000   -0.9999

fval =

  6.2428e-009

 

非线性不等约束例子

s.t  x(1)*x(2)-x(1)-x(2)-1.5;

   x(1)*x(2)-10

function [c,ceq]=confun1(x)

 c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];

 ceq=[];

 

x0=[-1,1];

options=optimset('Largescale','off');

[x,fval]=fmincon(@objfun1,x0,[ ],[ ],[ ],[ ],[ ],[ ],@confun1,options)

 

Optimization terminated successfully:

 First-order optimality measure less than options.TolFun and

  maximum constraint violation is less than options.TolCon

Active inequalities (to within options.TolCon = 1e-006):

  lower  upper   ineqlin   ineqnonlin

                                    1

                                    2

x =

  -9.5474   1.0474

fval =

    0.0236

 

 

例3有界约束例子

(lbix(i)ubi)

x0=[-1,1];

lb=[0,0];ub=[ ];

options=optimset('Largescale','off');

[x,fval]=fmincon(@objfun1,x0,[ ],[ ],[ ],[ ],lb,ub,@confun1,options)

 

Optimization terminated successfully:

 First-order optimality measure less than options.TolFun and

  maximum constraint violation is less than  options.TolCon

Active inequalities (to within options.TolCon = 1e-006):

 lower   upper  ineqlin  ineqnonlin

    1                  1

x =

   0  1.5000

fval =

     8.5000

可以用以下形式

   lb=[-1nf,a],ub=[b,inf]

 

function [f,g]=objfung1(x)

f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

t=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

g=[t+exp(x(1))*(8*x(1)+4*x(2)),exp(x(1))*(4*x(2)+2)];

 

function [c,ceq,Dc,Dceq]=confung1(x)

    c(1)=1.5+x(1)*x(2)-x(1)-x(2);

c(2)=-x(1)*x(2)-10;

%gradient of the constraints

Dc=[x(2)-1,-x(2);x(1)-1,-x(1)];

 ceq=[];

Dceq=[];

 

x0=[-1,1];

options=optimset('Largescale','off');

options=optimset(options,'GradObj','on','GradConstr','on');

lb=[ ];ub=[ ];

[x,fval]=fmincon(@objfung1,x0,[ ],[ ],[ ],[ ],lb,ub,@confung1,options)

 

Optimization terminated successfully:

 First-order optimalit measure less than options.TolFun and

 maximum constraint violation is less than options.TolCon

Active inequalities (to within options.TolCon = 1e-006):

  lower   upper  ineqlin  ineqnonlin

                                     1

                                     2

x =

  -9.5474  1.0474

fval =

     0.0236

5含等式约束例子

function   [c,ceq]=confungeq(x)

c=-x(1)*x(2)-10;

ceq=x(1)^2+x(2)-1;

x0=[-1,1];

options=optimset('Largescale','off');

[x,fval]=fmincon(@objfun1,x0,[ ],[ ],[ ],[ ],[ ],[ ],@confuneq1,options)

 

Optimization terminated successfully:

?First-order optimality measure less than options.TolFun and

  maximum constraint violation is less than options.TolCon

No active inequalities

x =

   -0.7529   0.4332

fval =

      1.5093

6  非线性函数求极值

function  F=myfun(x)

k=1:10;

F=2+2*k-exp(-k*x(1))-exp(-k*x(2));

x0=[0.4,0.4];

[x,resnorm]=lsqnonlin(@myfun,x0)

Optimization terminated successfully:

Norm of the current step is less than OPTIONS.TolX

x =

   -0.2578   -0.2578

resnorm =

         124.3622

 

 

7

f=inline('1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6');

f(2.0)

ans =

    -4.8552

x=fminbnd(f,3,4)

 

x =

   4

 

f=inline('sin(x).*xdata+(x.^2).*cos(xdata)','x','xdata')

 x=pi;xdata=pi*[4;2;3];

f(x,xdata)

 

f =

    Inline function:

    f(x,xdata) =   sin(x).*xdata+(x.^2).*cos(xdata)

ans =

    9.8696

    9.8696

    -9.8696