PyROS

(类来自 pyomo.contrib.pyros.pyros)

class pyomo.contrib.pyros.pyros.PyROS[source]

基础类:object

PyROS(Pyomo鲁棒优化求解器)实现了一种广义鲁棒切割集算法(GRCS),用于在不确定性下解决两阶段NLP优化模型。

__init__()

方法

__init__()

available([exception_flag])

检查求解器是否可用。

license_is_valid()

使用PyROS的许可证

solve(model, first_stage_variables, ...)

解决一个模型。

version()

返回一个描述求解器版本的3元组。

属性

CONFIG

成员文档

available(exception_flag=True)[source]

检查求解器是否可用。

license_is_valid()[source]

使用PyROS的许可证

solve(model, first_stage_variables, second_stage_variables, uncertain_params, uncertainty_set, local_solver, global_solver, **kwds)[source]

解决一个模型。

Parameters:
  • model (ConcreteModel) – 确定性模型。

  • first_stage_variables (VarData, Var, 或 iterableVarData/Var) – 第一阶段模型变量(或设计变量)。

  • second_stage_variables (VarData, Var, 或 iterableVarData/Var) – 第二阶段的模型变量(或控制变量)。

  • uncertain_params (ParamData, Param, 或 iterableParamData/Param) – 不确定的模型参数。 所有不确定参数对象的 mutable 属性 必须设置为 True。

  • uncertainty_set (UncertaintySet) – 解决方案将针对其确认鲁棒性的不确定性集合。

  • local_solver (strsolver 类型) – 从属的局部 NLP 求解器。 如果传递了一个 str,则该 str 会被转换为 SolverFactory(local_solver)

  • global_solver (strsolver 类型) – 从属的全局 NLP 求解器。 如果传递了一个 str,则该 str 会被转换为 SolverFactory(global_solver)

Returns:

return_soln – PyROS终止结果的摘要。

Return type:

ROSolveResults

Keyword Arguments:
  • time_limit (NonNegativeFloat, optional) – PyROS求解器执行的墙时间限制,单位为秒 (包括子求解器花费的时间)。如果提供None, 则不强制执行时间限制。

  • keepfiles (bool, default=False) – 导出具有不可接受终止状态的子问题以用于调试目的。如果提供了True,则还必须指定参数subproblem_file_directory

  • tee (bool, default=False) – 输出所有子问题的从属求解器日志。

  • load_solution (bool, default=True) – 将PyROS找到的最终解决方案加载到提供的确定性模型中。

  • symbolic_solver_labels (bool, default=False) – 如果为True,则确保为每个子问题提供给下级求解器的组件名称反映相应的Pyomo建模组件的名称,否则为False。

  • objective_focus (InEnum[ObjectiveType], default=) –

    主问题的目标焦点:

    • ObjectiveType.nominal: 在名义不确定参数实现下优化目标函数。

    • ObjectiveType.worst_case: 在最坏情况不确定参数实现下优化目标函数。

    默认情况下,选择ObjectiveType.nominal

    为了证明PyROS返回的最终解的鲁棒最优性,需要最坏情况目标焦点。如果选择名义目标焦点,则仅保证鲁棒可行性。

  • nominal_uncertain_param_vals (list, default=[]) – 名义不确定参数实现。条目应按与参数uncertain_params条目一致的顺序提供。如果提供了空列表,则选择通过uncertain_params指定的Param对象的值。

  • decision_rule_order (In[0, 1, 2], default=0) –

    用于近似第二阶段变量相对于不确定参数的可调整性的多项式决策规则函数的阶数(或次数)。

    选项有:

    • 0: 静态追索

    • 1: 仿射追索

    • 2: 二次追索

  • solve_master_globally (bool, default=False) – 如果为True,则使用从属全局求解器解决所有主问题;如果为False,则使用从属局部求解器解决所有主问题。与最坏情况目标聚焦(参见参数objective_focus)一起,将主问题解决到全局最优性是为了确保PyROS返回的最终解决方案的鲁棒最优性认证。否则,仅保证鲁棒可行性。

  • max_iter (正整数-1, 默认=-1) – 迭代限制。如果提供-1,则不强制执行迭代限制。

  • robust_feasibility_tolerance (NonNegativeFloat, default=0.0001) – 在GRCS分离步骤中评估最大不等式约束违反的相对容差。

  • separation_priority_order (dict, default={}) – 从模型不等式约束名称到正整数的映射,指定其对应的分离子问题的优先级。较高的整数值表示较高的优先级。未在dict中引用的约束假定优先级为0。分离子问题按优先级递减的顺序解决。

  • progress_logger (None, strlogging.Logger, 默认= (INFO)>) – 用于报告PyROS求解器进度的日志记录器(或其名称)。如果提供Nonestr,则progress_logger会被转换为logging.getLogger(progress_logger)。在默认情况下,progress_logger被设置为一个pyomo.contrib.pyros.util.PreformattedLogger对象,级别为logging.INFO

  • backup_local_solvers (str, solver type, or Iterable of str/solver type, default=[]) – 在主本地NLP优化器未能将子问题解决到可接受的终止条件时,调用的额外从属本地NLP优化器。

  • backup_global_solvers (str, solver type, or Iterable of str/solver type, default=[]) – 在主全局NLP优化器未能将子问题解决到可接受的终止条件时,调用的额外从属全局NLP优化器。

  • subproblem_file_directory (Path, 可选) – 用于导出未成功解决到可接受终止条件的子问题的目录。在指定keepfiles=True的情况下,必须提供一个指向现有目录的字符串或类似路径的对象。

  • bypass_local_separation (bool, default=False) – 这是一个高级选项。仅使用从属的全局求解器来解决所有分离子问题。当提供的从属全局优化器能够快速将分离子问题求解到全局最优时,此选项可用于加速PyROS。

  • bypass_global_separation (bool, default=False) – 这是一个高级选项。仅使用从属的局部求解器解决所有分离子问题。如果选择True,则PyROS返回的最终解的鲁棒性无法保证,并且在终止时会发出警告。此选项在提供的从属全局优化器无法有效地将分离子问题解决到全局最优时,用于加速PyROS。

version()[源代码]

返回一个描述求解器版本的3元组。