4 Copyright (c) by Joao Pedro PEDROSO and Mikio KUBO, 2012 6 from pyscipopt
import Model, quicksum, multidict
9 """mkp -- model for solving the multi-constrained knapsack 11 - I: set of dimensions 13 - v[j]: value of item j 14 - a[i,j]: weight of item j on dimension i 15 - b[i]: capacity of knapsack on dimension i 16 Returns a model, ready to be solved. 23 x[j] = model.addVar(vtype=
"B", name=
"x(%s)"%j)
27 model.addCons(quicksum(a[i,j]*x[j]
for j
in J) <= b[i],
"Capacity(%s)"%i)
30 model.setObjective(quicksum(v[j]*x[j]
for j
in J),
"maximize")
37 """creates example data set""" 38 J,v = multidict({1:16, 2:19, 3:23, 4:28})
39 a = {(1,1):2, (1,2):3, (1,3):4, (1,4):5,
40 (2,1):3000, (2,2):3500, (2,3):5100, (2,4):7200,
42 I,b = multidict({1:7, 2:10000})
46 if __name__ ==
"__main__":
48 model =
mkp(I,J,v,a,b)
52 print(
"Optimal value:", model.getObjVal())
58 if model.getVal(v) > EPS:
59 print(v.name,
"=", model.getVal(v))