A Dynamic Programming Approach for Consistency and Propagation for Knapsack Constraints

Knapsack constraints are a key modeling structure in constraint programming. These constraints are normally handled with simple bounding arguments. We propose a dynamic programming structure to represent these constraints. With this structure, we are able to achieve hyper-arc consistency, to determine infeasibility before all variables are set, to generate all solutions quickly, and to provide incrementality by updating the structure after domain reduction. Testing on a difficult set of multiple knapsack instances shows significant reduction in branching.