根据链接到的文档的提示,不等式约束为
x > y
应翻译为
x = y + something
哪里
something
下限为0。
所以,两次应用这种方法,我认为这应该满足您的要求:
from lmfit import Parameters
params = Parameters()
params.add('a', value=5, vary=True)
params.add('b_minus_a', value=1, vary=True, min=0)
params.add('c_minus_b', value=1, vary=True, min=0)
params.add('b', expr='a + b_minus_a')
params.add('c', expr='b + c_minus_b')
仍然使用三个变量(
a
,则,
b_minus_a
和
c_minus_b
)并施加了不平等约束,但有一点需要注意,差异实际上可能为0。对于浮点数,这通常就足够了,但根据变量的大小,可以将0更改为
1.e-12
。