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