切割平面变换
(类来自 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__()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)
使用此转换创建一个新模型