Сингулярная матрица C в подзадаче LSQ - Что это значит? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь решить задачу Inverse Kinematics (IK) как задачу оптимизации, используя Python и SciPy.В 2D-среде существует рука робота, и я хочу достичь определенной цели в декартовом пространстве.Я сформулировал свою проблему, используя метод ограничения области доверия , и он работает.Однако я хотел бы сравнить его с SLSQP .

. При использовании SLSQP я формулирую проблему с помощью целевой функции constant (например, 1) и достигающая задача в виде ограничения равенства (где функция ограничения соответствует прямой кинематике (FK) текущих положений соединения робота).

ThisФормулировка приводит к следующей ошибке:

Singular matrix C in LSQ subproblem    (Exit mode 6)
            Current function value: 0.0
            Iterations: 1
            Function evaluations: 6
            Gradient evaluations: 1

После значительных усилий по поиску этой проблемы в Интернете, я нашел менее горстки людей, имеющих подобные проблемы [4] [5] [6] .И, к сожалению, все темы, которые я нашел в Переполнение стека или GitHub , имеют очень плохие обсуждения и не имеют окончательных ответов.

Сначала я подумал, что, возможно, это былоиз-за того, что мой Jacobian не был квадратным:

>>> print(J)
[[-2.51189432 -1.81188199 -0.83828558]
 [ 0.39717558 -0.31695518 -0.5452314 ]]

Но затем я проверил документацию и учебник для использования SLSQP и, как вы можете видеть, равенство примераограничение также имеет неквадратичный якобиан, и это не приводит к этой ошибке Singular matrix C in LSQ subproblem.

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

Итак, я думаю, мой вопрос действительно сводится к:
- Чтодействительно ли эта ошибка означает?
- Что я делаю не так?
- В какой момент в формулировке проблемы я могу ввести ее?

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