fbbt
(function from 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]
Perform FBBT on a constraint, block, or model. For more control, use _fbbt_con and _fbbt_block. For detailed documentation, see the docstrings for _fbbt_con and _fbbt_block.
- Parameters:
comp (pyomo.core.base.constraint.Constraint or pyomo.core.base.block.Block or pyomo.core.base.PyomoModel.ConcreteModel)
deactivate_satisfied_constraints (bool) – If deactivate_satisfied_constraints is True and a constraint is always satisfied, then the constranit will be deactivated
integer_tol (float) – If the lower bound computed on a binary variable is less than or equal to integer_tol, then the lower bound is left at 0. Otherwise, the lower bound is increased to 1. If the upper bound computed on a binary variable is greater than or equal to 1-integer_tol, then the upper bound is left at 1. Otherwise the upper bound is decreased to 0.
feasibility_tol (float) – If the bounds computed on the body of a constraint violate the bounds of the constraint by more than feasibility_tol, then the constraint is considered infeasible and an exception is raised. This tolerance is also used when performing certain interval arithmetic operations to ensure that none of the feasible region is removed due to floating point arithmetic and to prevent math domain errors (a larger value is more conservative).
max_iter (int) – Used for Blocks only (i.e., comp.ctype == Block). When performing FBBT on a Block, we first perform FBBT on every constraint in the Block. We then attempt to identify which constraints to repeat FBBT on based on the improvement in variable bounds. If the bounds on a variable improve by more than improvement_tol, then FBBT is performed on the constraints using that Var. However, this algorithm is not guaranteed to converge, so max_iter limits the total number of times FBBT is performed to max_iter times the number of constraints in the Block.
improvement_tol (float) – Used for Blocks only (i.e., comp.ctype == Block). When performing FBBT on a Block, we first perform FBBT on every constraint in the Block. We then attempt to identify which constraints to repeat FBBT on based on the improvement in variable bounds. If the bounds on a variable improve by more than improvement_tol, then FBBT is performed on the constraints using that Var.
- Returns:
new_var_bounds – A ComponentMap mapping from variables a tuple containing the lower and upper bounds, respectively, computed from FBBT.
- Return type: