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"""
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,
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))