Logic-Based Methods for Optimization: Combining Optimization and Constraint Satisfaction