外部Pyomo模型
(类来自 pyomo.contrib.pynumero.interfaces.external_pyomo_model)
- class pyomo.contrib.pynumero.interfaces.external_pyomo_model.ExternalPyomoModel(input_vars, external_vars, residual_cons, external_cons, solver_class=None, solver_options=None, timer=None)[source]
-
这是一个用于从现有的Pyomo组件创建外部模型的ExternalGreyBoxModel。给定一个将变量和方程划分为“输入”和“外部”变量以及“残差”和“外部”方程的系统,此类仅作为输入的函数计算“残差方程”的残差及其雅可比矩阵和黑森矩阵。
- Pyomo components:
f(x, y) == 0 # “残差方程” g(x, y) == 0 # “外部方程”, dim(g) == dim(y)
- Effective constraint seen by this “external model”:
F(x) == f(x, y(x)) == 0 其中 y(x) 满足 g(x, y) == 0
- __init__(input_vars, external_vars, residual_cons, external_cons, solver_class=None, solver_options=None, timer=None)[来源]
参数:
- input_vars: list
外部求解器发送到此系统的变量列表
- external_vars: list
由该系统内部解决的变量列表
- residual_cons: list
其残差暴露给外部求解器的等式约束列表
- external_cons: list
用于求解外部变量的等式约束列表
- solver_class: Subclass of ImplicitFunctionSolver
用于收敛定义隐函数方程组的求解器对象。
- solver_options: dict
ImplicitFunctionSolver 的选项字典
- timer: HierarchicalTimer
HierarchicalTimer对象,新引入的计时类别将附加到该对象。如果为None,将创建一个新的计时器。
方法
__init__(input_vars, external_vars, ...[, ...])参数: input_vars: 列表 由外部求解器发送到此系统的变量列表 external_vars: 列表 由该系统内部求解的变量列表 residual_cons: 列表 其残差暴露给外部求解器的等式约束列表 external_cons: 列表 用于求解外部变量的等式约束列表 solver_class: ImplicitFunctionSolver 的子类 用于收敛定义隐函数方程组的求解器对象 solver_options: 字典 ImplicitFunctionSolver 的选项字典 timer: HierarchicalTimer 将附加新引入的计时类别的 HierarchicalTimer 对象。如果为 None,将创建一个新的计时器。
从残差约束的乘数(由“外部”求解器提供)计算外部约束的乘数。
calculate_reduced_hessian_lagrangian(hlxx, ...)执行矩阵乘法,以便从全空间项中获得简化空间的拉格朗日海森项。
提供与此外部模型对应的任何残差的字符串名称列表。
计算模型的残差(使用在input_values中设置的值)并返回为numpy数组
此方法实际上评估了Hessians乘以乘数的和,即由于这些等式约束而在拉格朗日函数的Hessian中的项。
evaluate_hessian_external_variables()此方法分别计算每个等式约束的Hessian矩阵,而不是Hessians乘以乘数的和。
计算残差相对于输入的导数(使用在input_values中设置的值)。
evaluate_jacobian_external_variables()计算输出相对于输入的导数(使用在input_values中设置的值)。
计算模型的输出(使用在input_values中设置的值)并返回为numpy数组
finalize_block_construction(pyomo_block)实现此回调以提供任何额外的规范给创建的Pyomo块,该块用于表示此外部灰箱模型。
获取暴露给求解器的等式约束的缩放因子。
计算由于外部和残差约束引起的全空间拉格朗日函数的Hessian项。
此方法由求解器接口调用,以获取用于缩放带有输出变量的约束的期望值。
提供与此外部模型输入相对应的字符串名称列表。
此方法返回等式约束的数量。
n_inputs()此方法返回输入的数量。
此方法返回输出的数量。
提供与此外部模型输出对应的字符串名称列表。
设置外部求解器所见的残差等式约束的乘数。
为暴露给求解器的等式约束设置缩放因子。
set_external_constraint_multipliers(...)set_input_values(input_values)此方法由求解器调用,用于设置输入变量的当前值。
此方法由求解器调用,用于设置输出约束的乘数的当前值。
成员文档
- calculate_external_constraint_multipliers(resid_multipliers)[source]
从残差约束的乘数(由“外部”求解器提供)计算外部约束的乘数。
- calculate_reduced_hessian_lagrangian(hlxx, hlxy, hlyy)[source]
执行必要的矩阵乘法,以从全空间项中获得拉格朗日函数的缩减空间Hessian项。
- equality_constraint_names()[source]
提供与此外部模型对应的任何残差的字符串名称列表。这些名称的顺序应与evaluate_residuals返回的值相对应。如果没有等式约束,则返回一个空列表。
- evaluate_hessian_equality_constraints()[source]
此方法实际上评估了Hessians乘以乘数的和,即由于这些等式约束而在拉格朗日函数的Hessian中的项。
- evaluate_jacobian_equality_constraints()[source]
计算残差相对于输入的导数(使用在input_values中设置的值)。 这应该是一个scipy矩阵,行按残差名称的顺序排列,列按输入变量的顺序排列。
- evaluate_jacobian_outputs()
计算输出相对于输入的导数(使用在input_values中设置的值)。 这应该是一个scipy矩阵,行按输出变量的顺序排列,列按输入变量的顺序排列。
- evaluate_outputs()
计算模型的输出(使用在input_values中设置的值)并返回为numpy数组
- finalize_block_construction(pyomo_block)
实现此回调以提供任何额外的规范给创建的Pyomo块,该块用于表示此外部灰箱模型。
请注意,pyomo_block.inputs 和 pyomo_block.outputs 已经创建,此回调提供了一个设置初始值、边界等的机会。
- get_full_space_lagrangian_hessians()[source]
计算由于外部和残差约束引起的全空间拉格朗日函数的Hessian项。注意,乘数由set_equality_constraint_multipliers设置。这些矩阵用于计算缩减空间拉格朗日函数的Hessian。
- get_output_constraint_scaling_factors()
此方法由求解器接口调用,以获取用于缩放带有输出变量的约束的期望值。返回None意味着不需要对输出约束进行缩放。请注意,根据求解器的不同,可能需要设置求解器选项以便使用这些因子。
- n_outputs()
此方法返回输出的数量。在派生类中不需要重载此方法。
- output_names()
提供与此外部模型输出对应的字符串名称列表。这些名称应与evaluate_outputs返回的值顺序相对应。如果没有计算输出,则返回一个空列表。
- set_input_values(input_values)[source]
此方法由求解器调用,用于设置输入变量的当前值。派生类必须缓存这些值,以便在后续调用evaluate_outputs或evaluate_derivatives时使用。
- set_output_constraint_multipliers(output_con_multiplier_values)
此方法由求解器调用,用于设置输出约束的乘数的当前值。派生类必须根据需要缓存这些值,以便在后续调用evaluate_hessian_outputs时使用。