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:])
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:])
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 )
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)
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)