Matlab优化问题05—fmincon

说明:fmincon一般用来求解多元有约束非线性最优化问题,其中约束可以包含等式约束和非线性约束。其全调用格式为:

[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

1求侧面积为常数150m2的体积最大的长方体体积,并求出各棱长。

解:设棱长分别为x1,x2,x3,根据题意有如下数学模型:


MATLABfmincon函数求解

fun008.m

function f=fun008(x)

f=-x(1)*x(2)*x(3);

fun008TJ.m

function [ceq,c]=fun008TJ(x)

ceq=2*(x(1)*x(2)+x(1)*x(3)+x(2)*x(3))-150;

c=0;

主函数:fun008yunxing.m

clear;

tic;

format rat;

x0=[1 2 3];

[x z exitflag output lambda grad hessian]=...

fmincon(@fun008,x0,[],[],[],[],zeros(3,1),[],@fun008TJ);clc;

x

z=-z

fprintf('说明:当边长分别为%.2f%.2f%.2f时,最大体积为%.2f',x,z)

exitflag

if exitflag>0    disp('求解过程正常收敛')

elseif exitflag==0    disp('超过迭代次数限制')

else    disp('收敛异常')

end

s='迭代次数:';disp(s)

disp(output.iterations)

td='梯度:';disp(td)

disp(grad)

hess='Hess矩阵:';disp(hess)

disp(hessian)

toc

解得:

x =

5     5     5       

z =125       

说明:当边长分别为5.005.005.00时,最大体积为125.00

exitflag = 1       

求解过程正常收敛

迭代次数: 13       

梯度:

     -25       

     -25       

     -25       

Hess矩阵:

    1913/1130     -2135/2267      -931/1289  

   -2135/2267      1363/897       -879/1036  

    -931/1289      -879/1036       216/115   

时间已过 0.043606 秒。

你可能感兴趣的:(MATLAB—优化问题)