TRFInterface
(类来自 pyomo.contrib.trustregion.interface)
- class pyomo.contrib.trustregion.interface.TRFInterface(model, decision_variables, ext_fcn_surrogate_map_rule, config)[source]
基础类:
object用于信任域算法的Pyomo接口。
方法
__init__(模型, 决策变量, ...)可行性度量 (theta(x)) 是:
calculateStepSizeInfNorm(original_values, ...)取原始值和新值,计算步长范数 ||s_k||:
创建基础约束 y = b(w)(方程 3)和代理模型约束 y = r_k(w)(方程 5)
返回当前决策变量的值
返回所有模型变量的当前状态。
初始化适当的约束、值等。
如果一个步骤被拒绝,我们将模型变量的值重置回它们的缓存状态 - 我们在solveModel中设置的状态
replaceEF(expr)替换一个外部函数。
此方法在模型的新trf_data块上设置必要的数据对象,并触发表达式树中外部函数的替换。
调用指定的求解器来解决问题。
updateDecisionVariableBounds(radius)更新TRSP_k决策变量的边界
代理模型所需的参数是以下值:
成员文档
- 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)
这两个约束在创建后立即被停用,并在必要时稍后激活。
- initializeProblem()[source]
为TRF问题初始化适当的约束、值等。
- Returns:
objective_value (初始目标)
feasibility (初始可行性度量)
- STEPS:
创建并求解PMP(公式3)并将其设置为“x_0”
评估 d(w_0)
评估初始可行性度量(theta(x_0))
创建初始SM(低和高保真模型之间的差异)
- 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 (当前可行性度量)
这也缓存了变量的先前值,以防万一 我们以后需要访问它们,如果某个步骤被拒绝