Gurobi优化结果写入Csv文件

时间:2017-05-30 04:39:47

标签: optimization export-to-csv linear-programming gurobi mixed-integer-programming

我正在使用Gurobi 7来解决我的MIP问题。我有几个不同的变量。但是,我对其中的两个特别感兴趣," x"和" y"即。作为参考,我给出的代码显示了我如何将x和y变量添加到求解器中:

# Creating Variables
x = {}
y = {}

# Adding Variables
for i in range(I):
    x[i+1,P[i]-d[0]] = m.addVar(vtype=GRB.BINARY, name="x%s" % str([i+1,P[i]-d[0]]))
    x[i+1,P[i]] = m.addVar(vtype=GRB.BINARY, name="x%s" % str([i+1,P[i]]))
for i in range(I):
    for k in range(len(rangevalue)):
        y[i+1, rangevalue[k] - E[i]] = m.addVar(vtype=GRB.BINARY,
                               name="y%s" % str([i+1, rangevalue[k] - E[i]]))

尽管上面的代码可能没有任何意义,但我只想展示它,以防你将它用于我的问题。

解决问题后,我得到以下结果:

m.printAttr('X')

    Variable            X 
-------------------------
     x[1, 3]            1 
sigmaminus[1]          874 
     x[2, 2]            1 
sigmaminus[2]         1010 
     x[3, 2]            1 
sigmaminus[3]         1945 
     x[4, 4]            1 
sigmaplus[4]           75 
     x[5, 4]            1 
sigmaminus[5]         1153 
     x[6, 5]            1 
sigmaminus[6]          280 
     x[7, 3]            1 
sigmaplus[7]         1138 
     x[8, 2]            1 
sigmaplus[8]          538 
     x[9, 1]            1 
sigmaplus[9]         2432 
    x[10, 5]            1 
sigmaminus[10]          480 
    omega[1]           12 
    OMEGA[1]           12 
    omega[2]            9 
    OMEGA[2]           12 
    omega[3]            8 
    OMEGA[3]            9 
    omega[4]            8 
    OMEGA[4]            8 
    OMEGA[5]            8 
     y[1, 2]            1 
     y[2, 9]            1 
     y[3, 5]            1 
     y[4, 6]            1 
     y[5, 4]            1 
     y[6, 6]            1 
     y[7, 3]            1 
    y[8, 11]            1 
     y[9, 8]            1 
    y[10, 1]            1 
  phiplus[6]            1 
 phiminus[7]            1 
phiminus[10]            1 

我特别希望用索引显示x和y变量。其他变量不是必需的。我的问题是如何将这些结果写入一列中的csv文件中,如下所示?

x[1,3]
x[2,2]
x[3,2]
.
.
.
x[10,5]
y[1,2]
y[2,9]
y[3,5]
.
.
.
y[10,1]

我不需要他们相应的值,只能是" 1"因为它们是二元变量。我只需要编写具有值" 1"。

的变量

1 个答案:

答案 0 :(得分:2)

我会沿着这些方向做点什么:

virtual

我希望这会有所帮助。 稍后我将测试此片段。 更新:按预期工作。