Numpy 使用scipy库的有界优化

Numpy 使用scipy库的有界优化,numpy,optimization,mathematical-optimization,expectation-maximization,Numpy,Optimization,Mathematical Optimization,Expectation Maximization,让我们假设一个对数似然函数f(x,y,z)=prob(k0)*log((1-x)^(1-y))+prob(k1)*log((1-x)^(1-z)),并且存在约束,使得x,y和z的可能值应该在0和1之间。 目标是最小化函数,并在该最小值处返回x、y和z的值 我尝试使用共轭梯度法scipy库 params = sp.optimize.minimize(fun=f, x0=initial_params, args=(data,), method='CG',

让我们假设一个对数似然函数
f(x,y,z)=prob(k0)*log((1-x)^(1-y))+prob(k1)*log((1-x)^(1-z))
,并且存在约束,使得x,y和z的可能值应该在0和1之间。 目标是最小化函数,并在该最小值处返回x、y和z的值

我尝试使用共轭梯度法scipy库

   params = sp.optimize.minimize(fun=f, x0=initial_params, args=(data,), method='CG',
                                     jac=df,options={'gtol': 1e-05,'disp': True})
该方法在第一次迭代中失败

Warning: Desired error not necessarily achieved due to precision loss.
我是否需要提供Hessian矩阵,因为有两个以上的变量

我也尝试过内尔德-米德法,但这需要很多时间

params = sp.optimize.minimize(fun=f, x0=initial_params, method='Nelder-Mead', args=(data,),  options={'disp': True})
更重要的是,在某些情况下,该方法不考虑变量的界和X、Y和Z的返回值。我

scipy或任何其他软件包中是否有考虑此类有界优化的其他方法。请提供帮助。

根据(查找“界限”参数),界限仅由L-BFGS-B、TNC、SLSQP和trust constr方法支持。L-BFGS-B可能是您的首选,它通常能很好地解决大多数问题