# binary programming with non-convex objective function

I have a non-convex binary programming problem: \begin{align} \min_{x,y,z}~& A^\top z + x^\top H y \\ \text{s.t} &\quad z\in \mathbb{Z}^+,\\ &\quad 0\leq z\leq 1, \\ &\quad y_{min}z \leq y \leq y_{max}z,\\ &\quad Cy-Dx=0, \\ \end{align} where $x\in\Re^{n}$, $y\in\Re^{n}$, $C$ and $D$ are given full rank square matrices. Does anyone know how to deal non-convex term $x^\top H y$ in the objective function?

Linearize? or Change of variable? And how to do it?

Many Thanks!

• Clearly unbounded as you have no constraints on $x$ and $y$ Oct 9, 2016 at 10:50
• sorry, I forgot to add constraints on $x$ and $y$. Oct 9, 2016 at 10:54
• Why are you including $z$ in the model? It is completely separate from the solution over $x$ and $y$ Oct 9, 2016 at 10:56
• I am sorry again, I over simplified my problem. Oct 9, 2016 at 11:01
• What do you know about $C$ and $D$? Oct 9, 2016 at 11:08

It depends on the data. If $x$ is given uniquely by solving the system of equations, $x = Gy$, you can simply check if $G^TH+HG$ is positive semidefinite. If it is, you are done as you have a convex mixed-integer QP. If it is indefinite/negative definite, or your equation is underdetermined in $x$, you will not arrive at a convex MIQP, and you have to take another approach.

One possibility is to look at the problem as a bilevel program, where you look at the problem w.r.t $x$ and $y$ as an inner nonconvex QP with $z$ as a parameter, and then on the outer stage you optimize for $z$. When doing so, you can replace optimality of $x$ and $y$ with kkt conditions (a nonconvex QP can be solved by writing KKT conditions using binary variables, and then using the fact that the quadratic indefinite objective can be written as a linear function of the duals, and the "right-and-side" of the inequalities. The only remaining problem then is that the right-hand-side in the inner program involves $z$, so the normally linear objective will actually be bilinear in $z$ and the duals. However, as $z$ is binary, this expression can be linearized.)

Pretty involved perhaps, but here is an example using the MATLAB toolbox YALMIP just as a proof-of-concept.

% Generate random problem
n = 3;
m = 2;
H = randn(m,n);
A = randn(n,1);
ymin = -rand(n,1);
ymax = rand(n,1);

x = sdpvar(m,1);
y = sdpvar(n,1);
z = binvar(n,1);

Model = [ymin.*z <= y <= ymax.*z, x == randn(m,n)*y];

% Inner problem
Objective = x'*H*y;
% Derive KT conditions
[KKTModel,details] = kkt(Model,Objective,z);
% Express the indefinite quadratic using duals
newObjective = (details.c'*details.primal-details.b'*details.dual)/2;
% Big-M linearize since details.b involves binary parameters z
[LinearObjective, cut] = binmodel(newObjective, [0 <= details.dual <= 1e4]);
% Solve outer problem
optimize([Model, KKTModel, cut], A'*z+LinearObjective)
value([x;y;z])

% Compare with simply calling a global solver
optimize(Model,A'*z + x'*H*y,sdpsettings('solver','bmibnb'))
value([x;y;z])