TRFInterface

(类来自 pyomo.contrib.trustregion.interface)

class pyomo.contrib.trustregion.interface.TRFInterface(model, decision_variables, ext_fcn_surrogate_map_rule, config)[source]

基础类:object

用于信任域算法的Pyomo接口。

__init__(model, decision_variables, ext_fcn_surrogate_map_rule, config)[source]

方法

__init__(模型, 决策变量, ...)

calculateFeasibility()

可行性度量 (theta(x)) 是:

calculateStepSizeInfNorm(original_values, ...)

取原始值和新值,计算步长范数 ||s_k||:

createConstraints()

创建基础约束 y = b(w)(方程 3)和代理模型约束 y = r_k(w)(方程 5)

getCurrentDecisionVariableValues()

返回当前决策变量的值

getCurrentModelState()

返回所有模型变量的当前状态。

initializeProblem()

初始化适当的约束、值等。

rejectStep()

如果一个步骤被拒绝,我们将模型变量的值重置回它们的缓存状态 - 我们在solveModel中设置的状态

replaceEF(expr)

替换一个外部函数。

replaceExternalFunctionsWithVariables()

此方法在模型的新trf_data块上设置必要的数据对象,并触发表达式树中外部函数的替换。

solveModel()

调用指定的求解器来解决问题。

updateDecisionVariableBounds(radius)

更新TRSP_k决策变量的边界

updateSurrogateModel()

代理模型所需的参数是以下值:

成员文档

calculateFeasibility()[source]
Feasibility measure (theta(x)) is:

|| y - d(w) ||_1

calculateStepSizeInfNorm(original_values, new_values)[source]
Taking original and new values, calculate the step-size norm ||s_k||:

|| u - u_k ||_inf

我们假设用户已经正确地缩放他们的变量。

createConstraints()[source]

创建基础约束 y = b(w)(方程 3)和代理模型约束 y = r_k(w)(方程 5)

这两个约束在创建后立即被停用,并在必要时稍后激活。

getCurrentDecisionVariableValues()[source]

返回当前决策变量的值

getCurrentModelState()[source]

返回所有模型变量的当前状态。 如果我们需要拒绝一个步骤并回退,这是必要的。

initializeProblem()[source]

为TRF问题初始化适当的约束、值等。

Returns:

  • objective_value (初始目标)

  • feasibility (初始可行性度量)

STEPS:
  1. 创建并求解PMP(公式3)并将其设置为“x_0”

  2. 评估 d(w_0)

  3. 评估初始可行性度量(theta(x_0))

  4. 创建初始SM(低和高保真模型之间的差异)

rejectStep()[source]

如果一个步骤被拒绝,我们将模型变量的值重置回它们的缓存状态 - 这是在solveModel中设置的。

replaceEF(expr)[source]

替换一个外部函数。

Parameters:

expr – 一个Pyomo表达式。我们将搜索这个表达式树

此函数在从表达式树expr中移除集合efSet中的任何ExternalFunction并用变量替换它们后返回一个表达式。新变量在TRF块上声明。

待办事项:未来工作 - 研究使用Expression对象直接替代基础或代理模型,而不是使用新变量。

replaceExternalFunctionsWithVariables()[source]

此方法在模型的新trf_data块上设置必要的数据对象,并触发表达式树中外部函数的替换。

Data objects created:
self.data.all_variablesComponentSet

模型上所有变量的集合,包括来自EF替换的“holder”变量

self.data.truth_modelsComponentMap

用于替换节点的组件映射,用于跟踪该替换的真实模型。

self.data.basis_expressionsComponentMap

基础函数的Pyomo表达式的组件映射,适用于每个变量

self.data.ef_inputsDict

一个字典,用于跟踪每个EF的输入变量

self.data.ef_outputsVarList

替换原始外部函数表达式的“holder”变量列表

solveModel()[source]

调用指定的求解器来解决问题。

Returns:

  • self.data.objs[0] (当前目标值)

  • step_norm (当前步长无穷范数)

  • feasibility (当前可行性度量)

这也缓存了变量的先前值,以防万一 我们以后需要访问它们,如果某个步骤被拒绝

updateDecisionVariableBounds(radius)[source]

更新TRSP_k决策变量的边界

这对应于:

\[|| E^{-1} (u - u_k) || <= trust_radius\]

我们省略了\(E^{-1}\),因为我们假设用户已经正确地缩放他们的变量。

updateSurrogateModel()[source]
The parameters needed for the surrogate model are the values of:

b(w_k) : 基础模型输出 d(w_k) : 真实模型输出 grad b(w_k) : 基础模型梯度输出 grad d(w_k) : 真实模型梯度输出