Quantcast
Channel: Yet Another Math Programming Consultant
Viewing all articles
Browse latest Browse all 809

Non-convex QP as a MIP: performance

$
0
0

In this post I showed how a small non-convex QP could be reformulated as a MIP using KKT conditions plus a special (linear) objective. Will this work in practice? How does this compare performance-wise with global solvers? Let’s see if we can get a feeling for this.

Duplicating the problem

One easy way to make the small test problem bigger is to duplicate the problem:

Objective\(c'x_1 + x'_1 Q x_1\)\(+c'x_2 + x'_2 Q x_2\)\(\cdots\)\(+c'x_K + x'_K Q x_K\)
Constraints\(A x_1 \le b\)
\(\ell \le x_1 \le u\)
\(A x_2 \le b\)
\(\ell \le x_2 \le u\)
\(\ddots\)
\(A x_K \le b\)
\(\ell \le x_K \le u\)
This way we can make the model easily much bigger by introducing a set K. Notice that solvers have a difficult time to see through this trick. They are not recognizing they are solving a tiny problem that is just repeated K times. Actually these independent blocks often make the problem tough to solve (I don't know exactly why, but experience shows this is the case).
Modeling

Basically we need to add an index K to the variables \(x_i\), and to the constraints. Finally we add a summation to the objective. The new model looks like:

image

For the KKT model we can do something similar.

Results

Here are some results with K=5 and K=10. I stopped after 1000 seconds (if not proven optimal by then, I report the gap).

image

At least for this model the MIP formulation is doing very well. The Cplex MIP solver beats the Cplex global QP solver by a large margin.

Yalmip

Yalmip has similar results produced here. It is summarized in this picture:

The KKTQP method is using a MIP solver.


Viewing all articles
Browse latest Browse all 809

Trending Articles