切割平面变换

(类来自 pyomo.gdp.plugins.cuttingplane)

class pyomo.gdp.plugins.cuttingplane.CuttingPlane_Transformation[source]

基础类:Transformation

通过形成大M松弛来放松凸析取模型,然后迭代地添加来自壳松弛(或经过一些基本步骤后的壳松弛)的切割,以加强公式。

请注意,gdp.cuttingplane 不是结构转换:如果模型中的变量被固定,它们将被视为数据,转换后取消固定很可能会导致模型无效。

此转换接受以下关键字参数:

Parameters:
  • solver (求解器名称 (作为字符串) 用于解决松弛的BigM和分离) – 问题

  • solver_options (字典,包含传递给求解器的选项)

  • stream_solver (是否显示求解器输出)

  • verbose (启用来自cuttingplanes算法的详细输出)

  • cuts_name (包含投影的IndexedConstraint的可选名称) – cuts(相对于实例必须是唯一的名称)

  • minimum_improvement_threshold (基于改进的停止准则) – Big-M 松弛。这是连续迭代之间松弛的 BigM 目标值的最小差异

  • separation_objective_threshold (基于分离的停止准则) – 目标。如果分离目标不小于此值,则切割生成将终止。

  • cut_filtering_threshold (基于有效性的停止准则生成的) – 生成的切割:这是切割在松弛的bigM解中必须违反的量,以便被添加到bigM模型中

  • max_number_of_cuts (最大切割次数添加到big-M模型中)

  • norm (用于分离问题目标中的范数)

  • tighten_relaxation (在采取松弛之前修改GDP模型的回调) – 可以用于执行基本步骤

  • create_cuts (回调函数,用于使用已解决的松弛bigM和hull创建切割) – 问题

  • post_process_cut (回调函数,用于对创建的切割进行后处理)

  • back_off_problem_tolerance (用于后处理时的容差)

  • zero_tolerance (当浮点数小于此容差时将被视为0) – 使用Fourier-Motzkin消元法生成切割。

  • do_integer_arithmetic (是否需要傅里叶-莫茨金消除) – 执行整数算术。只有在所有数据都是整数时才可能。

  • tight_constraint_tolerance (约束被认为的容差) – 用于Fourier-Motzkin切割生成过程的紧约束容差

  • 默认 ()

  • (回调将被设置,以便执行算法)

  • [1] (如所示)

  • (但有一个额外的后处理程序)

  • 错误 (减少数值)

  • cut (对约束集合进行傅里叶-莫茨金消除)

  • 约束条件 (受限于松弛壳)

  • 通过 (扩展空间垂直于创建的复合法向量)

  • 容忍度。 (此违规加上用户指定的额外值)

  • 加法 (In)

  • time) (create_cuts_fme 函数提供了一个 (指数)

  • 消除 (方法 用于 生成减少数值误差的切割 (并且可以)

  • (如果所有数据都是整数)。它收集了外壳约束)

  • 这个 (在解决方案处紧密分离问题。它在)

  • 通过

  • 执行 (对这些约束的法线方向求和。然后)

  • cut

  • which (用于投影出分解变量。生成的约束)

  • 返回。 (最常被宽松的bigM解决方案违反的是)

参考文献

[1] Sawaya, N. W., Grossmann, I. E. (2005). 一种用于解决线性广义析取规划问题的切割平面方法。计算机与化学工程, 29, 1891-1913

__init__()[source]

方法

__init__()

apply(model, **kwds)

已弃用。

apply_to(model, **kwds)

将转换应用于给定的模型。

create_using(model, **kwds)

使用此转换创建一个新模型

属性

CONFIG

成员文档

apply(model, **kwds)

已弃用。

自版本4.3.11323起已弃用:Transformation.apply() 已被弃用。请使用 Transformation.apply_to() 进行原地转换,或使用 Transformation.create_using() 创建新的独立转换模型实例。

apply_to(model, **kwds)

将转换应用于给定的模型。

create_using(model, **kwds)

使用此转换创建一个新模型