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

2024-06-16 09:44:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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的type<class 'docplex.mp.solution.SolveSolution'>。 我的输出如下

solution for: transportation
objective: 60
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---

数据帧的预期输出如下所示

Var,supply,demand,product,qty
x,1,3,a,1
x,1,3,b,3

Tags: 数据模型for定义var方式integerproduct
1条回答
网友
1楼 · 发布于 2024-06-16 09:44:59

您可以拆分“\”上的变量名,并直接为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

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

相关问题 更多 >