数学建模社区-数学中国

标题: 求大神指出哪里错了!3Q! [打印本页]

作者: 东东酱    时间: 2012-8-30 16:52
标题: 求大神指出哪里错了!3Q!
  1. model:
  2. sets:l/1..10/:y,k,h;
  3. m/1..5/:a;
  4. link(l,m):x,z,d;
  5. endsets

  6. data:
  7. d=5.26 5.19 4.21 4.00 2.95 2.74 2.46 1.90 0.64 1.27 1.90 0.99 1.90 1.13 1.27 2.25 1.48 2.04 3.09 3.51 5.89 5.61 5.61 4.56 3.51 3.65 2.46 2.46 1.06 0.57 0.64 1.76 1.27 1.83 2.74 2.60 4.21 3.72 5.05 6.10 4.42 3.86 3.72 3.16 2.25 2.81 0.78 1.62 1.27 0.50;
  8. a=78 85 124 85 85;
  9. y=81 79 87 68 74 87 68 74 87 87;
  10. k=61 68 64 68 71 81 68 84 87 81;
  11. enddata

  12. min=@sum(link:x*z*d);
  13. @for(m(j):@sum(link(i,j):z(i,j)*x(i,j))>=a(j));
  14. @for(l(i):@sum(link(i,j)|j#eq#1 #or# j#eq#2:x(i,j))<=y(i));
  15. @for(l(i):@sum(link(i,j)|j#ge#3 #and# j#le#5:x(i,j))<=k(i));
  16. @for(m(j):@sum(link(i,j):x(i,j))<=96);
  17. @for(m(j):@sum(link(i,j):z(i,j)*x(i,j)*h(i))/@sum(link(i,j):z(i,j)*x(i,j))>=0.285);
  18. @for(m(j):@sum(link(i,j):z(i,j)*x(i,j)*h(i))/@sum(link(i,j):z(i,j)*x(i,j))<=0.305);
  19. @for(link:@bin(z));
  20. end
复制代码
程序找不到最优解

5d6034a85edf8db183b91ffa0923dd54574e749c.jpg (348.41 KB, 下载次数: 206)

5d6034a85edf8db183b91ffa0923dd54574e749c.jpg


作者: 天海星云    时间: 2012-8-30 17:46
你的数据d输入的没有问题么?
作者: 且生    时间: 2012-8-30 21:56
看不懂呀,能够说得详细点么?
作者: jiany920207    时间: 2012-8-31 10:10
用matlab求啊

作者: 小卢    时间: 2012-8-31 11:04
本帖最后由 wujianjack2 于 2013-7-20 13:59 编辑

好像在程序中把z当做y了,我改了下你的程序,不过最后没有灵敏度解,这个我也不清楚是什么原因了。。。
程序:
model:
sets:l/1..10/:y,k,h;
m/1..5/:a;
link(l,m):x,z,d;
endsets

data:
d=5.26 5.19 4.21 4.00 2.95 2.74 2.46 1.90 0.64 1.27 1.90 0.99 1.90 1.13 1.27 2.25 1.48 2.04 3.09 3.51 5.89 5.61 5.61 4.56 3.51 3.65 2.46 2.46 1.06 0.57 0.64 1.76 1.27 1.83 2.74 2.60 4.21 3.72 5.05 6.10 4.42 3.86 3.72 3.16 2.25 2.81 0.78 1.62 1.27 0.50;
a=78 85 124 85 85;
y=81 79 87 68 74 87 68 74 87 87;
k=61 68 64 68 71 81 68 84 87 81;
enddata

min=@sum(link:x*z*d);
@sum(link(i,j)|j#eq#1:z(i,j)*x(i,j))>=78;
@sum(link(i,j)|j#ne#1#and#j#ne#3:z(i,j)*x(i,j))>=85;
@sum(link(i,j)|j#eq#3:z(i,j)*x(i,j))>=124;
@for(l(i):@sum(link(i,j)|j#eq#1 #and# j#eq#2:x(i,j))<=y(i));
@for(l(i):@sum(link(i,j)|j#ge#3 #and# j#le#5:x(i,j))<=k(i));
@for(m(j):@sum(l(i):x(i,j))<=96);
@for(m(j)|j#ne#3#and#j#ne#4:(@sum(link(i,j):z(i,j)*x(i,j)*h(i))/@sum(link(i,j):z(i,j)*x(i,j)))>=0.285);
@for(m(j)|j#ne#3#and#j#ne#4:(@sum(link(i,j):z(i,j)*x(i,j)*h(i))/@sum(link(i,j):z(i,j)*x(i,j)))<=0.305);
@for(link:@bin(z));
end
作者: Smallvan    时间: 2012-8-31 13:58
变量太多了,11.0版本也不行;而且是三维非线性!!
作者: zhangc_ningbo    时间: 2012-8-31 14:08
那个hi是什么东西呀,决策变量吗?
作者: zhangc_ningbo    时间: 2012-8-31 14:13
还有那个x(i,j)上面有一横的那个是指,x的平均数吗?感觉你写代码的时候好想没有体现平均数吧
作者: hzs2012    时间: 2012-8-31 16:02
能加个注释么,代码风格很不好的说。。。
作者: shilei5669    时间: 2012-9-1 15:20
无奈,看不懂,感觉碧昂量太多了,建议换个编程
作者: 1063345733    时间: 2013-4-4 11:23
global search




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5