class_docstr: NAS Tuner using Evolution Algorithm, with weight sharing enabled
docstr: initialize populations for evolution tuner
docstr_tok: ["initialize","populations","for","evolution","tuner"]
code: def init_population(
      self, population_size, graph_max_layer, graph_min_layer
  ):
      """
      initialize populations for evolution tuner
      """
      population = []
      graph = Graph(
          max_layer_num=graph_max_layer,
          min_layer_num=graph_min_layer,
          inputs=[
              Layer(LayerType.input.value, output=[4, 5], size="x"),
              Layer(LayerType.input.value, output=[4, 5], size="y"),
          ],
          output=[
              Layer(LayerType.output.value, inputs=[4], size="x"),
              Layer(LayerType.output.value, inputs=[5], size="y"),
          ],
          hide=[
              Layer(
                  LayerType.attention.value, inputs=[0, 1], output=[2]
              ),
              Layer(
                  LayerType.attention.value, inputs=[1, 0], output=[3]
              ),
          ],
      )
      for _ in range(population_size):
          graph_tmp = copy.deepcopy(graph)
          graph_tmp.mutation()
          population.append(
              Individual(
                  indiv_id=self.generate_new_id(),
                  graph_cfg=graph_tmp,
                  result=None,
              )
          )
      return population
  
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 4 for calling the CustomerTuner obj's underlying member method code with example usage: obj.init_population(population_size, graph_max_layer, graph_min_layer) and returns: population