Modelling with gurobipy
Awaiting user inputHi,
I would like to model the following constraint with gurobipy :
time_R = [2 for i in full_R]
time_L = [(0,2) for i in full_L]
w_L = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]
w_R = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]
L = [[0, 1], [4, 6, 7], [8, 9, 10, 11], [14, 15], [16, 17, 18]]
R = [[0, 1, 3], [6, 7], [8, 9, 10], [12, 13, 14, 15], [16, 17, 18, 19]]
for l in L[t]:
for r in R[t]:
for i in w_R:
for j in w_L:
if r in i and l in j:
assignment_problem += x[r, l] <= max(0, (
(w_R.index(i) + time_R[r]) - (w_L.index(j) + time_L[l][0])) + 1)
Thanks a lot for your help
-
Hi Emma,
Could you please elaborate on what exactly are you trying to model? Given your code, you are trying to model
\[\begin{align*}
\sum_{l,r,i,j} \left( x_{r,l} \leq \max\{0, w_i + time_r - w_j - time_{l,0} +1\}\right)
\end{align*}\]You cannot sum over inequalities.
In order to use the max operator, you have to use the addGenConstrMax method which accepts only single optimization variables or constants. This means that for every \(\max\) term, you have to introduce 2 auxiliary variables \(q_{i,r,j,l}, p_{i,r,j,l}\) and model the constraints
\[\begin{align*}
p_{i,r,j,l} &= w_i + time_r - w_j - time_{l,0} +1\\
q_{i,r,j,l} &= \max\{0, p_{i,r,j,l}\}
\end{align*}\]Best regards,
Jaromił0
Please sign in to leave a comment.
Comments
1 comment