如何将遗传算法的函数超时时间设置为10秒以上?
解决遗传算法调用长耗时函数的超时问题
错误原因:你用的
geneticalgorithm库调用目标函数时,默认设了10秒的超时限制,由func_timeout参数控制。你的损失函数调用外部exe需要2-3分钟,远超这个时间,所以触发了超时断言错误。解决方案:初始化遗传算法模型时,直接添加
func_timeout参数,设置足够长的超时时间(比如3分钟=180秒),或者设为None取消超时限制(不建议这么做,避免程序意外挂起)。
修改后的代码示例:
from geneticalgorithm import geneticalgorithm as ga algorithm_param = {'max_num_iteration': None,\ 'population_size':100,\ 'mutation_probability':0.1,\ 'elit_ratio': 0.01,\ 'crossover_probability': 0.5,\ 'parents_portion': 0.3,\ 'crossover_type':'uniform',\ 'max_iteration_without_improv':None} # 设置超时为3分钟(180秒) ga_model = ga(function=loss_fn, dimension=2, variable_type='real', variable_boundaries=varbound, algorithm_parameters=algorithm_param, func_timeout=180) ga_model.run()
如果要完全取消超时限制:
ga_model = ga(function=loss_fn, dimension=2, variable_type='real', variable_boundaries=varbound, algorithm_parameters=algorithm_param, func_timeout=None)
注意:
func_timeout是ga类初始化的独立参数,不在algorithm_param字典里,所以你之前没找到这个配置项。如果设为None,一定要确保外部exe能稳定结束,别让程序无限挂起。
内容的提问来源于stack exchange,提问作者Kiarash
相关产品推荐
相关产品推荐

