Pyomo-求解器通信

Pyomo-Solver Communication

我想知道 pyomo 脚本将什么信息传递给求解器(例如 Cbc)。具体来说,我想问的是,无论我编写什么约束和 objective 函数,求解器是否要求 python 计算这些函数,或者它们是否以求解器编写的语言完成。

计算是用编写求解器的语言完成的。在大多数情况下,Pyomo 会采用您的模型并将其输出到使用线性和非线性模型的 .lp.nl 格式的文件中分别。求解器将读取文件,创建自己的模型表示,解决问题,然后将解决方案写入 .sol 文件。然后 Pyomo 将读取 .sol 文件并将解决方案加载回 Python 中的 Pyomo 模型。此工作流的一个例外是,如果您使用 Gurobi 的直接或持久接口。在那种情况下,没有文件被写入,但我相信所有的计算仍然是用求解器的语言完成的。