abs_无法正常工作的gurobi差异的绝对值

问题描述

我遇到了一个gurobi程序的问题,该程序应该使用LP在长度不超过maxLength的图中找到一定数量的不同最短路径。为了确保不同的路径是不同的,我试图总结一条路径与另一条路径不同的弧的数量。如果路径i和j在圆弧a中不同,则y[a,i,j]应该为1,否则为零。

我试图通过在每个弧上获取x[a,i]x[a,j]之间的差,然后期望i和j的每个组合在所有弧上的总和更大来实现这一点。上面的所有内容仅是常规最小成本流的约束。如果我想要多个路径,那么对于任何一个测试实例,我的问题都不可行。有任何想法吗?预先感谢。

def findXShortestPaths(V,A,pred,succ,start,end,cost,amount,maxLength,origin,destination): 
model = Model("Shortest Path")
I = range(amount) 

x = model.addVars(A,I,vtype = GRB.BINARY,name = "x")

y = model.addVars(A,vtype = GRB.INTEGER,name = "y")  

z = model.addVars(A,vtype=GRB.BINARY,name="z")

model.setObjective(quicksum(cost[a] * x[a,i] for a in A for i in I),GRB.MINIMIZE)

model.addConstrs(quicksum(x[a,i] for a in pred[v]) - quicksum(x[a,i] for a in succ[v]) == 0 for i in I for v in V if v != origin and v != destination)

model.addConstrs(quicksum(x[a,i] for a in succ[origin]) == 1 for i in I)

model.addConstrs(quicksum(x[a,i] for a in pred[destination]) == 1 for i in I)

model.addConstrs(x[a,i] + x[b,i] <= 1 for i in I for a in A for b in A if end[a] == start[b] and end[b] == start[a])


model.addConstrs(y[a,j]==x[a,i]-x[a,j] for a in A for i in I for j in I)
model.addConstrs(z[a,j]== abs_(y[a,j]) for a in A for i in I for j in I)

model.addConstrs(quicksum(z[a,j] for a in A) >= 1  for i in I for j in I if i != j) 

model.addConstrs(quicksum(x[a,i]*cost[a] for a in A) <= maxLength for i in I)

model.optimize()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...