Bisection method

A quasiconvex optimization problem can be solved by solving a series of convex feasibility problems. This is the bisection method for quasiconvex optimization.

Recall that a function is quasiconvex if the its sublevel sets $$ S_t = \{x \in \textbf{dom} f_0 : f_0(x) \le t\} $$ are convex. The idea of the bisection method is to find the smallest (up to a tolerance level) nonempty sublevel set -- this set will contain the optimal value. For this purpose, we start our search with a large interval (of function values) $$[l,u]$$ that contains the optimal value $$p^*$$, and at each step divide this value into half by either updating the upper or the lower bound of this interval.

The algorithm can be written as: $$ \textbf{given}\,\, l\le p^*, u\ge p^*, \text{tolerance} \,\,\epsilon > 0\\ \textbf{repeat} \\ \,\, \text{1. }t:= (l+u)/2 \\ \,\, \text{2. Solve the convex feasibility problem below} \\ \,\, \text{3. If problem feasible, } u:=t, \textbf{else } l:=t\\ \textbf{until } u-l\le \epsilon $$

Convex feasibility problem solved at each iteration:

$$\begin{matrix} \text{find} & x \\ \text{subject to} & \phi_t(x) \le 0 \\ & f_i(x) \le 0, i=1,\dots,m \\ & Ax = b \end{matrix} $$

where $$\phi_t(x)$$ is a function that satisfies the condition of $$x$$ being in the sublevel set $$S_t$$; that is:

$$\phi_t(x) \le 0 \implies f_0(x) \le t$$.