Exemplo n.º 1
0
 def test_complementary(self):
     a = IntervalVector(list(range(0, 1))).inflate(1)
     l = a.complementary()
     self.assertEqual(l[0], IntervalVector(1, Interval(float("-inf"), -1)))
     self.assertEqual(l[1], IntervalVector(1, Interval(1, float("inf"))))
Exemplo n.º 2
0
 def test_0_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(2.5, 9.5)
     intv_y = Interval(-5., -2.5)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, Interval(2.5, 9.5))
     self.assertEqual(intv_y, Interval(-3., -2.5))
     self.assertEqual(x.nb_slices(), 12)
     self.assertEqual(x(0), Interval(-5.5, 2.25))
     self.assertEqual(x(1), Interval(-4.5, 1.75))
     self.assertEqual(x(2), Interval(-3.5, 1.25))
     self.assertEqual(x(2.5), Interval(-3., 1.))
     self.assertEqual(x(3), Interval(-3., 1.))
     self.assertEqual(x(4), Interval(-2.5, 0.75))
     #     //CHECK(x(5), Interval(xxx)); // optimality
     self.assertEqual(x(6), Interval(-1., 1.))
     self.assertEqual(x(7), Interval(-1.5, 2.))
     self.assertEqual(x(8), Interval(-2., 3.))
     self.assertEqual(x(9), Interval(-2.5, 4.))
     self.assertEqual(x(10), Interval(-2.75, 4.5))
     self.assertEqual(x(9.5), Interval(-2.75, 4.5))
     self.assertEqual(x(11), Interval(-3., 5.))
Exemplo n.º 3
0
    def test_ctceval_1(self):

        t = Interval(0., 6.)
        z = Interval(-1., 1.)
        x = Tube(Interval(-1., 7.), 2.)
        v = Tube(x)
        v.set(Interval(-1.), 0)
        v.set(Interval(-1., 1.), 1)
        v.set(Interval(-1.), 2)
        v.set(Interval(1.), 3)

        self.assertEqual(x.nb_slices(), 4)
        ctc_eval = CtcEval()
        ctc_eval.preserve_slicing(False)
        ctc_eval.enable_time_propag(False)
        ctc_eval.contract(t, z, x, v)
        self.assertEqual(x.nb_slices(), 6)

        self.assertEqual(x.codomain(), Interval.ALL_REALS)
        # only gates should be affected
        self.assertEqual(x(-1.), Interval.ALL_REALS)
        self.assertEqual(x(0.), Interval(-2., 6.))
        self.assertEqual(x(1.), Interval(-3., 5.))
        self.assertEqual(x(3.), Interval(-4., 3.))
        self.assertEqual(x(5.), Interval(-6., 1.))
        self.assertEqual(x(6.), Interval(-5., 2.))
        self.assertEqual(x(7.), Interval.ALL_REALS)
Exemplo n.º 4
0
 def test_I_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(2.5)
     intv_y = Interval(0.5)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, Interval(2.5))
     self.assertEqual(intv_y, Interval(0.5))
     self.assertEqual(x.nb_slices(), 11)
     self.assertEqual(x(0), Interval(-2., 1.75))
     self.assertEqual(x(1), Interval(-1., 1.25))
     self.assertEqual(x(2), Interval(-0., 0.75))
     self.assertEqual(x(2.5), Interval(0.5))
     self.assertEqual(x(3), Interval(0.25, 1.))
     self.assertApproxIntv(x(4), Interval(-0.25, 1. + 1. / 3.))
     self.assertEqual(x(5), Interval(-0.75, 1.))
     self.assertEqual(x(6), Interval(-1., 1.5))
     self.assertEqual(x(7), Interval(-1.5, 2.5))
     self.assertEqual(x(8), Interval(-2., 3.5))
     self.assertEqual(x(9), Interval(-2.5, 4.5))
     self.assertEqual(x(10), Interval(-3., 5.5))
