def abs(self, solver): u = Variable(2) constr = [] constr += [abs(u[1] - u[0]) <= 100] prob = Problem(Minimize(sum_squares(u)), constr) print(("The problem is QP: ", prob.is_qp())) self.assertEqual(prob.is_qp(), True) result = prob.solve(solver=solver) self.assertAlmostEqual(result, 0)
def describe_problem(problem: Problem): """ DMCP https://github.com/cvxgrp/dmcp dccp """ st = 'Curvature {}'.format(problem.objective.expr.curvature) st += '\nis disciplined quasiconvex {}'.format(problem.is_dqcp()) st += '\nis disciplined geometric {}'.format(problem.is_dgp()) st += '\nis disciplined quadratic {}'.format(problem.is_qp()) st += '\nis disciplined convex {}'.format(problem.is_dcp()) st += '\nis disciplined concave-convex {}'.format(dccp.is_dccp(problem)) st += '\nis disciplined multi-convex {}'.format(dmcp.is_dmcp(problem)) # todo # SQP sequential quadratic program # SCP seperable convex program # return st