Решатели в CVXPy кажутся чувствительными к начальным условиям, неточными или несовместимыми - PullRequest
0 голосов
/ 02 ноября 2019

Я недавно реализовал выпуклую программу из своих исследований в CVXPy, и я не могу получить достоверные ответы. Под этим я подразумеваю, что когда я использую:

  1. ECOS, иногда я получаю ответ, а иногда я получаю «Обнаружено ненадежное направление поиска, восстанавливается лучшая итерация (18) и останавливается. ЧИСЛЕННЫЕ ПРОБЛЕМЫ (достигнуто feastol =1.6e-07, reltol = -nan, abstol = 1.8e-04). "При попытке изолировать проблему я жестко запрограммировал все перед решателем, а затем просто продолжал перезапуск, пока он не заработал (т.е. запустил код-> Yay answer-> run-> error-> run-> error-> run-> Yay answer),так что я предполагаю, что это как-то связано с начальными условиями, которые использует решатель? Это очень раздражает, что он не работает последовательно, но когда ECOS работает, я получаю отличную картинку с идеальным ответом. Кроме того, это, кажется, случается чаще, когда я запускаю свои большие примеры.
  2. SCS Я всегда получаю ответ, но он не является сверхточным (например, одно из ограничений в программе говорит, что переменные должны быть неотрицательно, но я получу -.00057). Честно говоря, это не худшая вещь в мире, но я бы почувствовал себя намного лучше, если бы мог повысить точность (эта неточность случается даже на небольших примерах, которые ECOS давит).
  3. CVXOPT просто дает мне"cvxpy.error.SolverError: Либо подходящие конические решатели (['CVXOPT']) не поддерживают вывод конусов по проблеме (SOC, ExpCone), либо в задаче недостаточно ограничений."

Я совершенно новичок в использовании этих решателей, поэтому любые советы или объяснения будут очень полезны. Я даже был бы готов к тому, чтобы ECOS пробовал снова и снова, пока что-то не дало.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...