BigM_转换

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

class pyomo.gdp.plugins.bigm.BigM_Transformation[source]

基础类:GDP_to_MIP_Transformation, _BigM_MixIn

使用大M项放松析取模型。

通过向所有析取约束添加Big-M项,将析取模型松弛为代数模型。

This transformation accepts the following keyword arguments:

bigM: 用户指定的M值(或字典)用于使用(见下文) targets: 要转换的目标 [默认值: 实例]

M values are determined as follows:
  1. 如果约束出现在bigM参数字典中

  2. 如果约束 parent_component 出现在 bigM 参数字典中

  3. 如果任何作为约束的祖先的块出现在bigM参数字典中

  4. 如果 'None' 在 bigM 参数字典中

  5. 如果约束或约束的父组件出现在附加到任何父块的BigM后缀中,从约束的父块开始并向上移动到根模型。

  6. 如果在约束和根模型之间的任何 parent_block() 上附加的 BigM 后缀中出现 None。

  7. 如果约束是线性的,使用变量边界估计M

M 值可以是单个值,也可以是一个 2 元组,用于指定约束体下界和上界的 M。

指定“bigM=N”会自动映射到“bigM={None: N}”。

转换将创建一个新的Block,其名称以“_pyomo_gdp_bigm_reformulation”开头。该Block将包含一个名为“relaxedDisjuncts”的索引Block,用于存放松弛的析取项。此Block由一个整数索引,表示析取项被松弛的顺序。所有转换后的析取项将有一个指向其转换约束所在Block的指针,所有转换后的析取关系将有一个指向相应的‘Or’或‘ExactlyOne’约束的指针。

__init__()[source]

初始化转换对象。

方法

__init__()

初始化转换对象。

apply(model, **kwds)

已弃用。

apply_to(model, **kwds)

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

create_using(model, **kwds)

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

get_M_value(constraint)

返回用于转换约束的M值。

get_M_value_src(constraint)

返回一个元组,指示用于转换约束的M值是如何指定的。

get_all_M_values_by_constraint(model)

返回一个字典,将每个约束映射到一个元组:(lower_M_value, upper_M_value),如果约束没有下限或上限(分别对应),则可以为None。

get_largest_M_value(model)

返回模型中任何约束的最大M值。

get_m_value_src(constraint)

已弃用。

get_src_constraint()

返回其转换后的对应项为transformedConstraint的原始Constraint

get_src_disjunct()

返回其转换后的组件位于transBlock上的Disjunct对象。

get_src_disjunction()

返回与xor_constraint对应的Disjunction

get_transformed_constraints()

返回srcConstraint的转换版本

属性

CONFIG

transformation_name

成员文档

apply(model, **kwds)

已弃用。

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

apply_to(model, **kwds)

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

create_using(model, **kwds)

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

get_M_value(constraint)[source]

返回用于转换约束的M值。返回值是一个元组: (lower_M_value, upper_M_value)。如果约束没有下限或上限,则任一值可以为None。

Parameters:

约束 (Constraint, 必须在转换后的子树中一个) – 分离条件

get_M_value_src(constraint)[source]

返回一个元组,指示用于转换约束的M值是如何指定的。(特别是,这可以用于验证哪些BigM后缀实际上对转换是必要的。)

Return is of the form: ((lower_M_val, lower_M_source, lower_M_key),

(upper_M_val, upper_M_source, upper_M_key))

如果约束没有下限(或上限), 第一个(第二个)元素将是(None, None, None)。请注意,如果 约束的形式是 a <= expr <= b 或是一个等式约束, 并不一定意味着 lower_M 和 upper_M 的来源 是相同的。

如果M值来自一个参数,源是字典本身,键是那个字典中给我们M值的键。

如果M值来自后缀,source是使用的BigM后缀,key是该后缀中的键。

如果转换计算了值,那么源和键都是 None。

Parameters:

约束 (Constraint, 必须在转换后的子树中一个) – 分离条件

get_all_M_values_by_constraint(model)[source]

返回一个字典,将每个约束映射到一个元组: (lower_M_value, upper_M_value),如果约束没有下限或上限(分别),则其中任何一个都可以为None。

Parameters:

model (一个经过BigM转换的GDP模型)

get_largest_M_value(model)[source]

返回模型中任何约束的最大M值。

Parameters:

model (一个经过BigM转换的GDP模型)

get_m_value_src(constraint)[source]

已弃用。

自版本5.7.1起已弃用:get_m_value_src函数已被弃用。如果您需要源信息,请使用get_M_value_src函数;如果您只需要值,请使用get_M_value函数。

get_src_constraint()

返回其转换后的对应项为transformedConstraint的原始Constraint

Parameters:
  • transformedConstraint (Constraint, 必须是其中一个组件)

  • (在relaxedDisjuncts块中的BlockDatas)

  • block (一种转换)

get_src_disjunct()

返回转换后的组件位于transBlock上的Disjunct对象。

Parameters:

transBlock (BlockData 位于 relaxedDisjuncts IndexedBlock 中) – 在转换块上。

get_src_disjunction()

返回与xor_constraint对应的Disjunction

Parameters:

xor_constraint (Constraint, 必须是逻辑约束) – (位于转换块上)的某个 Disjunction

get_transformed_constraints()

返回srcConstraint的转换版本

Parameters: