# Anyway to prove the optimality of a mixed integer nonlinear programming (MINLP)

Consider a MINLP, call it $P_0$ $$\begin{split} \min_{x,y} & ~~f(x,y) \\ \text{s.t.} &~~ g(x,y)\leq0 \\ & ~~x\geq 0 \\ & ~~y = 0 ~\text{or} ~1, \end{split}$$ where $x$ and $y$ are vectors here. The problem is convex after relaxing the binary constraint to $0\leq y\leq 1$. Let the optimal solution of the relaxed convex optimization problem be $x',y'$. I found that most of the entries in $y'$ are actually binary (only a few entries are fractional). If I just simply round these fractional entries in $y'$ and leave the binary entries unchanged, it leads to a binary vector, say $y''$. Now I end up solving the following optimization problem, call it $P_1$

$$\begin{split} \min_{x} & ~~f(x,y'') \\ \text{s.t.} &~~ g(x,y'')\leq0 \\ & ~~x\geq 0 \end{split}$$ Assume $P_1$ always has a feasible solution, I feel the optimal solution of $P_1$ might be the same as the optimal solution in $P_0$ based on some simulation results. Or if they are not equivalent, the optimal objective value of $P_1$ should be very close to the one in $P_0$. Any idea to analytically prove the optimality of a MINLP or how close these two solutions are? Any reference or paper is appreciated.

• There is no certificate of optimality for mixed integer problems. You need to enumerate all possible combinations of integer solutions and solve the corresponding problems (or use a structured method like branch&bound or cutting planes) to prove optimality of a problem with integer variables. – LinAlg Jan 5 '17 at 10:47

LinAlg is correct. There's really nothing theoretical to offer here; everything is heuristic. In fact, you cannot assume that $y''$ and the true optimum $y^*$ coincide even on those values for which $y''_i=0$ or $y''_i=1$.
All you really know at this point is this: $$f(x',y') \leq f(x^*,y^*) \leq f(x'',y'')$$ where $(x^*,y^*)$ is the true optimum. If the gap $f(x'',y'')-f(x',y')$ is small, then you know you're close. If it's not, then you're going to have to do something to improve it.
One relatively simple way to tighten your bound is to generate multiple test vectors $y''$, solving your second problem with each, and taking the best result. A simple approach is probabilistic: for each element $y''_i$, set it to 1 with a probability $y'_i$, and 0 otherwise. Of course, this means that $y''_i=y'_i$ if $y'_i\in\{0,1\}$; and as I said above, you cannot be sure that will be the case for the true optimum $y^*_i$. Nevertheless, you're likely to see some improvement this way.