печать результатов решения генетического алгоритма

#python #function #genetic-algorithm

Вопрос:

Я настраиваю эту функцию, для выполнения которой требуются входные данные других функций. Вот мой код:

Я хочу запустить функцию print_function(genetic_solution)

 def print_function(solution):       # why is my function not changing parameters ????
  
  workerOrderArray(solution)    #returns R1, R2, R3
  
  workerOrderDaysarray(R1, R2, R3) #returns R1_days, R2_days, R3_days
  
  assignSchedule(R1, R1_days)    #returns R1_schedule
  assignSchedule(R2, R2_days)     #returns R2_schedule
  assignSchedule(R3, R3_days)    #returns R3_schedule
  
  schedules= [R1_schedule, R2_schedule, R3_schedule]

  for i in schedules:
    print(i)

  return
 

теперь «генетическое решение» — это решение, которое я получаю от генетического алгоритма, который здесь сложно определить. Но должно быть другое решение, чем изначально определено.. Определенное начальное решение называется «решением».

каждая функция внутри сохраняет глобальную переменную, и эта переменная вводится в следующую функцию…

Теперь я не понимаю вот чего: эта функция, похоже, использует начальное значение всех параметров (из «решения», а не новые значения, возвращенные из «genetic_solution»).

Есть ли что-то, чего мне не хватает в моем коде?

Спасибо!

Комментарии:

1. «каждая функция внутри сохраняет глобальную переменную, и эта переменная вводится в следующую функцию…» Нет! Не делай этого! Это определение кода спагетти. Вместо return этого извлеките результат из функции и назначьте возвращаемое значение локальным переменным. Затем используйте эти локальные переменные в качестве входных данных для следующей функции

2. и как мне назначить возврат локальной переменной?

3. R1, R2, R3 = workerOrderArray(solution) предполагая, что ваша функция workerOrderArray повторяла кортеж из 3 значений

4. на самом деле R1, R2 и R3-это 3 списка, в этом случае как мне назначить каждый из них локальной переменной?

5. я вернул список [R1,R2,R3] и определил локальные переменные как a=workerOrderArray(решение)[0], b= a=workerOrderArray(решение)[1], c=workerOrderArray(решение)[2], есть ли лучший способ сделать это?