用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

要使用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个物品的背包问题规模较大,可能需要较长时间才能得到最优解。此外,如果物品的数量更多,可以考虑使用分支定界法等更高效的算法来求解背包问题。