我有一个目标函数,可以考虑几个参数(a,b,c,d,.)取决于所考虑的数据集的数量。这些参数的约束方式是:
a+b+c+d +..+..<=1
假设我有a,b,c和d;所以a+b+c+d<=delta。我的定义是:
a+b
params = Parameters()
params.add('a', value=0.5, min=0., max=1.)
params.add('m', value=0.5)
params.add('b', expr='m -a')
对于m=delta -c-d,所以c=增量-m-d(我定义n=m-d)
params.add('n', value=0.5)
params.add('delta', value=0.5)
params.add('c', expr='delta-n')
最后n=m=>d=m
params.add('d', expr='m-n')
这是正确的吗?如何设置m,n和δ的最小和最大值?
我遵循在Python lmfit constraints: a < b < c上给出的提示
干杯,曼纽尔
发布于 2020-06-24 02:20:42
我想这没什么。可以在约束表达式上设置min/max值,如
params.add('c', expr='delta-n', min=0, max=1)但我应该说(如果我正确理解你的问题)我很可能会这样做
params = Parameters()
params.add('a', value=0.25, min=0, max=1)
params.add('b', value=0.25, min=0, max=1)
params.add('c', value=0.25, min=0, max=1)
params.add('delta', value=0.05, min=0, max=1)
params.add('d', expr='1-(a+b+c+delta)', min=0, max=1)对我来说更简单..。除非你想知道你的m和n的值.
https://stackoverflow.com/questions/62543862
复制相似问题