Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Minimization 负对数似然最小化的参数约束_Minimization_Log Likelihood_Iminuit_Zfit - Fatal编程技术网

Minimization 负对数似然最小化的参数约束

Minimization 负对数似然最小化的参数约束,minimization,log-likelihood,iminuit,zfit,Minimization,Log Likelihood,Iminuit,Zfit,我试图拟合一个5参数(a,b,c,d,e)模型,其中一个参数受另一个参数的约束 0

我试图拟合一个5参数(a,b,c,d,e)模型,其中一个参数受另一个参数的约束

0 e<| d|

据我所知,我目前使用的是

我只创建了
zfit.Parameters
,并设置了限制,以确保它们可以访问的范围是有效的,再说一次,假设:

d=zfit.参数('d',值=0.5,下限=0.3,上限=1.0,步长=0.01)

e=zfit.参数('e',值=0.1,下限=0.0,上限=0.3,步长=0.01)

到目前为止,它一直运作良好,但我认为这不是正确的做法

所以我的问题是,处理这种约束的正确方法是什么


干杯

我会谨慎使用这个极限,因为它们会阻止变量,理想情况下,它们应该远离最终值

有两种方法可以实现您的目标:

  • 或者“以数学方式”作为逻辑结果施加约束,因此使用组合参数(是其他参数的函数)从另一个参数定义一个参数。如果可能,这应该是首选的方式
  • 另一种选择是在可能性方面加上一个附加条款。然而,当您修改可能性时,这可能会产生影响。最小值会找到一个最小值,但这可能不是您所寻找的最小值。您可以使用SimpleConstraint,并在违反上述任何一项的可能性中添加一个惩罚项(例如
    tf.cast(tf.morer(d,1),tf.float64)*100.
    )。也许还要确保minuit是使用use\u minuit\u grad运行的

嗨!我刚刚尝试了限制选项,并按照它做了,但是,我认为它已经过时了,所以我环顾四周,找到了并添加了以下代码:“def custom_constraint():return tf.cast(tf.morerar(d,1.),tf.float64)*100.dCon=zfit.constraint.SimpleConstraint(custom_constraint,[d])nll.add_constraints(dCon)”我只是想检查一下这是否正确,是否有办法从loss obj获得实际的NLL?在您的pyHEP演示中,所有问题都得到了回答,非常感谢!太好了,非常感谢!我忘记提了,但是我已经更新了关于你上述观点的文档,它确实过时了