lmfit:相对于其他参数的约束参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lmfit:相对于其他参数的约束参数相关的知识,希望对你有一定的参考价值。

我在设置要适合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')

我现在不知道如何在系统中包含我的第三个条件。您可以提出进一步的建议吗?

非常感谢,狮子座

答案

解决方案非常简单,我应该只在这里阅读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.')
另一答案

我认为您实际上不需要这里的第三个条件,例如

-b < a < 1

可以重写为

0 < a+b < 1+b

但是自b>0起,0 < a+b < 1将始终满足此条件。

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

以上是关于lmfit:相对于其他参数的约束参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 和 lmfit 拟合复杂模型?

C#泛型 类型约束

受其他泛型参数约束的泛型参数

带有片段参数的 Grails render()

lmfit 模型拟合然后预测

数据库及表的创建