def test_matrix_frac(self): x = Variable(5) M = np.asmatrix(np.random.randn(5, 5)) P = M.T*M s = matrix_frac(x, P) self.assertFalse(s.is_constant()) self.assertFalse(s.is_affine()) self.assertTrue(s.is_quadratic()) self.assertTrue(s.is_dcp())
def equivalent_forms_3(self, solver): m = 100 n = 80 r = 70 np.random.seed(1) A = np.random.randn(m, n) b = np.random.randn(m) G = np.random.randn(r, n) h = np.random.randn(r) # ||Ax-b||^2 = x^T (A^T A) x - 2(A^T b)^T x + ||b||^2 P = np.dot(A.T, A) q = -2 * np.dot(A.T, b) r = np.dot(b.T, b) Pinv = np.linalg.inv(P) obj3 = .1 * (matrix_frac(self.xef, Pinv) + q.T * self.xef + r) cons = [G * self.xef == h] p3 = Problem(Minimize(obj3), cons) self.solve_QP(p3, solver) self.assertAlmostEqual(p3.value, 68.1119420108, places=4)
def equivalent_forms_3(self, solver): m = 100 n = 80 r = 70 numpy.random.seed(1) A = numpy.random.randn(m, n) b = numpy.random.randn(m, 1) G = numpy.random.randn(r, n) h = numpy.random.randn(r, 1) # ||Ax-b||^2 = x^T (A^T A) x - 2(A^T b)^T x + ||b||^2 P = numpy.dot(A.T, A) q = -2 * numpy.dot(A.T, b) r = numpy.dot(b.T, b) Pinv = numpy.linalg.inv(P) obj3 = matrix_frac(self.xef, Pinv) + q.T * self.xef + r cons = [G * self.xef == h] p3 = Problem(Minimize(obj3), cons) s = self.solve_QP(p3, solver) self.assertAlmostEqual(s.opt_val, 681.119420108)