code: def _initial_population_gsa(population_size, solution_size, lower_bounds,
                              upper_bounds):
      
      if len(lower_bounds) != solution_size or len(upper_bounds) != solution_size:
          raise ValueError(
              "Lower and upper bounds much have a length equal to the problem size."
          )
  
      return common.make_population(population_size, common.random_real_solution,
                                    solution_size, lower_bounds, upper_bounds)
docs: Create a random initial population of floating point values.
  
      Args:
          population_size: an integer representing the number of solutions in the population.
          problem_size: the number of values in each solution.
          lower_bounds: a list, each value is a lower bound for the corresponding
                        part of the solution.
          upper_bounds: a list, each value is a upper bound for the corresponding
                        part of the solution.
  
      Returns:
          list; A list of random solutions.