赞
踩
fmincon函数,既是求最小约束非线性多变量函数
该函数被用于求如下函数的最小值
语法如下:
x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fmincon(problem)
[x,fval] = fmincon(…)
[x,fval,exitflag] = fmincon(…)
[x,fval,exitflag,output] = fmincon(…)
[x,fval,exitflag,output,lambda] = fmincon(…)
[x,fval,exitflag,output,lambda,grad]= fmincon(…)
[x,fval,exitflag,output,lambda,grad,hessian]= fmincon(…)
对于fmincon函数,其exitflag参数中的数字:
1、一阶最优性条件满足容许范围
2、X的变化小于容许范围
3、目标函数的变化小于容许范围
4、重要搜索方向小于规定的容许范围并且约束违背小于options.TolCon
5、重要方向导数小于规定的容许范围并且约束违背小于options.TolCon
0、到达最大迭代次数或到达函数评价
-1、算法由输出函数终止
-2、无可行点
实例:求解下式的最小值
%方式一:分成多个文件 function f=fminxy(t) x=t(1);y=t(2); f=x*x*x-y*y*y+2*x*x+x*y; end %%以上代码生成fminxy文件 function [c d]=fcontr(t) x=t(1);y=t(2); c=x*x+y*y-6; d=x*y-2; end %%以上文件生成fcontr文件 >> [x,fval,exitflag]=fmincon('fminxy',[1 2],[],[],[],[],[],[],'fcontr') %fmincon( fun, x0, A, b,Aeq,beq,lb,ub, nonlcon) A是初始值,fmincon的初始值x0可以任意取,只要保证为实数就行。 x = 0.8740 2.2882 %函数最小值时x,y的值 fval = -7.7858 %函数最小值 exitflag = 1 %一阶最优性条件满足容许范围,既是结果正确 %方式二:整合成一个文件 function x= findOpt(a,b) x=fmincon(@(t) fminxy(t),[a b],[],[],[],[],[],[],@(t) fcontr(t)) end function f=fminxy(t) x=t(1);y=t(2); f=x*x*x-y*y*y+2*x*x+x*y; end function [c d]=fcontr(t) x=t(1);y=t(2); c=x*x+y*y-6; d=x*y-2; end %以上代码生成findOpt文件 >> x=findOpt(2,2) x = 0.8740 2.2882
该实例皆为在MATLAB R2014a运行所得,参考https://jingyan.baidu.com/album/6c67b1d69508b52787bb1edf.html?picindex=4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。