Exemplo n.º 5
0
 def test_K_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(5.25, 8.25)
     intv_y = Interval(-0.5, 0.)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, Interval(5.25, 8.25))
     self.assertEqual(intv_y, Interval(-0.5, 0.))
     self.assertEqual(x.nb_slices(), 12)
     self.assertEqual(x(0), Interval(-5.5, 3.))
     self.assertEqual(x(1), Interval(-4.5, 2.5))
     self.assertEqual(x(2), Interval(-3.5, 2.))
     self.assertEqual(x(3), Interval(-2.5, 1.5))
     self.assertEqual(x(4), Interval(-1.5, 1.))
     self.assertEqual(x(5), Interval(-1., 1.25))
     self.assertEqual(x(5.25), Interval(-1., 1.25))
     self.assertApproxIntv(x(6), Interval(-1., 1.4 + 1. / 60.))
     self.assertEqual(x(7), Interval(-1.5, 1.875))
     self.assertApproxIntv(x(8), Interval(-1.625 - 1. / 3., 2.75))
     self.assertEqual(x(9), Interval(-2., 3.))
     self.assertEqual(x(8.25), Interval(-2., 3.))
     self.assertEqual(x(10), Interval(-2.375, 3.75))
     self.assertEqual(x(11), Interval(-2.875, 4.75))
Exemplo n.º 6
0
 def test_B_ctc_deriv_propa(self):
     # Test B_propa
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(0.5, 2.5)
     intv_y = Interval(-2.)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(x.nb_slices(), 12)
     self.assertEqual(intv_t, Interval(0.5, 2.5))
     self.assertEqual(intv_y, Interval(-2.))
     self.assertEqual(x(0), Interval(-4.5, -0.75))
     self.assertEqual(x(0.5), Interval(-4., -1.))
     self.assertEqual(x(1), Interval(-4., -1.))
     self.assertEqual(x(1.), Interval(-3.5, -1.25))
     self.assertEqual(x.slice(0.6).tdomain(), Interval(0.5, 1.))
     self.assertEqual(x.slice(0.6).input_gate(), Interval(-4., -1.))
     self.assertEqual(x.slice(0.6).output_gate(), Interval(-3.5, -1.25))
     self.assertEqual(xdot(2), Interval(-0.5, 1.))
     #self.assertEqual(x(2), Interval(-3.5,-0.5)); # todo: optimal implementation?
     self.assertEqual(x(2.), Interval(-2.75, -0.5))
     self.assertEqual(x(3), Interval(-3., 0.))
     self.assertEqual(x(2.5), Interval(-3., -0.))
     self.assertEqual(x(4), Interval(-3., 0.5))
     self.assertApproxIntv(x(5), Interval(-2.5, 1. + 1. / 6.))
     self.assertEqual(x(6), Interval(-1.5, 1.))
     self.assertEqual(x(7), Interval(-1., 1.5))
     self.assertEqual(x(8), Interval(-1.5, 2.5))
     self.assertEqual(x(9), Interval(-2., 3.5))
     self.assertEqual(x(10), Interval(-2.5, 4.5))
     self.assertEqual(x(11), Interval(-3., 5.5))
Exemplo n.º 7
0
    def test_ctceval_2(self):
        t, z = Interval(0., 6.), Interval(-1., 1.)
        x = Tube(Interval(-1., 7.), 2.)
        v = Tube(x)
        v.set(Interval(-1.), 0)
        v.set(Interval(-1., 1.), 1)
        v.set(Interval(-1.), 2)
        v.set(Interval(1.), 3)

        x.set(Interval(0., 1.), 2.)
        v.sample(2.)

        self.assertEqual(x.nb_slices(), 5)

        ctc_eval = CtcEval()
        ctc_eval.preserve_slicing(False)
        ctc_eval.enable_time_propag(False)
        ctc_eval.contract(t, z, x, v)

        self.assertEqual(x.nb_slices(), 7)

        self.assertEqual(x.codomain(), Interval.ALL_REALS)
        # only gates should be affected
        self.assertEqual(x(-1.), Interval.ALL_REALS)
        self.assertEqual(x(0.), Interval(0., 3.))
        self.assertEqual(x(1.), Interval(-1., 2.))
        self.assertEqual(x(2.), Interval(0., 1.))
        self.assertEqual(x(3.), Interval(-1., 2.))
        self.assertEqual(x(5.), Interval(-3., 1.))
        self.assertEqual(x(6.), Interval(-2., 2.))
        self.assertEqual(x(7.), Interval.ALL_REALS)

        t = Interval(1.75, 5.5)
        z = Interval(1.6)

        ctc_eval.enable_time_propag(True)
        ctc_eval.contract(t, z, x, v)

        box = IntervalVector([Interval(1.75, 5.5), Interval(1.6)])

        # if(VIBES_DRAWING) fig_tube->draw_box(box, vibesParams("figure", "ctceval", "red"));
        ctc_eval.contract(box[0], box[1], x, v)
        # if(VIBES_DRAWING) fig_tube->draw_box(box, vibesParams("figure", "ctceval", "blue"));

        self.assertApproxIntv(x.interpol(3.4, v), Interval(0.8, 1.6))
        self.assertApproxIntv(box[0], Interval(2.6, 3.4))
        self.assertApproxIntv(box[1], Interval(1.6))
