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

PyGAD遗传算法solutions与fitness数组长度不匹配问题咨询

问题(a):是否有内置命令可直接对齐合并解与适应度数组

PyGAD 2.18.0及以上版本支持直接批量补全所有解的适应度记录,对齐合并操作可以通过内置方法实现:

  • 先调用cal_population_fitness()方法批量计算所有存储在solutions数组中的解的适应度,补全fitness数组的缺失值
  • 计算完成后直接合并两个数组即可,示例代码如下:
# 入参传入所有已生成的解,批量计算适应度补全记录
ga_instance.cal_population_fitness(pop=ga_instance.solutions)
# 按位置对齐合并为(解, 适应度)的元组数组
merged_array = list(zip(ga_instance.solutions, ga_instance.fitness))

如果使用的PyGAD版本低于2.18.0,没有一键合并的内置接口,需要先手动遍历solutions数组调用自定义适应度函数,补全缺失的适应度记录后再合并

问题(b):fitness数组长度小于solutions数组的原因

按你的参数设置15代迭代、每代种群规模40,理论有效解总数量为15*40=600,和fitness数组长度吻合,solutions数组多出来的40个属于算法运行过程中生成的无效候选解,默认不会被计入适应度统计,常见触发原因如下:

  • 交叉、变异操作生成了不符合你自定义约束规则的解,PyGAD默认会跳过这类解的适应度计算,仅将解存入solutions数组但不追加到fitness数组
  • 你设置了stop_criteria提前终止规则,算法触发终止条件时,最后一代的部分解还没完成适应度计算就终止运行,这部分解只会保留在solutions数组中
  • 自定义适应度函数运行报错时,对应解的适应度不会被写入fitness数组,但解本身会被保留在solutions数组中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:21:03