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_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)
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')