我正在使用Python来解决使用Gurobi的整数程序。在定义了所有变量和约束之后,我得到了整数变量x[i,j]
的以下答案。
x(0,0) 0.0
x(0,1) 0.0
x(0,2) 1.0
x(0,3) 1.0
x(1,0) 0.0
x(1,1) 0.0
x(1,2) 0.0
x(1,3) 0.0
x(2,0) 0.0
x(2,1) 0.0
x(2,2) 0.0
x(2,3) 0.0
x(3,0) 0.0
x(3,1) 0.0
x(3,2) 0.0
x(3,3) 0.0
因此,在下一步中,我需要将i,j
的所有x[i,j]=1
传递给名为S
的集合。我正在使用以下代码。
S=[]
if x[i,j]== 1:
S.append(i)
S.append(j)
print(S)
这会打印S=[0,3]
。但正确的应该是S=[0,2,3]
。有人可以帮我识别这里的错误吗?
答案 0 :(得分:1)
首先,提供的代码不完整,所以我只能推测你可以做什么,并根据它提出建议。
我相信你已经写了一个for循环,并且S = []一直在初始化。
因此,您的代码虽然几乎正确,但仍然只提供最后一个匹配的解决方案。
我将要做的是:
S = []
<here goes code for some for loop to consider all the x[i,j] values>
if x[i,j] == 1:
if not S.index[i]>-1:
S.append[i]
if not S.index[j]>-1:
S.append[j]
return S
这个基于伪代码的程序应该为您提供正确的解决方案:)