class_docstr: Basic Unit for evolution algorithm
code: def mutation(self, indiv_id: int, graph_cfg: Graph = None, info=None):
      self.result = None
      if graph_cfg is not None:
          self.config = graph_cfg
      self.config.mutation()
      self.info = info
      self.parent_id = self.indiv_id
      self.indiv_id = indiv_id
      self.shared_ids.intersection_update(
          {
              layer.hash_id
              for layer in self.config.layers
              if layer.is_delete is False
          }
      )
  
imports: import copy
  import json
  import logging
  import random
  import os
  from threading import Event, Lock, current_thread
  from nni.tuner import Tuner
  from nni.utils import extract_scalar_reward
  from graph import Graph, Layer, LayerType, Enum, graph_dumps, graph_loads, unique
label_desc: Use image node_id 3 for calling the Individual obj's underlying member method code with example usage: obj.mutation(indiv_id, graph_cfg, info) without return types