MATLAB基础问题麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?再麻烦各位把函数的调用格式也写清楚吧,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 01:04:17
MATLAB基础问题麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?再麻烦各位把函数的调用格式也写清楚吧,

MATLAB基础问题麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?再麻烦各位把函数的调用格式也写清楚吧,
MATLAB基础问题
麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?
再麻烦各位把函数的调用格式也写清楚吧,

MATLAB基础问题麻烦高手帮个忙,请问解有约束非线性规划问题,用MATLAB中的哪个函数?再麻烦各位把函数的调用格式也写清楚吧,
命令fminunc().
单独写个.M文件,把约束条件写进去,在约束区有个“Nonlinear constraint function” @+"约束文件名"
例子:
求解如附件图片所示的有约束非线规划问题,分三个步骤
1.建立名为myobjfunc的m文件如下
function RES = myobjfunc(x)
RES=(x(3)*(1/(2*(x(3)^2 + x(5))*(x(4)^2 + x(3) + x(1)*x(2))^(1/2)) ...
- (2*x(3)*(x(4)^2 + x(3) + x(1)*x(2))^(1/2))/(x(3)^2 + x(5))^2))...
/(2*((x(4)^2 + x(3) + x(1)*x(2))^(1/2)/(x(3)^2 + x(5)) + 1)^(1/2)) ...
+ x(4)^2/(2*((x(4)^2 + x(3) + x(1)*x(2))^(1/2)/(x(3)^2 + x(5)) + 1)^(1/2)...
*(x(3)^2 + x(5))*(x(4)^2 + x(3) + x(1)*x(2))^(1/2)) ...
- (x(5)*(x(4)^2 + x(3) + x(1)*x(2))^(1/2))/(2.
*((x(4)^2 + x(3) + x(1)*x(2))^(1/2)/(x(3)^2 + x(5)) + 1)...
^(1/2)*(x(3)^2 + x(5))^2) + (x(1)*x(2))/(2*((x(4)^2 + x(3) + x(1)*x(2))...
^(1/2)/(x(3)^2 + x(5)) + 1)^(1/2)*(x(3)^2 + x(5))...
*(x(4)^2 + x(3) + x(1)*x(2))^(1/2));
2.建立名为mymodelcons的m文件如下
function [C,CEQ]=mymodelcons(x)
C(1)=x(1)+x(2)^2-10;
C(2)=1-x(1)-x(2)^2;
CEQ=[];
3.在matlab命令窗口中输入以下命令并执行
lb=[0.5 0.5 0.5 1 1];
ub=[5 5 5 3 4];
[X,Y,FLAG]=fmincon(@myobjfunc,[1 1 1 1 1],[],[],[],[],lb,ub,@mymodelcons)
结果为
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
5 1 1
4
X = 5.0000 2.2361 1.2359 3.0000 1.0000.
在天涯回答上有类似的问题的两个解答供参考
--------------------------------------------------
fun=@(x)sqrt(x(1)^2+x(2)^2)+sqrt(x(1)^2+(x(2)-52)^2)+sqrt(x(1)^2+(x(2)-139.5)^2)+sqrt(x(1)^2+(x(2)-228)^2)+sqrt(x(1)^2+(x(2)-288)^2)+sqrt((x(1)-65)^2+x(2)^2)+sqrt((x(1)-84)^2+x(2)^2)+sqrt((x(1)-110)^2+(x(2)-288)^2)+sqrt((x(1)-110)^2+(x(2)-217)^2)+sqrt((x(1)-110)^2+(x(2)-93)^2)+sqrt((x(1)-110)^2+x(2)^2)+sqrt((x(1)-65)^2+x(2)^2);
lb=[0;0];
ub=[110;228];
options=optimset('PlotFcns',{@optimplotx,@optimplotfirstorderopt,@optimplotstepsize,@optimplotfval});
[x,fval]=fmincon(fun,rand(2,1),[],[],[],[],lb,ub,[],options)
Optimization terminated:magnitude of directional derivative in search
direction less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon.
No active inequalities.
x =
55.3467
74.3034
fval = 1.3748e+003
-------------------------------------------
(一)非线性一元函数的最小值
Matlab函数为fminbnd(),其使用格式为:
X=fminbnd(fun,x1,x2)
[X,fval,exitflag,output]= fminbnd(fun,x1,x2)
其中:fun为目标函数,x1,x2为变量的边界约束,即x1≤x≤x2,X为返回的满足fun取得最小值的x的值,而fval则为此时的目标函数值.exitflag>0表示计算收敛,exitflag=0表示超过了最大的迭代次数,exitflag