def test_set_fitness_type(self):
        """
        This function tests setting a fitness type.  It also tests the option
        of setting a target value at the same time.

        """

        self.ges.set_fitness_type(CENTER)
        fitl = FitnessList(CENTER)
        self.assertEqual(fitl.get_fitness_type(),
                         self.ges.fitness_list.get_fitness_type())

        fitl = FitnessList(MIN)
        self.ges.set_fitness_type(MIN)
        self.assertEqual(fitl.get_fitness_type(),
                         self.ges.fitness_list.get_fitness_type())

        fitl = FitnessList(MAX)
        self.ges.set_fitness_type(MAX)
        self.assertEqual(fitl.get_fitness_type(),
                         self.ges.fitness_list.get_fitness_type())

        self.assertRaises(ValueError, self.ges.set_fitness_type, "wrong")

        #   Include target value
        fitl = FitnessList(CENTER, 1.0)
        self.ges.set_fitness_type(CENTER, 1.0)
        self.assertEqual(fitl.get_fitness_type(),
                         self.ges.fitness_list.get_fitness_type())
        self.assertEqual(1.0, self.ges.fitness_list._target_value)

        self.assertRaises(ValueError, self.ges.set_fitness_type, CENTER,
                          "test")
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    def test_invert(self):
        fitness = FitnessList(MAX)
        fit = Fitness(fitness)

        self.assertAlmostEqual(.25, fit._invert(4.0))
        self.assertAlmostEqual(-.25, fit._invert(-4.0))
        self.assertAlmostEqual(2.0, fit._invert(0.5))
Exemplo n.º 4
0
    def test_select(self):

        #   attempting to maximize remove worst 3
        self.repl.set_replacement_count(3)
        values = [i for i in self.repl.select()]

        self.assertLessEqual(
            self.repl._fitness_list[values[0]][0],
            self.repl._fitness_list[values[1]][0],
        )
        self.assertLessEqual(
            self.repl._fitness_list[values[1]][0],
            self.repl._fitness_list[values[2]][0],
        )

        #   attempting to minimize remove worst 3
        self.fitness_list = FitnessList(MIN)
        values = [i for i in self.repl.select()]

        self.assertGreaterEqual(
            self.repl._fitness_list[values[0]][0],
            self.repl._fitness_list[values[1]][0],
        )
        self.assertGreaterEqual(
            self.repl._fitness_list[values[1]][0],
            self.repl._fitness_list[values[2]][0],
        )
Exemplo n.º 5
0
    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])
Exemplo n.º 6
0
    def test_classinit_(self):
        """
        Does it set the fitness_list?
        """

        fitness = FitnessList(MAX)
        fit = Fitness(fitness)

        self.assertEqual(fit._fitness_list, fitness)
Exemplo n.º 7
0
    def test_set_selection_list(self):

        sel_type = Selection()
        self.assertEqual(None, sel_type._selection_list)
        sel_type.set_selection_list([1.0, 2.0, 3.0, 4.0, 5.0])
        self.assertEqual(True, isinstance(sel_type._selection_list, list))

        #   test for fitness_list
        fitl = FitnessList(MAX)
        self.assertRaises(ValueError, sel_type.set_selection_list, fitl)
Exemplo n.º 8
0
    def test_set_fitness_list(self):

        #   Do MAX
        fitness = FitnessList(MAX)
        fit = Fitness(fitness)
        fit._fitness_list = None
        self.assertEqual(fit._fitness_list, None)
        fit.set_fitness_list(fitness)
        self.assertEqual(fit._fitness_list, fitness)

        #   Do CENTER selection_list converted to distance from target
        fitness = FitnessList(CENTER, .15)
        fitness.append([.5, 0])
        fitness.append([.25, 1])
        fitness.append([2.5, 2])
        fit = Fitness(fitness)
        fit._fitness_list = None
        self.assertEqual(fit._fitness_list, None)
        fit.set_fitness_list(fitness)
        self.assertEqual(fit._selection_list, [.35, .1, 2.35])
    def test_set_fitness_selections(self):
        """
        This function tests setting a fitness selection class.

        """

        self.ges.set_fitness_selections(Fitness(FitnessList('center')))
        self.assertEqual(1, len(self.ges._fitness_selections))

        self.ges.set_fitness_selections(Fitness(FitnessList('center')))
        self.assertEqual(2, len(self.ges._fitness_selections))

        self.ges._fitness_selections = []

        self.ges.set_fitness_selections(Fitness(FitnessList('center')),
                                        Fitness(FitnessList('center')))
        self.assertEqual(2, len(self.ges._fitness_selections))

        self.ges._fitness_selections = []

        self.assertRaises(ValueError, self.ges.set_fitness_selections, "wrong")
