Python Print docplex solve()生成一个数据帧
我使用docplex软件包创建了一个优化模型 这就是我定义决策变量的方式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
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才能使用此软件包。