10

I was hoping to get some help in modelling the following logic as an MIP Constraint

If $X_{ij}=1$ and $\text{SDV}_{ikj}=1$ for a particular index $i$, then $\text{SOC}^L_i=100$, else $\text{SOC}^L_i$ can take any value.

$X_{ij}$ and $\text{SDV}_{ikj}$ are binary decision variables, while $\text{SOC}^L_i$ is a system variable.

I figured it would use some kind of Big M formulation but I am not sure how. Thank you in advance!

2 Answers2

8

$$\text{SOC}_i^L \ge 100 - M \times (1- X_{i,j}) - M \times (1- \text{SDV}_{i,k,j})$$ $$\text{SOC}_i^L \le 100 + M \times (1- X_{i,j}) + M \times (1- \text{SDV}_{i,k,j})$$

When $X_{i,j} = 1$ and $SDV_{i,k,j} = 1$ the two equations above will end up becoming:

$$\text{SOC}_i^L \ge 100 $$ $$\text{SOC}_i^L \le 100 $$

Otherwise, the range of $\text{SOC}_i^L$ will be $[-M, +M]$.

ooo
  • 1,589
  • 4
  • 12
8

More generally, if $s\in[L,U]$, you can model $(x=1 \land y=1) \implies s=C$ (constant $C$) as follows: $$ x + y - 1 \le z\\ (L-C)(1-z) \le s - C \le (U-C)(1-z)\\ z\in\{0,1\} $$ This approach introduces an additional binary variable and constraint beyond @anoopyadav's model but avoids $2M$.

RobPratt
  • 32,006
  • 1
  • 44
  • 84
  • when $x =1 \wedge y=1$ range of $z$ is $[0,1]$ shouldn't it be $[1,1]$. – ooo Jan 28 '20 at 18:14
  • 1
    $(x=1 \land y=1)\implies 1\le z$, and the implication is only one direction. You do not need the converse $z=1 \implies (x=1 \land y=1)$. – RobPratt Jan 28 '20 at 19:27
  • will there be any problem if I add two more constrain $z \leq x$, $z \leq y$? now they are bounded as $[1,1]$ when $x=1 \wedge y=1$ – ooo Jan 29 '20 at 06:33
  • Those additional two constraints would enforce the converse so that, together with my first constraint, every feasible solution would satisfy $z= x y$ instead of just $z\ge x y$. If you have a lot of these $(x,y)$ pairs, then adding five constraints per pair when only three are needed could slow down the underlying LP solves. – RobPratt Jan 29 '20 at 13:22
  • ok, I did not know about that. – ooo Jan 29 '20 at 19:31
  • By the way, you can relax $z\in{0,1}$ to $z \le 1$ here. – RobPratt Jan 29 '20 at 19:34
  • I always use to focus on tightening the bounds other than the number of constraints. what makes solver work faster tighter bounds or fewer constraints. – ooo Jan 30 '20 at 19:42