Class BoundablePair

  • All Implemented Interfaces:
    java.lang.Comparable

    class BoundablePair
    extends java.lang.Object
    implements java.lang.Comparable
    A pair of Boundables, whose leaf items support a distance metric between them. Used to compute the distance between the members, and to expand a member relative to the other in order to produce new branches of the Branch-and-Bound evaluation tree. Provides an ordering based on the distance between the members, which allows building a priority queue by minimum distance.
    • Field Detail

      • distance

        private double distance
    • Method Detail

      • getBoundable

        public Boundable getBoundable​(int i)
        Gets one of the member Boundables in the pair (indexed by [0, 1]).
        Parameters:
        i - the index of the member to return (0 or 1)
        Returns:
        the chosen member
      • distance

        private double distance()
        Computes the distance between the Boundables in this pair. The boundables are either composites or leaves. If either is composite, the distance is computed as the minimum distance between the bounds. If both are leaves, the distance is computed by #itemDistance(ItemBoundable, ItemBoundable).
        Returns:
      • getDistance

        public double getDistance()
        Gets the minimum possible distance between the Boundables in this pair. If the members are both items, this will be the exact distance between them. Otherwise, this distance will be a lower bound on the distances between the items in the members.
        Returns:
        the exact or lower bound distance for this pair
      • compareTo

        public int compareTo​(java.lang.Object o)
        Compares two pairs based on their minimum distances
        Specified by:
        compareTo in interface java.lang.Comparable
      • isLeaves

        public boolean isLeaves()
        Tests if both elements of the pair are leaf nodes
        Returns:
        true if both pair elements are leaf nodes
      • isComposite

        public static boolean isComposite​(java.lang.Object item)
      • area

        private static double area​(Boundable b)
      • expandToQueue

        public void expandToQueue​(PriorityQueue priQ,
                                  double minDistance)
        For a pair which is not a leaf (i.e. has at least one composite boundable) computes a list of new pairs from the expansion of the larger boundable.