Beispiel #1
0
  def test_in_CN_with_list(self):

    v_map = [IntervalVector(2)] * 4
    v_map[0] = IntervalVector([1.5,2.5])
    v_map[1] = IntervalVector([2.5,1.5])
    v_map[2] = IntervalVector([4.,2.])
    v_map[3] = IntervalVector([1.,0.5])

    ctc_constell = CtcConstell(v_map)

    n = 6
    x = [IntervalVector(2)] * n
    x[1-1] = IntervalVector([[0.5,6],[0,3.5]])
    x[2-1] = IntervalVector([[3.5,5.5],[0.5,2.5]])
    x[3-1] = IntervalVector([[2,5],[1,3]])
    x[4-1] = IntervalVector([[1,3],[1,2]])
    x[5-1] = IntervalVector([[1.5,2],[2.5,3]])
    x[6-1] = IntervalVector([[6.5,7.5],[2.5,3.5]])

    cn = ContractorNetwork()
    for i in range(0,len(x)):
      cn.add(ctc_constell, [x[i]])
    cn.contract()

    self.assertEqual(x[1-1], IntervalVector([[1,4],[0.5,2.5]]))
    self.assertEqual(x[2-1], IntervalVector([4,2]))
    self.assertEqual(x[3-1], IntervalVector([[2.5,4],[1.5,2]]))
    self.assertEqual(x[4-1], IntervalVector([2.5,1.5]))
    self.assertEqual(x[5-1], IntervalVector([1.5,2.5]))
    self.assertEqual(x[6-1], IntervalVector.empty(2))
Beispiel #2
0
  def test_raw(self):

    v_map = [IntervalVector(2)] * 4
    v_map[0] = IntervalVector([1.5,2.5])
    v_map[1] = IntervalVector([2.5,1.5])
    v_map[2] = IntervalVector([4.,2.])
    v_map[3] = IntervalVector([1.,0.5])

    ctc_constell = CtcConstell(v_map)

    x1 = IntervalVector([[0.5,6],[0,3.5]])
    x2 = IntervalVector([[3.5,5.5],[0.5,2.5]])
    x3 = IntervalVector([[2,5],[1,3]])
    x4 = IntervalVector([[1,3],[1,2]])
    x5 = IntervalVector([[1.5,2],[2.5,3]])
    x6 = IntervalVector([[6.5,7.5],[2.5,3.5]])

    ctc_constell.contract(x1)
    ctc_constell.contract(x2)
    ctc_constell.contract(x3)
    ctc_constell.contract(x4)
    ctc_constell.contract(x5)
    ctc_constell.contract(x6)

    self.assertEqual(x1, IntervalVector([[1,4],[0.5,2.5]]))
    self.assertEqual(x2, IntervalVector([4,2]))
    self.assertEqual(x3, IntervalVector([[2.5,4],[1.5,2]]))
    self.assertEqual(x4, IntervalVector([2.5,1.5]))
    self.assertEqual(x5, IntervalVector([1.5,2.5]))
    self.assertEqual(x6, IntervalVector.empty(2))
Beispiel #3
0
  def test_in_CN(self):

    v_map = [IntervalVector(2)] * 4
    v_map[0] = IntervalVector([1.5,2.5])
    v_map[1] = IntervalVector([2.5,1.5])
    v_map[2] = IntervalVector([4.,2.])
    v_map[3] = IntervalVector([1.,0.5])

    ctc_constell = CtcConstell(v_map)

    x1 = IntervalVector([[0.5,6],[0,3.5]])
    x2 = IntervalVector([[3.5,5.5],[0.5,2.5]])
    x3 = IntervalVector([[2,5],[1,3]])
    x4 = IntervalVector([[1,3],[1,2]])
    x5 = IntervalVector([[1.5,2],[2.5,3]])
    x6 = IntervalVector([[6.5,7.5],[2.5,3.5]])

    cn = ContractorNetwork()
    cn.add(ctc_constell, [x1])
    cn.add(ctc_constell, [x2])
    cn.add(ctc_constell, [x3])
    cn.add(ctc_constell, [x4])
    cn.add(ctc_constell, [x5])
    cn.add(ctc_constell, [x6])
    cn.contract()

    self.assertEqual(x1, IntervalVector([[1,4],[0.5,2.5]]))
    self.assertEqual(x2, IntervalVector([4,2]))
    self.assertEqual(x3, IntervalVector([[2.5,4],[1.5,2]]))
    self.assertEqual(x4, IntervalVector([2.5,1.5]))
    self.assertEqual(x5, IntervalVector([1.5,2.5]))
    self.assertEqual(x6, IntervalVector.empty(2))
Beispiel #4
0
    def test_contract_empty(self):
        c = CtcSegment(0, 0, 10, 20)
        box = IntervalVector([[-5, -2], [-5, 50]])
        resbox = IntervalVector.empty(2)

        c.contract(box)
        self.assertEqual(box, resbox)
Beispiel #5
0
  def test_contract_empty(self):
    c = CtcSegment(0,0,10,20);
    box = IntervalVector([[-5,-2],  [-5,50]]);
    resbox = IntervalVector.empty(2);

    c.contract(box);
    self.assertEqual(box , resbox)
Beispiel #6
0
    def separate(self, xin, xout):
        X0 = xin | xout
        X = xin & xout
        stack = deque([self.root])
        k = 0
        xborder = IntervalVector.empty(xin.size())
        while len(stack) > 0:
            n = stack.popleft()
            k = k + 1
            nX = (n.xin & n.xout)

            if n.isLeaf():
                xborder |= (X & nX)
            else:
                Xleft = n.left.getX() & X
                Xright = n.right.getX() & X
                if not Xleft.is_empty() and not Xleft.is_subset(xborder):
                    stack.append(n.left)
                if not Xright.is_empty() and not Xright.is_subset(xborder):
                    stack.append(n.right)

        xin &= xborder
        xout &= xborder
        for b in X0.diff(xborder):
            isInside = self.root.isInside(b.mid())
            if isInside is True:
                xout |= b
            elif isInside is False:
                xin |= b
            else:
                xin |= b
                xout |= b
        print(k)
Beispiel #7
0
 def test_empty(self):
     a = IntervalVector.empty(3)
     self.assertEqual(a.size(), 3)
     self.assertEqual(len(a), 3)
     self.assertTrue(a.is_empty())