You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中传入遗传算法解调用print_function为何仍使用初始参数值

代码疏漏与修复方案

核心问题

  • 你没有接收内部函数的返回值:调用workerOrderArray(solution)、workerOrderDaysarray等函数时,仅执行了函数逻辑,没有把返回的结果赋值给对应变量。后续代码中使用的R1、R2、R3等变量实际读取的是初始定义的全局值,和本次传入的genetic_solution没有关联。
  • 全局变量依赖导致的数据污染:你提到内部函数会保存全局变量作为后续输入,只要没有显式更新这些全局变量,就算传入了新的solution,后续流程也会一直读取初始的全局参数。

修复代码

优先移除全局变量依赖,通过函数返回值传递数据:

def print_function(solution):
    # 显式接收每个函数的返回值,不再读取全局变量
    R1, R2, R3 = workerOrderArray(solution)
    R1_days, R2_days, R3_days = workerOrderDaysarray(R1, R2, R3)
    R1_schedule = assignSchedule(R1, R1_days)
    R2_schedule = assignSchedule(R2, R2_days)
    R3_schedule = assignSchedule(R3, R3_days)
  
    schedules = [R1_schedule, R2_schedule, R3_schedule]
    for i in schedules:
        print(i)
    return

注意事项

如果内部函数逻辑必须依赖全局变量运行,需要在调用函数后显式更新对应的全局变量值,否则新传入的solution无法作用到后续流程。

内容的提问来源于stack exchange,提问作者QUTADAH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:45:04