def cross(self, p1, p2): board = Board() split = random.randint(0, p1.board.shape()[1]) for i in range(split): board.set_column(i, p1.board.get_column(i)) for i in range(split, p1.board.shape()[1]): board.set_column(i, p2.board.get_column(i)) board.invariants = InvariantsMerger.merge_invariants(p1, p2, self.__area_function(split)) genotype = BoardGenotype(board) return genotype
def cross(self, p1, p2): board = Board() squares_num = p1.board.shape()[0] / 3 * p2.board.shape()[1] / 3 split = random.randint(0, squares_num) for i in range(split): row_num, col_num = board.get_square_indices(i) board.set_square(row_num, col_num, p1.board.get_square(row_num, col_num)) for i in range(split, p1.board.shape()[1]): row_num, col_num = board.get_square_indices(i) board.set_square(row_num, col_num, p1.board.get_square(row_num, col_num)) board.invariants = InvariantsMerger.merge_invariants(p1, p2, self.__area_function(board.get_square_indices(split))) genotype = BoardGenotype(board) return genotype