# Indicator function in math programming

Let $$x$$ be an integer variable that takes the values $$1$$, $$2$$ or $$3$$. Let $$y_1$$ and $$y_2$$ be binary variables.

I want to express the two following logical constraints:

if $$x=2$$ then $$y_1=1$$ if $$x=3$$ then $$y_2=1$$

That's all. I have looked around here but usually the constraints are inequalities or continuous variables.

Edit:

I have come up with the following solutions:

$$-1y_1=(x-1)(x-3)$$
when $$x=1 \rightarrow y_1=0$$,
when $$x=3 \rightarrow y_1=0$$,
when $$x=2 \rightarrow y_1=1$$.

$$2y_2=(x-1)(x-2)$$
when $$x=1 \rightarrow y_2=0$$,
when $$x=2 \rightarrow y_2=0$$,
when $$x=3 \rightarrow y_2=1$$.

It breaks the linearity, but the constraints are in a Mixed Integer Nonlinear Programming problem.

Could be that a valid solution?

• Your quadratic equality constraints are correct, but you are better off with linear constraints, even if you already have nonlinearity elsewhere in your model. Jun 26, 2020 at 20:24
• Always go for linearizing equations if you can, and start thinking from adding a new binary variable. Jun 27, 2020 at 1:30

Introduce binary variable $$y_0$$ and linear constraints: \begin{align} y_0 + y_1 + y_2 &= 1\\ 1y_0 + 2y_1 + 3y_2 &= x \end{align}
Equivalently, eliminating $$y_0$$: \begin{align} y_1 + y_2 &\le 1\\ 1 + y_1 + 2y_2 &= x \end{align}
• By the way, I guess there's no problem in putting together both restrictions in one single restriction, expressed as follows: $y_0 +y_1+y_2=1$ $1y_0+2y_1+3y_2=x$ $y_1+2y_2-x=-1$ Jun 28, 2020 at 17:23