日志记录器
(数据来自 pyomo.contrib.pynumero.interfaces.external_grey_box)
- pyomo.contrib.pynumero.interfaces.external_grey_box.logger = <Logger pyomo.contrib.pynumero (WARNING)>
该模块用于将外部模型作为块接口到Pyomo模型中。
ExternalGreyBoxModel 是一种不显式提供代数表达式约束的模型,而是提供一组可以计算约束(或输出)残差及其导数的方法。
这允许将外部代码(例如,编译的外部模型)与Pyomo模型进行接口。
- Note: To solve a Pyomo model that contains these external models
我们有一个基于PyNumero构建的专门接口,该接口提供了对CyIpopt求解器的访问。
- To use this interface:
创建一个从ExternalGreyBoxModel派生的类,并实现必要的方法。这个派生类必须提供以下名称的列表:模型的输入、需要收敛的等式约束(或残差),以及从模型计算的任何输出。它还需要提供方法来计算残差、输出以及这些相对于输入的雅可比矩阵。如果适用,实现评估海森矩阵的方法。有关更多详细信息,请参阅ExternalGreyBoxModel的文档。
创建一个Pyomo模型并利用ExternalGreyBoxBlock 生成一个代表你外部模型的Pyomo建模组件。这个块是一个Pyomo组件,当你 调用set_external_model()并提供你派生的 ExternalGreyBoxModel的实例时,它将自动创建pyomo变量来 表示外部模型的输入和输出。你可以 实现一个回调函数来在Pyomo块构建后修改它。这也提供了一种初始化变量等的机制。
创建一个PyomoGreyBoxNLP并为其提供包含ExternalGreyBoxBlocks的Pyomo模型。该类提供了一个NLP接口(即PyNumero NLP抽象类),并且可以与任何使用此接口的求解器一起使用(例如,PyNumero中提供的CyIpopt求解器接口)
请参阅pyomo/contrib/pynumero/examples/external_grey_box以获取使用此接口的示例。
注意
目前,您无法“修复”与输入或输出对应的pyomo变量,必须使用约束来代替(这是因为Pyomo在将固定变量发送到求解器之前会将其移除)