add_oa_cuts

(函数来自 pyomo.contrib.mindtpy.cut_generation)

pyomo.contrib.mindtpy.cut_generation.add_oa_cuts(target_model, dual_values, jacobians, objective_sense, mip_constraint_polynomial_degree, mip_iter, config, timing, cb_opt=None, linearize_active=True, linearize_violated=True)[source]

添加OA切割。

生成并添加OA切割(线性化非线性约束)。 对于非凸问题,请开启‘config.add_slack’。 松弛变量将始终用于非线性等式约束。

Parameters:
  • target_model (Pyomo 模型) – 松弛的线性模型。

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

  • 雅可比矩阵 (ComponentMap) – 非线性约束的映射 –> 映射(变量 –> 约束相对于变量的雅可比矩阵).

  • objective_sense (Int) – 模型的目标意义。

  • mip_constraint_polynomial_degree (Set) – 被视为线性的约束的多项式次数。

  • mip_iter (Int) – MIP 迭代计数器。

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

  • cb_opt (SolverFactory, optional) – Gurobi_persistent 求解器,默认为 None。

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

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