Smart Predict-and-Optimize for Hard Combinatorial Optimization Problems

Jayanta Mandi, Emir Demirović, Peter J. Stuckey, Tias Guns

Research output: Unpublished contribution to conferencePoster

33 Downloads (Pure)


Combinatorial optimization assumes that all parameters of the optimization problem, e.g. the weights in the objective function, are fixed. Often, these weights are mere estimates and increasingly machine learning techniques are used to for their estimation. Recently, Smart Predict and Optimize (SPO) has been proposed for problems with a linear objective function over the predictions, more specifically linear programming problems. It takes the regret of the predictions on the linear problem into account, by repeatedly solving it during learning. We investigate the use of SPO to solve more realistic discrete optimization problems. The main challenge is the repeated solving of the optimization problem. To this end, we investigate ways to relax the problem as well as warm-starting the learning and the solving. Our results show that even for discrete problems it often suffices to train by solving the relaxation in the SPO loss. Furthermore, this approach outperforms the state-of-the-art approach of wilder2018melding. We experiment with weighted knapsack problems as well as complex scheduling problems, and show for the first time that a predict-and-optimize approach can successfully be used on large-scale combinatorial optimization problems.
Original languageEnglish
Publication statusUnpublished - 11 Feb 2020
EventThirty-Fourth AAAI Conference on Artificial Intelligence - New York Hilton Midtown, New York, United States
Duration: 7 Feb 202012 Mar 2020


ConferenceThirty-Fourth AAAI Conference on Artificial Intelligence
Abbreviated titleAAAI-20
CountryUnited States
CityNew York
Internet address


  • Optimization and Control
  • Artificial Intelligence


Dive into the research topics of 'Smart Predict-and-Optimize for Hard Combinatorial Optimization Problems'. Together they form a unique fingerprint.

Cite this