Exemplo n.º 8
0
 def test_bwd_mul(self):
     a = IntervalVector(2, Interval(2, 4))
     b = Interval(1, 2)
     c = IntervalVector(2)
     pyibex.bwd_mul(a, b, c)
     pyibex.bwd_mul(b, a, c)
Exemplo n.º 9
0
 def test_constructor33(self):
     l = (Interval(1, 3), Interval(float('-inf'), 4))
     c = IntervalVector(l)
     self.assertEqual(c[0], Interval(1, 3))
     self.assertEqual(c[1], Interval(float('-inf'), 4))
Exemplo n.º 10
0
 def test_abs(self):
     a = IntervalVector(2, Interval(-2, 4))
     self.assertEqual(pyibex.abs(a), IntervalVector(2, Interval(0, 4)))
Exemplo n.º 11
0
 def test_bwd_mul(self):
     a = IntervalVector(2, Interval(2, 4))
     b = IntervalVector(2, Interval(-3, 4))
     c = IntervalVector(2)
     pyibex.bwd_mul(c, a, b)
Exemplo n.º 12
0
 def test_ops_6(self):
     a = IntervalVector(2, Interval(-1, 1))
     self.assertEqual(a - [1, 1], IntervalVector(2, Interval(-2, 0)))
     self.assertEqual([1, 1] - a, IntervalVector(2, Interval(0, 2)))
Exemplo n.º 13
0
 def test_ops_5(self):
     a = IntervalVector(2, Interval(-1, 1))
     self.assertEqual(a + [1, 1], IntervalVector(2, Interval(0, 2)))
     self.assertEqual([1, 1] + a, IntervalVector(2, Interval(0, 2)))
Exemplo n.º 14
0
 def test_constructor2(self):
     c = IntervalVector(3, [1, 2])
     self.assertEqual(c[0], Interval(1, 2))
