Exemplo n.º 1
0
    def test_crossover_lists(self):
        list1 = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        list2 = [[0, D, 1, C], [0, C, 0, C], [1, D, 1, D], [1, C, 1, C]]

        axl.seed(0)
        crossed = crossover_lists(list1, list2)
        self.assertEqual(crossed, list1[:3] + list2[3:])

        axl.seed(1)
        crossed = crossover_lists(list1, list2)
        self.assertEqual(crossed, list1[:1] + list2[1:])
Exemplo n.º 2
0
    def test_crossover_lists(self):
        list1 = [[0, C, 1, D], [0, D, 0, D], [1, C, 1, C], [1, D, 1, D]]
        list2 = [[0, D, 1, C], [0, C, 0, C], [1, D, 1, D], [1, C, 1, C]]

        rng = axl.RandomGenerator(seed=5)
        crossed = crossover_lists(list1, list2, rng)
        self.assertEqual(crossed, list1[:3] + list2[3:])

        rng = axl.RandomGenerator(seed=1)
        crossed = crossover_lists(list1, list2, rng)
        self.assertEqual(crossed, list1[:1] + list2[1:])
Exemplo n.º 3
0
 def crossover(self, other):
     if other.__class__ != self.__class__:
         raise TypeError("Crossover must be between the same player classes.")
     transitions_C = crossover_lists(self.hmm.transitions_C, other.hmm.transitions_C)
     transitions_D = crossover_lists(self.hmm.transitions_D, other.hmm.transitions_D)
     emission_probabilities = crossover_lists(
         self.hmm.emission_probabilities, other.hmm.emission_probabilities)
     return self.create_new(
         transitions_C=transitions_C,
         transitions_D=transitions_D,
         emission_probabilities=emission_probabilities
     )
Exemplo n.º 4
0
 def crossover(self, other) -> EvolvablePlayer:
     """
     Creates and returns a new Player instance with a single crossover point.
     """
     if other.__class__ != self.__class__:
         raise TypeError("Crossover must be between the same player classes.")
     cycle_list = crossover_lists(self.cycle, other.cycle)
     cycle = "".join(cycle_list)
     cycle, _ = self._normalize_parameters(cycle)
     return self.create_new(cycle=cycle)
Exemplo n.º 5
0
 def crossover(self, other):
     if other.__class__ != self.__class__:
         raise TypeError(
             "Crossover must be between the same player classes.")
     weights = crossover_lists(self.weights, other.weights)
     return self.create_new(weights=weights)