Abstract
Constraint optimization problems (COP) on finite
domains are typically solved via search. Many
problems (e.g., 0-1 knapsack) involve redundant
search, making a general constraint solver revisit
the same subproblems again and again. Existing
approaches use caching, symmetry breaking, subproblem dominance, or search with decomposition
to prune the search space of constraint problems.
In this paper we present a different approach—
DP Solver—which uses dynamic programming
(DP) to efficiently solve certain types of constraint
optimization problems (COPs). Given a COP modeled with MiniZinc, DP Solver first analyzes the
model to decide whether the problem is efficiently
solvable with DP. If so, DP Solver refactors the
constraints and objective functions to model the
problem as a DP problem. Finally, DP Solver
feeds the refactored model to Gecode—a widely
used constraint solver—for the optimal solution.
Our evaluation shows that DP Solver significantly
improves the performance of constraint solving.