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))
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))
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))
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)
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)
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)
def test_empty(self): a = IntervalVector.empty(3) self.assertEqual(a.size(), 3) self.assertEqual(len(a), 3) self.assertTrue(a.is_empty())