LSQ子问题中的奇异矩阵C-是什么意思?

时间:2019-02-06 12:20:01

标签: python matrix scipy linear-algebra least-squares

我正在尝试使用PythonSciPy解决作为优化问题的Inverse Kinematics (IK)任务。在2D环境中存在一个机械臂,我想在笛卡尔空间中达到特定目标。 我已经使用trust-region constrained method提出了问题,并且可以解决问题。 但是,我想将其与SLSQP进行比较。

在使用SLSQP时,我用恒定目标函数(例如1)和到达任务作为平等约束来表示问题。 em>(约束函数对应于当前机器人关节位置的Forward Kinematics (FK))。

此公式会导致以下错误:

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]。不幸的是,我在 Stack Overflow GitHub 上找到的所有线程的讨论都非常糟糕,没有定论的答案。

起初,我认为这可能是由于我的 Jacobian 不够方形:

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

但是后来我检查了文档和tutorial是否使用SLSQP,如您所见,该示例的相等约束还具有非平方雅可比矩阵,并且不会产生此Singular matrix C in LSQ subproblem错误。

此外,我已经研究过将等式约束条件公式化为两个不等式约束条件,并且这种方法确实有效。但是,我必须做一些根本上是错误的事情,当然使用等式很可能是解决问题的正确方法。

所以,我想我的问题可以归结为:
-这个错误的真正含义是什么?
-我做错了什么?
-我可以在问题表述的哪一点介绍它?

0 个答案:

没有答案