def test_quad_over_lin(self): x = Variable(3, 5) y = Variable(3, 5) z = Variable() s = quad_over_lin(x-y, z) self.assertFalse(s.is_constant()) self.assertFalse(s.is_affine()) self.assertFalse(s.is_quadratic()) self.assertTrue(s.is_dcp()) t = quad_over_lin(x+2*y, 5) self.assertFalse(t.is_constant()) self.assertFalse(t.is_affine()) self.assertTrue(t.is_quadratic()) self.assertTrue(t.is_dcp())
def quad_over_lin(self, solver): p = Problem(Minimize(0.5 * quad_over_lin(abs(self.x-1), 1)), [self.x <= -1]) self.solve_QP(p, solver) for var in p.variables(): self.assertItemsAlmostEqual(np.array([-1., -1.]), var.value, places=4) for con in p.constraints: self.assertItemsAlmostEqual(np.array([2., 2.]), con.dual_value, places=4)
def quad_over_lin(self, solver): p = Problem(Minimize(0.5 * quad_over_lin(abs(self.x - 1), 1)), [self.x <= -1]) s = self.solve_QP(p, solver) for var in p.variables(): self.assertItemsAlmostEqual(numpy.array([-1., -1.]), s.primal_vars[var.id]) for con in p.constraints: self.assertItemsAlmostEqual(numpy.array([2., 2.]), s.dual_vars[con.id])