def test_apply_prop_scaling(self):

        #   This scales the list according to the scaling type
        param = None
        #   Check linear
        fit = FitnessProportionate(self.fitness, SCALING_LINEAR)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.09375, scaling_list[0])
        self.assertAlmostEqual(0.15625, scaling_list[1])
        self.assertAlmostEqual(0.75, scaling_list[2])

        #   Check exponential
        fit = FitnessProportionate(self.fitness, SCALING_EXPONENTIAL)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.014754098360655738, scaling_list[0])
        self.assertAlmostEqual(0.040983606557377046, scaling_list[1])
        self.assertAlmostEqual(0.94426229508196724, scaling_list[2])

        fit = FitnessProportionate(self.fitness, SCALING_EXPONENTIAL)
        scaling_list = fit._apply_prop_scaling(param=1.5)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.038791152234464166, scaling_list[0])
        self.assertAlmostEqual(0.083465270324597968, scaling_list[1])
        self.assertAlmostEqual(0.87774357744093778, scaling_list[2])

        #   Check log
        fit = FitnessProportionate(self.fitness, SCALING_LOG)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.10651459360996007, scaling_list[0])
        self.assertAlmostEqual(0.24070711137026513, scaling_list[1])
        self.assertAlmostEqual(0.6527782950197748, scaling_list[2])

        #   Check truncation
        fit = FitnessProportionate(self.fitness, SCALING_TRUNC)
        scaling_list = fit._apply_prop_scaling(param=2.0)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.0, scaling_list[0])
        self.assertAlmostEqual(0.17241379310344829, scaling_list[1])
        self.assertAlmostEqual(0.82758620689655171, scaling_list[2])
Example #2
0
    def test_class_init_(self):
        #   is the scaling type set
        #   does it check the number range
        fit = FitnessProportionate(self.fitness, SCALING_LINEAR)
        self.assertNotEqual(None, fit._scaling_type)

        #   add some negative numbers
        self.fitness.extend([[-.5, 3], [-.25, 4], [2.5, 2]])
        self.assertRaises(ValueError, FitnessProportionate, self.fitness,
                          SCALING_LINEAR)
Example #3
0
    def test_apply_prop_scaling(self):

        #   This scales the list according to the scaling type
        param = None
        #   Check linear
        fit = FitnessProportionate(self.fitness, SCALING_LINEAR)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.09375, scaling_list[0])
        self.assertAlmostEqual(0.15625, scaling_list[1])
        self.assertAlmostEqual(0.75, scaling_list[2])

        #   Check exponential
        fit = FitnessProportionate(self.fitness, SCALING_EXPONENTIAL)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.014754098360655738, scaling_list[0])
        self.assertAlmostEqual(0.040983606557377046, scaling_list[1])
        self.assertAlmostEqual(0.94426229508196724, scaling_list[2])

        fit = FitnessProportionate(self.fitness, SCALING_EXPONENTIAL)
        scaling_list = fit._apply_prop_scaling(param=1.5)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.038791152234464166, scaling_list[0])
        self.assertAlmostEqual(0.083465270324597968, scaling_list[1])
        self.assertAlmostEqual(0.87774357744093778, scaling_list[2])

        #   Check log
        fit = FitnessProportionate(self.fitness, SCALING_LOG)
        scaling_list = fit._apply_prop_scaling(param)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.10651459360996007, scaling_list[0])
        self.assertAlmostEqual(0.24070711137026513, scaling_list[1])
        self.assertAlmostEqual(0.6527782950197748, scaling_list[2])

        #   Check truncation
        fit = FitnessProportionate(self.fitness, SCALING_TRUNC)
        scaling_list = fit._apply_prop_scaling(param=2.0)
        self.assertAlmostEqual(1.0, sum(scaling_list))

        self.assertAlmostEqual(0.0, scaling_list[0])
        self.assertAlmostEqual(0.17241379310344829, scaling_list[1])
        self.assertAlmostEqual(0.82758620689655171, scaling_list[2])
Example #4
0
    def test_select(self):
        fit = FitnessProportionate(self.fitness, SCALING_LINEAR)

        self.assertEqual(3, len([i for i in fit.select()]))
Example #5
0
 def test_set_scaling_type(self):
     fit = FitnessProportionate(self.fitness, SCALING_LINEAR)
     self.assertEqual(SCALING_LINEAR, fit._scaling_type)
    def test_select(self):
        fit = FitnessProportionate(self.fitness, SCALING_LINEAR)

        self.assertEqual(3, len([i for i in fit.select()]))