I am quite new to the field of discrete optimization and currently having problem formulating the system below. This system contain both if-elseif statement and a difficult to linearize min-max constraint.
\begin{array}{*{20}{c}}
{IF\,\,\,\,\,\,\,\,\,\,\,\,\,{x_5} \le 50\,\, \Rightarrow \,{x_7} = \min \left( {1.05 - 0.007{x_5},0.85} \right)}\\
{ELSE\,IF\,{x_5} > 50 \Rightarrow {x_7} = \max \left( {1.05 - 0.007{x_5},0.67} \right)}
\end{array}
In this case, $x_5$ is an integer variable and can only take 5 discrete values that is 25,32,40,50,65 whereas $x_7$ is a non-negative real number.
Reformulation of a Mix Integer Programming problem with both if else and min max logical constraints
$\begingroup$
$\endgroup$
0
Add a comment
|
1 Answer
$\begingroup$
$\endgroup$
1
Let's start by introducing five binary variables $y_1,\dots,y_5$ that will select the value of $x_5$ as follows:$$x_5=25y_1 + 32y_2 + \dots + 65y_5$$$$y_1 + \dots + y_5 = 1.$$ Next, tabulate the value of $x_7$ for each of the five values of $x_5$. I get the following possibilities for $x_7$ (in ascending order of $x_5$): 0.85, 0.826, 0.77, 0.7, 0.67. So we can define $x_7$ via$$x_7 = 0.85 y_1 + \dots + 0.67 y_5.$$
-
$\begingroup$ Thank you this is quite a neat answer $\endgroup$Tuong Nguyen Minh– Tuong Nguyen Minh2019-09-27 12:58:49 +00:00Commented Sep 27, 2019 at 12:58