解决模型时如何使 pyomo 静音(详细程度 0)

how to make pyomo silent (verbosity 0) when solving a model

我是 运行 批具有不同条件的 pyomo 求解器,我想让求解器静音。

opt = SolverFactory('glpk') 
instance = model.create_instance(dat_file)
results = opt.solve(instance, tee=True, timelimit=300)

换句话说,当 运行 这最后一行时,我不想在标准输出上打印任何内容。可能吗?

我使用的解决方案是重定向标准输出:

from contextlib import redirect_stdout

opt = SolverFactory('glpk')
instance = model.create_instance(dat_file)
with open("log.txt", mode='w', encoding='utf-8') as fp:
    with redirect_stdout(fp):
        results = opt.solve(instance, tee=True, timelimit=300)

但是我想知道是否有 "cleaner" 解决方案?

我相信您可以在求解模型时简单地设置选项 tee=False 以抑制所有求解器输出。

选项 tee=False 仅禁用求解器日志,但不禁用 Pyomo 警告消息。要禁用所有功能,您可以使用以下代码:

import logging
logging.getLogger('pyomo.core').setLevel(logging.ERROR)