最近写matlab优化程序遇到的一点小问题

小弟我最近刚接触matlab软件,感觉其很强大,最近做一个优化实例编程遇到问题求大神帮助解决!编制优化设计的M文件(1)编写目标函数m文件并以myfun保存在matlab... 小弟我最近刚接触matlab软件,感觉其很强大,最近做一个优化实例编程遇到问题求大神帮助解决!

编制优化设计的M 文件
(1) 编写目标函数m文件并以myfun保存在matlab目录下的work文件夹中。
function f=myfun(x)
f=8.4265*x(1)^3*x(2)^3*x(3);
(2) 编写非线性约束函数的m文件并以文件名mycon保存在matlab目录下的work文件夹中。
function[c,ceq]=mycon(x)
c(1)=56150.8306/((x(1)*x(2))^3*x(3)*(1-0.5x(3)))^0.5-558;
c(2)=160.5079/x(1)*(1-0.5x(3))^2-300;
c(3)=50.3432/x(1)*(1-0.5x(3))^2-238.86;
ceq=[];
(3)在命令窗口调用优化程序。
X0=[3,25,0.33] %初始点
lb=[2,17,0.25] %下界
ub=[10,50,0.35] %上界
[x,fval]=fmincon(@myfun,x0,[],[],[],[],1b,ub,@mycon)

问题是总是提示错误,也运算不出结果,我也不知道怎么修改!
展开
 我来答
匿名用户
2014-04-22
展开全部

看来真是初学者,存在大量的低级错误:

 

1、函数mycon里面:误用中文括号,缺少乘号。

c(1)=56150.8306/((x(1)*x(2)^3*x(3)*(1-0.5x(3))^0.5-558;
c(2)=160.5079/x(1)*(1-0.5x(3))^2-300;
c(3)=50.3432/x(1)*(1-0.5x(3))^2-238.86;
应为

c(1)=56150.8306/((x(1)*x(2))^3*x(3)*(1-0.5*x(3)))^0.5-558;
c(2)=160.5079/x(1)*(1-0.5*x(3))^2-300;
c(3)=50.3432/x(1)*(1-0.5*x(3))^2-238.86;

2、主程序:

(1)把lb误写成1b

(2)定义X0,却使用x0

 

主要就这些问题,改正就可以了。

追问

运行之后出现这些问题

追答
前面橙色的字是警告信息,因为默认的信任域反射算法不能求解此类问题,改用了有效集算法。
可以不管这个警告,没影响。如果不希望看到这个警告,可以通过options参数指定算法,但具体做法不同版本有差异。

后面是提示优化完成,但有可能是局部最优点。
其实任何优化算法都不能保证全局最优,这一点也不必太担心。不放心的话,可以选择其它初值或者改用其它优化算法(比如遗传算法)试试。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式