傅里叶-莫茨金消元变换

(类来自 pyomo.contrib.fme.fourier_motzkin_elimination)

class pyomo.contrib.fme.fourier_motzkin_elimination.Fourier_Motzkin_Elimination_Transformation[source]

基础类:Transformation

从线性模型中排除指定的变量。

This transformation requires the following keyword argument:
vars_to_eliminate: A user-specified list of continuous variables to

从模型中移除项目

转换将停用模型的原始约束,并创建一个名为“_pyomo_contrib_fme_transformation”的新块,其中包含投影的约束。请注意,由于原始模型和转换后的模型之间没有明显的映射关系,此转换将扁平化原始模型的结构。

__init__()[源代码]

初始化转换对象

方法

__init__()

初始化转换对象

apply(model, **kwds)

已弃用。

apply_to(model, **kwds)

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

create_using(model, **kwds)

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

post_process_fme_constraints(m, solver_factory)

解决一系列线性规划问题的函数,用于检查约束是否相互隐含。

属性

CONFIG

成员文档

apply(model, **kwds)

已弃用。

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

apply_to(model, **kwds)

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

create_using(model, **kwds)

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

post_process_fme_constraints(m, solver_factory, projected_constraints=None, tolerance=0)[source]

解决一系列线性规划问题的函数,用于检查约束是否相互隐含。删除任何隐含的约束。

Parameters:
  • m (一个模型已经用FME转换过。注意,如果约束) – 已被添加、激活或停用,我们将检查模型整个活动部分的冗余。如果你在FME之后直接调用这个,你只是在检查投影约束内的冗余,否则这取决于用户。

  • solver_factory (一个SolverFactory对象 (使用solver构造) – 可以解决模型上活动约束的连续松弛问题。也就是说,如果你有与投影变量无关的非线性约束,你需要要么停用它们,要么提供一个能够正确处理这些约束的solver。

  • projected_constraints (约束列表投影约束。) – 默认值为 None,在这种情况下我们假设 FME 转换是在没有 指定其名称的情况下调用的,因此将在 私有转换块中查找它们。

  • tolerance (决定约束是否由其他约束隐含的容忍度) – 默认值为0,意味着如果线性规划求解发现约束可以紧但不会被违反,则移除该约束。将此值设置为一个小的正数将更保守地移除约束。将其设置为负值将导致问题放松。