0

我正在尝试执行最小化,其中某些参数必须使用PyMinuit总和为一个。我想知道是否有实现这种事情的标准方法?

如果不满足约束,是否通常将函数设置为某个较大的值?例如

def f(params):
    if params.sum() != 1:
        return 1e6
    else:
        ... compute actual value ...

对每一轮的参数进行标准化是一个非常糟糕的主意吗?例如

if params.sum() != 1:
    for param in params:
        param = param / params.sum()

谢谢!

4

1 回答 1

1

我认为您可能想要更改某些内容,以便将约束纳入您的最小化。如果没有关于你在做什么的更多细节,确切地说,我会尝试引入一个Lagrange multiplier。在大一的微积分课程中这是很常见的事情,所以你应该能够在网上找到很多例子。

PS:你使用 PyMinuit 是因为你在做粒子物理学吗?

于 2013-02-18T21:27:42.747 回答