So, I have N number of part types and each can have M number of members. Each type has a weight associated with it, and the packs have a weight limit. My job is to figure out how to both minimise the amount of packs used (which is a trivial problem in many situations) while also minimising the number of packs with dissimilar types of parts. Minimising the amount of packs used takes priority and has the higher weight (nothing specific, but say 3 to 1 weight ratio).
My success requirement is to make it so that a human cannot pack things in a better way without heavy thinking in >95% of cases.
At first I thought this was a multiple knapsack problem, but the variable number of packs threw me for a loop. I imagine this problem has been solved already and an algorithm exists, but I don't know which keywords to use. For now, I have developed a heuristics algorithm that works ok, but it only effective in about 80% of cases I've tested. I've tried a Genetic Algorithm also, but I'm having issues with implementation, so I'd like to see if someone has a better idea or know the keywords for my research