Python - 将结果传递给列表

时间:2017-07-13 02:28:35

标签: python mathematical-optimization gurobi

我正在使用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]。有人可以帮我识别这里的错误吗?

1 个答案:

答案 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

这个基于伪代码的程序应该为您提供正确的解决方案:)