外部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]

基础:ExternalGreyBoxModel

这是一个用于从现有的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_external_constraint_multipliers(...)

从残差约束的乘数(由“外部”求解器提供)计算外部约束的乘数。

calculate_reduced_hessian_lagrangian(hlxx, ...)

执行矩阵乘法,以便从全空间项中获得简化空间的拉格朗日海森项。

equality_constraint_names()

提供与此外部模型对应的任何残差的字符串名称列表。

evaluate_equality_constraints()

计算模型的残差(使用在input_values中设置的值)并返回为numpy数组

evaluate_hessian_equality_constraints()

此方法实际上评估了Hessians乘以乘数的和,即由于这些等式约束而在拉格朗日函数的Hessian中的项。

evaluate_hessian_external_variables()

evaluate_hessians_of_residuals()

此方法分别计算每个等式约束的Hessian矩阵,而不是Hessians乘以乘数的和。

evaluate_jacobian_equality_constraints()

计算残差相对于输入的导数(使用在input_values中设置的值)。

evaluate_jacobian_external_variables()

evaluate_jacobian_outputs()

计算输出相对于输入的导数(使用在input_values中设置的值)。

evaluate_outputs()

计算模型的输出(使用在input_values中设置的值)并返回为numpy数组

finalize_block_construction(pyomo_block)

实现此回调以提供任何额外的规范给创建的Pyomo块,该块用于表示此外部灰箱模型。

get_equality_constraint_scaling_factors()

获取暴露给求解器的等式约束的缩放因子。

get_full_space_lagrangian_hessians()

计算由于外部和残差约束引起的全空间拉格朗日函数的Hessian项。

get_output_constraint_scaling_factors()

此方法由求解器接口调用,以获取用于缩放带有输出变量的约束的期望值。

input_names()

提供与此外部模型输入相对应的字符串名称列表。

n_equality_constraints()

此方法返回等式约束的数量。

n_inputs()

此方法返回输入的数量。

n_outputs()

此方法返回输出的数量。

output_names()

提供与此外部模型输出对应的字符串名称列表。

set_equality_constraint_multipliers(...)

设置外部求解器所见的残差等式约束的乘数。

set_equality_constraint_scaling_factors(...)

为暴露给求解器的等式约束设置缩放因子。

set_external_constraint_multipliers(...)

set_input_values(input_values)

此方法由求解器调用,用于设置输入变量的当前值。

set_output_constraint_multipliers(...)

此方法由求解器调用,用于设置输出约束的乘数的当前值。

成员文档

calculate_external_constraint_multipliers(resid_multipliers)[source]

从残差约束的乘数(由“外部”求解器提供)计算外部约束的乘数。

calculate_reduced_hessian_lagrangian(hlxx, hlxy, hlyy)[source]

执行必要的矩阵乘法,以从全空间项中获得拉格朗日函数的缩减空间Hessian项。

equality_constraint_names()[source]

提供与此外部模型对应的任何残差的字符串名称列表。这些名称的顺序应与evaluate_residuals返回的值相对应。如果没有等式约束,则返回一个空列表。

evaluate_equality_constraints()[source]

计算模型的残差(使用在input_values中设置的值)并返回为numpy数组

evaluate_hessian_equality_constraints()[source]

此方法实际上评估了Hessians乘以乘数的和,即由于这些等式约束而在拉格朗日函数的Hessian中的项。

evaluate_hessians_of_residuals()[source]

此方法分别计算每个等式约束的Hessian矩阵,而不是Hessians乘以乘数的和。

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_equality_constraint_scaling_factors()[source]

获取暴露给求解器的等式约束的缩放因子。这些是本类中的“残差方程”。

get_full_space_lagrangian_hessians()[source]

计算由于外部和残差约束引起的全空间拉格朗日函数的Hessian项。注意,乘数由set_equality_constraint_multipliers设置。这些矩阵用于计算缩减空间拉格朗日函数的Hessian。

get_output_constraint_scaling_factors()

此方法由求解器接口调用,以获取用于缩放带有输出变量的约束的期望值。返回None意味着不需要对输出约束进行缩放。请注意,根据求解器的不同,可能需要设置求解器选项以便使用这些因子。

input_names()[源代码]

提供与此外部模型输入相对应的字符串名称列表。这些名称应按在set_input_values中使用的相同顺序返回。

n_equality_constraints()[source]

此方法返回等式约束的数量。 在派生类中不需要重载此方法。

n_inputs()[source]

此方法返回输入的数量。在派生类中不需要重载此方法。

n_outputs()

此方法返回输出的数量。在派生类中不需要重载此方法。

output_names()

提供与此外部模型输出对应的字符串名称列表。这些名称应与evaluate_outputs返回的值顺序相对应。如果没有计算输出,则返回一个空列表。

set_equality_constraint_multipliers(eq_con_multipliers)[source]

设置外部求解器所见的残差等式约束的乘数。

set_equality_constraint_scaling_factors(scaling_factors)[source]

设置暴露给求解器的等式约束的缩放因子。这些是本类中的“残差方程”。

set_input_values(input_values)[source]

此方法由求解器调用,用于设置输入变量的当前值。派生类必须缓存这些值,以便在后续调用evaluate_outputs或evaluate_derivatives时使用。

set_output_constraint_multipliers(output_con_multiplier_values)

此方法由求解器调用,用于设置输出约束的乘数的当前值。派生类必须根据需要缓存这些值,以便在后续调用evaluate_hessian_outputs时使用。