In [1]:
2+2
Out[1]:
4
In [2]:
objects = [1,2,3,4,5,6,7,8,9]
weight = {1:30, 2:35, 3:10, 4:15, 5:35, 6:22, 7:29, 8:18, 9:11}
value = {1:240, 2:300, 3:100, 4:150, 5:360, 6:180, 7:220, 8:140, 9:90}
maxweight = 100
In [3]:
def knapsackModel(objects, weight, value, maxweight):
    n = len(weight)
    
    from pyscipopt import Model, quicksum, multidict
    model = Model("knapsack")
    x = {}
    
    for i in objects:
        x[i] = model.addVar(vtype="B", name="x(%s)"%i)
    
    model.addCons(quicksum(weight[i]*x[i] for i in objects) <= maxweight, "weight limit")
    
    model.setObjective(quicksum(value[i]*x[i] for i in objects), "maximize")
    model.data = x
    return model
In [4]:
def solveKnapsack(objects, weight, value, maxweight):
    
    model = knapsackModel(objects, weight, value, maxweight)
    model.optimize()
    x = model.data
    
    print("Total Price: ", model.getObjVal())
    for i in objects:
        print("%s" %i, model.getVal(x[i]))
    return model.getObjVal()
In [5]:
solveKnapsack(objects, weight, value, maxweight)
Total Price:  930.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Out[5]:
930.0

Plot¶

In [6]:
M = sum(weight[i] for i in objects)
totalValueList = [solveKnapsack(objects, weight, value, i) for i in range(0, M)]
totalWeightList = [i for i in range(0,M)]
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  100.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  100.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  100.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  100.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  100.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  150.0
1 0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  150.0
1 0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  150.0
1 0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 0.0
9 -0.0
Total Price:  150.0
1 0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 -0.0
9 -0.0
Total Price:  150.0
1 0.0
2 0.0
3 0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  150.0
1 0.0
2 0.0
3 0.0
4 1.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  190.0
1 0.0
2 0.0
3 1.0
4 -0.0
5 0.0
6 0.0
7 0.0
8 -0.0
9 1.0
Total Price:  190.0
1 0.0
2 0.0
3 1.0
4 -0.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 1.0
Total Price:  190.0
1 0.0
2 0.0
3 1.0
4 -0.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 1.0
Total Price:  190.0
1 0.0
2 0.0
3 1.0
4 -0.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 1.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 0.0
8 0.0
9 0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 -0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 -0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 0.0
7 0.0
8 -0.0
9 0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 0.0
8 -0.0
9 0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 -0.0
8 -0.0
9 0.0
Total Price:  250.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 -0.0
7 -0.0
8 -0.0
9 0.0
Total Price:  280.0
1 0.0
2 0.0
3 1.0
4 0.0
5 0.0
6 1.0
7 -0.0
8 -0.0
9 0.0
Total Price:  290.0
1 -0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  290.0
1 -0.0
2 0.0
3 -0.0
4 1.0
5 0.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 0.0
4 0.0
5 1.0
6 0.0
7 0.0
8 0.0
9 0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  360.0
1 -0.0
2 -0.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  390.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 -0.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  390.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 -0.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  460.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  460.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  460.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  460.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  460.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  510.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  550.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  550.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  550.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  550.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  610.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  640.0
1 -0.0
2 -0.0
3 1.0
4 -0.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  650.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  650.0
1 -0.0
2 -0.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  660.0
1 -0.0
2 1.0
3 -0.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  700.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  750.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  750.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  760.0
1 -0.0
2 1.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  760.0
1 -0.0
2 1.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  790.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  790.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  790.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  810.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  810.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  810.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  810.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  840.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 1.0
Total Price:  850.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  850.0
1 -0.0
2 1.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  850.0
1 -0.0
2 1.0
3 1.0
4 -0.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  880.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  880.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  910.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  910.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  910.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  910.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  910.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  930.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  940.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  940.0
1 -0.0
2 1.0
3 1.0
4 -0.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  950.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  950.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  950.0
1 -0.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1000.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1000.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1000.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1000.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1000.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1020.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1030.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1050.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1050.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1050.0
1 1.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1050.0
1 1.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1090.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1090.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1090.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1090.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1090.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1100.0
1 -0.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1120.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1140.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 1.0
Total Price:  1150.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1150.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1150.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1180.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1180.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1180.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1180.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1180.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1190.0
1 1.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1190.0
1 1.0
2 1.0
3 -0.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1230.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1240.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1240.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1240.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1240.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1240.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1260.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1270.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 -0.0
Total Price:  1290.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1290.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1290.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1320.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1330.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1330.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1330.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1330.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1330.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 -0.0
Total Price:  1340.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1360.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 1.0
Total Price:  1380.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 1.0
Total Price:  1380.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 1.0
Total Price:  1380.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 -0.0
8 1.0
9 1.0
Total Price:  1400.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1420.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 -0.0
9 1.0
Total Price:  1450.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 -0.0
Total Price:  1470.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1470.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1470.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1470.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1470.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 -0.0
Total Price:  1480.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 1.0
Total Price:  1480.0
1 1.0
2 -0.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 1.0
Total Price:  1510.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 -0.0
Total Price:  1510.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 -0.0
Total Price:  1510.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 -0.0
Total Price:  1540.0
1 -0.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1560.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 -0.0
8 1.0
9 1.0
Total Price:  1600.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 1.0
Total Price:  1600.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 1.0
Total Price:  1600.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 1.0
Total Price:  1600.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 -0.0
7 1.0
8 1.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1640.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 -0.0
9 1.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
Total Price:  1690.0
1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 0.0
In [7]:
# !pip install matplotlib
import matplotlib.pyplot as plt
plt.plot(totalWeightList, totalValueList)
plt.xlabel("Weight Limit")
plt.ylabel("Total Price of items")
plt.show()
No description has been provided for this image
In [8]:
def unlimitedknapsackModel(objects, weight, value, maxweight):
    n = len(weight)
    
    from pyscipopt import Model, quicksum, multidict
    model = Model("knapsack")
    x = {}
    
    for i in objects:
        x[i] = model.addVar(vtype="I", name="x(%s)"%i)
    
    model.addCons(quicksum(weight[i]*x[i] for i in objects) <= maxweight, "weight limit")
    
    model.setObjective(quicksum(value[i]*x[i] for i in objects), "maximize")
    model.data = x
    return model
