#include <IbexBisector.h>

Public Member Functions | |
| BlockRoundRobin (Space &space, const BlockSet &bs, REAL w=Bisector::default_prec, REAL ratio=Bisector::default_ratio) | |
| BlockRoundRobin (const BlockRoundRobin &brr) | |
| virtual BlockRoundRobin * | copy () const |
| virtual void | accept_printer (const OperatorPrinter &p) const |
| Bisection | bisect (int last_var) const throw (BlockSetException) |
| Bisection | bisect () |
Public Attributes | |
| const REAL | w |
The strategy of this bisector is as follows. Variables of the first block are elected in a round-robin strategy until they all have their diameter lower than w. Then, the variables of the second block are elected in a round-robin strategy, and so on. The procedure can skip several blocks until a variable with a large enough domain is found.
If none, the first variable of the first non-empty block is then elected.
When the bisection is called with last_var set to a particular variable, the process starts at the block to which last_var belong and does not check (backward) the previous blocks.
last update: September 2009
| ibex::BlockRoundRobin::BlockRoundRobin | ( | Space & | space, | |
| const BlockSet & | bs, | |||
| REAL | w = Bisector::default_prec, |
|||
| REAL | ratio = Bisector::default_ratio | |||
| ) | [inline] |
Create a bisector with blockwise round-robin heuristic.
| space | - The space, passed by reference. | |
| bs | - The variable blocks | |
| w | - the minimum width (diameter) an interval must have to be bisected. | |
| ratio | (optional) - the ratio between the diameters of the left and the right parts of the bisected interval. Default value is 0.5, i.e. the interval is bisected at the midpoint. |
| ibex::BlockRoundRobin::BlockRoundRobin | ( | const BlockRoundRobin & | brr | ) | [inline] |
Duplicate this instance (space is passed by reference).
| virtual BlockRoundRobin* ibex::BlockRoundRobin::copy | ( | ) | const [inline, virtual] |
Implement the contractor abstract copy.
Implements ibex::Bisector.
| virtual void ibex::BlockRoundRobin::accept_printer | ( | const OperatorPrinter & | p | ) | const [inline, virtual] |
Accept the pretty printer.
Reimplemented from ibex::Operator.
| Bisection ibex::BlockRoundRobin::bisect | ( | int | last_var | ) | const throw (BlockSetException) |
Bisect the box.
| last_var | - the last component that has been bisected (hence, if the domain of the last_var+1 component is wider than w, it will be bisected) or -1 if this is the first call (in this case, the variable examinated first is the first one). |
| Bisection ibex::BlockRoundRobin::bisect | ( | ) | [inline, virtual] |
Bisect the current box (in a paving/solving process).
Implements ibex::Bisector.
| const REAL ibex::BlockRoundRobin::w |
Allows to skip variables whose domain is too small in the blockwise round-robin heuristic. This parameter usually matches the ceil paramter of the precision contractor since boxes that are too small are usually both not bisected and considered as precise enough.
1.5.5