简介
没想到 0 - 1背包问题还可以这么解
question
假设现在有8件物品,他们的质量分别为3,4,6,7,9,10,11,12;
价值分别为 4,5,7,9,11,12,13,15;
假设总质量限制不超过30kg,是确定带哪些物品,使所带物品总价值最大
code
model:
sets:
items/1..8/:x,w,v;
endsets
data:
w = 3,4,6,7,9,10,11,12;
v = 4,5,7,9,11,12,13,15;
c = 30;
enddata
max=@sum(items:v * x);!目标函数;
@sum(items:w * x) <= c; ! 质量函数;
@for(items:@bin(x)); !0 - 1变量约束 bin 函数的使用限制为 0/1 ;
end
answer
X( 1) 0.000000 -4.000000
X( 2) 1.000000 -5.000000
X( 3) 0.000000 -7.000000
X( 4) 1.000000 -9.000000
X( 5) 1.000000 -11.00000
X( 6) 1.000000 -12.00000
X( 7) 0.000000 -13.00000
X( 8) 0.000000 -15.00000