优化工具箱 例1 无约束优化例子 |
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); 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
例2 非线性不等约束例子 |
s.t x(1)*x(2)-x(1)-x(2) x(1)*x(2) function [c,ceq]=confun1(x) c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10]; ceq=[];
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有界约束例子 |
|
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=[];
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; 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)
Inline function: f(x,xdata) = sin(x).*xdata+(x.^2).*cos(xdata) ans = 9.8696 9.8696 -9.8696
|