code: def crossover_2point(self):
      Chrom, size_pop, len_chrom = (
          self.Chrom,
          self.size_pop,
          self.len_chrom,
      )
      for i in range(0, size_pop, 2):
          n1, n2 = np.random.randint(0, self.len_chrom, 2)
          if n1 > n2:
              n1, n2 = n2, n1
          # crossover at the points n1 to n2
          seg1, seg2 = (
              self.Chrom[i, n1:n2].copy(),
              self.Chrom[i + 1, n1:n2].copy(),
          )
          self.Chrom[i, n1:n2], self.Chrom[i + 1, n1:n2] = seg2, seg1
      return self.Chrom
  
imports: import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: crossover_2point() and returns: self