首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将遗传算法的功能超时设置为10秒以上?

如何将遗传算法的功能超时设置为10秒以上?
EN

Stack Overflow用户
提问于 2022-10-20 14:03:23
回答 1查看 55关注 0票数 0

我有一个丢失函数,它打开一个外部.exe文件进行计算,运行这个可执行文件通常需要2到3分钟。它工作得很好,但是当我想把这个函数传递给遗传算法进行优化时,我会面临这样的错误:

代码语言:javascript
运行
复制
AssertionError: After 10.0 seconds delay func_timeout: the given function 
does not provide any output.

很明显它说GA等了10秒,没有收到任何东西.因为函数需要更多的时间来返回结果(损失),所以它不会继续。

有没有办法将time_out设置为超过10.0秒?我找不到algorithm_param或ga_model本身的选项。以下是我的参数:

代码语言:javascript
运行
复制
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}

ga_model = ga(function=loss_fn,
          dimension=(2),
          variable_type='real',
          variable_boundaries=varbound,
          algorithm_parameters=algorithm_param)

ga_model.run()

我搜索了这里和其他论坛,但是几乎所有相关的问题实际上都是为了将函数限制在特定的时间(手动为进程设置超时),而不是相反的;我想取消限制。

EN

Stack Overflow用户

回答已采纳

发布于 2022-10-20 14:24:58

来自geneticalgorithmGithub页面

功能超时 遗传算法的设计使得如果给定的函数在超时之前没有提供任何输出(默认值是10秒),则该算法将被终止并引发适当的错误。在这种情况下,请确保给定函数正确工作(即给定函数中没有无限循环)。另外,如果给定的函数需要超过10秒才能完成工作,请确保在参数中增加function_timeout。

来自论据部分

@param function_timeout -如果给定函数在function_timeout (单位为秒)之前没有提供输出,则算法会引发错误。例如,当给定函数中有一个无限循环时。

因此,如果您希望在20秒内结束时间,您应该将您的ga函数更改为:

代码语言:javascript
运行
复制
ga_model = ga(function=loss_fn,
          dimension=(2),
          variable_type='real',
          variable_boundaries=varbound,
          algorithm_parameters=algorithm_param,
          function_timeout = 20)   # <- added
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74141241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档