#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], есть ли лучший способ сделать это?