Exemplo n.º 15
0
    def test_adding_continuous_data(self):

        dt = 1.
        tdomain = Interval(0., 5.)

        x = Tube(tdomain, dt)
        v = Tube(tdomain, dt)
        x.set(Interval(0.), 0.)  # todo: allow to write x.set(0., 0.) ?

        ctc_deriv = CtcDeriv()
        cn = ContractorNetwork()
        cn.add(ctc_deriv, [x, v])

        cn.set_name(x, "x")
        cn.set_name(v, "v")
        cn.print_dot_graph("cn_adddata")

        cn.contract()

        self.assertTrue((x.codomain() == Interval.ALL_REALS \
          or x.codomain(), Interval(-99999, 99999))) # todo: remove this
        self.assertTrue((v.codomain() == Interval.ALL_REALS \
          or x.codomain(), Interval(-99999, 99999))) # todo: remove this
        self.assertEqual(cn.nb_ctc_in_stack(), 0)

        # Adding data
        cn.add_data(v, 0., Interval(0.))
        self.assertEqual(cn.nb_ctc_in_stack(), 0)
        cn.add_data(v, 0.3, Interval(0.))
        self.assertEqual(cn.nb_ctc_in_stack(), 0)
        cn.add_data(v, 0.4, Interval(0.))
        cn.add_data(v, 0.5, Interval(0.))
        # cn.add_data(x, 0.5, Interval(0.5))) # should fail
        self.assertEqual(cn.nb_ctc_in_stack(), 0)
        cn.add_data(v, 0.99, Interval(0.))
        self.assertEqual(cn.nb_ctc_in_stack(), 0)
        cn.add_data(v, 1.3, Interval(0.))
        self.assertEqual(cn.nb_ctc_in_stack(), 3)
        cn.add_data(v, 1.5, Interval(0.))
        self.assertEqual(cn.nb_ctc_in_stack(), 3)
        cn.add_data(v, 4.5, Interval(-3.))  # accross two slices
        self.assertEqual(cn.nb_ctc_in_stack(), 9)
        cn.add_data(v, 5.5, Interval(1.))  # after tf
        self.assertEqual(cn.nb_ctc_in_stack(), 10)

        self.assertEqual(v(0), Interval(0.))
        self.assertEqual(v(1), Interval(-0.5, 0.))
        self.assertEqual(v(2), Interval(-1.5, -0.5))
        self.assertEqual(v(3), Interval(-2.5, -1.5))
        self.assertEqual(v(4), Interval(-3., -1.))
Exemplo n.º 16
0
 def test_iterable(self):
     x = IntervalVector(list(range(10)))
     for b, i in zip(x, range(10)):
         self.assertEqual(b, Interval(i))
Exemplo n.º 17
0
 def test_B_ctc_deriv(self):
     # Test B_no_propa
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(0.5, 2.5)
     intv_y = Interval(-2.)
     self.ctc_eval_nopropa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(x.nb_slices(), 12)
     self.assertEqual(intv_t, Interval(0.5, 2.5))
     self.assertEqual(intv_y, Interval(-2.))
     self.assertEqual(x(0), Interval(-5.5, 3.))
     self.assertEqual(x(0.5), Interval(-4., -1.))
     self.assertEqual(x(1), Interval(-5.5, 3.))
     self.assertEqual(x(1.), Interval(-3.5, -1.25))
     self.assertEqual(x(2), Interval(-4.5, 2.5))
     self.assertEqual(x(2.), Interval(-2.75, -0.5))
     self.assertEqual(x(3), Interval(-3.5, 2.))
     self.assertEqual(x(2.5), Interval(-3., -0.))
     self.assertEqual(x(4), Interval(-3.5, 2.))
     self.assertEqual(x(5), Interval(-2.5, 1.5))
     self.assertEqual(x(6), Interval(-1.5, 1.))
     self.assertEqual(x(7), Interval(-1., 1.5))
     self.assertEqual(x(8), Interval(-1.5, 2.5))
     self.assertEqual(x(9), Interval(-2., 3.5))
     self.assertEqual(x(10), Interval(-2.5, 4.5))
     self.assertEqual(x(11), Interval(-3., 5.5))
Exemplo n.º 18
0
    def test_TubeClasss(self):

        box1 = IntervalVector(2)
        box2 = IntervalVector(2)
        box3 = IntervalVector(2)
        box4 = IntervalVector(2)

        box1[0] = Interval(-1., 10.)
        box1[1] = Interval(3., 4.)

        box2[0] = Interval(10., 10.5)
        box2[1] = Interval(2., 7.)

        box3[0] = Interval(10.5, 12.)
        box3[1] = Interval(5., 6.)

        box4[0] = Interval(12., 14.)
        box4[1] = Interval(5.5)

        v_tdomains = [box1[0], box2[0], box3[0], box4[0]]
        v_codomains = [box1[1], box2[1], box3[1], box4[1]]
        tube_from_boxes = Tube(v_tdomains, v_codomains)

        self.assertEqual(tube_from_boxes.tdomain(), Interval(-1., 14.))
        self.assertEqual(tube_from_boxes.codomain(), Interval(2., 7.))
        self.assertEqual(tube_from_boxes.nb_slices(), 4)

        self.assertEqual(tube_from_boxes(0), Interval(3., 4.))
        self.assertEqual(tube_from_boxes(1), Interval(2., 7.))
        self.assertEqual(tube_from_boxes(2), Interval(5., 6.))
        self.assertEqual(tube_from_boxes(3), Interval(5.5))

        self.assertEqual(
            tube_from_boxes.slice(0).tdomain(), Interval(-1., 10.))
        self.assertEqual(
            tube_from_boxes.slice(1).tdomain(), Interval(10., 10.5))
        self.assertEqual(
            tube_from_boxes.slice(2).tdomain(), Interval(10.5, 12.))
        self.assertEqual(
            tube_from_boxes.slice(3).tdomain(), Interval(12., 14.))
