, and any algorithm you choose will only approximate the optimal solution (potentially to arbitrary precision if your problem is formally identical to bin-packing). The only way to guarantee the optimal solution is to perform an exhaustive (impractical) search of every possible combination. How will you calculate when your solution is 'good enough'?