ibex::BlockRoundRobin Class Reference
[Paver]

Blockwise round-robin bisector. More...

#include <IbexBisector.h>

Inheritance diagram for ibex::BlockRoundRobin:

ibex::Bisector ibex::Operator

List of all members.

Public Member Functions

 BlockRoundRobin (Space &space, const BlockSet &bs, REAL w=Bisector::default_prec, REAL ratio=Bisector::default_ratio)
 BlockRoundRobin (const BlockRoundRobin &brr)
virtual BlockRoundRobincopy () const
virtual void accept_printer (const OperatorPrinter &p) const
Bisection bisect (int last_var) const throw (BlockSetException)
Bisection bisect ()

Public Attributes

const REAL w


Detailed Description

Blockwise round-robin bisector.

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.

Author:
Gilles Chabert
Date:
created: November 2007

last update: September 2009


Constructor & Destructor Documentation

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.

Parameters:
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).


Member Function Documentation

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.

Parameters:
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).

Warning:
- may also throw BlockSetException.

Implements ibex::Bisector.


Member Data Documentation

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.


The documentation for this class was generated from the following files:

Generated on Sun Jun 27 15:52:00 2010 for IBEX by  doxygen 1.5.5