Exemplo n.º 19
0
 def test_D_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = 3.5
     intv_y = Interval(-3.5, -0.5)
     self.assertEqual(x.nb_slices(), 10)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(x.nb_slices(), 11)
     self.assertEqual(intv_t, 3.5)
     self.assertEqual(intv_y, Interval(-2., -0.5))
     self.assertEqual(x(0), Interval(-5.5, 1.25))
     self.assertEqual(x(1), Interval(-4.5, 0.75))
     self.assertEqual(x(2), Interval(-3.5, 0.25))
     self.assertEqual(x(3), Interval(-2.5, -0.25))
     self.assertEqual(x(3.5), Interval(-2., -0.5))
     self.assertEqual(x(4), Interval(-2., 0.))
     self.assertEqual(x(5), Interval(-1.5, 1.))
     self.assertEqual(x(6), Interval(-1., 1.5))
     self.assertEqual(x(7), Interval(-1.5, 2.5))
     self.assertEqual(x(8), Interval(-2., 3.5))
     self.assertEqual(x(9), Interval(-2.5, 4.5))
     self.assertEqual(x(10), Interval(-3., 5.5))
Exemplo n.º 20
0
    def test_Slice_class(self):

        tubeslice = Slice(Interval(0., 1.), Interval(-1., 1.))
        self.assertEqual(tubeslice.tdomain(), Interval(0., 1.))
        self.assertEqual(tubeslice.codomain(), Interval(-1., 1.))
Exemplo n.º 21
0
 def test_G_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(6.5, 7.5)
     intv_y = Interval(3., 4.)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, Interval(7.5))
     self.assertEqual(intv_y, Interval(3.))
     self.assertEqual(x(0), Interval(-4.5, 3.))
     self.assertEqual(x(1), Interval(-3.5, 2.5))
     self.assertEqual(x(2), Interval(-2.5, 2.))
     self.assertEqual(x(3), Interval(-1.5, 1.5))
     self.assertEqual(x(4), Interval(-0.5, 1.))
     self.assertEqual(x(5), Interval(0.5, 1.5))
     self.assertEqual(x(6), Interval(1.5, 2.5))
     self.assertEqual(x(7), Interval(2.5, 3.))
     self.assertEqual(x(7.5), Interval(3.))
     self.assertEqual(x(8), Interval(2.75, 3.5))
     self.assertEqual(x(9), Interval(2.25, 4.5))
     self.assertEqual(x(10), Interval(1.75, 5.5))
