Предположим, что функция логарифмического правдоподобия 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.
Нужно ли предоставлять матрицу Гессе, так как существует более двух переменных?
Я также пробовал метод Нелдера-Мида, но он отнимает много времени.
params = sp.optimize.minimize(fun=f, x0=initial_params, method='Nelder-Mead', args=(data,), options={'disp': True})
Также, что более важно, метод не учитывает границы переменных и в некоторых случаях возвращает значения x, y и z, не имеющие границ.У
s есть какие-то другие методы в scipy или любом другом пакете, который рассматривает такой тип ограниченной оптимизации.Пожалуйста, помогите.