# How to write if else statement in Linear programming?

How to write the following if else condition in Linear Programming? If a > b then c = d else c = e

d,e are variables. How can we write a linear program without multiplying d and e with binary variables. But we can use binary variables.

a,b,c,d,e > 0

• In general this can not be done in a pure continuous LP. You need binary variables to overcome the non-convexity in this construct. Some very special cases may not need binary variables. – Erwin Kalvelagen Nov 2 '17 at 0:13
• We can use binary variables but I don't want to multiply those binary variables with d or e because they too are variables in my problem. If we multiply binary variables with d or e the problem will lose linearity. – Vinay Nov 2 '17 at 0:40

$$a > b \Longleftrightarrow \delta = 1$$
This can be formulated as: \begin{align} &a \ge b + 0.001 - M(1-\delta)\\ &a \le b + M\delta\\ &\delta \in \{0,1\} \end{align} (in practice I would drop the $0.001$ term).
Next we do: \begin{align} &\delta=1 \Longrightarrow c=d\\ &\delta=0 \Longrightarrow c=e \end{align} This can be written as: \begin{align} & d-M(1-\delta)\le c \le d + M(1-\delta)\\ & e-M\delta\le c \le e + M\delta\\ \end{align}