I am trying to do a difference of convex function (DC) programming problem in CVX for a polynomial. The objective function is convex and there is a non-convex polynomial inequality. It is known that for any polynomial $f(x)$, a suitable convex decomposition of the function which is twice differentiable defined in a compact convex set $\Omega$ is

\begin{align} f(x) = (f(x)+\eta\frac{\lvert|x\rvert|^2}{2})-(\eta\frac{\lvert|x\rvert|^2}{2}) \end{align} where $\eta$ is greater than the spectral value of the Hessian of the polynomial $f(x)$ [Tuy, Convex Analysis and Global Optimization, pp-113]. For a non-convex polynomial inequality: \begin{align} f(x)\leq 0 \end{align} A suitable convex relaxation of the inequality is given by linearizing the negative quadratic part in the above equation about the point $y$ \begin{align} f(x)+\eta\frac{\lvert|x\rvert|^2}{2}-(\eta\frac{\lvert|y\rvert|^2}{2}+\eta y^{T}(x-y))\leq 0 \end{align} The optimization with the relaxed convex inequality is carried out sequentially by updating $y$ until convergence is met.

In my case, the polynomial is cubic and when I implement this on CVX, I get a disciplined convex programming error.
Illegal operation: {convex} - {convex} while defining the cubic polynomial.

Is there a flaw in my logic?

  • $\begingroup$ I have edited the question for additional clarity. Its not a typo since I am trying to represent the non-convex polynomial as difference of two convex polynomials. $\endgroup$
    – jjgarrison
    May 8, 2018 at 0:02
  • $\begingroup$ If $f(x)$ is a cubic polynomial, what's $\eta$? The cubic term will dominate the quadratic term. $\endgroup$ May 8, 2018 at 13:22
  • 1
    $\begingroup$ Show your CVX code if you want help diagnosing the problem. Or post at ask.cvxr.com . If you declared y as a CVX variable, which it should not be, then you will get a CVX error. $\endgroup$ May 8, 2018 at 14:35
  • 1
    $\begingroup$ Also f(x) still needs to comply with CVX's DCP rules. The fact that $f(x) + \eta \|X\|^2/2$ is convex, doesn't mean you can enter it in violation of CVX's rules. $\endgroup$ May 8, 2018 at 14:49


You must log in to answer this question.