Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-05-28, 18:14   #1
dbdubing
初级会员
 
注册日期: 2008-05-05
年龄: 20
帖子: 6
声望力: 0
dbdubing 正向着好的方向发展
默认 [求助]请教Matlab优化问题,恳请各位大侠援助(在线急等)

我用Matlab优化工具箱中的fminunc函数来求解一个无约束的二元函数的极小值,运行后发现算出的结果就是我所给的初值,多次修改初值发现结果始终就是初值。就是说Matlab就没进行优化,程序代码如下,恳请各位高手给予指点,万分感谢!(Matlab版本7.1)



目标函数:

function y=chexiaolirun_objfun(x)
y=( 10+(-150+ 7*(x(1)^ 1.5)*(x(2)^ 1.2)* 50))/( 56/(x(1)*x(2))+ 7*(x(1)^ 1.5)*(x(2)^ 1.2)* 2+ 2)+ 0.05/(-x(1)+ 1.88)+ 0.05/(x(1)- 263)+ 0.05/(-x(2)+ .08)+ 0.05/(x(2)- 1.59);



主函数:

x0=[ 237, 1.272];
options=optimset('largescale','off');
[x,fval,exitflag,output]=fminunc('chexiaolirun_objfun',x0,options)





运行结果:
Line search cannot find an acceptable point along the current
search direction.

x =

237.0000 1.2720


fval =

24.7958


exitflag =

-2


output =

iterations: 1
funcCount: 198
stepsize: []
firstorderopt: 0.4565
algorithm: 'medium-scale: Quasi-Newton line search'
message: [1x80 char]
dbdubing 当前离线   回复时引用此帖
旧 2008-05-28, 20:46   #2
dbdubing
初级会员
 
注册日期: 2008-05-05
年龄: 20
帖子: 6
声望力: 0
dbdubing 正向着好的方向发展
默认

各位高手给点意见啊,谢谢了
dbdubing 当前离线   回复时引用此帖
旧 2008-05-29, 01:34   #3
fanxing39
高级会员
 
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31
fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星
默认

你的数学表达式是什么? 我看下 !我把你写的整理出来,发现是个很复杂的函数,担心你的数学表达式写成matlab的时候可能弄错了:redface:
fanxing39 当前离线   回复时引用此帖
旧 2008-05-29, 22:57   #4
dbdubing
初级会员
 
注册日期: 2008-05-05
年龄: 20
帖子: 6
声望力: 0
dbdubing 正向着好的方向发展
默认

表达式是没有问题的,我已经核对过恩多次了!


原来的模型如下,就是求函数取极小值时的x1、x2值
上传的图像
文件类型: jpg clip_image002.jpg (13.4 KB, 27 次查看)
dbdubing 当前离线   回复时引用此帖
旧 2008-05-30, 20:32   #5
fanxing39
高级会员
 
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31
fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星
默认

看到式子,才明白,原来你的函数命令调错了!你调的那个命令是求解无约束非线性规划问题的。
而你的式子 是 有约束非线性规划问题。 我写了个程序,你看下!

主程序:
xmin=[7 0.05];
xmax=[65 1.59];
x0=[237,1.272]
[x,fval,flag,c]=fmincon(@fun3,x0,[],[],[],[],xmin,xmax)


副程序:
function y=fun3(x)
y=16915/(x(1)*x(2))+59*x(1)^0.2*x(2)^1.2+100;

结果是:
x = 65.0000 1.2364 ;fmin = 485.8729

我用其他软件也计算了,结果是一样的:smile:
fanxing39 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[分享]数学软件四大家 ivan MATLAB论坛 2 2009-03-15 16:23
MATLAB的换行的问题 billwfox MATLAB论坛 3 2009-03-06 10:27
plotyy的小问题 swolf54 MATLAB论坛 1 2008-05-06 15:03
【求助】有关Matlab优化工具箱的问题,敬请高手指教! liu03790379 MATLAB论坛 1 2008-01-10 00:00
华南虎研究者通过模拟实验证明虎照作假 labfans MATLAB新闻聚合 0 2007-11-20 15:15


所有时间均为北京时间。现在的时间是 04:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.