登录论坛

查看完整版本 : [MATLAB数学相关] 求解非线性约束最优化的变量问题


lzhanjie
2009-09-08, 17:37
比如:目标函数为f=x(1)+b*x(2)+x(3)*x(4)+a*x(5)
a=x(1)*x(2)*x(3) b=x(4)*x(5)*a
还有若干约束。
为了说明问题,例子举得简单了些。问题在如何表示a和b这种变量,我matlab比较初级,一开始想将a和b分别表示成x(6)和x(7),给初值迭代,发现结果受初值影响比较大,也就是说初值稍微一变动结果就变,没有求道最优值。后来搜到用globle a b,老是报错,也不清楚错在哪。用persistent行不行?
求教各位大侠。谢谢。

funduck
2009-09-09, 21:33
我一直在研究如何使用优化工具箱的问题,也许我可以帮上忙。但是,你的描述我没看明白。请你把目标函数和约束条件全部都写清楚。


还有,你的a b 什么意思?优化变量到底是x还是 a b?


至于你说global帮助文件写得很清楚,就是在使用之前,无论是主程序还是子函数中,都要声明,才能够是全局变量生效。

lzhanjie
2009-09-10, 11:41
我的模型比较复杂,写出来要很大篇幅。
a,b是我自己表示的过程变量,他们也可以用x(1),x(2)等表示。只是为了表示清楚而且容易检查才这么写的,其实也可以将a,b等代入式子中就没问题了,只不过式子就比较麻烦了。
模型中变量也就10个左右,但这种可以用变量表示的中间变量有50个,以前我把这些中间变量也赋值计算,发现算出的结果不太合理。