Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solve_numpy_func(capacity, items, weights, values):
- grid = np.empty((items + 1, capacity + 1), dtype=int)
- grid[0] = 0
- for item in range(items):
- this_weight = weights[item]
- this_value = values[item]
- grid[item+1, :this_weight] = grid[item, :this_weight]
- temp = grid[item, :-this_weight] + this_value
- grid[item + 1, this_weight:] =
- np.where(temp > grid[item, this_weight:],
- temp,
- grid[item, this_weight:])
- solution_value = grid[items, capacity]
- solution_weight = 0
- taken = []
- k = capacity
- for item in range(items, 0, -1):
- if grid[item][k] != grid[item - 1][k]:
- taken.append(item - 1)
- k -= weights[item - 1]
- solution_weight += weights[item-1]
- return solution_value, solution_weight, taken
Add Comment
Please, Sign In to add comment