Gurobi / python:不可行模式
回答我有一个模型。我想正确代码中所示的两个约束条件图。
- 组不同的数据如下:
' ' '
R = (1、2、3、4)
K = [1, 2]
P = (1、2、3、4)
D = (5、6、7、8)
PD = P + D
C = (10、11、12、13、14、15、16、17、18、19、20、21)
PDC = PD + C
Cr = {1: C (0:3), 2: C [3:6], 3: C[完],4:C [9:12]}
O = (0, 9)
N = O + P + D + c#所有节点
OC C = O +
#参数f:
fr = {}
在r:
因为我在N:
fr (r,我)= 1如果我在D P其他1如果我别的0
#的变量
年= m。addVars (R, N, N, vtype = GRB.BINARY)
z = m.addVars (((r, i, j) r r因为我在Cr的j [r] Cr [r]), vtype =伽马线暴。二进制,name = ' z ')
打印(z)
我想知道接下来的两个约束是否正确程序
' ' '
m。addConstrs ((quicksum(年(r, i, j) j N) +
quicksum (z (r, i, j)对Cr j [r])
quicksum(年(r, j,我)j N) -
quicksum (z (r, j,我)对Cr j [r]) = = fr为r, r (r,我)我在Cr [r]),“6”)
m。addConstrs (quicksum(年[r, i, j] j N如果! =我)-
quicksum(年(r, j,我)j N如果! = i) = = fr为r, r (r,我)我在N如果我不在Cr [r]),“7”)
' ' '
运行代码时,我得到一个消息说不可行模式。当我使用
m.computeIIS ()
m.write (“irreducible.ilp”)
我大约25限制/约束问题,但我认为这个问题驻留在上面的两个约束条件,因为当我试图制定他们用不同的方法得到的不可行性消息但2约束/界限。
另一种方法我使用如下:
' ' '
m。addConstrs ((quicksum(年(r, i, j) j N) +
quicksum (z (i, j)对Cr j [r])
quicksum(年(r, j,我)j N) -
quicksum (z [j,我]在Cr j [r]) = = 0 r在我的Cr [r]),“6”)
m。addConstrs (quicksum(年[r, i, j] j N如果! =我)-
quicksum(年(r, j,我)j N如果! = i) = = 1的r r P)的我,' 7 ')
m。addConstrs (quicksum(年[r, i, j] j N如果! =我)-
quicksum(年(r, j,我)j N如果! = i) = = 1的r r D)我,' 7 ')
m。addConstrs (quicksum(年[r, i, j] j N如果! =我)-
quicksum(年(r, j,我)j N如果! = i) = = 0 r r OC的我如果我不在Cr [r]),“7 +”)
' ' '
-
嗨Sabrin,
我想看看fr和打印如果这本字典看起来像预期。
最好的,
索尼娅
0 -
索尼娅,非常感谢您的及时回复。我已经打印出fr,约束6和约束7。输出是可以接受和正确地捕获所需的约束节点。然而,我写的代码返回一个不可行的模型信息。
我真的需要紧急帮助! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !请。我不知道为什么这个模型是不可行的,什么是错的。我可以共享整个代码以及模型本身是发表在一个可靠的杂志。
我觉得这是一个微不足道的问题,可以快速捕捉如果我共享整个代码,但它不应该公开。
0 -
嗨Sabrin,
从这篇文章看来你现在的工作了。你能分享你解决所做的吗?
谢谢,
索尼娅
0 -
嗨索尼娅,可能是由于不合理数量的一个特定参数(输入数据)。这就是我认为抓住错误:使用后m.computeIIS()和m.write (“irreducible.ilp”),它已成为明显的对我的约束导致的不可行性。我修改后,仔细端详着,带点逻辑,思考我意识到不可能实行的原因是unlogic数量的一个特定的参数。
现在的模型是工作但需要太长时间。更快地解决它,我要实现三个不同的技术(电弧消除,subtour消除和变量替换)。我应该面对这些挑战,它是我的第一个模型来解决! !
问候,
Sabreen
0
请登录留下你的评论。
评论
4评论