第 5 章 优化问题
>> fun=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2')
fun =
Inline function:
fun(x) = 3*x(1)^2+2*x(1)*x(2)+x(2)^2
>> x0=[1 1];
>> x=fminunc(fun,x0)
x =
1.0e-008 *
-0.7591 0.2665
5.3.3 有约束的多元函数最小值
非线性有约束的多元函数的标准形式为:
sub.to
其中:x、b、beq、lb、ub 是向量,A、Aeq 为矩阵,C(x)、Ceq(x)是返回向量的函数,
f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。
在 MATLAB5.x 中,它的求解由函数 constr 实现。
函数 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,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(…)
参数说明:fun 为目标函数,它可用前面的方法定义;
x0 为初始值;
A 、 b 满 足 线 性 不 等 式 约 束 , 若 没 有 不 等 式 约 束 , 则 取
A=[ ],b=[ ];
Aeq、beq 满足等式约束 ,若没有,则取 Aeq=[ ],beq=[ ];