matlab优化这个是哪里不对了?

目标函数m文件:functiony=fun123(x);y1=(4*x(4)*(cos(x(1))-cos(x(1)+x(2))))/sqrt((cos(2*x(1))-... 目标函数m文件:
function y=fun123(x);
y1=(4*x(4)*(cos(x(1))-cos(x(1)+x(2))))/sqrt((cos(2*x(1))-cos(2*(x(1)+x(2))))^2+(2*x(2)-sin(2*(x(1)+x(2))))^2);
y2=atan((cos(2*x(1))-cos(2*(x(1)+x(2))))/(2*x(2)-sin(2*(x(1)+x(2)))+sin(2*x(1))));
k=(0.38*(x(7)+x(6)))/(x(5)*(cos(y2)+0.38*sin(y2))-0.38*y1);
f1=2*k;
f2=3.14*x(8)*(x(4)+x(9))^2;
t=18/(0.6*9.8*(1-0.08));
y3=x(3)*x(4)*x(2)*3.14/180;
y4=(1/(48*0.8*300*y3))*0.38*3.14*x(10)^2*x(11)*0.5*7*(1-0.5)*24^(1/2);
y5=0.38*3.14*x(10)^2*10*y1/(40*300*18);
y6=y5^2;
f3=(y4*t*(6*t-x(11)*y5*t^2+4*y6*t^3))^(1/2);
y=0.2*f1+0.4*f2+0.4*f3;
调用函数代码:
function ff=@fun123;
x0=[35,110,75,140,115.44,112,112,120,15,22,10];
A=[0,0,0,0,0,0,0,0,0,0,1];
b=[0,0,0,0,0,0,0,0,0,0,12];
Lb=[25,90,60,120,100,90,90,90,10,20,8];
Ub=[45,100,100,160,130,130,130,150,20,30,12];
[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(ff,x0,A,b,[],[],Lb,Ub,@nonlcon111)
展开
 我来答
tianxiawulang
推荐于2016-07-03 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2645万
展开全部

由于约束条件的代码是图片形式,我这里无法测试,只能大致看一看。

 

1、比较明显的错误是

function ff=@fun123;

应该不要那个function。

 

2、矩阵A和b不对应。

因为A、b是描述约束条件Ax<=b的,A的行数应该与b的长度相同。而你现在的A只有1行,b的长度却不是1,这肯定不对。

更多追问追答
追问
你好,我把A,b都设成空集 上面的function也去掉了,还是运行不出来,提示
One or more output arguments not assigned during call to 'J:\matlab7\work\nonlcon111.m (nonlcon111)'.
因为文字长度有限,只能上图片,不知道是不是约束哪里没写对?
追答
如果受文字长度限制无法贴代码,可以有以下几种做法:
1、用网盘传文件;
2、用博客(比如百度空间)贴代码;
3、发私信(这种方式适合于定向求助,比如已有人回答你再追问的时候,前两种不受限制)。

看了一下你的代码,很明显C1~C6这些应该是C(1)~C(6)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式