在 python 中从 doopl 获取结果

getting result from doopl in python

嗨,我在 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')

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

期待您的帮助。

我认为 get_table() 仅适用于您在 post 处理中 显式 创建的 tables(又名元组集)。所以你必须在 post 处理中创建这个 table。

考虑 x 的这个示例定义:

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

在post-处理中,可以做

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') 并且在这个 table 你应该拥有所有的三胞胎 (i, j, x[i][j]).