We're implementing a bin packing algorithm for a client project. The catch is that the bins come in multiple sizes.
Our current thinking is to initially do a first-fit packing assuming all bins are the size of the largest bin and then, after all items are packed, downsize any bin that can be smaller and still fit the same items in.