懒惰的约束/ TSP
回答你好,
我需要实现懒约束。
我实现TSP模型(该模型:http://www.opl.ufc.br/pt/post/tsp/)
但我不知道我如何实现subtour懒惰的约束。
我的代码:
文件打开= (17. txt)
行= file.readlines ()
file.close ()
cost_matrix = []
因为我在范围(len()行):
辅助=行[我](:1).split (‘\ t’)
辅助= [int(我)我在辅助如果我!= ")
cost_matrix.append(辅助)
tam = len (cost_matrix)
n =列表(范围(tam))
m =列表(范围(tam))
因为我在范围(tam):
cost_matrix[我][我]= 999999999999
进口gurobipy全科医生
模型= gp.Model ()
x =模型。addVars (n, n, vtype = gp.GRB。二进制,name = " x ")
u =模型。addVars (n, vtype = gp.GRB。整数,name = " u ")
model.setObjective (
全科医生。quicksum (x (i, j) * cost_matrix[我][j]我在n, n),
感觉= gp.GRB.MINIMIZE)
# R1
c1 = model.addConstrs (
全科医生。quicksum (x (i, j)因为我n) = = 1的j n如果(我! = j))
# R2
c2 = model.addConstrs (
全科医生。quicksum (x [j,我)我在n) = = 1的j n如果(我! = j))
# R3 (subtour约束)
c3 =模型。[我]addConstrs (u - u [j] + tam * x (i, j) < = tam-1
因为我在米
对j n
如果(我! = j))
有人能帮我吗?
细节,我知道有一个很好的模型与懒惰的约束,但我需要一个慢模型在我的博士做一些分析。
我也明白我回调的工作和努力,基于现有的实现,适应我的代码但我尝试在几个方面,我没有得到任何结果,只是错误。
谢谢你的帮助^ ^
0
-
嗨Roberval,
我认为tsp。py例子实现你正在寻找什么。
细节,我知道有一个很好的模型与懒惰的约束,但我需要一个慢模型在我的博士做一些分析。
你可以试着增加的大小模型“慢下来”。
最好的问候,
Jaromił1 -
谢谢,我继续添加其他约束,不是经典模型的一部分得到我所需要的东西。
我不明白为什么我不能添加这个C3的回调是这样的:
def subTour(模型):
如果在哪里= = gp.GRB.Callback.MIPSOL:
模型。[我]cbLazy (u - u [j] + tam * x (i, j) < = tam-1
因为我在米
对j n
如果(我! = j))出现这个错误:
TypeError回溯(最近调用最后)
src / gurobipy /回调。pxi gurobipy.CallbackClass.callback ()
< ipython-input-6-2e1575e521d5 >在subtourelim(模型,)如果= = gp.GRB.Callback的地方。MIPSOL: 6模型。[我]cbLazy (u - u [j] + tam * x (i, j) < = tam-1 - - - - - > 7我在m 8 j n 9如果j(我! =))
src / gurobipy /模型。pxi gurobipy.Model.cbLazy ()
TypeError:不支持的操作数类型(s) -:“发生器”和“NoneType”
0 -
是什么错误?
请注意,您不能访问模型的变量和其他参数从一个回调。你必须保存在一个私人的变量对象完成的tsp。py例子与\ \ texttt {model._vars} \)。
1 -
我在哪里可以读到私人gurobipy对象?
我看这个:
//m.a-toku.com/manbet体育手机客户端documentation/9.5/refman/lazyconstraints.html
//m.a-toku.com/manbet体育手机客户端documentation/9.5/refman/py_model_cblazy.html
这:
我不知道,你能给我如何做到这一点的一个例子或私人的文档对象?manbet体育手机客户端
0 -
你好,
谢谢你所做的一切。
我是成功的项目,我相信我足够理解为未来实现^ ^0
请登录留下你的评论。
评论
6个评论