class_docstr: real-coding genetic algorithm
  
  Parameters
  ----------------
  func : function
      The func you want to do optimal
  n_dim : int
      number of variables of func
  size_pop : int
      Size of population
  max_iter : int
      Max of iter
  prob_mut : float between 0 and 1
      Probability of mutation
  prob_cros : float between 0 and 1
      Probability of crossover
  lb : array_like
      The lower bound of every variables of func
  ub : array_like
      The upper bound of every variables of func
  n_processes : int
      Number of processes, 0 means use all cpu
docstr: Routine for real polynomial mutation of an individual
  mutation of 0/1 type chromosome
  :param self:
  :return:
code: def mutation(self):
      """
      Routine for real polynomial mutation of an individual
      mutation of 0/1 type chromosome
      :param self:
      :return:
      """
      #
      size_pop, n_dim, Chrom = self.size_pop, self.n_dim, self.Chrom
      for i in range(size_pop):
          for j in range(n_dim):
              r = np.random.random()
              if r <= self.prob_mut:
                  y = Chrom[i][j]
                  ylow = 0
                  yup = 1
                  delta1 = 1.0 * (y - ylow) / (yup - ylow)
                  delta2 = 1.0 * (yup - y) / (yup - ylow)
                  r = np.random.random()
                  mut_pow = 1.0 / (1 + 1.0)
                  if r <= 0.5:
                      xy = 1.0 - delta1
                      val = 2.0 * r + (1.0 - 2.0 * r) * (
                          xy ** (1 + 1.0)
                      )
                      deltaq = val**mut_pow - 1.0
                  else:
                      xy = 1.0 - delta2
                      val = 2.0 * (1.0 - r) + 2.0 * (r - 0.5) * (
                          xy ** (1 + 1.0)
                      )
                      deltaq = 1.0 - val**mut_pow
                  y = y + deltaq * (yup - ylow)
                  y = min(yup, max(y, ylow))
                  self.Chrom[i][j] = y
      return self.Chrom
  
imports: import numpy
  from .base import SkoBase
  from sko.tools import func_transformer
  from abc import ABCMeta, abstractmethod
  from .operators import crossover, mutation, ranking, selection
label_desc: Use image node_id 5 for calling the RCGA obj's underlying member method code with example usage: obj.mutation() and returns: self