1
$\begingroup$

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.

$\endgroup$
0

1 Answer 1

1
$\begingroup$

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.$$

$\endgroup$
1
  • $\begingroup$ Thank you this is quite a neat answer $\endgroup$ Commented Sep 27, 2019 at 12:58

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.