Exemplo n.º 22
0
    def test_Tube_class_vector_of_boxes_n_dim_case(self):
        box1 = IntervalVector(
            [Interval(-1., 10.),
             Interval(3., 4.),
             Interval(0., 2.)])
        box2 = IntervalVector(
            [Interval(10., 10.5),
             Interval(2., 7.),
             Interval(1., 3.)])

        box3 = IntervalVector(
            [Interval(10.5, 12.),
             Interval(5., 6.),
             Interval(2., 4.)])

        box4 = IntervalVector(
            [Interval(12., 14.),
             Interval(5.5),
             Interval(3., 5.)])

        v_tdomains = [box1[0], box2[0], box3[0], box4[0]]
        v_codomains = [
            box1.subvector(1, 2),
            box2.subvector(1, 2),
            box3.subvector(1, 2),
            box4.subvector(1, 2)
        ]

        tube_from_boxes = TubeVector(v_tdomains, v_codomains)

        self.assertEqual(tube_from_boxes.size(), 2)
        self.assertEqual(tube_from_boxes.tdomain(), Interval(-1., 14.))
        self.assertEqual(tube_from_boxes.codomain()[0], Interval(2., 7.))
        self.assertEqual(tube_from_boxes.codomain()[1], Interval(0., 5.))
        self.assertEqual(tube_from_boxes.nb_slices(), 4)

        self.assertEqual(tube_from_boxes[0](0), Interval(3., 4.))
        self.assertEqual(tube_from_boxes[0](1), Interval(2., 7.))
        self.assertEqual(tube_from_boxes[0](2), Interval(5., 6.))
        self.assertEqual(tube_from_boxes[0](3), Interval(5.5))

        self.assertEqual(tube_from_boxes[0].slice(0).tdomain(),
                         Interval(-1., 10.))
        self.assertEqual(tube_from_boxes[0].slice(1).tdomain(),
                         Interval(10., 10.5))
        self.assertEqual(tube_from_boxes[0].slice(2).tdomain(),
                         Interval(10.5, 12.))
        self.assertEqual(tube_from_boxes[0].slice(3).tdomain(),
                         Interval(12., 14.))

        self.assertEqual(tube_from_boxes[1](0), Interval(0., 2.))
        self.assertEqual(tube_from_boxes[1](1), Interval(1., 3.))
        self.assertEqual(tube_from_boxes[1](2), Interval(2., 4.))
        self.assertEqual(tube_from_boxes[1](3), Interval(3., 5.))

        self.assertEqual(tube_from_boxes[1].slice(0).tdomain(),
                         Interval(-1., 10.))
        self.assertEqual(tube_from_boxes[1].slice(1).tdomain(),
                         Interval(10., 10.5))
        self.assertEqual(tube_from_boxes[1].slice(2).tdomain(),
                         Interval(10.5, 12.))
        self.assertEqual(tube_from_boxes[1].slice(3).tdomain(),
                         Interval(12., 14.))
Exemplo n.º 23
0
 def test_J_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = 6.25
     intv_y = Interval(0.5, 1.)
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, 6.25)
     self.assertEqual(intv_y, Interval(0.5, 1.))
     self.assertEqual(x.nb_slices(), 11)
     self.assertEqual(x(0), Interval(-5.5, 3.))
     self.assertEqual(x(1), Interval(-4.5, 2.5))
     self.assertEqual(x(2), Interval(-3.5, 2.))
     self.assertEqual(x(3), Interval(-2.5, 1.5))
     self.assertEqual(x(4), Interval(-1.5, 1.))
     self.assertEqual(x(5.), Interval(-0.75, 1.))
     self.assertApproxIntv(x(5), Interval(-0.75, 1.4 + 1. / 60.))
     self.assertEqual(x(6), Interval(0.25, 1.125))
     self.assertEqual(x(7), Interval(0.125, 1.75))
     self.assertEqual(x(8), Interval(0.125 - 0.5, 2.75))
     self.assertEqual(x(9), Interval(0.125 - 1., 3.75))
     self.assertEqual(x(10), Interval(0.125 - 1.5, 4.75))
Exemplo n.º 24
0
 def test_Tube_nb_slices(self):
     tube_a = Tube(Interval(0., 12.), 1.)
     self.assertEqual(tube_a.nb_slices(), 12)
     self.assertEqual(tube_a.tdomain(), Interval(0., 12.))
Exemplo n.º 25
0
 def test_N_no_propa(self):
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = Interval(5.5, 8.5)
     intv_y = Interval(2., 5.5)
     self.ctc_eval_nopropa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(intv_t, Interval(6.5, 8.5))
     self.assertEqual(intv_y, Interval(2., 4.))
     self.assertEqual(x.nb_slices(), 12)
     self.assertEqual(x(0), Interval(-5.5, 3.))
     self.assertEqual(x(1), Interval(-4.5, 2.5))
     self.assertEqual(x(2), Interval(-3.5, 2.))
     self.assertEqual(x(3), Interval(-2.5, 1.5))
     self.assertEqual(x(4), Interval(-1.5, 1.))
     self.assertEqual(x(5), Interval(-1., 1.5))
     self.assertEqual(x(6), Interval(-1.5, 2.5))
     self.assertEqual(x(6.5), Interval(0., 2.))
     self.assertEqual(x(7), Interval(-1.5, 2.5))
     self.assertEqual(x(8), Interval(-2., 3.5))
     self.assertEqual(x(9), Interval(-2.5, 4.5))
     self.assertEqual(x(8.5), Interval(1., 4.))
     self.assertEqual(x(10), Interval(-2.5, 4.5))
     self.assertEqual(x(11), Interval(-3., 5.5))
