A heuristic algorithm for the multidimensional zero-one knapsack problem