# optimization subject to disjunction of inequality constraints

I want to solve $$\min_x f(x)\qquad \textrm{s.t.}\qquad g_i(x) \geq 0\ \ \textrm{or}\ \ h_i(x) \geq 0$$ for $i=1,\ldots,m$.

Clearly if the inequality constraints split the feasible set into $2^m$ disconnected components, there is no hope for an efficient numerical solution. But in my case I know there is only one feasible connected component (consider for example a single pair of constraints, $g(x,y) = x$ and $h(x,y) = y$).

Is there some trick for converting these constraints to the standard conjunction of inequality constraints supported by black-box (nonlinear, nonconvex) optimization software? One can try for instance replacing the constraints with $k_i = \max(g_i,h_i)$ but since $k_i$'s gradient is not continuous I have little hope that this idea is effective in practice.

EDIT: Another idea (thanks to a quick discussion with Bernard Mourrain) is to introduce slack variables $y_i$ and solve $$\min_{x,y} f(x)\quad \textrm{s.t.}\quad [g_i(x)-y_i][h_i(x)-y_i]=0,\ y_i \geq 0$$ which now has only conjunctions of constraints, albeit for increased number of constraints and variables. Is this approach viable?

## 1 Answer

Is there some trick for converting these constraints to the standard conjunction of inequality constraints supported by black-box (nonlinear, nonconvex) optimization software?

You could introduce binary variables for each logical statement. For instance, you add a binary variable $z_{i}$ for each $i = 1, \ldots, m$, and have $\min_{x, z}f(x)$ such that $g_{i}(x)z_{i} + h_{i}(x)(1-z_{i}) \geq 0$, where $z_{i} = 1$ if the $g_{i}$ constraint is satisfied, and $z_{i} = 0$ if the $h_{i}$ constraint is satisfied. The resulting problem will be mixed-integer, so you would need to use an MINLP solver.

One can try for instance replacing the constraints with $k_{i}=\max(g_{i},h_i)$ but since $k_i$'s gradient is not continuous I have little hope that this idea is effective in practice.

I agree. I am not an expert in nonsmooth methods, but it seems as though there are more MILP and MINLP solvers available than nonsmooth optimization solvers. If you elect to use a nonsmooth formulation, Overton has some papers that describe how BFGS methods appear to work fairly well in practice, and he provides a line-search criterion for an appropriate step size. However, the problems he and his coauthors solve tend to be no more than 2000ish variables; the number is impressive for nonsmooth problems, but I am aware of larger problem instances in real applications.