我正在使用scipy.optimize.differential_evolution 并行最小化多参数目标函数。对于每次迭代,一小部分人需要极长的时间来评估目标函数,导致我的大部分 CPU 内核处于空闲状态。每个目标函数评估都需要调用scipy.integrate.solve_ivp,这是我认为计算陷入困境的地方。
我想修改我的目标函数,以便在solve_ivp
花费太长时间时放弃它的调用。最简单的方法是什么?
我知道多处理包可用于终止需要太长时间的进程,但我不认为这是一个选项,因为differential_evolution
已经multiprocessing.Pool
用于并行化,并且池进程不能创建更多进程?
我想到的唯一其他选择是创建带有内置终止开关计时器的solve_ivp
( source ) 的修改版本。