【帮助】翻译代数的数学模型,使用python gurobi api
回答我有一个最大流量问题紧急疏散计划。模型是基于细胞传输模型(CTM),基本上整个地区疏散是分区使用方格网进入细胞,在那里细胞=节点和通过/ =相邻细胞之间的联系弧。G = (V)。整个想法是找到疏散在每个时间段的最大数量。
模型将运行τ= 1,2,……直到找到解决N。
注:我和学位/生活完全取决于这周二提交和周四。
我有问题的数学公式我工作但我真的不能做python配方供gurobi要解决的问题。我将十分感激在这里的人能帮我实现,因为我的一生确实依赖于它,我将永远感谢你们。谢谢
0
-
嗨,埃文斯,
这是一个实现你的问题在Python中使用Gurobi:
首先,我们定义一些基本知识。因为我不知道任何关于你的问题‚我只是生成一些随机数据。
进口gurobipy全科医生
进口numpy np
#节点
节点= 10
V =范围(节点)
n = np.random.rand(节点)#我最大容量节点
#的弧
= [(i, j)我在V的j) #弧的集合。这可能需要调整你的问题
c = np.random。兰特(节点,节点)弧ij #最大值接下来,我们制定和解决问题:
solution_found = False
τ= 2
虽然不是solution_found:
T =范围(τ)
m = gp.Model ()
#添加变量
τy = m.addVars(节点)
x = m。addVars(τ,磅= -gp.GRB.INFINITY)
#这选最后一个元素从y和最大化
m。setObjective (y(节点1,tau-1),感觉= gp.GRB.MAXIMIZE)
#约束
在t t:
j在V:
如果t > 0:
m。addConstr (y [j, t] - y [j, t - 1] x.sum (‘*’, j, t - 1) + x.sum (j,‘*’, t - 1) = = 0)
m。addConstr (y (j, t) < = n [j])
对于我来说,j的:
m。addConstr (x (i, j, t) + x [j,我t] > = 0)
m。addConstr (x (i, j, t) + x [j,我t] < = c (i, j))
m.optimize ()
如果m。= = gp.GRB.OPTIMAL现状:
solution_found = True
τ+ = 1注意Python索引为0,导致一些地方的“1”。同时,注意,我认为超级水槽是便利的最后一个节点。
祝你好运
0 -
非常感谢理查德的解决方案。你是一个救生圈。
说实话我有5个更多的约束。请帮我如果我不要求太多。附件是一张其他的约束。
0 -
嗨,埃文斯,
我认为你应该给它自己根据我给的代码。你可以看到gurobipy界面非常易于使用,这样它就可以为你添加额外的约束。
致以最亲切的问候
理查德。
0 -
谢谢。我已经能够实现它。非常感谢。你的代码非常直观、明了。
你是需要很有帮助
0
请登录留下你的评论。
评论
4评论