list index out of range when adding variables
AnsweredThis is my code for adding variables:
for k in range(0, data.vehicleNum - 1):
for d in range(0, data.droneNum - 1):
name1 = 'P_' + str(k) + '_' + str(d)
P[k][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name1)
for i in range(0, data.nodeNum - 1):
name2 = 'C_' + str(i) + '_' + str(k)
name3 = 'Ct_' + str(i) + '_' + str(d)
name4 = 'Vl_' + str(i) + '_' + str(k) + '_' + str(d)
name5 = 'Vr_' + str(i) + '_' + str(k) + '_' + str(d)
name10 = 'A_' + str(i) + '_' + str(k)
name11 = 'a_' + str(i) + '_' + str(k) + '_' + str(d)
name12 = 'R_' + str(i) + '_' + str(k)
name13 = 'r_' + str(i) + '_' + str(k) + '_' + str(d)
name14 = 'S_' + str(i) + '_' + str(k)
name15 = 's_' + str(i) + '_' + str(k) + '_' + str(d)
name16 = 'Dk_' + str(i) + '_' + str(k) + '_' + str(d)
name17 = 'temp_' + str(i) + '_' + str(k) + '_' + str(d)
name18 = 'temp_1_' + str(i) + '_' + str(k) + '_' + str(d)
name19 = 'temp_2_' + str(i) + '_' + str(k) + '_' + str(d)
C[i][k] = model.addVar(0, 1, vtype=GRB.BINARY, name=name2)
Ct[i][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name3)
Vl[i][k][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name4)
Vr[i][k][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name5)
A[i][k] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name10)
a[i][k][d] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name11)
R[i][k] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name12)
r[i][k][d] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name13)
S[i][k] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name14)
s[i][k][d] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name15)
Dk[i][k][d] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name16)
temp[i][k][d] = model.addVar(vtype=GRB.CONTINUOUS, name=name17)
temp_1[i][k][d] = model.addVar(vtype=GRB.CONTINUOUS, name=name18)
temp_2[i][k][d] = model.addVar(vtype=GRB.CONTINUOUS, name=name19)
for j in range(0, data.nodeNum - 1):
name6 = 'X_' + str(i) + '_' + str(j) + '_' + str(k)
name7 = 'Y_' + str(i) + '_' + str(j) + '_' + str(k) + '_' + str(d)
name8 = 'T_' + str(i) + '_' + str(j) + '_' + str(k)
name9 = 't_' + str(i) + '_' + str(j) + '_' + str(k) + '_' + str(d)
X[i][j][k] = model.addVar(0, 1, vtype=GRB.BINARY, name=name6)
Y[i][j][k][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name7)
T[i][j][k] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name8)
t[i][j][k][d] = model.addVar(0, big_M, vtype=GRB.CONTINUOUS, name=name9)
Error as follows:
Traceback (most recent call last):
File "E:/PycharmProjects/project/gurobi.py", line 275, in <module>
Y[i][j][k][d] = model.addVar(0, 1, vtype=GRB.BINARY, name=name7)
IndexError: list index out of range
0
-
Official comment
This post is more than two years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum, or try Gurobot, our chatbot interface offering instant, expert-level support. -
The error means that you are trying to access your list \(\texttt{Y}\) at an undefined entry given as \(\texttt{i,j,k,d}\). In order to debug this issue, you should print the values of \(\texttt{i,j,k,d}\) and then compare the values to how you originally defined your list \(\texttt{Y}\).
1
Post is closed for comments.
Comments
2 comments