赌场送彩金35|临海赌场看场子
查看: 1102|回复: 9|关注: 0
打印 上一主题 下一主题

[已解决] MATLAB进行fmincon函数优化时非线性不等式约束总是报错

[复制链接]

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
跳转到指定楼层
1#
%1-函数文件objfun.m
function f=objfun(x)
a=10;
d=2*(x(1).*cos(x(5)*pi/180)-x(2).*cos(x(4)*pi/180));
s=2*x(1).*cos(x(5)*pi/180);
b=cos((x(4)-a)*pi/180);
c=d./2+x(2).*b;
e=c./x(1);
t=2*x(1).*e;
g=t-s+0.0001*(x(3)+x(6));
f=-g;
end

%2-非线性约束函数文件confun.m
function [c,ceq]=confun(x)
c=[x(2).*cos(x(4)*pi/180)-x(1).*cos(x(5)*pi/180);(x(1).*sin(x(5)*pi/180)+x(2).*sin(x(54)*pi/180))./(cos(x(6)*pi/180)+x(3).*sin(x(6)*pi/180));(2*x(1).*cos(x(5)*pi/180))./(cos(x(6)*pi/180))-100;2*x(1).*cos(x(5)*pi/180)-2*x(2).*cos(x(4)*pi/180)-20;15-2*x(1).*cos(x(5)*pi/180)+2*x(2).*cos(x(4)*pi/180)];
%5个不等式非线性约束
ceq=[];
end  

%3-优化函数应用
x0=[30 30 13 57 34 50];
%经过核对,初?#31561;?#37096;符合原不等式非线性约束
A=[0 -1 1 0 0 0;
   -1 0 1 0 0 0;
   -1 1 0 0 0 0;
   0 0 0 -1 0 0];
b=[0 0 0 -10];
Aeq=[];beq=[];
lb=[20,20,10,10,10,20];
ub=[60,50,20,70,70,70];
options=optimset('largescale','off','display','iter');
[xopt,fval,exitflag,output]=fmincon(@objfun,x0,A,b,Aeq,beq,lb,ub,@confun,options)

出来的结果是这样
>> Untitled3
索引超出矩阵维度。

出错 confun (line 6)
c=[x(2).*cos(x(4)*pi/180)-x(1).*cos(x(5)*pi/180);(x(1).*sin(x(5)*pi/180)+x(2).*sin(x(54)*pi/180))./(cos(x(6)*pi/180)+x(3).*sin(x(6)*pi/180));(2*x(1).*cos(x(5)*pi/180))./(cos(x(6)*pi/180))-100;2*x(1).*cos(x(5)*pi/180)-2*x(2).*cos(x(4)*pi/180)-20;15-2*x(1).*cos(x(5)*pi/180)+2*x(2).*cos(x(4)*pi/180)];

出错 fmincon (line 623)
        [ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});

出错 Untitled3 (line 13)
[xopt,fval,exitflag,output]=fmincon(@objfun,x0,A,b,Aeq,beq,lb,ub,@confun,options)

原因:
    Failure in initial nonlinear constraint function evaluation. FMINCON cannot continue.

就是感觉这个约束咋有毛病哦~


新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
2#
 楼主| 发表于 2019-3-10 01:28:40 | 只看该作者
原先设定的约束条件及变量确定在?#35745;?#27714;大神指点迷津

论坛优秀回答者

权威

9153 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 525
3#
发表于 2019-3-10 21:35:53 | 只看该作者
就这一点错:
  1. b=[0 0 0 -10]'
复制代码

xopt =   57.8951   50.0000   19.9995   70.0000   34.3694   69.9991

fval =  -15.8070

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
4#
 楼主| 发表于 2019-3-10 21:38:37 | 只看该作者
jingzhaos 发表于 2019-3-10 21:35
就这一点错:
xopt =   57.8951   50.0000   19.9995   70.0000   34.3694   69.9991

可是这个结果不符合我设定的非线性约束呀,我验证了。这个结果跟我不设置非线性约束条件是差不多的。。。。

论坛优秀回答者

权威

9153 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 525
5#
发表于 2019-3-10 21:49:12 | 只看该作者 |此回复为最佳答案
本帖最后由 jingzhaos 于 2019-3-10 22:02 编辑
爱杨公子的疯子 发表于 2019-3-10 21:38
可是这个结果不符合我设定的非线性约束呀,我验证了。这个结果跟我不设置非线性约束条件是差不多的。。。 ...

这只能说语法没有问题了,至于逻辑问题,你再好好看?#30784;?br /> 另外fmincon是局部最有解,?#37096;?#33021;在别的地方的解满足你的要求。事实是,confun(xopt)<0,满足约束的。

哈哈....,你的代码里面竟然有个x(54)? 是x(5)还是x(4)

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
6#
 楼主| 发表于 2019-3-10 22:12:19 | 只看该作者
jingzhaos 发表于 2019-3-10 21:49
这只能说语法没有问题了,至于逻辑问题,你再好好看?#30784;?br /> 另外fmincon是局部最有解,?#37096;?#33021;在别的地方的解 ...

啊,看到了。54这个打错了。。。然后重新运行了一遍,是可以出结果的,就是嗯结果跟我想象中不一样,谢谢?#30149;?#24744;是说这个程序的语法上没有错误是吗

论坛优秀回答者

权威

9153 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 525
7#
发表于 2019-3-10 22:37:32 | 只看该作者
爱杨公子的疯子 发表于 2019-3-10 22:12
啊,看到了。54这个打错了。。。然后重新运行了一遍,是可以出结果的,就是嗯结果跟我想象中不一样,谢谢 ...

是。语法有错误,就不能正常运行了。

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
8#
 楼主| 发表于 2019-3-10 23:48:27 | 只看该作者
jingzhaos 发表于 2019-3-10 22:37
是。语法有错误,就不能正常运行了。

只是很?#38480;?#30340;是,这个结果还不如我的初值结果。。。。

论坛优秀回答者

权威

9153 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 525
9#
发表于 2019-3-11 07:21:44 | 只看该作者
本帖最后由 jingzhaos 于 2019-3-11 07:25 编辑
爱杨公子的疯子 发表于 2019-3-10 23:48
只是很?#38480;?#30340;是,这个结果还不如我的初值结果。。。。

这一行错了吧?括号放的位置与你?#20013;?#30340;不一致。
(x(1).*sin(x(5)*pi/180)+x(2).*sin(x(54)*pi/180))./(cos(x(6)*pi/180)+x(3).*sin(x(6)*pi/180));
-55也没?#34892;?#19978;。 这个结果是不是你要的。

xopt =   50.0000   50.0000   10.0000   47.5703   28.9923   20.0000


fval =  -11.7951

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
10#
 楼主| 发表于 2019-3-11 12:49:33 | 只看该作者
jingzhaos 发表于 2019-3-11 07:21
这一行错了吧?括号放的位置与你?#20013;?#30340;不一致。
(x(1).*sin(x(5)*pi/180)+x(2).*sin(x(54)*pi/180))./(cos ...

验证了下,是符合我的所有不等式约束的:loveliness:超级谢谢。今天又想到了其他的约束,得加上去看看,谢?#36824;?/td>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表
赌场送彩金35 桑普多利亚对罗马比赛 上海卡利亚里 重庆时时彩开奖视频518 中国山东时时彩 蒙彼利埃对甘冈 波斯波利斯足球俱乐部 湖南特产 吃鸡游戏名字女 梦幻西游手机将军令 山东时时彩技巧