SLSQP 优化器的多个实例不可能?

multiple instance of SLSQP optimizer not possible?

我已经使用协作优化架构解决了我的问题。也就是说,我有一个组件使用 SLSQP 包装并运行自己的优化。该组件由更高级别的问题调用。如果我 select COBYLA 作为顶级优化器而不是 SLSQP,它就可以很好地工作。据我了解,这是因为 scipy 优化器不可重入——没有多个实例 运行 同时存在。

有什么办法解决这个问题,即在一个问题中独立地使用 scipy SLSQP 优化器 运行 的两个实例? OpenMDAO 1.x 中的子问题 class 是否旨在解决这个问题?

SLSQP 的不可重入性质无法通过 python 层中的任何 class 结构技巧真正解决。这是fortran层内存分配的问题,不管是哪个对象调用的,最终你都会下到那里去。

这里有一些选项:

  1. 在一个级别使用 SLSQP,在另一个级别使用 COBYLA
  2. 将 SLSQP 修改为 re-entrant
  3. 改用 IPOPT