声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 999|回复: 1

[综合讨论] 像高手请教matlab优化死循环问题

[复制链接]
发表于 2008-12-26 22:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问为什么下面代码会出现死循环呢:
Aeq=[1,1,1,1]
beq=[89.02]
x0=[21.8,17.38,25.02,25]'
lb=zeros(4,1)
[x,fval]=fmincon('1490*(60.1424-x(1))^0.507+690*(30.1562-x(2))^0.807+214*(117.7613-x(3))^0.407+283*(43.5848-x(4))^1.219',x0,[],[],Aeq,beq,lb,[],'yuesu')

yuesu.m的代码
function[c,ceq]=mycon(x)
ceq=[]
c(1)=(x(1)-25.974)^2+(x(1)-15.84)^2+(x(1)-26.26)^2-534.1
c(2)=(x(2)-10.8)^2+(x(2)-21)^2+(x(2)-17.38)^2-135.3
c(3)=(x(3)-40.845)^2+(x(3)-13.42)^2+(x(3)-25.02)^2-1934.4
c(4)=(x(4)-15.913)^2+(x(4)-38.76)^2+(x(4)-20.36)^2-293.6
非常感谢
回复
分享到:

使用道具 举报

发表于 2008-12-26 23:13 | 显示全部楼层
function[c,ceq]=mycon(x)
ceq=[]
c(1)=(x(1)-25.974)^2+(x(1)-15.84)^2+(x(1)-26.26)^2-534.1
c(2)=(x(2)-10.8)^2+(x(2)-21)^2+(x(2)-17.38)^2-135.3
c(3)=(x(3)-40.845)^2+(x(3)-13.42)^2+(x(3)-25.02)^2-1934.4
c(4)=(x(4)-15.913)^2+(x(4)-38.76)^2+(x(4)-20.36)^2-293.6
将上面的代码保存为mycon.m
然后修改下面红色的代码
[x,fval]=fmincon('1490*(60.1424-x(1))^0.507+690*(30.1562-x(2))^0.807+214*(117.7613-x(3))^0.407+283*(43.5848-x(4))^1.219',x0,[],[],Aeq,beq,lb,[],'mycon')

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 23:25 , Processed in 0.056341 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表