Guest User

Untitled

a guest
Jul 19th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. def solve_numpy_func(capacity, items, weights, values):
  2.  
  3. grid = np.empty((items + 1, capacity + 1), dtype=int)
  4. grid[0] = 0
  5. for item in range(items):
  6. this_weight = weights[item]
  7. this_value = values[item]
  8. grid[item+1, :this_weight] = grid[item, :this_weight]
  9. temp = grid[item, :-this_weight] + this_value
  10. grid[item + 1, this_weight:] =
  11. np.where(temp > grid[item, this_weight:],
  12. temp,
  13. grid[item, this_weight:])
  14.  
  15. solution_value = grid[items, capacity]
  16. solution_weight = 0
  17. taken = []
  18. k = capacity
  19. for item in range(items, 0, -1):
  20. if grid[item][k] != grid[item - 1][k]:
  21. taken.append(item - 1)
  22. k -= weights[item - 1]
  23. solution_weight += weights[item-1]
  24.  
  25. return solution_value, solution_weight, taken
Add Comment
Please, Sign In to add comment