fbbt
(函数来自 pyomo.contrib.fbbt.fbbt)
- pyomo.contrib.fbbt.fbbt.fbbt(comp, deactivate_satisfied_constraints=False, integer_tol=1e-05, feasibility_tol=1e-08, max_iter=10, improvement_tol=0.0001, descend_into=True)[source]
对约束、块或模型执行FBBT。如需更多控制,请使用_fbbt_con和_fbbt_block。有关详细文档,请参阅_fbbt_con和_fbbt_block的文档字符串。
- Parameters:
comp (pyomo.core.base.constraint.Constraint 或 pyomo.core.base.block.Block 或 pyomo.core.base.PyomoModel.ConcreteModel)
deactivate_satisfied_constraints (bool) – 如果 deactivate_satisfied_constraints 为 True 并且一个约束总是被满足,那么该约束将被停用
integer_tol (float) – 如果计算出的二进制变量的下界小于或等于 integer_tol,则下界保持为 0。否则,下界增加到 1。如果计算出的二进制变量的上界大于或等于 1-integer_tol,则上界保持为 1。否则,上界减少到 0。
feasibility_tol (float) – 如果约束体计算出的边界违反约束的边界超过 feasibility_tol,则该约束被视为不可行并引发异常。此容差也用于执行某些区间算术操作,以确保由于浮点算术而不会移除任何可行区域,并防止数学域错误(较大的值更为保守)。
max_iter (int) – 仅用于块(即 comp.ctype == Block)。在对块执行FBBT时,我们首先对块中的每个约束执行FBBT。然后,我们尝试根据变量边界的改进来确定哪些约束需要重复执行FBBT。如果变量的边界改进超过improvement_tol,则对使用该变量的约束执行FBBT。然而,该算法不能保证收敛,因此max_iter限制了FBBT执行的总次数,最多为max_iter乘以块中的约束数量。
improvement_tol (float) – 仅用于块(即 comp.ctype == Block)。在对块执行 FBBT 时,我们首先对块中的每个约束执行 FBBT。然后,我们尝试根据变量边界的改进来确定哪些约束需要重复执行 FBBT。如果变量的边界改进超过 improvement_tol,则对使用该变量的约束执行 FBBT。
- Returns:
new_var_bounds – 一个从变量映射到包含下界和上界的元组的ComponentMap,这些界限是从FBBT计算得出的。
- Return type: