Exemplo n.º 1
0
class TestFitnessList(unittest.TestCase):
    """
    This class tests the base class of fitness.
    """
    def setUp(self):
        self.fitness_list = FitnessList(MAX)

        self.fitness_list.append([3.0, 0])
        self.fitness_list.append([2.0, 1])
        self.fitness_list.append([5.0, 2])
        self.fitness_list.append([4.0, 3])
        self.fitness_list.append([1.0, 4])

    def test_class_init_(self):

        fitness_list = FitnessList(MAX)

        #   Is it a list?
        self.assertEqual(True, isinstance(fitness_list, list))

        #   Does the fitness type get set?
        self.assertEqual(MAX, fitness_list._fitness_type)

        #   Does the target_value get set?
        self.assertEqual(0.0, fitness_list._target_value)

        fitness_list = FitnessList(MAX, .5)
        self.assertAlmostEqual(0.5, fitness_list._target_value)

    def test_set_fitness_type(self):

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(MIN, self.fitness_list._fitness_type)

    def test_get_fitness_type(self):

        self.assertEqual(MAX, self.fitness_list.get_fitness_type())

        self.fitness_list._fitness_type = MIN
        self.assertEqual(MIN, self.fitness_list.get_fitness_type())

    def test_set_target_value(self):

        self.fitness_list.set_target_value(0.3)
        self.assertEqual(0.3, self.fitness_list._target_value)

    def test_get_target_value(self):
        self.fitness_list._target_value = .45
        self.assertAlmostEqual(.45, self.fitness_list.get_target_value())

    def test_min_value(self):
        self.assertEqual(1.0, self.fitness_list.min_value())

    def test_max_value(self):
        self.assertEqual(5.0, self.fitness_list.max_value())

    def test_best_value(self):
        self.assertEqual(5.0, self.fitness_list.best_value())

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(1.0, self.fitness_list.best_value())

        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.set_target_value(3.0)
        self.assertEqual(3.0, self.fitness_list.best_value())

    def test_worst_value(self):
        self.assertEqual(1.0, self.fitness_list.worst_value())

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(5.0, self.fitness_list.worst_value())

        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.set_target_value(3.0)
        self.assertEqual(1.0, self.fitness_list.worst_value())

    def test_min_member(self):
        self.assertEqual(4, self.fitness_list.min_member())

    def test_max_member(self):
        self.assertEqual(2, self.fitness_list.max_member())

    def test_best_member(self):
        #   max
        self.assertEqual(2, self.fitness_list.best_member())

        #   min
        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(4, self.fitness_list.best_member())

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.assertEqual(4, self.fitness_list.best_member())

        #   check absolute value on center
        self.fitness_list.append([-.5, 5])
        self.assertEqual(5, self.fitness_list.best_member())

    def test_worst_member(self):
        #   max
        self.assertEqual(4, self.fitness_list.worst_member())

        #   min
        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(2, self.fitness_list.worst_member())

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.assertEqual(2, self.fitness_list.worst_member())

        #   check absolute value on center
        self.fitness_list.append([-5.0, 5])
        self.assertEqual(5, self.fitness_list.worst_member())

    def test_mean(self):

        mean = (3.0 + 2.0 + 5.0 + 4.0 + 1.0) / 5
        self.assertAlmostEqual(mean, self.fitness_list.mean())

    def test_median(self):

        self.assertAlmostEqual(3.0, self.fitness_list.median())

    def test_stddev(self):
        self.assertAlmostEqual(1.5811388301, self.fitness_list.stddev())

    def test_sorted(self):

        #   max
        sorted_list = self.fitness_list.sorted()
        self.assertAlmostEqual(5.0, sorted_list[0][0])
        self.assertEqual(2, sorted_list[0][1])
        self.assertAlmostEqual(4.0, sorted_list[1][0])
        self.assertEqual(3, sorted_list[1][1])
        self.assertAlmostEqual(3.0, sorted_list[2][0])
        self.assertEqual(0, sorted_list[2][1])
        self.assertAlmostEqual(2.0, sorted_list[3][0])
        self.assertEqual(1, sorted_list[3][1])
        self.assertAlmostEqual(1.0, sorted_list[4][0])
        self.assertEqual(4, sorted_list[4][1])

        #   min
        self.fitness_list.set_fitness_type(MIN)
        sorted_list = self.fitness_list.sorted()

        self.assertAlmostEqual(1.0, sorted_list[0][0])
        self.assertEqual(4, sorted_list[0][1])
        self.assertAlmostEqual(2.0, sorted_list[1][0])
        self.assertEqual(1, sorted_list[1][1])
        self.assertAlmostEqual(3.0, sorted_list[2][0])
        self.assertEqual(0, sorted_list[2][1])
        self.assertAlmostEqual(4.0, sorted_list[3][0])
        self.assertEqual(3, sorted_list[3][1])
        self.assertAlmostEqual(5.0, sorted_list[4][0])
        self.assertEqual(2, sorted_list[4][1])

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.append([-0.5, 5])
        sorted_list = self.fitness_list.sorted()

        self.assertAlmostEqual(-0.5, sorted_list[0][0])
        self.assertEqual(5, sorted_list[0][1])
        self.assertAlmostEqual(1.0, sorted_list[1][0])
        self.assertEqual(4, sorted_list[1][1])
        self.assertAlmostEqual(2.0, sorted_list[2][0])
        self.assertEqual(1, sorted_list[2][1])
        self.assertAlmostEqual(3.0, sorted_list[3][0])
        self.assertEqual(0, sorted_list[3][1])
        self.assertAlmostEqual(4.0, sorted_list[4][0])
        self.assertEqual(3, sorted_list[4][1])
        self.assertAlmostEqual(5.0, sorted_list[5][0])
        self.assertEqual(2, sorted_list[5][1])
class TestFitnessList(unittest.TestCase):
    """
    This class tests the base class of fitness.
    """

    def setUp(self):
        self.fitness_list = FitnessList(MAX)

        self.fitness_list.append([3.0, 0])
        self.fitness_list.append([2.0, 1])
        self.fitness_list.append([5.0, 2])
        self.fitness_list.append([4.0, 3])
        self.fitness_list.append([1.0, 4])

    def test_class_init_(self):

        fitness_list = FitnessList(MAX)

        #   Is it a list?
        self.assertEqual(True, isinstance(fitness_list, list))

        #   Does the fitness type get set?
        self.assertEqual(MAX, fitness_list._fitness_type)

        #   Does the target_value get set?
        self.assertEqual(0.0, fitness_list._target_value)

        fitness_list = FitnessList(MAX, 0.5)
        self.assertAlmostEqual(0.5, fitness_list._target_value)

    def test_set_fitness_type(self):

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(MIN, self.fitness_list._fitness_type)

    def test_get_fitness_type(self):

        self.assertEqual(MAX, self.fitness_list.get_fitness_type())

        self.fitness_list._fitness_type = MIN
        self.assertEqual(MIN, self.fitness_list.get_fitness_type())

    def test_set_target_value(self):

        self.fitness_list.set_target_value(0.3)
        self.assertEqual(0.3, self.fitness_list._target_value)

    def test_get_target_value(self):
        self.fitness_list._target_value = 0.45
        self.assertAlmostEqual(0.45, self.fitness_list.get_target_value())

    def test_min_value(self):
        self.assertEqual(1.0, self.fitness_list.min_value())

    def test_max_value(self):
        self.assertEqual(5.0, self.fitness_list.max_value())

    def test_best_value(self):
        self.assertEqual(5.0, self.fitness_list.best_value())

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(1.0, self.fitness_list.best_value())

        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.set_target_value(3.0)
        self.assertEqual(3.0, self.fitness_list.best_value())

    def test_worst_value(self):
        self.assertEqual(1.0, self.fitness_list.worst_value())

        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(5.0, self.fitness_list.worst_value())

        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.set_target_value(3.0)
        self.assertEqual(1.0, self.fitness_list.worst_value())

    def test_min_member(self):
        self.assertEqual(4, self.fitness_list.min_member())

    def test_max_member(self):
        self.assertEqual(2, self.fitness_list.max_member())

    def test_best_member(self):
        #   max
        self.assertEqual(2, self.fitness_list.best_member())

        #   min
        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(4, self.fitness_list.best_member())

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.assertEqual(4, self.fitness_list.best_member())

        #   check absolute value on center
        self.fitness_list.append([-0.5, 5])
        self.assertEqual(5, self.fitness_list.best_member())

    def test_worst_member(self):
        #   max
        self.assertEqual(4, self.fitness_list.worst_member())

        #   min
        self.fitness_list.set_fitness_type(MIN)
        self.assertEqual(2, self.fitness_list.worst_member())

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.assertEqual(2, self.fitness_list.worst_member())

        #   check absolute value on center
        self.fitness_list.append([-5.0, 5])
        self.assertEqual(5, self.fitness_list.worst_member())

    def test_mean(self):

        mean = (3.0 + 2.0 + 5.0 + 4.0 + 1.0) / 5
        self.assertAlmostEqual(mean, self.fitness_list.mean())

    def test_median(self):

        self.assertAlmostEqual(3.0, self.fitness_list.median())

    def test_stddev(self):
        self.assertAlmostEqual(1.5811388301, self.fitness_list.stddev())

    def test_sorted(self):

        #   max
        sorted_list = self.fitness_list.sorted()
        self.assertAlmostEqual(5.0, sorted_list[0][0])
        self.assertEqual(2, sorted_list[0][1])
        self.assertAlmostEqual(4.0, sorted_list[1][0])
        self.assertEqual(3, sorted_list[1][1])
        self.assertAlmostEqual(3.0, sorted_list[2][0])
        self.assertEqual(0, sorted_list[2][1])
        self.assertAlmostEqual(2.0, sorted_list[3][0])
        self.assertEqual(1, sorted_list[3][1])
        self.assertAlmostEqual(1.0, sorted_list[4][0])
        self.assertEqual(4, sorted_list[4][1])

        #   min
        self.fitness_list.set_fitness_type(MIN)
        sorted_list = self.fitness_list.sorted()

        self.assertAlmostEqual(1.0, sorted_list[0][0])
        self.assertEqual(4, sorted_list[0][1])
        self.assertAlmostEqual(2.0, sorted_list[1][0])
        self.assertEqual(1, sorted_list[1][1])
        self.assertAlmostEqual(3.0, sorted_list[2][0])
        self.assertEqual(0, sorted_list[2][1])
        self.assertAlmostEqual(4.0, sorted_list[3][0])
        self.assertEqual(3, sorted_list[3][1])
        self.assertAlmostEqual(5.0, sorted_list[4][0])
        self.assertEqual(2, sorted_list[4][1])

        #   center
        self.fitness_list.set_fitness_type(CENTER)
        self.fitness_list.append([-0.5, 5])
        sorted_list = self.fitness_list.sorted()

        self.assertAlmostEqual(-0.5, sorted_list[0][0])
        self.assertEqual(5, sorted_list[0][1])
        self.assertAlmostEqual(1.0, sorted_list[1][0])
        self.assertEqual(4, sorted_list[1][1])
        self.assertAlmostEqual(2.0, sorted_list[2][0])
        self.assertEqual(1, sorted_list[2][1])
        self.assertAlmostEqual(3.0, sorted_list[3][0])
        self.assertEqual(0, sorted_list[3][1])
        self.assertAlmostEqual(4.0, sorted_list[4][0])
        self.assertEqual(3, sorted_list[4][1])
        self.assertAlmostEqual(5.0, sorted_list[5][0])
        self.assertEqual(2, sorted_list[5][1])