我有一组决策变量
for p in projects:
for u in Skills:
for v in Skills:
for i in Experts:
for j in Experts:
if u!=v:
if i >= j:
z[(i,u,j,v,p)]=m.addVar(vtype=GRB.BINARY,name='Z')
y[(i,u,j,v,p)]=m.addVar(vtype=GRB.BINARY,name='Y')
我需要为下面的每一个添加约束
#Constraint 6: To linearize the product of two decision variables linear
#z_{i_u_p_j_v_p} <= V_i_u_p + V_i_u_p -1
for p in projects:
for u in Skills:
for v in Skills:
for i in Experts:
for j in Experts:
if u!=v:
if i >= j:
m.addConstr( z[i,u,j,v,p] <= Viup[i,u,p] )
m.addConstr( z[i,u,j,v,p] <= Viup[j,v,p] )
m.addConstr( z[i,u,j,v,p] >= Viup[i,u,p] + Viup[j,v,p] -1 )
m.update()
#Constraint 7:
for p1 in projects:
for u1 in Skills:
for v1 in Skills:
for i1 in Experts:
for j1 in Experts:
if u1!=v1:
if i1 >= j1:
m.addConstr( y[i1,u1,j1,v1,p1] <= z[i1,u1,j1,v1,p1] )
m.addConstr( y[i1,u1,j1,v1,p1] <= Wp[p1] )
m.addConstr( y[i1,u1,j1,v1,p1] >= z[i1,u1,j1,v1,p1]+ Wp[p1] - 1 )
这需要花费大量的时间,专家在范围内(30),技能在范围内(10)。有人能帮我更有效地添加它们吗?你知道吗
不确定是否可以降低复杂性,但是可以减少内部循环的时间。你知道吗
u != v
,不要执行内部循环只是为了看到没有什么可做的像这样(最后一个条件)
相关问题 更多 >
编程相关推荐