在函数最小化期间​​确保参数'总和为'的方法

时间:2013-02-18 20:48:24

标签: python minimization chi-squared

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

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

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

每轮标准化参数是一个非常糟糕的主意吗? e.g。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你可能想要改变一些事情,以便将约束条件融入到最小化中。如果没有关于你正在做什么的更多细节,我会尝试引入一个Lagrange multiplier。在新生微积分课程中这是很常见的事情,所以你应该能够在网上找到很多例子。

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