当前位置: 首页 > news >正文

PyGAD使用指南

以下是PyGAD中GA类构造函数所有参数的详细说明表格,结合参数功能和实际使用场景(如你的RAG重排序任务)进行解释:

参数名称类型/可选值默认值作用描述
基本迭代设置
num_generations整数-算法迭代的总代数。例如设置为30,表示种群会经历30轮进化(选择、交叉、变异)。在RAG任务中,代数越多可能找到更优文本块组合,但计算成本越高。
num_parents_mating整数-每代中参与交配的父代个体数量。例如10表示从当前种群中选10个优质个体作为父母生成后代。值越大,后代多样性可能越高,但计算量增加。
适应度函数设置
fitness_func函数/方法-评估个体(解决方案)优劣的函数。需返回一个数值(适应度),值越高表示个体越优。在你的RAG任务中,该函数需综合文本块的相关性、多样性等指标(如_rag_fitness_function)。
fitness_batch_size整数/NoneNone适应度计算的批次大小。若为None或1,逐个计算个体适应度;若为3,则每3个个体批量计算。可用于优化大规模种群的计算效率(如结合批量推理加速相关性评分)。
种群初始化设置
initial_population二维数组(形状为(sol_per_pop, num_genes)None用户自定义的初始种群。若为None,则由算法自动生成。在RAG任务中,可手动初始化一批“合理”的文本块选择方案(如优先选相关性高的文本块),加速收敛。
sol_per_pop整数None种群大小(每代的个体数量)。例如50表示每代有50个文本块选择方案。值越大,搜索范围越广但计算成本越高。
num_genes整数None每个个体的基因数量(变量数)。在你的RAG任务中,等于初始召回的文本块数量(如20,每个基因对应“是否选择该文本块”的二进制值)。
init_range_low数值-4初始种群基因的随机生成范围下限(适用于连续值基因)。若基因是二进制(如你的场景),此参数无效。
init_range_high数值4初始种群基因的随机生成范围上限(适用于连续值基因)。若基因是二进制,此参数无效。
gene_type数据类型(如int/float/np.int32等)float基因的数据类型。在你的RAG任务中需设为int(因为基因是0/1二进制值)。
父代选择设置
parent_selection_type字符串("sss"/"rws"/"tournament"/"rank"等)"sss"父代选择策略:
- "sss":稳定状态选择
- "rws":轮盘赌选择
- "tournament":锦标赛选择(常用,配合K_tournament
- "rank":基于排名选择。在RAG任务中,锦标赛选择("tournament")较常用,平衡选择压力和多样性。
keep_parents整数(-1/0/正整数)-1保留到下一代的父代数量:
- -1:保留所有父代
- 0:不保留父代
- 正整数:保留指定数量的父代。若keep_elitism>0,则此参数无效。
keep_elitism整数(0/正整数)1保留到下一代的“精英个体”数量(每代中适应度最高的个体)。例如1表示保留最优个体到下一代,防止优秀方案丢失。在RAG任务中建议设为1~2,加速收敛。
K_tournament整数3锦标赛选择的规模(从K个个体中随机选1个最优者作为父代)。K越大,选择压力越大(更倾向于选优质个体)。在RAG任务中常用3~5。
交叉操作设置
crossover_type字符串("single_point"/"two_points"/"uniform"等)或None"single_point"交叉方式(基因重组策略):
- "single_point":单点交叉
- "two_points":两点交叉(你的代码中使用,适合二进制基因)
- "uniform":均匀交叉
- None:不进行交叉。交叉是产生新个体的主要方式,影响种群多样性。
crossover_probability浮点数(0~1)或NoneNone个体被选中进行交叉的概率。例如0.8表示80%的父代个体参与交叉。若为None,则默认所有父代参与交叉。
变异操作设置
mutation_type字符串("random"/"swap"/"inversion"等)或None"random"变异方式(基因随机变化策略):
- "random":随机替换基因值(你的代码中使用,适合二进制基因)
- "swap":交换两个基因位置
- "inversion":反转基因片段
- None:不进行变异。变异用于维持种群多样性,避免过早收敛。
mutation_probability浮点数(0~1)或长度为2的列表(自适应变异)或NoneNone基因被选中变异的概率。例如0.1表示每个基因有10%概率变异。若设置,则mutation_percent_genesmutation_num_genes失效。在二进制基因(0/1)中,此参数控制变异频率。
mutation_by_replacement布尔值False仅用于mutation_type="random"
- True:直接替换基因为新值(如0→1或1→0,适合二进制基因)
- False:在原基因值上叠加随机值(适合连续值基因)。你的RAG任务中需设为True
mutation_percent_genes字符串("default")或浮点数(0~100)"default"(10%)每代中变异基因的百分比。例如10表示10%的基因会被变异。若mutation_probabilitymutation_num_genes已设置,则此参数无效。
mutation_num_genes整数或NoneNone每代中变异基因的具体数量。例如2表示每代变异2个基因。若mutation_probability已设置,则此参数无效。
random_mutation_min_val数值-1.0随机变异时的数值范围下限(适用于连续值基因)。二进制基因场景中无效。
random_mutation_max_val数值1.0随机变异时的数值范围上限(适用于连续值基因)。二进制基因场景中无效。
基因约束与空间
gene_space列表(离散值)或字典(每个基因独立空间)或NoneNone基因的可能取值范围(离散空间)。例如[0,1]表示基因只能是0或1(你的RAG任务中需设置,确保基因是二进制)。若为字典,可指定每个基因的独立空间(如[0,1,2]表示基因可取值0、1、2)。
gene_constraint列表(每个基因的约束函数)或NoneNone基因的约束条件(每个基因对应一个函数)。例如限制基因值必须为偶数。在RAG任务中可用于强制“选中的文本块总数不超过5”(但你的代码用惩罚项实现,更灵活)。
sample_size整数100为满足gene_constraint时的抽样数量(从样本中选符合约束的基因值)。样本量越大,越可能找到符合约束的值,但计算量增加。
allow_duplicate_genes布尔值True是否允许个体中存在重复基因值。例如False表示一个个体的基因值必须唯一(适用于需避免重复选择的场景,但你的RAG任务中允许重复选择同一文本块吗?不,因此需设为True,但实际通过二进制0/1确保每个文本块只被选一次)。
回调函数
on_start函数/方法或NoneNone算法开始前触发的函数(仅一次)。可用于初始化日志、打印参数等。
on_fitness函数/方法或NoneNone每代适应度计算完成后触发的函数。可用于监控适应度分布、筛选异常值等。
on_parents函数/方法或NoneNone父代选择完成后触发的函数。可用于分析父代特征(如优质文本块的共性)。
on_crossover函数/方法或NoneNone交叉操作完成后触发的函数。可用于验证交叉后个体的有效性(如是否符合文本块数量约束)。
on_mutation函数/方法或NoneNone变异操作完成后触发的函数。可用于统计变异对个体适应度的影响。
on_generation函数/方法或NoneNone每代进化完成后触发的函数。你的代码中用于打印“第X代最优适应度”,方便监控收敛过程。若函数返回"stop",可提前终止算法。
on_stop函数/方法或NoneNone算法停止时触发的函数(无论是否完成所有代数)。可用于保存最终结果、生成报告等。
保存与日志
save_best_solutions布尔值False是否保存每代的最优解到best_solutions属性。便于事后分析进化过程,但可能占用大量内存(尤其代数多或基因数量大时)。
save_solutions布尔值False是否保存每代的所有解到solutions属性。内存消耗大,仅建议小规模实验使用。
suppress_warnings布尔值False是否抑制警告信息(如参数冲突、无效值等)。建议调试时设为False,正式运行时设为True
loggerlogging.Logger对象或None默认日志对象用于记录算法运行信息的日志对象。可自定义日志格式、输出位置(如文件),方便实验复现和调试。
其他设置
stop_criteria字符串或列表(如"saturate_50"表示连续50代适应度不变则停止)或NoneNone提前停止进化的条件。例如"saturate_10"表示连续10代最优适应度无提升时停止,节省计算资源。
parallel_processing整数(线程数)或元组(类型, 数量)(如("thread", 4))或NoneNone并行计算设置:
- None:不并行
- 整数N:使用N个线程
- ("process", 4):使用4个进程。可加速适应度计算(如批量计算文本块相关性)。
random_seed整数或NoneNone随机数种子。设置后可复现实验结果(每次运行的进化路径相同),便于对比不同参数的效果(如你的RAG任务中对比不同适应度函数权重的影响)。
http://www.dtcms.com/a/503101.html

相关文章:

  • 洛谷 B3841 [GESP202306 二级] 自幂数判断
  • 英诺赛科(02577.HK)
  • 做网站服务器什么配置如何建设一个简易的网站
  • 在网站上做承诺书工程平台公司做什么的
  • 深入学习Spring Boot框架
  • 深度拷贝详解
  • 李宏毅机器学习笔记21-26周汇总
  • 特别分享:IOPaint概念及基础知识
  • 【微服务】(2) 环境和工程搭建
  • 做网站工具 不懂代码网站开发项目交接
  • 外贸网站推广平台哪个好网站建设公司相关资质
  • 2025年智能Agent终极指南:从概念到高效营销工具
  • 网络安全 | 深入了解 X.509 证书及其应用
  • Token快过期的三种续期方案
  • 网站建设html代码优化广东新闻联播今天
  • 微服务之配置中心Nacos
  • 好网站推荐娄底高端网站建设
  • h5游戏免费下载:保卫机器人
  • 如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
  • Redis(71)如何确保Redis分布式锁的可靠性?
  • docker安装php+apache
  • 数据查询网站包装设计公司排行榜
  • [JavaEE初阶]网络协议-状态码
  • 5.2 UDP (答案见原书 P230)
  • 做资讯类网站需要什么资质宁波seo推广公司电话
  • 第十五部分:信号量和读写锁
  • 无刷直流电机(BLDC)数学模型深度解析
  • 第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第二赛季--最后一题解读
  • Spring Boot 3零基础教程,WEB 开发 内容协商源码分析 默认的 HttpMessageConverter 自定义返回值格式 笔记34
  • 【嵌入式面试题】STM32F103C8T6 完整元器件解析 + 面试问题答案