Python Print docplex solve()生成一个数据帧

Python Print docplex solve()生成一个数据帧,python,docplex,Python,Docplex,我使用docplex软件包创建了一个优化模型 这就是我定义决策变量的方式 x = {(i.supply,i.demand,i.product): tm.integer_var(name='x_{0}_{1}_{2}'.format(i.supply,i.demand,i.product),ub=10000000) for i in cost_list} 使用tms=tm.solve()我得到了结果 tms的类型为。 我的输出如下 solution for: transportation obj

我使用docplex软件包创建了一个优化模型

这就是我定义决策变量的方式

x = {(i.supply,i.demand,i.product): tm.integer_var(name='x_{0}_{1}_{2}'.format(i.supply,i.demand,i.product),ub=10000000) for i in cost_list}
使用
tms=tm.solve()
我得到了结果

tms的
类型为
。 我的输出如下

solution for: transportation
objective: 60
x_1_3_a = 1
x_1_3_b = 3
Var,supply,demand,product,qty
x,1,3,a,1
x,1,3,b,3
我需要把
x_1_3_a=1&x_1_3_b=3
放在一个数据帧中(
x,1,3,a,1
结果在不同的列中)。有人能告诉我怎么做吗

---After the edit---
数据帧的预期输出如下所示

solution for: transportation
objective: 60
x_1_3_a = 1
x_1_3_b = 3
Var,supply,demand,product,qty
x,1,3,a,1
x,1,3,b,3

您可以拆分“\”上的变量名,并直接为dataframe创建数据,如以下简短代码段所示:

with Model() as m:
    x = m.binary_var_list([1, 2, 3], name='x')
    m.minimize(m.sum(x))
    sol = m.solve(log_output = True)
    print(dir(sol))
    print(sol)
    data = [v.name.split('_') + [sol.get_value(v)] for v in m.iter_variables()]
    frame = pd.DataFrame(data, columns = [ 'var', 'index', 'value'])
    print(frame)
这张照片

  var index  value
0   x     1      0
1   x     2      0
2   x     3      0

并且应该适用于具有多个维度的变量。

我不确定是否遵循了上一条语句。您希望数据帧看起来像吗?您能提供预期的输出吗?@Roy2012根据您的建议更新了问题对不起,无法帮助。您需要购买ILOG才能使用此软件包。