Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-04-19
帖子: 1
声望力: 0 ![]() |
![]()
function [c,ceq]=mycon(x)
c=[sqrt((x(1)-30)^2+(x(2)-8)^2)-35; sqrt((x(1)-6)^2+(x(2)-11)^2)-35; sqrt((x(1)-12)^2+(x(2)-65)^2)-35; sqrt((x(1)-56)^2+(x(2)-28)^2)-35; sqrt((x(1)-45)^2+(x(2)-39)^2)-35]; ceq=[]; function f=myfun(x) f=200*sqrt((x(1)-30)^2+(x(2)-8)^2) +300*sqrt((x(1)-6)^2+(x(2)-11)^2) +250*sqrt((x(1)-12)^2+(x(2)-65)^2) +100*sqrt((x(1)-56)^2+(x(2)-28)^2) +150*sqrt((x(1)-45)^2+(x(2)-39)^2); clear x0=[31,36.5]; lb=[56,65]; ub=[6,8]; [x,fval]=fmincon(@fun,x0,[],[],[],[],lb,ub,@mycon) 运行结果为: x = 31.0000 36.5000 fval = [] 程序错哪了,哪位知道,谢谢了 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-02-20
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]()
首先是 lb和ub值写反了
将最后2句改为 ub=[56,65]; lb=[6,8]; [x,fval]=fmincon(@myfun,x0,[],[],[],[],lb,ub,@mycon); 可得结果 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
两处错:
lb=[56,65]; ub=[6,8]; [x,fval]=fmincon(@fun,x0,[],[],[],[],lb,ub,@mycon) (1)lb应比ub小,你写反了; (2)@fun应为@myfun。 |
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
建议楼主不要用matlab求解这个题目,因为matlab求解此类题目很烦。
lingo求解程序: model: min=200*@sqrt((x-30)^2+(y-8)^2) +300*@sqrt((x-6)^2+(y-11)^2) +250*@sqrt((x-12)^2+(y-65)^2) +100*@sqrt((x-56)^2+(y-28)^2) +150*@sqrt((x-45)^2+(y-39)^2); @sqrt((x-30)^2+(y-8)^2)-35<0; @sqrt((x-6)^2+(y-11)^2)-35<0; @sqrt((x-12)^2+(y-65)^2)-35<0; @sqrt((x-56)^2+(y-28)^2)-35<0; @sqrt((x-45)^2+(x-39)^2)-35<0; @bnd(6,x,56); @bnd(8,y,65); end 程序求解结果: Global optimal solution found. Objective value: 28546.47 Objective bound: 28546.45 Infeasibilities: 0.000000 Extended solver steps: 13 Total solver iterations: 1285 Variable Value Reduced Cost X 22.22188 0.000000 Y 31.52593 0.000000 |
![]() |
![]() |
![]() |
#5 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
楼主把问题撂在这儿就不管了,O(∩_∩)O~
|
![]() |
![]() |