首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >神秘--如何正确地停止优化

神秘--如何正确地停止优化
EN

Stack Overflow用户
提问于 2019-07-31 03:47:16
回答 1查看 139关注 0票数 0

我有一个相当大且复杂的Python应用程序,最近我在其中添加了使用Mystic (https://github.com/uqfoundation/mystic)执行非线性优化的功能。优化在独立于主(GUI)线程的单独线程中运行。我天真地使用fmin_powelldiffev来运行优化。

由于目标函数的评估可能很长,因此用户能够点击“停止”按钮并停止模拟。

也就是说,我还没有找到一种智能的方法来实际停止优化线程,因为似乎不需要停止fmin_powelldiffev函数。我不需要在模拟过程中停止当前函数求值,我也很乐意等到当前函数求值完成后再停止优化。

有没有人知道这是否真的可行?

提前感谢您的帮助。

安德里亚。

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-31 10:11:22

我是mystic的作者。一般来说,有两种方法。

如果使用的是function接口(即mystic.solvers.diffev2(...)),则可以使用关键字handler=True。如果您执行信号中断,它将暂停已启用处理程序的正在运行的求解器。需要注意的两件事:(1)调用求解器时必须启用处理程序,(2)对于并行运行的求解器,它可能不会立即生效。

类接口(即solver = mystic.solvers.DifferentialEvolutionSolver(...))允许您使用处理程序(即solver.enable_signal_handler()),并且/或者您也可以使用solver.Step()来使用您自己的解决方案--异步地进行优化。如果使用Step,则它一次仅运行一个迭代,因此您可以编写自己的控件来控制解算器的进度。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57279034

复制
相关文章

相似问题

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