我制作了一个使用Scipy的minimize()
函数(使用SLSQP求解器)执行多变量约束优化的应用。
某些方案可能需要花费相当长的时间才能进行优化,有时用户可能会无意间触发“漫长的”优化过程,并且可能想要一种方法来终止该过程,修复某些输入然后再试一次。
优化本身是在“后台进程”脚本中完成的,该脚本访问优化任务排队的“任务”数据库表。我还使用minimize()
的{{1}}函数随着优化过程的进展来更新数据库。
文档说,对于“ trust-constr”,如果callback()
返回callback()
,则该过程将终止。
此功能对我来说非常理想,但是我使用的是SLSQP求解器(不是trust-constr),但是不幸的是,当我的True
返回callback()
时,它不会终止求解器。
还有其他方法可以编写代码,以便用户终止优化吗?
我非常确定它需要利用True
函数,以便每次迭代都可以检查用户是否单击了“终止”。
我也尝试过callback()
,但这会杀死整个后台过程。也许有一种方法可以停止并重新启动后台进程?