I'm thinking a SAT solver is going to be the best approach and using the multiple buckets problem. I don't have a lot of theoretical background in these areas and would like to read a book or two before starting down this path. Any recommendations as far as books or even subject matter to study?
> This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.
Then learn about the properties of different classes of functions and what this inevitably means for optimisation options.
Generally your best bang for buck is mixed integer linear programming. It can solve a huge number of problems. This book is perfect:
https://www.amazon.co.uk/Model-Building-Mathematical-Program...
You'll need multivariable calculus and linear algebra as prerequisites.