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

遗传算法中未操作OrderedDict个体,为何前后打印结果不同?

问题原因及解决办法
  • 核心问题是OrderedDict是可变对象,Python里把它添加到种群(列表)时,传递的是对象的引用,而非独立的副本。你存到新种群里的只是指向原best_individual的指针,不是复制出的全新对象。
  • 内容变化的直接原因:后续的选择、交叉、变异操作中,大概率不小心修改了原best_individual对象本身——比如变异函数直接在传入的OrderedDict上修改键值对,而非生成新的OrderedDict返回。只要原对象被改动,种群里的引用指向的内容自然跟着变。
  • 解决办法:把best_individual加入种群前做一次深拷贝。先导入copy模块,然后执行new_population.append(copy.deepcopy(best_individual)),这样新种群里的是完全独立的新对象,原best_individual再被改动也不会影响它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:50:35