In [9]:
def solveKnapsack(objects, weight, value, maxweight):
    
    model = unlimitedknapsackModel(objects, weight, value, maxweight)
    model.optimize()
    x = model.data
    
    print("Total Price: ", model.getObjVal())
    for i in objects:
        print("%s" %i, model.getVal(x[i]))
    return model.getObjVal()
In [10]:
from pyscipopt import Model, multidict, quicksum
objects, weight, value = multidict({"almonds":[30, 240],
                                    "walnuts":[35, 300],
                                    "cashew":[10,100],
                                    "pistachio":[15,150],
                                    "plum":[35, 360],
                                    "cherry":[22,180],
                                    "mango":[29,220],
                                    "apple":[18, 140],
                                    "banana":[11, 90]})
# objects = [1,2,3,4,5,6,7,8,9]
# weight = {1:30, 2:35, 3:10, 4:15, 5:35, 6:22, 7:29, 8:18, 9:11}
# value = {1:240, 2:300, 3:100, 4:150, 5:360, 6:180, 7:220, 8:140, 9:90}
maxweight = 100
In [11]:
solveKnapsack(objects, weight, value, maxweight)
Total Price:  1020.0
almonds 0.0
walnuts 0.0
cashew 3.0
pistachio 0.0
plum 2.0
cherry 0.0
mango 0.0
apple 0.0
banana -0.0
Out[11]:
1020.0
In [ ]: