[已答复] 整数规划问题

[复制链接]
yoni 发表于 2014-5-15 21:42:19
问题是这样的。。。
min    3.32 * x11 +3.59 * x21 + 2.61 * x31 + 1.72 * x41 + 2.92 *x12 + 3.16 * x22 + 2.28 * x32 + 1.48 * x42;
s.t
       11 * x11 + 8 * x12 ≥ 75
       11 * x21 + 8 * x22 ≥ 296
       11 * x31 + 8 * x32 ≥ 68
       11 * x41 + 8 * x42 ≥ 153
476* x11 + 518 * x21 + 364 * x31 + 224 * x41+ 408 * x12 + 444 * x22 + 312 * x32 +192 * x42 ≤ 23000
x11,x21,x31,x41,x12,x22,x32,x42为正整数

然后代码是这样的。。。。
  1. [x11,x21,x31,x41,x12,x22,x32,x42]=meshgrid(0:100);
  2. idx=(11*x1+8*x5>=75)&(11*x2+8*x6>=296)&(11*x3+8*x7>=68)&(11*x4+8*x8>=153)&(476*x1+518*x2+364*x3+224*x4+408*x5+444*x6+312*x7+192*x8<=25000);
  3. x11=x11(idx);
  4. x21=x21(idx);
  5. x31=x31(idx);
  6. x41=x41(idx);
  7. x12=x12(idx);
  8. x22=x22(idx);
  9. x32=x32(idx);
  10. x42=x42(idx);
  11. f=3.32*x1+3.59*x2+2.61*x3+1.72*x4+2.92*x5+3.16*x6+2.28*x7+1.48*x8;
  12. [v,ind]=min(f);
  13. disp(['找到整数解x11=' num2str(x11(ind))])
  14. disp(['找到整数解x21=' num2str(x21(ind))])
  15. disp(['找到整数解x31=' num2str(x31(ind))])
  16. disp(['找到整数解x41=' num2str(x41(ind))])
  17. disp(['找到整数解x12=' num2str(x12(ind))])
  18. disp(['找到整数解x22=' num2str(x22(ind))])
  19. disp(['找到整数解x32=' num2str(x32(ind))])
  20. disp(['找到整数解x42=' num2str(x42(ind))])
  21. disp(['目标函数最大值为:' num2str(v)])
复制代码
可是运行之后却告诉我是这样的。。。
>> guihuaError using meshgridToo many output arguments.
Error in guihua (line 1)[x11,x21,x31,x41,x12,x22,x32,x42]=meshgrid(0:100);

我受不鸟了。。。我是菜鸟啊。。。急着交作业啊。。。求大神!!!!T_T.....

2 条回复


maple1314168 发表于 2014-5-16 08:18:50
本帖最后由 maple1314168 于 2014-5-16 08:20 编辑

meshgrid只是对平面的区间划分。
你现在是8维的 “x11,x21,x31,x41,x12,x22,x32,x42”
可以用 ndgrid 命令。自己查找 help ndgrid
不过,你想用枚举的方法也不现实 。100^8 =10^16 ,内存不够。

yoni 发表于 2014-5-17 10:04:25
maple1314168 发表于 2014-5-16 08:18
meshgrid只是对平面的区间划分。
你现在是8维的 “x11,x21,x31,x41,x12,x22,x32,x42”
可以用 ndgrid 命令 ...

太感谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表