SLSQP выдает ошибку несовместимого ограничения - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь минимизировать функцию (возвращает доход, а входные данные - цены) с 200 переменными, используя scipy.optimize.minimize. В настоящее время я использую вариант SLSQP. SLSQP выбрасывает ограничения неравенства несовместимые ошибки. Итак, я удалил ограничения и попытался запустить его, но оптимизатор не может найти решение и возвращает значения начальной точки. Производная в начальной начальной точке выглядит следующим образом:

 derivative: [-1.0, -3.0, -3.0, -0.0, -419132.0, -0.0, -18.0, -26.0, -1.0, 
-3.0, -17.0, -365.0, -1.0, 0.0, -0.0, -1.0, 0.0, -0.0, 0.0, 0.0, -0.0, 0.0, 
-19.0, -0.0, -1.0, -0.0, -0.0, 0.0, -1320.0, -14.0, -1803947.0, 0.0, 0.0, 
-0.0, -5.0, -0.0, 0.0, -12.0, -1.0, -1.0, -1.0, -0.0, -1.0, 0.0, 0.0, -1.0, 
-0.0, -8.0, -1.0, -1.0, -8.0, -94.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0, 
-1.0, -1.0, -1.0, -2.0, -1.0, -1.0, -0.0, 0.0, -1.0, -1.0, -0.0, -2.0, 1.0, 
-0.0, -0.0, -1.0, -0.0, -1.0, -0.0, -132317496.0, 0.0, -1.0, -0.0, -0.0, 
-0.0, -0.0, -0.0, -1.0, -1.0, 0.0, 0.0, -1.0, -1.0, 10.0, -0.0, 4.0, -3.0, 
-1.0, -4.0, -2.0, -6.0, -3.0, -3.0, -7.0, -5.0, -30.0, -4.0, -2.0, 0.0, 0.0, 
-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -733236331.0, 0.0, 0.0, 0.0, 0.0, 
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0] 

Написанная мною производная верна, поскольку я проверил с помощью scipy.optimize.check_grad, и она возвращает 0.00013283768452133855. Однако для некоторых элементов производные значения очень высокие , Это из-за коэффициентов, которые я получил из моделей глубокого обучения. Когда я пытаюсь приписать эти коэффициенты низкому значению, оптимизатор может работать и сходиться. Итак, кто-нибудь может объяснить мне, почему это происходит?

Уравнение дохода составляет

P1*(e^(beta1*ln(Price1)) + P2*(e^(beta2*ln(Price2))+ ………. + P200*(e^(beta200*ln(Price200))
Derivative is array of [(beta1*(e^(beta1*ln(Price1)))+(e^(beta1*ln(Price1)),...……..,(beta200*(e^(beta200*ln(Price200)))+(e^(beta200*ln(Price200))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...