Ejemplo n.º 1
0
 def test_charge_cross_threshold(self):
     self.batt = Linear2StageBattery(100, 79.9, 7.68)
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 31.63875847566334)
     self.assertAlmostEqual(self.batt.current_charging_power,
                            7.5933020341592)
     self.assertAlmostEqual(self.batt._current_charge, 80.5327751695133)
Ejemplo n.º 2
0
 def test_valid_charge_negative_noise_tail(self):
     self.batt = Linear2StageBattery(100, 85, 7.68, 1)
     with patch('numpy.random.normal', return_value=-0.288):
         rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 22.8)
     self.assertAlmostEqual(self.batt.current_charging_power, 5.472)
     self.assertAlmostEqual(self.batt._current_charge, 85.456)
Ejemplo n.º 3
0
 def test_valid_charge_no_noise_not_tail(self):
     self.batt = Linear2StageBattery(100, 0, 7.68, 0)
     with patch('numpy.random.normal', return_value=1.2):
         rate = self.batt.charge(16, 240, 5)
     self.assertAlmostEqual(rate, 16)
     self.assertAlmostEqual(self.batt.current_charging_power, 3.84)
     self.assertAlmostEqual(self.batt._current_charge, 0.32)
Ejemplo n.º 4
0
 def test_charge_over_capacity(self):
     self.batt = Linear2StageBattery(100, 99, 7.68)
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 1.574670896040131)
     self.assertAlmostEqual(self.batt.current_charging_power,
                            0.3779210150496315)
     self.assertAlmostEqual(self.batt._current_charge, 99.0314934179208)
Ejemplo n.º 5
0
 def test_charge_at_threshold(self):
     self.batt = Linear2StageBattery(100, 80, 7.68)
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 31.49341792080207)
     self.assertAlmostEqual(self.batt.current_charging_power,
                            7.558420300992497)
     self.assertAlmostEqual(self.batt._current_charge, 80.629868358416)
Ejemplo n.º 6
0
 def test_valid_charge_no_noise_tail(self):
     self.batt = Linear2StageBattery(100, 85, 7.68)
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 23.62006344060197)
     self.assertAlmostEqual(self.batt.current_charging_power,
                            5.668815225744472)
     self.assertAlmostEqual(self.batt._current_charge, 85.472401268812)
Ejemplo n.º 7
0
 def test_valid_charge_negative_noise_not_tail(self):
     self.batt = Linear2StageBattery(100, 0, 7.68, 1)
     with patch('numpy.random.normal', return_value=-0.288):
         rate = self.batt.charge(16, 240, 5)
     self.assertAlmostEqual(rate, 14.8)
     self.assertAlmostEqual(self.batt.current_charging_power, 3.552)
     self.assertAlmostEqual(self.batt._current_charge, 0.296)
Ejemplo n.º 8
0
 def test_over_one_transitions_soc(self):
     with self.assertRaises(ValueError):
         self.batt = Linear2StageBattery(100,
                                         0,
                                         7.68,
                                         transition_soc=1.1,
                                         charge_calculation="stepwise")
Ejemplo n.º 9
0
 def battery_feasible(self, request, duration, voltage, period):
     cap, init = batt_cap_fn(request, duration, voltage, period)
     batt = Linear2StageBattery(cap, init, 32 * voltage / 1000)
     rates = [batt.charge(32, voltage, period) for _ in range(duration)]
     self.assertAlmostEqual((batt._current_charge - init), request)
     self.assertAlmostEqual(request,
                            sum(rates) * voltage / 1000 * (period / 60))
Ejemplo n.º 10
0
 def test_valid_charge_negative_noise_tail(self):
     self.batt = Linear2StageBattery(100, 85, 7.68, noise_level=1)
     with patch("numpy.random.normal", return_value=-0.288):
         rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 22.42006344060197)
     self.assertAlmostEqual(self.batt.current_charging_power,
                            5.380815225744472)
     self.assertAlmostEqual(self.batt._current_charge, 85.448401268812)
Ejemplo n.º 11
0
 def test_charge_over_capacity(self):
     self.batt = Linear2StageBattery(100,
                                     99,
                                     7.68,
                                     charge_calculation="stepwise")
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 1.6)
     self.assertAlmostEqual(self.batt.current_charging_power, 0.384)
     self.assertAlmostEqual(self.batt._current_charge, 99.032)
Ejemplo n.º 12
0
 def test_valid_charge_no_noise_tail(self):
     self.batt = Linear2StageBattery(100,
                                     85,
                                     7.68,
                                     charge_calculation="stepwise")
     rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 24)
     self.assertAlmostEqual(self.batt.current_charging_power, 5.76)
     self.assertAlmostEqual(self.batt._current_charge, 85.48)
Ejemplo n.º 13
0
 def test_charge_over_max_rate_not_tail(self):
     self.batt = Linear2StageBattery(100,
                                     0,
                                     7.68,
                                     charge_calculation="stepwise")
     rate = self.batt.charge(40, 240, 5)
     self.assertAlmostEqual(rate, 32)
     self.assertAlmostEqual(self.batt.current_charging_power, 7.68)
     self.assertAlmostEqual(self.batt._current_charge, 0.64)
Ejemplo n.º 14
0
 def test_zero_pilot_charge(self):
     self.batt = Linear2StageBattery(100,
                                     0,
                                     7.68,
                                     charge_calculation="stepwise")
     with patch("numpy.random.normal", return_value=1.2):
         rate = self.batt.charge(0, 240, 5)
     self.assertAlmostEqual(rate, 0)
     self.assertAlmostEqual(self.batt.current_charging_power, 0)
     self.assertAlmostEqual(self.batt._current_charge, 0)
Ejemplo n.º 15
0
 def test_valid_charge_positive_noise_tail(self):
     self.batt = Linear2StageBattery(100,
                                     85,
                                     7.68,
                                     noise_level=1,
                                     charge_calculation="stepwise")
     with patch("numpy.random.normal", return_value=0.288):
         rate = self.batt.charge(32, 240, 5)
     self.assertAlmostEqual(rate, 25.2)
     self.assertAlmostEqual(self.batt.current_charging_power, 6.048)
     self.assertAlmostEqual(self.batt._current_charge, 85.504)
Ejemplo n.º 16
0
 def setUp(self):
     self.init_charge = 0
     self.batt = Linear2StageBattery(100, self.init_charge, 7.68)
Ejemplo n.º 17
0
 def setUp(self):
     self.batt = Linear2StageBattery(100, 0, 7.68, 0)
Ejemplo n.º 18
0
 def setUp(self):
     self.init_charge = 0
     self.batt = Linear2StageBattery(100,
                                     self.init_charge,
                                     7.68,
                                     charge_calculation="stepwise")
Ejemplo n.º 19
0
 def test_invalid_charge_calculation_method(self):
     with self.assertRaises(ValueError):
         self.batt = Linear2StageBattery(
             100, 0, 7.6, charge_calculation="invalid_method")