【问题标题】:How to control the maximum number of iterations in scipy's solve_ivp?scipy的solve_ivp如何控制最大迭代次数?
【发布时间】:2019-05-22 02:36:05
【问题描述】:

我想知道如何限制solve_ivp 进行积分步骤的迭代次数或设置最小步长。我正在运行校准,如果我的参数导致系统难以集成,我想防止求解器花费很长时间。

min_step 参数,但这仅适用于 LSODA 求解器,我正在使用 BDF(因为我的系统很僵硬)。对于旧的odeint,我还可以选择最大集成步骤数,但solve_ivp 似乎不存在。 有谁知道求解器实际上是如何决定何时中断集成,因为它不成功?

【问题讨论】:

  • 您是否也可以尝试隐式radau 方法以及您测量的函数评估次数是多少?如果你有一个化学反应系统,方程应该是dcA/dt = cA*(...) 的形式。如果是这样,您可以更改为明确强制执行正性的指数参数化cA=exp(uA)

标签: python scipy ode


【解决方案1】:

参数你试过了吗

rtol, atol : float and array_like, optional

我认为设置更大的容差也可能会加快这个过程。

【讨论】:

  • 我认为这不是我需要的。我想防止求解器做出微小的步骤或进行大量迭代。据我了解,参数max_step 只是防止集成步骤变得太大。
  • 也许我应该更多地调整我的公差,但增加它们并不一定有帮助。实际上,我减少了它们以防止得到简单的错误结果(负浓度)——甚至加快了模拟速度。但我认为应该有一个单独的参数,当步骤变得太小时,它可以简单地停止集成。
猜你喜欢
  • 2012-11-11
  • 1970-01-01
  • 2016-02-04
  • 2019-11-06
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
相关资源
最近更新 更多