fmincon

函数fmincon()的具体格式为:
X=fmincon(fun,x0,A,b) X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub)
X=fmincon(fun,x0,A,b,Aeq,Beq,Lb,Ub,nonlcon,options)
[X,fval,exitflag,output]=fmincon(fun,x0,…)
[X,fval,exitflag,output,lambda,grad,Hessian]=fmincon(fun,x0,…)
参数中fun为目标函数,x0为变量的初始值,x为返回的满足要求的变量的值。A和b表示线性不等式约束,Aeq,Beq表示线性等式约束,Lb和Ub分别为变量的下界和上界约束,nonlcon表示非线性约束条件,options为控制优化过程的优化参数向量。 返回值fval为目标函数。exitflag>0表示优化结果收敛于解,exitflag=0表示优化超过了函数值的计算次数,exitflag<0表示优化不收敛。lambda是拉格朗日乘子,显示那个约束条件有效。grad表示梯度,hessian表示汉森矩阵。 例:使得目标函数在约束条件,下取得最小值。 设计的程序如下: 先把目标函数和约束条件分别编写成独立的m文件,注意,这样的m文件必须用function开头,并且文件名一定要和函数名一致。
目标函数的文件为: function f=objfun(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
约束条件的文件为: function [c,ceq]=confun(x) c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10]; %表示不等式非线性约束 ceq=[]; %表示等式非线性约束
优化的程序如下:
clear x0=[-1 1];
options=optimset('largescale','off','display','iter');
[x,fval,exitflag,output]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)




优化函数fmincon使用的大讨论
自己有个优化需要使用,但是使用时,老是出错误,请教一下是什么问题,
另外给大家
有约束的多元函数最小值非线性有约束的多元函数的标准形式为:
附图:



其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。
在MATLAB5.x中,它的求解由函数constr实现。




01.

02.函数 fmincon

03.格式 x = fmincon(fun,x0,A,b)

04.x = fmincon(fun,x0,A,b,Aeq,beq)

05.x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

06.x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

07.x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

08.[x,fval] = fmincon(…)

09.[x,fval,exitflag] = fmincon(…)

10.[x,fval,exitflag,output] = fmincon(…)

11.[x,fval,exitflag,output,lambda] = fmincon(…)

12.[x,fval,exitflag,output,lambda,grad] = fmincon(…)

13.[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(…)

14.
复制代码参数说明:fun为目标函数,它可用前面的方法定义;
x0为初始值;
A、b满足线性不等式约束 ,若没有不等式约束,则取A=[ ],b=[ ];
Aeq、beq满足等式约束 ,若没有,则取Aeq=[ ],beq=[ ];
lb、ub满足 ,若没有界,可设lb=[ ],ub=[ ];
nonlcon的作用是通过

接受的向量x来计算非线性不等约束 和等式约束 分别在x处的估计C和Ceq,通过指定函数柄来使用,如:>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = …
% 计算x处的非线性不等约束 的函数值。
Ceq = …
% 计算x处的非线性等式约束 的函数值。
lambda是Lagrange乘子,它体现哪一个约束有效。
output输出优化信息;
grad表示目标函数在x处的梯度;
hessian表示目标函数在x处的Hessiab值。








iterations: 4 迭代次数为4次funcCount: 12 调用函数为12个或者别的意思吧lssteplength: 1 是否设定步长,若为1则表示设定stepsize: 3.7569e-008 步长为这个数字algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' 所用到的算法firstorderopt: 3.5086e-009 计算中的第一个迭代值constrviolation: 0 message: [1x788 char] 程序中的字符数总量?我也不清楚希望有所帮助!

相关文档
最新文档