Exemplo n.º 10
0
    def test_classinit_(self):

        fitness_list = FitnessList(MAX)
        fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]])

        fit = FitnessTournament(fitness_list)
        self.assertEqual(2, fit._tournament_size)

        fit = FitnessTournament(fitness_list, tournament_size=3)
        self.assertEqual(3, fit._tournament_size)

        self.assertRaises(ValueError,
                          FitnessTournament,
                          fitness_list,
                          tournament_size=4)
Exemplo n.º 11
0
    def __init__(self):
        """
        Because there are a number of parameters to specify, there are no
        specific variables that are initialized within __init__.

        There is a formidable number of default variables specified in this
        function however.

        """

        #   Parameters for changing generations
        self.stopping_criteria = {
            STOPPING_MAX_GEN: None,
            STOPPING_FITNESS_LANDSCAPE: None
        }
        self._crossover_rate = DEFAULT_CROSSOVER_RATE
        self._children_per_crossover = DEFAULT_CHILDEREN_PER_CROSSOVER
        self._mutation_type = DEFAULT_MUTATION_TYPE
        self._mutation_rate = DEFAULT_MUTATION_RATE
        self._max_fitness_rate = DEFAULT_MAX_FITNESS_RATE

        #   Parameters for phenotype creation
        self._wrap = DEFAULT_WRAP
        self._extend_genotype = DEFAULT_EXTEND_GENOTYPE
        self._start_gene_length = DEFAULT_START_GENE_LENGTH
        self._max_gene_length = DEFAULT_MAX_PROGRAM_LENGTH
        self._max_program_length = DEFAULT_MAX_PROGRAM_LENGTH

        #   Parameters for overall process
        self._generation = 0
        self.fitness_list = FitnessList(CENTER)
        self._fitness_fail = DEFAULT_FITNESS_FAIL
        self._maintain_history = DEFAULT_MAINTAIN_HISTORY
        self._timeouts = DEFAULT_TIMEOUTS

        #   Parameters used during runtime
        self.current_g = None
        self._fitness_selections = []
        self._replacement_selections = []

        self.bnf = {}
        self._population_size = 0
        self.population = []

        self._history = []
    def test_class_init__(self):
        """
        This function tests the initialization of the class.

        """

        ges = GrammaticalEvolution()
        self.assertEqual(None, ges.stopping_criteria[STOPPING_MAX_GEN])
        self.assertEqual(None,
                         ges.stopping_criteria[STOPPING_FITNESS_LANDSCAPE])
        self.assertEqual(DEFAULT_CROSSOVER_RATE, ges._crossover_rate)

        self.assertEqual(DEFAULT_CHILDEREN_PER_CROSSOVER,
                         ges._children_per_crossover)
        self.assertEqual(DEFAULT_MUTATION_TYPE, ges._mutation_type)
        self.assertEqual(DEFAULT_MUTATION_RATE, ges._mutation_rate)
        self.assertEqual(DEFAULT_MAX_FITNESS_RATE, ges._max_fitness_rate)

        #   Parameters for phenotype creation
        self.assertEqual(DEFAULT_WRAP, ges._wrap)
        self.assertEqual(DEFAULT_EXTEND_GENOTYPE, ges._extend_genotype)
        self.assertEqual(DEFAULT_START_GENE_LENGTH, ges._start_gene_length)
        self.assertEqual(DEFAULT_MAX_PROGRAM_LENGTH, ges._max_gene_length)
        self.assertEqual(DEFAULT_MAX_PROGRAM_LENGTH, ges._max_program_length)

        #   Parameters for overall process
        self.assertEqual(0, ges._generation)
        self.assertEqual(FitnessList(CENTER), ges.fitness_list)
        self.assertEqual(DEFAULT_FITNESS_FAIL, ges._fitness_fail)
        self.assertEqual(DEFAULT_MAINTAIN_HISTORY, ges._maintain_history)
        self.assertEqual(DEFAULT_TIMEOUTS, ges._timeouts)

        #   Parameters used during runtime
        self.assertEqual(None, ges.current_g)
        self.assertEqual([], ges._fitness_selections)
        self.assertEqual([], ges._replacement_selections)

        self.assertEqual({}, ges.bnf)
        self.assertEqual(0, ges._population_size)
        self.assertEqual([], ges.population)

        self.assertEqual([], ges._history)
