关于matlab里fmincon函数的问题

算一个很简单的三元函数的约束极值,要求得到最大值,我把原函数取了下负号,然后看着help写了下但是结果有问题。求指正要最大值的函数是y=(1+(1.2*x(1)-860)... 算一个很简单的三元函数的约束极值,要求得到最大值,我把原函数取了下负号,然后看着help写了下但是结果有问题。求指正
要最大值的函数是y=(1+(1.2*x(1)-860)/6485)*(1.5*x(2)+0.75*x(3)+0.7375),约束条件是x(1)+4500x(2)+3375x(3)=4570
三个变量取值分别是[1000,3000],[0,0.8],[0,0.25]
我是这么写的:
function y = fun1(x)
y = -(1+(1.2*x(1)-860)/6485)*(1.5*x(2)+0.75*x(3)+0.7375);
x=fmincon('fun1',[0 0 0],[],[],[1 4500 3375],[4570],[1000 0 0],[3000 0.8 0.25]);

然后说
fmincon stopped because the size of the current search direction is less than
twice the default value of the step size tolerance and constraints are
satisfied to within the default value of the constraint tolerance.
这是什么原因呢?怎么修改呢?
展开
 我来答
yjw413
2013-11-12 · TA获得超过284个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:119万
展开全部

一定要使用matlab吗?我使用mathematica计算了一下,由于mathematica中x(1)+4500x(2)+3375x(3)=4570条件报错,所以我修改了一下条件,近似采用x(1)+4500x(2)+3375x(3)介于4569.9与4570.1之间来约束,结果如下:

百川一归大海
2013-11-12 · TA获得超过1543个赞
知道小有建树答主
回答量:4318
采纳率:55%
帮助的人:971万
展开全部
这不是错误,不管做什么最优,它都会出现这条提示,这条提示是告诉你,寻优结束的原因——步差小于设定精度值。因为程序一种循环迭代寻优过程,必须要有一个停住的条件的。我帮你看了,和楼上结果差不多,lingo也可以求解,不妨试试,结果应该一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式