Exemplo n.º 26
0
 def test_Tube_nb_slices2(self):
     tube_b = Tube(Interval(0., 12.), 0.5, Interval(-3., -2.))
     self.assertEqual(tube_b.nb_slices(), 24)
     self.assertEqual(tube_b.tdomain(), Interval(0., 12.))
     self.assertEqual(tube_b(3), Interval(-3., -2.))
     self.assertEqual(tube_b.codomain(), Interval(-3., -2.))
Exemplo n.º 27
0
    def Test_CtcEval_non_zero_derivative_negative_case(self):
        #   SECTION("Test CtcEval, non-zero derivative (negative case)")

        x = Tube(Interval(0., 11.), 1.)
        v = Tube(x)
        v.set(Interval(-1.5, -1.))
        x.set(Interval(6., 8.), 0)

        ctc_eval = CtcEval
        ctc_deriv = CtcDeriv
        ctc_deriv.contract(x, v)

        self.assertEqual(x(0), Interval(6., 8.))
        self.assertEqual(x(1), Interval(4.5, 7.))
        self.assertEqual(x(2), Interval(3., 6.))
        self.assertEqual(x(3), Interval(1.5, 5.))
        self.assertEqual(x(4), Interval(-0., 4.))
        self.assertEqual(x(5), Interval(-1.5, 3.))
        self.assertEqual(x(6), Interval(-3., 2.))
        self.assertEqual(x(7), Interval(-4.5, 1.))
        self.assertEqual(x(8), Interval(-6., 0.))
        self.assertEqual(x(9), Interval(-7.5, -1.))
        self.assertEqual(x(10), Interval(-9., -2.))
Exemplo n.º 28
0
 def setUp(self):
     tube = Tube(Interval(0., 46.), 0.1, Interval(10., 11.))
     self.tube = tube
Exemplo n.º 29
0
 def test_A__propa(self):
     # Test A_propa
     x = Tube(self.x_raw)
     xdot = Tube(self.xdot_raw)
     intv_t = 1.
     intv_y = Interval(-0.5, 1.)
     self.assertEqual(x(1.), Interval(-4.5, 2.5))
     self.ctc_eval_propa.contract(intv_t, intv_y, x, xdot)
     self.assertEqual(x.nb_slices(), 10)
     self.assertEqual(intv_t, 1.)
     self.assertEqual(intv_y, Interval(-0.5, 1.))
     self.assertEqual(x(0), Interval(-1.5, 1.5))
     self.assertEqual(x(1.), intv_y)
     self.assertEqual(x(1), Interval(-1., 2.))
     self.assertEqual(x(2), Interval(-1.5, 2.))
     self.assertApproxIntv(x(3), Interval(-1.5 - 1. / 3., 1.5))
     self.assertEqual(x(4), Interval(-1.5, 1.))
     self.assertEqual(x(5), Interval(-1., 1.5))
     self.assertEqual(x(6), Interval(-1.5, 2.5))
     self.assertEqual(x(7), Interval(-2., 3.5))
     self.assertEqual(x(8), Interval(-2.5, 4.5))
     self.assertEqual(x(9), Interval(-3., 5.5))
Exemplo n.º 30
0
 def test_is_disjoint(self):
     a = IntervalVector(2, Interval(-2, 4))
     b = IntervalVector(2, Interval(1, 3))
     c = IntervalVector(2, Interval(-4, -2.5))
     self.assertFalse(a.is_disjoint(b))
     self.assertTrue(a.is_disjoint(c))