示例#1
0
    def test_pf_matrix_completion(self):
        X = cp.Variable((3, 3), pos=True)
        obj = cp.Minimize(cp.pf_eigenvalue(X))
        known_indices = tuple(zip(*[[0, 0], [0, 2], [1, 1], [2, 0], [2, 1]]))
        known_values = np.array([1.0, 1.9, 0.8, 3.2, 5.9])
        constr = [
            X[known_indices] == known_values,
            X[0, 1] * X[1, 0] * X[1, 2] * X[2, 2] == 1.0,
        ]
        problem = cp.Problem(obj, constr)
        # smoke test.
        problem.solve(SOLVER, gp=True)
        optimal_value = problem.value

        param = cp.Parameter(shape=known_values.shape,
                             pos=True,
                             value=0.5 * known_values)
        constr = [
            X[known_indices] == param,
            X[0, 1] * X[1, 0] * X[1, 2] * X[2, 2] == 1.0,
        ]
        problem = cp.Problem(obj, constr)
        problem.solve(SOLVER, gp=True, enforce_dpp=True)

        # now change param to point to known_value, and check we recover
        # the correct optimal value
        param.value = known_values
        problem.solve(SOLVER, gp=True, enforce_dpp=True)
        self.assertAlmostEqual(problem.value, optimal_value)
示例#2
0
 def test_pf_matrix_completion(self):
     X = cvxpy.Variable((3, 3), pos=True)
     obj = cvxpy.Minimize(cvxpy.pf_eigenvalue(X))
     known_indices = tuple(zip(*[[0, 0], [0, 2], [1, 1], [2, 0], [2, 1]]))
     constr = [
         X[known_indices] == [1.0, 1.9, 0.8, 3.2, 5.9],
         X[0, 1] * X[1, 0] * X[1, 2] * X[2, 2] == 1.0,
     ]
     problem = cvxpy.Problem(obj, constr)
     # smoke test.
     problem.solve(SOLVER, gp=True)