How to covert min min problem to linear programming problem?

Greg Glockner showed how to linearize the following example: $$ \min\left\{\min\{x_1,x_2,x_3\}\right\} $$

For the sake of clarity, I will explain how he achieves this. He introduces a variable $z=\min\{x_1,x_2,x_3\}$ and binary variables $y_1,y_2,y_3$ to deactivate extra (big-$M$) constraints : $$ z\ge x_1-My_1\\ z\ge x_2-My_2\\ z\ge x_3-My_3\\ y_1+y_2+y_3=2 $$ Lets analyze these constraints. First $y_1+y_2+y_3=2$ imposes that exactly $2$ binaries equal $1$, so that exactly two constraints are no longer active. The only constraint that will remain active (the one for which $y_i=0$) is the one for which $x_i$ is the minimum.

For example, if $x_1=\min\{x_1,x_2,x_3\}$, then you will have $y_1=0$ and $y_2=y_3=1$, so that the only constraint that remains active is $$ z\ge x_1 $$

And since the solver is minimizing $z$, it will try to fix it to $x_1$ at least, ensuring tightness.

Now, back to your problem, replace constraints $A_i\le B_i^k$ by similar ones, e.g.: $$ A_i\ge B_i^k-My_i\quad \forall i\in P\\ \sum_{i\in P}y_i=|P|-1 $$


The source of nonlinearity here is the inner min. To reformulate it to a linear form, you need to replace that inner min.

For this purpose, you can define a new variable $A_i$ equal to the inner min and substitute it. i.e. replace $A_i = \min_{k \in K} B_i^k$.

Next you need to insert a set of linear constraints to guarantee that $A_i$ is actually the min of $B_i^k$.

Representation of min with a set of linear constraints Hint: The min of a set of variables is smaller than or equal each of those variables.