Files
simulationexam/tests/test_importance_sampling.py
T
2015-12-20 13:43:45 -05:00

122 lines
4.5 KiB
Python

from unittest import TestCase
from random import Random
from network.importance_sampling import (AntennaGenerator,
SuccesiveAntennaGenerator,
BadAntennaGenerator,
BetterSuccesiveAntennaGenerator,
estimate_number_of_activated_antenna)
class TestSuccesiveAntennaGenerator(TestCase):
def test_get_random_antenna(self):
self.antenna_genetator = SuccesiveAntennaGenerator(5, Random(678))
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(ant, 2)
expt = [4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
self.assertListEqual(self.antenna_genetator._antennas, expt)
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(ant, 14)
expt = [15,16,17,18,20,21,22,23,24]
self.assertListEqual(self.antenna_genetator._antennas, expt)
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(ant, -1)
expt = []
self.assertListEqual(self.antenna_genetator._antennas, expt)
def test_get_random_antenna_bottom_line(self):
self.antenna_genetator = SuccesiveAntennaGenerator(5, Random(607))
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(ant, 21)
expt = [23, 24, ]
self.assertListEqual(self.antenna_genetator._antennas, expt)
def test_get_random_antenna_right_line(self):
self.antenna_genetator = SuccesiveAntennaGenerator(5, Random(637))
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(ant, 14)
expt = [15, 16, 17, 18, 20, 21, 22, 23, 24]
self.assertListEqual(self.antenna_genetator._antennas, expt)
def test_get_random_antenna_last_box(self):
self.antenna_genetator = SuccesiveAntennaGenerator(5, Random(631))
ant, _ = self.antenna_genetator.get_random_antenna()
self.assertEqual(24, ant)
expt = []
self.assertListEqual(self.antenna_genetator._antennas, expt)
def test_probability(self):
self.antenna_genetator = SuccesiveAntennaGenerator(5, Random(678))
ant, prob = self.antenna_genetator.get_random_antenna()
self.assertAlmostEqual(prob, 26**-1)
self.assertEqual(ant, 2)
_, prob = self.antenna_genetator.get_random_antenna()
self.assertAlmostEqual(prob, 21**-1)
class TestImportanceSampling(TestCase):
def test_SuccesiveAntennaGenerator(self):
random = Random(666)
est = estimate_number_of_activated_antenna(150, 2, random, SuccesiveAntennaGenerator)
real = (0 + 1 + 1 + 1 + 1 + 2 + 2) / 7
print(real)
print(est)
assert abs(est - real) > 0.1
def test_BadAntennaGenerator(self):
random = Random(666)
est = estimate_number_of_activated_antenna(2500, 2, random, BadAntennaGenerator)
real = (0 + 1 + 1 + 1 + 1 + 2 + 2) / 7
assert abs(est - real) > 0.1
def test_BetterSuccesiveAntennaGenerator(self):
random = Random(666)
est = estimate_number_of_activated_antenna(150, 2, random, BetterSuccesiveAntennaGenerator)
real = (0 + 1 + 1 + 1 + 1 + 2 + 2) / 7
print(real)
print(est)
assert abs(est - real) > 0.1
class TestBadAntennaGenerator(TestCase):
def test_remove_antenna_easy(self):
gen = BadAntennaGenerator(3, Random(666))
gen._remove_antenna(2)
expt = [0,3,4,6,7,8]
self.assertListEqual(gen._antennas, expt)
gen = BadAntennaGenerator(3, Random(666))
gen._remove_antenna(3)
expt = [1, 2, 5, 7, 8]
self.assertListEqual(gen._antennas, expt)
gen = BadAntennaGenerator(3, Random(666))
gen._remove_antenna(4)
expt = [0,2,6,8]
self.assertListEqual(gen._antennas, expt)
gen = BadAntennaGenerator(3, Random(666))
gen._remove_antenna(7)
expt = [0,1,2,3,5]
self.assertListEqual(gen._antennas, expt)
def test_remove_antenna(self):
gen = BadAntennaGenerator(3, Random(666))
gen._remove_antenna(gen._antennas.index(2))
expt = [0,3,4,6,7,8]
self.assertListEqual(gen._antennas, expt)
gen._remove_antenna(gen._antennas.index(0))
expt = [4,6,7,8]
self.assertListEqual(gen._antennas, expt)
gen._remove_antenna(gen._antennas.index(7))
expt = []
self.assertListEqual(gen._antennas, expt)