PyGAD向fitness函数传参提示不支持args参数怎么解决?
PyGAD向适应度函数传递自定义参数的解决方法
报错原因是pygad.GA类的构造函数没有args参数,不能用其他机器学习库常用的args方式传参,可通过以下两种方案实现需求:
- 方案1:使用闭包封装自定义参数
import pygad # 外层函数接收自定义参数 def fitness_wrapper(num): def fitness_function(solution, solution_idx): print(num + 10) return sum(solution) # 返回已经绑定参数的适应度函数 return fitness_function ga_instance = pygad.GA(num_generations=1, num_parents_mating=2, sol_per_pop=3, num_genes=4, fitness_func=fitness_wrapper(num=5), init_range_low=5, init_range_high=15) ga_instance.run()
- 方案2:使用
functools.partial提前绑定参数(更简洁)
import pygad from functools import partial def fitness_function(solution, solution_idx, num): print(num + 10) return sum(solution) # 提前把num参数固定为5,生成仅需接收solution、solution_idx两个入参的新函数 bound_fitness = partial(fitness_function, num=5) ga_instance = pygad.GA(num_generations=1, num_parents_mating=2, sol_per_pop=3, num_genes=4, fitness_func=bound_fitness, init_range_low=5, init_range_high=15) ga_instance.run()
两种方案运行后都会按预期每次调用适应度函数时打印15,符合验证要求。
内容的提问来源于stack exchange,提问作者eignvalue
相关产品推荐
相关产品推荐

