3
$\begingroup$

I need to build a if-else constraint for this statement, where $x_P$ and $x_I$ are decision variables, and $C$ is a constant:

if $x_P \ge C$ then $x_I = x_P - C$ else $x_I = 0$.

Any help is greatly appreciated.

$\endgroup$
1
  • $\begingroup$ Is $x_P$ continuous, non negative ? $\endgroup$
    – Kuifje
    Apr 14 at 7:09
5
$\begingroup$

You want to enforce $$x_I=\max(x_P-C,0).$$ See https://math.stackexchange.com/a/4086955/683666, where the various big-M values are specified explicitly.

More generally, see Linearizing a Max Function in the constraint - not working to linearize the max of $n$ linear functions.

$\endgroup$
4
$\begingroup$

You can model it by adding a binary variable $b$ and the following four constraints. $$ \begin{align} x_I &\geq x_P - C & x_I &\geq 0\\ x_I &\leq x_P - C + Mb & x_I &\leq M(1-b) \end{align} $$ where $M$ is a big constant.

Note that if $x_P > C$, $b$ can't be $1$ as otherwise $0\geq x_I > 0$, which would lead to infeasibility. Thus $b=0$ and the left two inequalities force $x_I = x_P-C$.

On the other hand if $x_P < C$, $b$ can't be $0$ as otherwise $0>x_I>0$ by the left side. Thus $b=1$ and the right to constraints give $x_I=0$.

For $x_P=C$ it doesn't matter.

I hope this helps. ;)

$\endgroup$
3
$\begingroup$

Assuming $x_p$ is a continuous variable, you could use the following big-M inequalities: \begin{align} C - M_2(1- y) &\le x_p \le C-1 + M_1 y \\ x_p - C - M_4(1-y) &\le x_I \le x_p - C + M_3(1-y) \\ 0 & \le x_I \le M_5y \\ y &\in \{0,1\} \end{align}

So if $y=0$, $x_P \le C-1$, or by contrapositive, if $x_P \ge C$, $y=1$.

And if $y=1$, then $x_P -C \le x_I\le x_P -C$, and if $y=0$, then $0 \le x_I\le 0$.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.