使用matlab的fmincon优化解决非线性问题,一直报错,求大神解答,小白在线求解答!

建立目标函数的M文件:functionm=fun1(x)m=cos(x)*4/(3*pi);约束条件:function[g,h]=fun2(x)g=[cos(5*x(1)... 建立目标函数的M文件:
function m =fun1(x)
m=cos(x)*4/(3*pi);

约束条件:
function [g,h]=fun2(x)
g=[cos(5*x(1))+cos(5*x(2))+cos(5*x(3))
cos(7*x(1))+cos(7*x(2))+cos(7*x(3))];
h=[x(1)-x(2)

x(2)-x(3)

x(3)-pi/2];

操作函数:
[x,y]=fmincon('fun1',unifrnd(0,pi/2,3,1),[],[],[],[],zeros(3,1),[],'fun2')

一直报错:
错误使用 fmincon (line 637)
User supplied objective function must return a scalar value.
出错 fun3 (line 1)
[x,y]=fmincon('fun1',unifrnd(0,pi/2,3,1),[],[],[],[],zeros(3,1),[],'fun2')

弄了半天多了···求大神出现,求解答小弟的问题,感激不尽!
展开
 我来答
我行我素850915
2015-05-30 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1763万
展开全部
问题出在约束条件和初值个数都是3个,则会要求目标值也是3个,而优化问题要求得出一个标题值,而不是3个目标值。所以,可这样改:
%建立目标函数的M文件:
function m =fun1(x)
m=cos(x)*4/(3*pi);
%约束条件:
function [g,h]=fun2(x)
g=cos(5*x);%此处可改
h=[];%此处可改
%操作函数:
x0=unifrnd(0,pi/2,1,1);
[x,y]=fmincon('fun1',x0,[],[],[],[],zeros(1,1),[],'fun2')
更多追问追答
追问
可是约束条件g和h怎么改呢?g只有两个表达式,h的表达式是由0<x1<x2<x3<pi/2变形得到的····求大神指教,完全是小白,第一次用matlab。谢谢大神了
追答
g 应是不等式,h应是等式。没有的,可为空。
learneroner
高粉答主

推荐于2016-02-11 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6587万
展开全部
你的目标函数是什么?
根据你的代码可知x具有三个分量,而你的目标函数 m=cos(x)*4/(3*pi); 并没有表示使用哪些分量啊,应该类似fun2(x)那样,用x(1),x(2)等表示。
更多追问追答
追问
目标函数中的三个分量就是x(1),x(2),x(3)....求大神帮忙写一下。。。实在弄不了了,已经崩溃。。答案如果合适我会追加分数的
追答
你的目标函数是什么啊?难道是要同时求cosx(1)、cosx(2)、cosx(3)的最小值?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BDdonotknowBD
2018-01-17
知道答主
回答量:37
采纳率:100%
帮助的人:7.7万
引用learneroner的回答:
你的目标函数是什么?
根据你的代码可知x具有三个分量,而你的目标函数 m=cos(x)*4/(3*pi); 并没有表示使用哪些分量啊,应该类似fun2(x)那样,用x(1),x(2)等表示。
展开全部
很明显目标函数是fun1啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式