Example #1
0
 def test_diag_prob(self):
     """Test a problem with diag.
     """
     C = Variable(3, 3)
     obj = Maximize(C[0, 2])
     constraints = [
         diag(C) == 1, C[0, 1] == 0.6, C[1, 2] == -0.3, C == semidefinite(3)
     ]
     prob = Problem(obj, constraints)
     result = prob.solve()
     self.assertAlmostEqual(result, 0.583151)
Example #2
0
 def test_diag_prob(self):
     """Test a problem with diag.
     """
     C = Variable(3, 3)
     obj = Maximize(C[0, 2])
     constraints = [diag(C) == 1,
                    C[0, 1] == 0.6,
                    C[1, 2] == -0.3,
                    C == semidefinite(3)]
     prob = Problem(obj, constraints)
     result = prob.solve()
     self.assertAlmostEqual(result, 0.583151)
    def test_sdp_problem(self):
        # SDP in objective.
        obj = Minimize(sum_entries(square(self.X - self.F)))
        p = Problem(obj,[])
        result = p.solve()
        self.assertAlmostEqual(result, 1)

        self.assertAlmostEqual(self.X.value[0,0], 1, places=3)
        self.assertAlmostEqual(self.X.value[0,1], 0)
        self.assertAlmostEqual(self.X.value[1,0], 0)
        self.assertAlmostEqual(self.X.value[1,1], 0)

        # SDP in constraint.
        # ECHU: note to self, apparently this is a source of redundancy
        obj = Minimize(sum_entries(square(self.Y - self.F)))
        p = Problem(obj, [self.Y == semidefinite(2)])
        result = p.solve()
        self.assertAlmostEqual(result, 1)

        self.assertAlmostEqual(self.Y.value[0,0], 1, places=4)
        self.assertAlmostEqual(self.Y.value[0,1], 0)
        self.assertAlmostEqual(self.Y.value[1,0], 0)
        self.assertAlmostEqual(self.Y.value[1,1], 0)

        # Index into semidef.
        obj = Minimize(square(self.X[0,0] - 1) +
                       square(self.X[1,0] - 2) +
                       #square(self.X[0,1] - 3) +
                       square(self.X[1,1] - 4))
        p = Problem(obj,[])
        result = p.solve()
        print self.X.value
        self.assertAlmostEqual(result, 0)

        self.assertAlmostEqual(self.X.value[0,0], 1, places=3)
        self.assertAlmostEqual(self.X.value[0,1], 2, places=4)
        self.assertAlmostEqual(self.X.value[1,0], 2, places=4)
        self.assertAlmostEqual(self.X.value[1,1], 4, places=4)
Example #4
0
    def test_sdp_problem(self):
        # SDP in objective.
        obj = Minimize(sum_entries(square(self.X - self.F)))
        p = Problem(obj, [])
        result = p.solve()
        self.assertAlmostEqual(result, 1)

        self.assertAlmostEqual(self.X.value[0, 0], 1, places=3)
        self.assertAlmostEqual(self.X.value[0, 1], 0)
        self.assertAlmostEqual(self.X.value[1, 0], 0)
        self.assertAlmostEqual(self.X.value[1, 1], 0)

        # SDP in constraint.
        # ECHU: note to self, apparently this is a source of redundancy
        obj = Minimize(sum_entries(square(self.Y - self.F)))
        p = Problem(obj, [self.Y == semidefinite(2)])
        result = p.solve()
        self.assertAlmostEqual(result, 1)

        self.assertAlmostEqual(self.Y.value[0, 0], 1, places=4)
        self.assertAlmostEqual(self.Y.value[0, 1], 0)
        self.assertAlmostEqual(self.Y.value[1, 0], 0)
        self.assertAlmostEqual(self.Y.value[1, 1], 0)

        # Index into semidef.
        obj = Minimize(
            square(self.X[0, 0] - 1) + square(self.X[1, 0] - 2) +
            #square(self.X[0,1] - 3) +
            square(self.X[1, 1] - 4))
        p = Problem(obj, [])
        result = p.solve()
        print self.X.value
        self.assertAlmostEqual(result, 0)

        self.assertAlmostEqual(self.X.value[0, 0], 1, places=3)
        self.assertAlmostEqual(self.X.value[0, 1], 2, places=4)
        self.assertAlmostEqual(self.X.value[1, 0], 2, places=4)
        self.assertAlmostEqual(self.X.value[1, 1], 4, places=4)
 def setUp(self):
     self.X = semidefinite(2)
     self.Y = Variable(2, 2)
     self.F = matrix([[1, 0], [0, -1]], tc='d')
 def setUp(self):
     self.X = semidefinite(2)
     self.Y = Variable(2,2)
     self.F = matrix([[1,0],[0,-1]], tc='d')