test_qpOASES_solver_mat_filling.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:toppra 作者: hungpham2511 项目源码 文件源码
def test_matrices_A_after_func_fill(self, qpOASES_mat_fixtures):
        """ Verify qpOASES matrices after filling.
        """
        pcs, pp = qpOASES_mat_fixtures

        random_fill([pp.A])
        pp._fill_matrices()
        # A
        # operational rows
        for i in range(pp.N+1):
            assert np.allclose(pp.A[i, :pp.nop, :], np.zeros((pp.nop, pp.nV)))

            # Assert canonical part if there are canonical constraints
            a_expected = np.hstack(map(lambda pc: pc.a[i], pcs))
            b_expected = np.hstack(map(lambda pc: pc.b[i], pcs))

            assert np.allclose(pp.A[i, pp.nop: pp.nop + pp.nm, 0], a_expected)
            assert np.allclose(pp.A[i, pp.nop: pp.nop + pp.nm, 1], b_expected)
            assert np.allclose(pp.A[i, pp.nop: pp.nop + pp.nm, 2:],
                               np.zeros((pp.nm, pp.nv)))

            a_expected = np.hstack(map(lambda pc: pc.abar[i], pcs))
            assert np.allclose(
                pp.A[i, pp.nop + pp.nm: pp.nop + pp.nm + pp.neq, 0],
                a_expected)

            b_expected = np.hstack(map(lambda pc: pc.bbar[i], pcs))
            assert np.allclose(
                pp.A[i, pp.nop + pp.nm: pp.nop + pp.nm + pp.neq, 1],
                b_expected)

            D_expected = block_diag(*map(lambda pc: - pc.D[i], pcs))
            assert np.allclose(
                pp.A[i, pp.nop + pp.nm: pp.nop + pp.nm + pp.neq, 2:],
                D_expected)

            G_expected = block_diag(*map(lambda pc: pc.G[i], pcs))
            assert np.allclose(
                pp.A[i, pp.nop + pp.nm + pp.neq:
                     pp.nop + pp.nm + pp.neq + pp.niq, 2:], G_expected)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号