Beispiel #1
0
    def test_hyp_hyp_linking_case_2(self):
        T = np.arange(0, 20, eps)
        M = 10
        f = TradeoffFunction(5, 6, 4, 4, 1)
        g = TradeoffFunction(3, 4, 1, 1, -0.5)

        numeric_opt_d, numeric_h = numeric.link_consumption(T, f, g, M)
        analytic_opt_d, analytic_h = analytic.link_consumption(f, g)
        self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
        self.assertTrue(equal("h", T, numeric_h, analytic_h))

        numeric_opt_d, numeric_h = numeric.link_consumption(T, g, f, M)
        analytic_opt_d, analytic_h = analytic.link_consumption(g, f)
        self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
        self.assertTrue(equal("h", T, numeric_h, analytic_h))
Beispiel #2
0
    def test_hyp_hyp_linking_case_3(self):
        T = np.arange(0, 20, eps)
        M = 10
        f = TradeoffFunction(2, 4, 1, 1, -0.5)
        g = TradeoffFunction(5, 10, 4, 4, 1)
        numeric_opt_d, numeric_h = numeric.link_consumption(T, f, g, M)
        analytic_opt_d, analytic_h = analytic.link_consumption(f, g)
        self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
        self.assertTrue(equal("h", T, numeric_h, analytic_h))

        # should also work in the symmetric case
        numeric_opt_d, numeric_h = numeric.link_consumption(T, g, f, M)
        analytic_opt_d, analytic_h = analytic.link_consumption(g, f)
        self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
        self.assertTrue(equal("h", T, numeric_h, analytic_h))
Beispiel #3
0
 def test_lin_lin_same_linking(self):
     T = np.arange(0, 20, eps)
     M = 10
     f = PiecewiseFunction([0], [LinearFunction(0, 5)])
     g = PiecewiseFunction([0], [LinearFunction(0, 5)])
     numeric_opt_d, numeric_h = numeric.link_consumption(T, f, g, M)
     analytic_opt_d, analytic_h = analytic.link_consumption(f, g)
     self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
     self.assertTrue(equal("h", T, numeric_h, analytic_h))
     self.assertEqual(analytic_h(0), 10)
     self.assertEqual(analytic_h(20), 10)
Beispiel #4
0
 def test_linking_numeric(self):
     T = np.arange(0, 20, 0.1)
     link_consumption = lambda f, g, M: numeric.link_consumption(T, f, g, M)
     link_charging = lambda f, cf, M: numeric.link_charging(T, f, cf, M)
     f = PiecewiseFunction([0], [LinearFunction(0, 5)])
     cf = PiecewiseFunction(
         [0, 10],
         [LinearFunction(1, 0), LinearFunction(0, 10)])
     graph = Graph([(0, 1, (False, f)), (1, 2, (True, cf))])
     ds, h = link_path(graph, [0, 1, 2], 10, link_consumption,
                       link_charging)
     self.assertEqual(h(0), 5)
     self.assertEqual(h(5), 0)
Beispiel #5
0
 def test_hyp_lin_linking(self):
     T = np.arange(0, 20, eps)
     M = 10
     f = PiecewiseFunction([0, 2, 6], [
         LinearFunction(0, float('inf')),
         HypLinFunction(5, 1, 1, 0),
         LinearFunction(0, 6 / 5.)
     ])
     self.assertEqual(f(2), 6)
     self.assertEqual(f(6), 1.2)
     self.assertEqual(f(10), 1.2)
     g = PiecewiseFunction([0, 4, 9], [
         LinearFunction(0, float('inf')),
         LinearFunction(-1, 9),
         LinearFunction(0, 0)
     ])
     numeric_opt_d, numeric_h = numeric.link_consumption(T, f, g, M)
     analytic_opt_d, analytic_h = analytic.link_consumption(f, g)
     self.assertTrue(equal("opt_d", T, numeric_opt_d, analytic_opt_d))
     self.assertTrue(equal("h", T, numeric_h, analytic_h))
     self.assertEqual(analytic_h(6), 11)
     self.assertEqual(analytic_h(16), 6 / 5.)