为什么Cplex和PythonDocplex的结果不同
我对Cplex和PythonDocplex的结果不同。我感到困惑,不知道为什么。 这是我的代码。它们很长,因为有数据。它们的数据相同,约束相互对应。你可以直接运行它们。 因为我不能提交任何细节,我将添加一些无用的词。请理解。谢谢。 PythonDocplex:为什么Cplex和PythonDocplex的结果不同,python,cplex,docplex,Python,Cplex,Docplex,我对Cplex和PythonDocplex的结果不同。我感到困惑,不知道为什么。 这是我的代码。它们很长,因为有数据。它们的数据相同,约束相互对应。你可以直接运行它们。 因为我不能提交任何细节,我将添加一些无用的词。请理解。谢谢。 PythonDocplex: from docplex.mp.model import Model model = Model() I2 = list(i for i in range(1, 11)) # S2 = list(s for s in range(1
from docplex.mp.model import Model
model = Model()
I2 = list(i for i in range(1, 11)) #
S2 = list(s for s in range(1, 9)) #
T2 = list(t for t in range(1, 10)) #
B2 = list(b for b in range(1, 45)) #
K2 = list(k for k in range(0, 10)) #
model.I1 = I2
model.S1 = S2
model.T1 = T2
model.B1 = B2
model.K1 = K2
I = model.I1 #
S = model.S1 #
T = model.T1 #
B = model.B1 #
K = model.K1 #
I1 = 10
S1 = 8
T1 = 9
B1 = 44
K1 = 9
V0 = [16, 16, 15, 14, 15, 13, 15, 15, 16, 14]
h = 14
d1 =[[11,31,19,43,11,19,43,31],
[15,27,15,39,15,15,39,27],
[11,23,11,35,11,11,35,23],
[11,19,11,31,11,11,31,19],
[15,15,15,27,15,15,27,15],
[19,11,11,23,19,11,23,11],
[23,11,11,19,23,11,19,11],
[27,15,15,15,27,15,15,15],
[31,11,19,11,31,19,11,11],
[35,11,23,11,35,23,11,11]]
R = [[4,4,0,0,0,0,0,0,0],
[8,8,8,4,4,0,0,0,0],
[8,8,8,8,4,4,0,0,0],
[0,0,8,8,8,8,4,4,0],
[4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,8,8,8,8,4,4]]
H =[[0,0,0,20,20,0,0,0,0],
[0,0,0,0,0,0,20,20,0],
[0,0,0,0,0,0,0,20,20],
[0,0,0,0,0,0,0,0,0],
[0,0,20,20,0,0,0,0,0],
[20,20,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]]
G = {1:[[0,0,0,2,2,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
2:[[0,0,0,0,0,0,4,4,0,0],
[0,0,0,0,0,3,5,0,0,0],
[0,0,0,0,6,2,0,0,0,0],
[0,0,0,2,2,0,0,0,0,0],
[0,0,1,3,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
3:[[0,0,0,0,0,0,0,4,4,0],
[0,0,0,0,0,0,6,2,0,0],
[0,0,0,0,0,5,3,0,0,0],
[0,0,0,0,2,6,0,0,0,0],
[0,0,0,1,3,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
4:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
5:[[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
6:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
7:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
8:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]]
}
D = {1:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,3,2,2,1,0,0,0,0],
[0,4,3,2,3,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
2:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,4,0,0,0,0,0,0,0],
[0,3,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
3:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
4:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
5:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,5,1,1,3,2,0,0,0],
[0,2,4,3,1,2,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
6:[[0,0,4,2,2,1,2,1,0,0],
[0,3,3,2,3,2,1,2,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
7:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]],
8:[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]]
}
P = {1:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
2:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
3:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
4:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
5:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
6:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
7:[[1,0,0,1,1,0,0,1,0],
[1,0,2,0,0,0,1,0,0],
[0,1,0,1,0,0,0,0,1],
[1,0,1,0,0,0,0,0,1],
[0,1,0,1,0,1,1,1,0],
[1,1,0,0,1,1,0,0,0],
[0,0,1,0,0,0,1,1,0],
[0,0,0,0,0,0,1,0,0],
[1,0,0,1,1,0,0,1,0],
[0,1,0,0,1,0,0,0,0]],
8:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]]
}
L = {1: [[0,0,0,2,1,0,0,0,0],
[0,0,0,3,1,0,0,0,0],
[0,0,0,2,2,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,2,1,0,0,0,0],
[0,0,0,1,1,0,0,0,0],
[0,0,0,2,3,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,1,1,0,0,0,0]],
2:[[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,0,0]],
3:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
4:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
5:[[0,0,2,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,1,0,0,0,0,0],
[0,0,3,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,3,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0],
[0,0,2,3,0,0,0,0,0]],
6:[[2,2,0,0,0,0,0,0,0],
[1,3,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[3,2,0,0,0,0,0,0,0],
[1,2,0,0,0,0,0,0,0],
[1,2,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[3,2,0,0,0,0,0,0,0],
[3,1,0,0,0,0,0,0,0]],
7:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
8:[[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]],
}
var_list_A = [(i, s, t) for i in I for s in S for t in T]
var_list_B = [(i, t) for i in I for t in T]
var_list_C = [(i, s, t, k) for i in I for s in S for t in T for k in K] # Variable
GA = model.integer_var_dict(var_list_C, lb=0, name='GA') # Variable
DA = model.integer_var_dict(var_list_C, lb=0, name='DA') # Variable
GB = model.integer_var_dict(var_list_A, lb=0, name='GB') # Variable
DB = model.integer_var_dict(var_list_A, lb=0, name='DB') # Variable
PA = model.integer_var_dict(var_list_A, lb=0, name='PA') # Variable
LA = model.integer_var_dict(var_list_A, lb=0, name='LA') # Variable
M = model.integer_var_dict(var_list_A, lb=0, name='M') # Variable
N = model.integer_var_dict(var_list_A, lb=0, name='N') # Variable
V = model.integer_var_dict(var_list_B, lb=0, name='V') # Variable
var_list = [i for i in range(1, 10)]
a = model.integer_var_list(var_list, lb=0, name='a') # Variable
b = model.integer_var_list(var_list, lb=0, name='b') # Variable
c = model.integer_var_list(var_list, lb=0, name='c') # Variable
d = model.integer_var_list(var_list, lb=0, name='d') # Variable
for s in S:
for t in T:
model.add_constraint(R[s-1][t-1] == model.sum(GB[i, s, t] for i in I)) #
for s in S:
for t in T:
model.add_constraint(H[s-1][t-1] == model.sum(DB[i, s, t] for i in I)) #
for s in S:
for t in T:
for k in K:
if k <= T1-t:
model.add_constraint(G[s][t-1][k-1] == model.sum(GA[i, s, t, k] for i in I)) #
for s in S:
for t in T:
for k in K:
if k <= T1-t:
model.add_constraint(D[s][t-1][k-1] == model.sum(DA[i, s, t, k] for i in I)) #
for s in S:
for i in I:
for t in T:
model.add_constraint(GB[i, s, t] == model.sum(GA[i, s, t, k] for k in K if k <= T1-t) + M[i, s, t]) #
for s in S:
for i in I:
for t in T:
model.add_constraint(DB[i, s, t] == model.sum(DA[i, s, t, k] for k in K if k <= T1-t) + N[i, s, t]) #
for s in S:
for i in I:
for t in T:
model.add_constraint(PA[i, s, t] == model.sum(DA[i, s, t-k, k] for k in K if 0 < k < t)+P[s][i-1][t-1]) #
for s in S:
for i in I:
for t in T:
model.add_constraint(LA[i, s, t] == model.sum(GA[i, s, t-k, k] for k in K if 0 < k < t)+L[s][i-1][t-1]) #
for i in I:
for t in T:
model.add_constraint(model.sum(DB[i, s, t]+LA[i, s, t] for s in S) >= a[t-1]) #
for i in I:
for t in T:
model.add_constraint(model.sum(DB[i, s, t]+LA[i, s, t] for s in S) <= b[t-1]) #
for i in I:
for t in T:
model.add_constraint(model.sum(GB[i, s, t]+PA[i, s, t] for s in S) >= c[t-1]) #
for i in I:
for t in T:
model.add_constraint(model.sum(GB[i, s, t]+PA[i, s, t] for s in S) <= d[t-1]) #
for i in I:
for t in T:
model.add_constraint(model.sum(DB[i, s, t]+LA[i, s, t] for s in S) <= h) #
for i in I:
for t in T:
model.add_constraint(model.sum(GB[i, s, t]+PA[i, s, t] for s in S) <= h) #
for i in I:
for t in T:
if t == 1:
model.add_constraint(V[i, t] ==
model.sum(GB[i, s, t]+DB[i, s, t]-PA[i, s, t]-LA[i, s, t] for s in S)+V0[i-1]) #
if t >= 2:
model.add_constraint(V[i, t] ==
model.sum(GB[i, s, t]+DB[i, s, t]-PA[i, s, t]-LA[i, s, t] for s in S)+V[i, t-1]) #
for i in I:
for t in T:
model.add_constraint(V[i, t] <= B1) #
for t in T:
model.add_constraint(b[t-1] <= h) #
for t in T:
model.add_constraint(d[t-1] <= h) #
#choose one of them(fc1,fc2)
fc1 = model.sum(b[t-1] - a[t-1] for t in T) + model.sum(d[t-1] - c[t-1] for t in T)
# fc2 = model.sum((DB[i, s, t] + GB[i, s, t]) * d1[i-1][s-1] for i in I for s in S for t in T)
model.minimize(fc1)
sol = model.solve(clean_before_solve=True, log_output=True)
print(sol.solve_details)
print(sol)
首先,一个精确性:您询问的是模型的两个版本之间的差异,一个是用OPL编写的,另一个是用pythondocplex编写的,因此您的文章也应该标记为“OPL” 为了从OPL和DOcplex获得相同的结果,必须检查以下几点:
- 确保使用相同的平台,即机器/操作系统/操作系统版本(例如Windows 10)
- 确保使用相同版本的Cplex(例如12.10)
- 确保以相同的顺序声明变量和约束:不同的顺序可能会导致不同的结果
- 确保使用相同的Cplex参数(例如时间限制、mip强调等)
如果以上各点都正常,但您仍然得到不同的结果,请将模型从OPL和DOcplex导出为LP格式,并检查两个LP文件是否相同。谢谢您的帮助。但我不知道如何从DOcplex将模型导出为LP格式。您能告诉我详细信息吗?很抱歉打扰您。请使用
model.export\u as\u LP(路径,basename)
;路径默认值是临时目录,使用“.”在当前目录中写入,basename默认值是模型名。例如:model.export_as_lp(path=”,basename='my_model')
将在当前目录中写入mymodel.lp
。还有lp_string
属性用于访问具有lp表示的字符串。
range I = 1..10;
range S = 1..8;
range T = 1..9;
range B = 1..44;
range K = 0..9;
int T1 = 9;//
int B1 = 44;//
int h = 14;//
int V0[I]=...;//
float d1[I][S]=...;//
int R[S][T]=...;//
int H[S][T]=...;//
int G[S][T][K];//
int G1[T][K]=...;//
int G2[T][K]=...;//
int G3[T][K]=...;//
int G4[T][K]=...;//
int G5[T][K]=...;//
int G6[T][K]=...;//
int G7[T][K]=...;//
int G8[T][K]=...;//
int D[S][T][K];//
int D1[T][K]=...;//
int D2[T][K]=...;//
int D3[T][K]=...;//
int D4[T][K]=...;//
int D5[T][K]=...;//
int D6[T][K]=...;//
int D7[T][K]=...;//
int D8[T][K]=...;//
int P[I][S][T];//
int P1[I][T]=...;//
int P2[I][T]=...;//
int P3[I][T]=...;//
int P4[I][T]=...;//
int P5[I][T]=...;//
int P6[I][T]=...;//
int P7[I][T]=...;//
int P8[I][T]=...;//
int L[I][S][T];//
int L1[I][T]=...;//
int L2[I][T]=...;//
int L3[I][T]=...;//
int L4[I][T]=...;//
int L5[I][T]=...;//
int L6[I][T]=...;//
int L7[I][T]=...;//
int L8[I][T]=...;//
execute {
for(var i in I)
{
for( var s in S)
{
for(var t in T)
{
for(var k in K)
{
if(s=1)
G[s][t][k]=G1[t][k];
D[s][t][k]=D1[t][k];
P[i][s][t]=P1[i][t];
L[i][s][t]=L1[i][t];
if(s=2)
G[s][t][k]=G2[t][k];
D[s][t][k]=D2[t][k];
P[i][s][t]=P2[i][t];
L[i][s][t]=L2[i][t];
if(s=3)
G[s][t][k]=G3[t][k];
D[s][t][k]=D3[t][k];
P[i][s][t]=P3[i][t];
L[i][s][t]=L3[i][t];
if(s=4)
G[s][t][k]=G4[t][k];
D[s][t][k]=D4[t][k];
P[i][s][t]=P4[i][t];
L[i][s][t]=L4[i][t];
if(s=5)
G[s][t][k]=G5[t][k];
D[s][t][k]=D5[t][k];
P[i][s][t]=P5[i][t];
L[i][s][t]=L5[i][t];
if(s=6)
G[s][t][k]=G6[t][k];
D[s][t][k]=D6[t][k];
P[i][s][t]=P6[i][t];
L[i][s][t]=L6[i][t];
if(s=7)
G[s][t][k]=G7[t][k];
D[s][t][k]=D7[t][k];
P[i][s][t]=P7[i][t];
L[i][s][t]=L7[i][t];
if(s=8)
G[s][t][k]=G8[t][k];
D[s][t][k]=D8[t][k];
P[i][s][t]=P8[i][t];
L[i][s][t]=L8[i][t];
}
}
}
}
}
dvar int+ GA[I][S][T][K];//Variable
dvar int+ GB[I][S][T];//Variable
dvar int+ DA[I][S][T][K];//Variable
dvar int+ DB[I][S][T];//Variable
dvar int+ PA[I][S][T];//Variable
dvar int+ LA[I][S][T];//Variable
dvar int+ M[I][S][T];//Variable
dvar int+ N[I][S][T];//Variable
dvar int+ V[I][T];//Variable
dvar int+ a[T];//Variable
dvar int+ b[T];//Variable
dvar int+ c[T];//Variable
dvar int+ d[T];//Variable
//choose one of them(fc1,fc2)
dvar float+ fc1;
//dvar float+ fc2;
minimize fc1;
//minimize fc2;
subject to
{
fc1 == sum(t in T)(b[t]-a[t])+sum(t in T)(d[t]-c[t]);
//fc2 == sum(i in I, s in S, t in T)((DB[i][s][t]+GB[i][s][t])*d1[i][s]);
//
forall(s in S, t in T){
R[s][t]==sum(i in I)(GB[i][s][t]);
}
//
forall(s in S, t in T){
H[s][t]==sum(i in I)(DB[i][s][t]);
}
//
forall(s in S, t in T, k in K:k>=0&&k<=T1-t){
G[s][t][k]==sum(i in I)(GA[i][s][t][k]);
}
//
forall(s in S, t in T, k in K:k>=0&&k<=T1-t){
D[s][t][k]==sum(i in I)(DA[i][s][t][k]);
}
//
forall(i in I, s in S, t in T){
GB[i][s][t]==sum(k in K:k>=0&&k<=T1-t)(GA[i][s][t][k])+M[i][s][t];
}
//
forall(i in I, s in S, t in T){
DB[i][s][t]==sum(k in K:k>=0&&k<=T1-t)(DA[i][s][t][k])+N[i][s][t];
}
//
forall(i in I, s in S, t in T){
PA[i][s][t]==sum(k in K:k>=0&&k<t)(DA[i][s][t-k][k])+P[i][s][t];
}
//
forall(i in I, s in S, t in T){
LA[i][s][t]==sum(k in K:k>=0&&k<t)(GA[i][s][t-k][k])+L[i][s][t];
}
//
forall (i in I, t in T){
sum(s in S)(DB[i][s][t]+LA[i][s][t])>=a[t];
}
//
forall (i in I, t in T){
sum(s in S)(DB[i][s][t]+LA[i][s][t])<=b[t];
}
//
forall (i in I, t in T){
sum(s in S)(GB[i][s][t]+PA[i][s][t])>=c[t];
}
//
forall (i in I, t in T){
sum(s in S)(GB[i][s][t]+PA[i][s][t])<=d[t];
}
//
forall (i in I, t in T){
sum(s in S)(DB[i][s][t]+LA[i][s][t])<=h;
}
//
forall (i in I, t in T){
sum(s in S)(GB[i][s][t]+PA[i][s][t])<=h;
}
//
forall (i in I, t in T:t>=2&&t<=T1){
V[i][t]==sum(s in S)(GB[i][s][t]+DB[i][s][t]-PA[i][s][t]-LA[i][s][t])+V[i][t-1];
}
//
forall (i in I, t in T:t==1){
V[i][1]==sum(s in S)(GB[i][s][t]+DB[i][s][t]-PA[i][s][t]-LA[i][s][t])+V0[i];
}
//
forall (i in I, t in T){
V[i][t]<=B1;
}
//
forall(t in T){b[t]<=h;
}
//
forall(t in T){d[t]<=h;
}
}
V0 = [16, 16, 15, 14, 15, 13, 15, 15, 16, 14];
d1 = [[11,31,19,43,11,19,43,31],
[15,27,15,39,15,15,39,27],
[11,23,11,35,11,11,35,23],
[11,19,11,31,11,11,31,19],
[15,15,15,27,15,15,27,15],
[19,11,11,23,19,11,23,11],
[23,11,11,19,23,11,19,11],
[27,15,15,15,27,15,15,15],
[31,11,19,11,31,19,11,11],
[35,11,23,11,35,23,11,11]];
R = [[4,4,0,0,0,0,0,0,0],
[8,8,8,4,4,0,0,0,0],
[8,8,8,8,4,4,0,0,0],
[0,0,8,8,8,8,4,4,0],
[4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,8,8,8,8,4,4]];
H = [[0,0,0,20,20,0,0,0,0],
[0,0,0,0,0,0,20,20,0],
[0,0,0,0,0,0,0,20,20],
[0,0,0,0,0,0,0,0,0],
[0,0,20,20,0,0,0,0,0],
[20,20,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
G1 = [[0,0,0,2,2,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G2 = [[0,0,0,0,0,0,4,4,0,0],
[0,0,0,0,0,3,5,0,0,0],
[0,0,0,0,6,2,0,0,0,0],
[0,0,0,2,2,0,0,0,0,0],
[0,0,1,3,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G3 = [[0,0,0,0,0,0,0,4,4,0],
[0,0,0,0,0,0,6,2,0,0],
[0,0,0,0,0,5,3,0,0,0],
[0,0,0,0,2,6,0,0,0,0],
[0,0,0,1,3,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G4 =[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G5 = [[0,0,2,2,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G6 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G7 =[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
G8 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D1 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,3,2,2,1,0,0,0,0],
[0,4,3,2,3,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D2 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,4,0,0,0,0,0,0,0],
[0,3,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D3 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D4 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D5 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,5,1,1,3,2,0,0,0],
[0,2,4,3,1,2,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D6 = [[0,0,4,2,2,1,2,1,0,0],
[0,3,3,2,3,2,1,2,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D7 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
D8 = [[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]];
L1 = [[0,0,0,2,1,0,0,0,0],
[0,0,0,3,1,0,0,0,0],
[0,0,0,2,2,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,2,1,0,0,0,0],
[0,0,0,1,1,0,0,0,0],
[0,0,0,2,3,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,1,2,0,0,0,0],
[0,0,0,1,1,0,0,0,0]];
L2 = [[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,0,0]];
L3 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
L4 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
L5 = [[0,0,2,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,1,0,0,0,0,0],
[0,0,3,1,0,0,0,0,0],
[0,0,1,2,0,0,0,0,0],
[0,0,2,3,0,0,0,0,0],
[0,0,2,2,0,0,0,0,0],
[0,0,2,3,0,0,0,0,0]];
L6 = [[2,2,0,0,0,0,0,0,0],
[1,3,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[3,2,0,0,0,0,0,0,0],
[1,2,0,0,0,0,0,0,0],
[1,2,0,0,0,0,0,0,0],
[2,2,0,0,0,0,0,0,0],
[3,2,0,0,0,0,0,0,0],
[3,1,0,0,0,0,0,0,0]];
L7 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
L8 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P1 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P2 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P3 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P4 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P5 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P6 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];
P7 =[[1,0,0,1,1,0,0,1,0],
[1,0,2,0,0,0,1,0,0],
[0,1,0,1,0,0,0,0,1],
[1,0,1,0,0,0,0,0,1],
[0,1,0,1,0,1,1,1,0],
[1,1,0,0,1,1,0,0,0],
[0,0,1,0,0,0,1,1,0],
[0,0,0,0,0,0,1,0,0],
[1,0,0,1,1,0,0,1,0],
[0,1,0,0,1,0,0,0,0]];
P8 = [[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0]];