コード例 #1
0
ファイル: test_dqcp.py プロジェクト: xingzai426/cvxpy
    def test_sign(self):
        x = cp.Variable()
        problem = cp.Problem(cp.Minimize(cp.sign(x)), [-2 <= x, x <= -0.5])
        problem.solve(SOLVER, qcp=True)
        self.assertEqual(problem.objective.value, -1)
        self.assertLessEqual(x.value, 0)

        problem = cp.Problem(cp.Maximize(cp.sign(x)), [1 <= x, x <= 2])
        problem.solve(SOLVER, qcp=True)
        self.assertEqual(problem.objective.value, 1.0)
        self.assertGreater(x.value, 0)
コード例 #2
0
ファイル: test_dqcp.py プロジェクト: zxuen/cvxpy
    def test_sign(self) -> None:
        x = cp.Variable()
        problem = cp.Problem(cp.Minimize(cp.sign(x)), [-2 <= x, x <= -0.5])
        problem.solve(SOLVER, qcp=True)
        self.assertEqual(problem.objective.value, -1)
        self.assertLessEqual(x.value, 0)

        problem = cp.Problem(cp.Maximize(cp.sign(x)), [1 <= x, x <= 2])
        problem.solve(SOLVER, qcp=True)
        self.assertEqual(problem.objective.value, 1.0)
        self.assertGreater(x.value, 0)

        # Check that sign doesn't change value.
        vector = np.array([.1, -.3, .5])
        variable = cp.Variable(len(vector))
        problem = cp.Problem(cp.Maximize(vector @ variable),
                             [cp.norm2(variable) <= 1.])
        problem.solve()

        value = variable.value.copy()
        cp.sign(variable).value
        self.assertItemsAlmostEqual(value, variable.value)