0

嗨,我在 python 中使用 doOPL。

以下是我的代码的一部分。

with create_opl_model(model="phase0.mod",data="prob1.dat") as opl:
    # tuple can be a list of tuples, a pandas dataframe...
    # Generate the problem and solve it.
    start_time = time.time()
    opl.mute()
    opl.run()
    print("obj:",opl.objective_value,", time:",(time.time() - start_time))

运行后,我想检查决策变量 x 的结果

opl.get_table('x')

但是说期望 tupleset x 已通过是行不通的。

我期待着你的帮助。

4

1 回答 1

1

我认为get_table()仅适用于您在后处理中明确创建的表(也称为元组集)。所以你必须在后期处理中创建这个表。

考虑这个示例定义x

range I = 1..2;
range J = 1..4;
dvar float+ x[I][J];

在后期处理中,你可以做

tuple R {
  int i;
  int j;
  float val;
}
{R} xResult = { <i,j,x[i][j]> | i in I, j in J };

有了这个,你应该能够opl.get_table('xResult')在这张表中你应该拥有所有的三元组(i, j, x[i][j])

于 2020-07-16T07:21:38.207 回答