Problem solving a quadratic problem - CPLEX Error 5002

1k Views Asked by At

I am trying to solve a quadratic problem using CPLEX. Observe that $w_b$ is binary and $p_b$ is a positive continuous, hence i started by linearizing the product $p_b w_b$ by adding a new variable $y_b$ however when i try to solve my problem with the following quadratic constraint, i got CPLEX error 5002: 'q1' is not convex.

Moreover $z_{kb}$ is binary and as for the other terms ($\sigma$, $\overline{p_k}$), they are known parameters.

enter image description here

Is there a way to solve my problem????

I want also to mention that when i change inequality sign, the problem gets solved.

1

There are 1 best solutions below

2
On BEST ANSWER

Since you say the term inside the term is positive, it can easily be converted to an SOCP.

You effectively have $x^2 \geq \sum_i z_i \sigma_i^2$ (simplified notation) with $x\geq 0$. Since $z_i$ is binary it is equivalent to $x^2 \geq \sum_i z^2_i \sigma^2_i$. Hence, you have a standard SOCP constraint $x \geq || z\sigma||_2$

The case with indefinite $x$ can be reformulated to two SOCP constraints with the introduction of additional binary variables. In that case, you have the model ($x \geq || z\sigma||_2$ or $-x \geq || z\sigma||_2$). With the introduction of binary $\delta$ and a big-M constant $M$), the logical or constraint can be written as ($x+M\delta \geq || z\sigma||_2, -x + M(1-\delta) \geq || z\sigma||_2$