LazyOACallback_cplex

(类来自 pyomo.contrib.mindtpy.single_tree)

class pyomo.contrib.mindtpy.single_tree.LazyOACallback_cplex[source]

基础类:object

CPLEX 中用于调用 Lazy 回调的固有类。

__init__()

方法

__init__()

add_lazy_affine_cuts(mindtpy_solver, config, opt)

使用MCPP添加仿射切割。

add_lazy_no_good_cuts(var_values, ...[, ...])

添加无优切割。

add_lazy_oa_cuts(target_model, dual_values, ...)

线性化非线性约束;通过CPLEX固有函数self.add()添加OA切割。对于非凸问题,请开启'config.add_slack'。

copy_lazy_var_list_values(opt, from_list, ...)

此函数将变量值从一个列表复制到另一个列表。

handle_lazy_main_feasible_solution(main_mip, ...)

此函数在主MIP的分支定界过程中被调用,更准确地说,是在找到一个可行解并且LazyCallback被激活时调用。

handle_lazy_subproblem_infeasible(fixed_nlp, ...)

解决可行性NLP子问题,并根据指定的策略添加切割。

handle_lazy_subproblem_optimal(fixed_nlp, ...)

此函数将固定NLP子问题的最优解复制到MIP主问题(解释见下文),更新边界,添加OA和不良切割,如果已改进则存储当前解。

handle_lazy_subproblem_other_termination(...)

处理在给定既不是最优也不可行的解决方案的情况下,解决NLP子问题的最新迭代结果。

成员文档

add_lazy_affine_cuts(mindtpy_solver, config, opt)[source]

使用MCPP添加仿射切割。

通过CPLEX固有函数self.add()添加仿射切割。

Parameters:
  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

add_lazy_no_good_cuts(var_values, mindtpy_solver, config, opt, feasible=False)[source]

添加无优切割。

通过Cplex固有函数self.add()添加无良好切割。

Parameters:
  • var_values (list) – 当前解的变量值,用于生成切割。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

  • 可行的 (bool, 可选) – 整数组合是否产生可行或不可行的非线性规划问题,默认为 False。

Raises:

ValueError – 二进制变量的值不是0或1。

add_lazy_oa_cuts(target_model, dual_values, mindtpy_solver, config, opt, linearize_active=True, linearize_violated=True)[source]

将非线性约束线性化;通过CPLEX内置函数self.add()添加OA切割。 对于非凸问题,请开启‘config.add_slack’。松弛变量将始终用于非线性等式约束。

Parameters:
  • target_model (Pyomo 模型) – MIP 主问题。

  • dual_values (list) – 每个约束的对偶值。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

  • linearize_active (bool, optional) – 是否线性化活动的非线性约束,默认为 True。

  • linearize_violated (bool, optional) – 是否线性化违反的非线性约束,默认为 True。

copy_lazy_var_list_values(opt, from_list, to_list, config, skip_stale=False, skip_fixed=True)[source]

此函数将变量值从一个列表复制到另一个列表。 必要时将值四舍五入为二进制/整数。 对于非负实数,必要时将其设置为零。

Parameters:
  • opt (SolverFactory) – cplex_persistent 求解器。

  • from_list (list) – 提供要复制的值的变量列表。

  • to_list (list) – 需要设置值的变量列表。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • skip_stale (bool, optional) – 是否跳过过时的变量,默认为 False。

  • skip_fixed (bool, optional) – 是否跳过固定变量,默认为 True。

handle_lazy_main_feasible_solution(main_mip, mindtpy_solver, config, opt)[source]

此函数在主MIP的分支定界过程中调用,更准确地说,是在找到一个可行解并且LazyCallback被激活时调用。将结果复制到工作模型并更新上界或下界。在LP-NLP中,上界或下界在解决主问题时更新。

Parameters:
  • main_mip (Pyomo 模型) – MIP 主问题。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

handle_lazy_subproblem_infeasible(fixed_nlp, mindtpy_solver, config, opt)[source]

解决可行性NLP子问题,并根据指定的策略添加切割。

Parameters:
  • fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

handle_lazy_subproblem_optimal(fixed_nlp, mindtpy_solver, config, opt)[source]

此函数将固定NLP子问题的最优解复制到MIP主问题(解释见下文),更新边界,添加OA和不良切割,如果改进了当前解,则存储当前解。

Parameters:
  • fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

  • opt (SolverFactory) – cplex_persistent 求解器。

handle_lazy_subproblem_other_termination(fixed_nlp, termination_condition, mindtpy_solver, config)[source]

处理在给定既不是最优也不可行的解决方案的情况下,解决NLP子问题的最新迭代结果。

Parameters:
  • fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。

  • termination_condition (Pyomo TerminationCondition) – 固定NLP子问题的终止条件。

  • mindtpy_solver (object) – mindtpy 求解器类。

  • config (ConfigBlock) – MindtPy 的具体配置。

Raises:

ValueError – MindtPy 无法处理固定 NLP 子问题的终止条件。