>>ub=[];>>[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon)则结果为X=34fval =-13%解收敛exitflag=1output =iterations: 2funcCount: 9stepsize: 1algorithm:'medium-scale: SQP, Quasi-Newton, line-search'firstorderopt:[]cgiterations: []lambda =lower: [2x1 double]%x下界有效情况,通过lambda.lower可查看。%x上界有效情况,为0表示约束无效。upper: [2x1 double]%线性等式约束有效情况,不为0表示约束有效。eqlin: [0Ox1 double]eqnonlin: [Ox1 double]%非线性等式约束有效情况。%线性不等式约束有效情况。ineqlin: 2.5081e-008ineqnonlin:6.1938e-008%非线性不等式约束有效情况。grad=%目标函数在最小值点的梯度1.0e-006 *-0.17760hessian=%目标函数在最小值点的Hessian值1.0000-0.0000
>>ub=[ ]; >>[x,fval,exitflag,output,lambda,grad,hessian] =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon) 则结果为 x = 3 4 fval = -13 exitflag = %解收敛 1 output = iterations: 2 funcCount: 9 stepsize: 1 algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' firstorderopt: [ ] cgiterations: [ ] lambda = lower: [2x1 double] %x 下界有效情况,通过 lambda.lower 可查看。 upper: [2x1 double] %x 上界有效情况,为 0 表示约束无效。 eqlin: [0x1 double] %线性等式约束有效情况,不为 0 表示约束有效。 eqnonlin: [0x1 double] %非线性等式约束有效情况。 ineqlin: 2.5081e-008 %线性不等式约束有效情况。 ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。 grad = %目标函数在最小值点的梯度 1.0e-006 * -0.1776 0 hessian = %目标函数在最小值点的 Hessian 值 1.0000 -0.0000
-0.00001.0000例2.7求下面问题在初始点x=(10,10,10)处的最优解。Minf(x)=-XiX2X3Sub.to0≤x1+2x2+2x3≤72解:约束条件的标准形式为sub.to-X-2x2-2x≤0X + 2 X2+2 x3≤72>> fun='-x(1)*x(2)*x(3);>>x0-[10,10,10];>> A=[-1 -2 -2;1 2 2];>> b=[0;72];>>[x,fval]=fmincon(fun,x0,A,b)结果为:x=24.000012.000012.0000fval =-3456二次规划问题2.3二次规划问题(quadraticprogramming)的标准形式为:*HX+rxminsub.to Ax≤bAeq·x=beqb≤x≤ub其中,H、A、Aeq为矩阵,f、b、beq、Ib、ub、x为向量其它形式的二次规划问题都可转化为标准形式。MATLAB5.x版中的qp函数已被6.0版中的函数quadprog取代。函数quadprog
-0.0000 1.0000 例 2.7 求下面问题在初始点 x=(10, 10, 10)处的最优解。 Min f(x) = −x1x2x3 Sub.to 0 ≤ x1 + 2 x2 + 2 x3 ≤ 72 解:约束条件的标准形式为 sub.to − x1 − 2 x2 − 2 x3 ≤ 0 x1 + 2 x2 + 2 x3 ≤ 72 >> fun= '-x(1)*x(2)*x(3)'; >> x0=[10,10,10]; >> A=[-1 -2 -2;1 2 2]; >> b=[0;72]; >> [x,fval]=fmincon(fun,x0,A,b) 结果为: x = 24.0000 12.0000 12.0000 fval = -3456 2.3 二次规划问题 二次规划问题(quadratic programming)的标准形式为: x H x f x 2 min 1 ′ + ′ sub.to A ⋅ x ≤ b Aeq ⋅ x = beq lb ≤ x ≤ ub 其中,H、A、Aeq 为矩阵,f、b、beq、lb、ub、x 为向量 其它形式的二次规划问题都可转化为标准形式。 MATLAB5.x 版中的 qp 函数已被 6.0 版中的函数 quadprog 取代。 函数 quadprog