Exemple #1
0
 def test_system_size_avg(self):
     q1 = MapPh1N(MAP.exponential(1.0), PhaseType.exponential(2.0), 5)
     q2 = MapPh1N(MAP.exponential(2.0), PhaseType.exponential(5.0), 10)
     exp_q1 = MM1N(1.0, 2.0, 5)
     exp_q2 = MM1N(2, 5, 10)
     self.assertAlmostEqual(q1.system_size_avg, exp_q1.system_size_avg)
     self.assertAlmostEqual(q2.system_size_avg, exp_q2.system_size_avg)
Exemple #2
0
 def test_wait_time(self):
     q1 = MapPh1N(MAP.exponential(1.0), PhaseType.exponential(2.0), 5)
     q2 = MapPh1N(MAP.exponential(2.0), PhaseType.exponential(5.0), 10)
     exp_q1 = MM1N(1.0, 2.0, 5)
     exp_q2 = MM1N(2, 5, 10)
     self.assertAlmostEqual(q1.wait_time, exp_q1.wait_time)
     self.assertAlmostEqual(q2.wait_time, exp_q2.wait_time)
Exemple #3
0
 def test_system_size_pmf(self):
     q1 = MM1N(1, 2, 10)
     q2 = MM1N(2, 5, 5)
     assert_almost_equal(q1.system_size_pmf(size=3),
                         [0.500244, 0.250122, 0.125061], 6)
     assert_almost_equal(q2.system_size_pmf(size=3),
                         [0.602468, 0.240987, 0.096395], 6)
Exemple #4
0
 def test_system_size_pmf(self):
     q1 = MapPh1N(MAP.exponential(1.0), PhaseType.exponential(2.0), 5)
     q2 = MapPh1N(MAP.exponential(2.0), PhaseType.exponential(5.0), 10)
     exp_q1 = MM1N(1.0, 2.0, 5)
     exp_q2 = MM1N(2, 5, 10)
     assert_almost_equal(q1.system_size_pmf(10), exp_q1.system_size_pmf(10))
     self.assertEqual(len(q1.system_size_pmf()), q1.capacity + 1)
     assert_almost_equal(q2.system_size_pmf(), exp_q2.system_size_pmf())
Exemple #5
0
 def test_wait_time(self):
     q1 = MM1N(1, 2, 5)
     q2 = MM1N(2, 5, 6)
     q3 = MM1N(1, 1, 10)
     q4 = MM1N(2, 1, 100)
     self.assertAlmostEqual(q1.wait_time, 0.40476190476190477)
     self.assertAlmostEqual(q2.wait_time, 0.12758952267394907)
     self.assertAlmostEqual(q3.wait_time, np.inf)
     self.assertAlmostEqual(q4.wait_time, np.inf)
Exemple #6
0
 def test_response_time(self):
     q1 = MM1N(1, 2, 5)
     q2 = MM1N(2, 5, 6)
     q3 = MM1N(1, 1, 10)
     q4 = MM1N(2, 1, 100)
     self.assertAlmostEqual(q1.response_time, 0.9047619047619048)
     self.assertAlmostEqual(q2.response_time, 0.3275895226739491)
     self.assertAlmostEqual(q3.response_time, np.inf)
     self.assertAlmostEqual(q4.response_time, np.inf)
Exemple #7
0
 def test_system_size_avg(self):
     q1 = MM1N(1, 2, 5)
     q2 = MM1N(2, 5, 5)
     q3 = MM1N(1, 1, 10)
     q4 = MM1N(2, 1, 100)
     self.assertAlmostEqual(q1.system_size_avg, 0.9047619047619048)
     self.assertAlmostEqual(q2.system_size_avg, 0.6419895893580104)
     self.assertAlmostEqual(q3.system_size_avg, np.inf)
     self.assertAlmostEqual(q4.system_size_avg, np.inf)
Exemple #8
0
 def test_utilization(self):
     q1 = MM1N(2, 5, 4)
     q2 = MM1N(1, 10, 3)
     q3 = MM1N(5, 5, 2)
     q4 = MM1N(10, 4, 1)
     self.assertAlmostEqual(q1.utilization, 0.4)
     self.assertAlmostEqual(q2.utilization, 0.1)
     self.assertAlmostEqual(q3.utilization, 1.0)
     self.assertAlmostEqual(q4.utilization, 2.5)
Exemple #9
0
 def test_valid_creation(self):
     queue_2_5 = MM1N(arrival_rate=2.0, service_rate=5.0, capacity=1)
     queue_1_10 = MM1N(arrival_rate=1.0, service_rate=10.0, capacity=5)
     self.assertAlmostEqual(queue_2_5.arrival_rate, 2.0)
     self.assertAlmostEqual(queue_2_5.service_rate, 5.0)
     self.assertEqual(queue_2_5.capacity, 1)
     self.assertAlmostEqual(queue_1_10.arrival_rate, 1.0)
     self.assertAlmostEqual(queue_1_10.service_rate, 10.0)
     self.assertAlmostEqual(queue_1_10.capacity, 5)
Exemple #10
0
 def test_departure_process(self):
     queue = MM1N(2.0, 5.0, 200)
     self.assertIsInstance(queue.departure, MAP)
     # Since queue is very long, arrival rate will be close to departure
     # rate.
     self.assertAlmostEqual(queue.departure.rate, queue.arrival_rate, 5)
Exemple #11
0
 def test_service_distribution(self):
     queue = MM1N(1, 2, 5)
     self.assertIsInstance(queue.service, Exp)
     self.assertAlmostEqual(queue.service.rate, queue.service_rate)
Exemple #12
0
 def test_arrival_process(self):
     queue = MM1N(1.0, 2.0, 5)
     self.assertIsInstance(queue.arrival, PoissonProcess)
     self.assertAlmostEqual(queue.arrival.rate, queue.arrival_rate)
Exemple #13
0
 def test_invalid_creation(self):
     with self.assertRaises(ValueError):
         MM1N(0.0, 1, 1)
     with self.assertRaises(ValueError):
         MM1N(-1, 1, 1)
     with self.assertRaises(ValueError):
         MM1N(1, 0, 1)
     with self.assertRaises(ValueError):
         MM1N(1, -1, 1)
     with self.assertRaises(TypeError):
         MM1N('1', 1, 1)
     with self.assertRaises(TypeError):
         MM1N(1, '1', 1)
     with self.assertRaises(TypeError):
         MM1N([1, 2], 1, 1)
     with self.assertRaises(TypeError):
         MM1N(1, [1, 2], 1)
     with self.assertRaises(ValueError):
         MM1N(1, 1, -1)
     with self.assertRaises(ValueError):
         MM1N(1, 1, 0)
     with self.assertRaises(TypeError):
         MM1N(1, 1, '1')
     with self.assertRaises(TypeError):
         MM1N(1, 1, 1.2)
     with self.assertRaises(TypeError):
         MM1N(1, 1, [1, 2])