【发布时间】:2021-12-01 06:54:03
【问题描述】:
我很好奇您如何将参数发送到 PyGAD 中的适应度函数,即
import pygad
def fitness_function(solution, solution_idx,num):
print(num+10)
return sum(solution)
ga_instance = pygad.GA(num_generations=1,
num_parents_mating=2,
sol_per_pop=3,
num_genes=4,
fitness_func=fitness_function,
init_range_low=5,
init_range_high=15,args=(5,))
我对这段代码的期望是每次调用适应度函数时都会打印 15(只是为了确保传递的参数正常工作)。
但我得到了
python gaex.py
Traceback (most recent call last):
File "gaex.py", line 14, in <module>
init_range_high=15,arg=(5,))
TypeError: __init__() got an unexpected keyword argument 'args'
有什么建议吗?
【问题讨论】:
-
不清楚你想要达到什么目的。我在文档pygad.readthedocs.io/en/latest/… 中看到GA 不接受
args作为参数,并严格定义了fitness_function的定义方式。您是否正在尝试对 Fitness_function 进行参数化,以便您可以通过更改变量来改变其行为? -
嘿 psarka,在所有其他优化库中,您不仅可以传递变量输入,还可以传递可用于计算目标函数的参数。这个库是唯一一个似乎没有这种支持的库,这对我来说很奇怪......
-
这并不奇怪,因为当遗传算法开始运行时,您将无法更改参数。这意味着您的论点将是不变的。这意味着你可以用另一种方式设置它们(我会写一个答案)。