Exemplo n.º 13
0
 def setUp(self):
     #   Check truncation
     self.fitness = FitnessList(MAX)
     self.fitness.extend([[1.5, 0], [2.5, 1], [12.0, 2]])
Exemplo n.º 14
0
    def test_scale_list(self):

        #
        #   fitness type MAX, test select type MAX
        #
        fitness = FitnessList(MAX)
        fitness.extend([[.5, 0], [.25, 1], [2.5, 2]])

        fit = Fitness(fitness)
        fit.set_selection_type(MAX)
        fit._scale_list()

        #   not inverted
        self.assertAlmostEqual(.5, fit._selection_list[0])
        self.assertAlmostEqual(.25, fit._selection_list[1])
        self.assertAlmostEqual(2.5, fit._selection_list[2])

        #
        #   fitness type MAX, test select type MIN
        #
        fit.set_fitness_list(fitness)
        fit.set_selection_type(MIN)
        fit._scale_list()

        #   inverted
        self.assertAlmostEqual(2.0, fit._selection_list[0])
        self.assertAlmostEqual(4.0, fit._selection_list[1])
        self.assertAlmostEqual(0.4, fit._selection_list[2])

        #
        #   fitness type MIN, test select type MAX
        #
        fitness.set_fitness_type(MIN)
        fit.set_fitness_list(fitness)
        fit.set_selection_type(MAX)
        fit._scale_list()

        #   inverted
        self.assertAlmostEqual(2.0, fit._selection_list[0])
        self.assertAlmostEqual(4.0, fit._selection_list[1])
        self.assertAlmostEqual(0.4, fit._selection_list[2])

        #
        #   fitness type MIN, test select type MIN
        #
        fit.set_fitness_list(fitness)
        fit.set_selection_type(MIN)
        fit._scale_list()

        #   not inverted
        self.assertAlmostEqual(.5, fit._selection_list[0])
        self.assertAlmostEqual(.25, fit._selection_list[1])
        self.assertAlmostEqual(2.5, fit._selection_list[2])

        #
        #   fitness type CENTER, test select type MAX
        #
        fitness.set_fitness_type(CENTER)
        fitness.set_target_value(.75)
        fit.set_fitness_list(fitness)
        fit.set_selection_type(MAX)
        fit._scale_list()

        #   inverted
        self.assertAlmostEqual(4.0, fit._selection_list[0])
        self.assertAlmostEqual(2.0, fit._selection_list[1])
        self.assertAlmostEqual(0.5714285714, fit._selection_list[2])

        #
        #   fitness type CENTER, test select type MIN
        #
        fit.set_fitness_list(fitness)
        fit.set_selection_type(MIN)
        fit._scale_list()

        #   not inverted
        self.assertAlmostEqual(.25, fit._selection_list[0])
        self.assertAlmostEqual(.5, fit._selection_list[1])
        self.assertAlmostEqual(1.75, fit._selection_list[2])
Exemplo n.º 15
0
    def setUp(self):
        self.fitness_list = FitnessList(MAX)
        self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]])

        self.repl = ReplacementTournament(self.fitness_list, tournament_size=1)
Exemplo n.º 16
0
 def setUp(self):
     self.fitness_list = FitnessList(MAX)
     self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]])
Exemplo n.º 17
0
    def setUp(self):
        self.fitness_list = FitnessList(MAX)
        self.fitness_list.extend([[1.5, 0], [2.5, 1], [12.0, 2]])

        self.repl = ReplacementDeleteWorst(self.fitness_list,
                                           replacement_count=1)