CHHCD 2021-07-03 15:13 采纳率: 0%
浏览 66

用lingo软件怎么求解100个物品背包问题

想问一下这个代码有什么问题为什么运行不了?

model:
sets:
a/1..100/: Weight, Value, Capacity ;
endsets
data :
Weight =54 183 106 82 30 58 71 166 117 190 90 191 205 128 110 89 63 6 140 86 30 91 156 31 70 199 142 98 178 16 140 31
24 197 101 73 169 73 92 159 71 102 144 151 27 131 209 164 177 177 129 146 17 53 164 146 43 170 180 171 130 183 5 113 207 57 13 163
20 63 12 24 9 42 6 109 170 108 46 69 43 175 81 5 34 146 148 114 160 174 156 82 47 126 102 83 58 34 21 14
;

Value =597 596 593 586 581 568 567 560 549 548 547 529 529 527 520 491 482 478 475 475 466 462 459 458 454 451 449 443 442 421 410 409
395 394 390 377 375 366 361 347 334 322 315 313 311 309 296 295 294 289 285 279 277 276 272 248 246 245 238 237 232 231 231 225 192 184 183 176
174 171 168 165 165 154 153 150 149 147 143 140 138 134 132 127 124 123 114 111 104 89 74 63 62 58 55 48 27 22 12 6
;
enddata
max = @sum(a :ValueCapacity) ;
@sum(a : Weight
Capacity) <= 6718 ;
@for(a:@bin(Capacity)) ;
end

点击运行出来是这样的

img

  • 写回答

1条回答 默认 最新

  • 愤怒的熊猫x 2023-04-04 21:12
    关注

    要使用Lingo软件解决100个物品背包问题,可以按照以下步骤进行操作:

    打开Lingo软件,并创建一个新模型。

    定义模型中的变量,如下所示:

    一个长度为100的向量x,其中每个元素表示对应物品是否放入背包。如果第i个物品被选中,则xi=1;否则xi=0。

    一个常量向量w,表示每个物品的重量。

    一个常量向量v,表示每个物品的价值。

    一个常量b,表示背包的容量。

    定义目标函数和约束条件,如下所示:

    目标函数:maximize(sum(i, v(i)*x(i))),即所有被选中物品的总价值。

    约束条件:sum(i, w(i)*x(i)) <= b,即所有被选中物品的总重量不超过背包的容量。

    运行Lingo求解器,得到最优解。

    需要注意的是,由于100个物品的背包问题规模较大,可能需要较长时间才能得到最优解。此外,如果物品的数量更多,可以考虑使用分支定界法等更高效的算法来求解背包问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用