是否可以直接从 PyScipOpt 模型对象访问 SCIP 的统计输出值?

Is it possible to access SCIP's Statistics output values directly from PyScipOpt Model Object?

我正在使用 SCIP 使用 PyScipOpt 解决 Python 中的 MILP。解决问题后,求解器统计信息可以 1) 使用 printStatistics() 打印为字符串,或 2) 使用 writeStatistics() 保存到外部文件。例如:

import pyscipopt as pso
model = pso.Model()
model.addVar(name="x", obj=1)
model.optimize()
model.printStatistics()
model.writeStatistics(filename="stats.txt")

printStatistics/writeStatistics 中有很多信息似乎无法直接从 Python model 对象访问(例如原始对偶积分值、单个分支规则或原始启发式的数据等)能够通过例如 model 对象或字典的属性从该输出中提取数据会很有帮助。

有没有什么方法可以从 model 对象访问此信息而无需解析原始 text/file 输出?

PySCIPOpt 不直接提供对统计信息的访问。各种表格的数据(例如分隔符、预求解器等)为 SCIP 中的每个插件单独存储,有时收集起来并不容易。 如果您只对有关一般求解过程的某些统计数据感兴趣,那么您可能想要为 scip_solvingstats.c.

中定义的一些简单 get 函数添加 PySCIPOpt 包装器

最后,您可能想要查看 IPET 以解析统计输出。