【问题标题】:lmfit: constraining parameters with respect to other oneslmfit:相对于其他参数约束参数
【发布时间】:2020-01-25 20:58:48
【问题描述】:

我在设置要在 lmfit 中拟合的参数的最小值和最大值时遇到问题。基本上,我有两个参数,ab,它们需要遵守以下约束:

0 < b < 1
0 < a+b < 1
-b < a < 1

虽然前两个很容易实现为:

fit_params.add('b', min = 0, max = 1)
fit_params.add('a_plus_b', min = 0, max = 1)
fit_params.add('a', expr = 'a_plus_b-b')

我现在想念如何在系统中包含我的第三个条件。你能推荐一个更进一步的表达方式吗?

非常感谢, 狮子座

【问题讨论】:

    标签: python lmfit


    【解决方案1】:

    解决方案非常简单,我应该只在这里阅读更好的 lmfit 手册:https://lmfit.github.io/lmfit-py/constraints.html

    无论如何尝试提供帮助,通过在参数表达式中实现 if 语句来给出解决方案。

    fit_params.add('b', min = 0, max = 1)
    fit_params.add('a_plus_b', min = 0, max = 1)
    fit_params.add('a', expr = 'a_plus_b-b if a_plus_b-b > 0 else 0.')
    

    【讨论】:

      【解决方案2】:

      我认为你实际上并不需要你的第三个条件,因为

      -b < a < 1
      

      可以改写为

      0 < a+b < 1+b
      

      但是自从b&gt;0之后,0 &lt; a+b &lt; 1总是会满足这个条件。

      但是,为了更笼统地回答这个问题,您可能需要像使用 a_plus_b 那样引入另一个“差或和变量”并使用它。

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        相关资源
        最近更新 更多