def main(): x = Variable(1) y = Variable(1) constraints = [x >= 0, y >= 0, x+y == 1] objective = Maximize(square(x) + square(y)) problem = Problem(objective, constraints) print("problem is DCP:", problem.is_dcp()) print("problem is DCCP:", is_dccp(problem)) problem.solve(method='dccp') print('solution (x,y): ', x.value, y.value)
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
# prob = Problem( # Minimize( # cvx.max( # cvx.max(cvx.abs(c), axis=1) + r # max dim = c_max + r # ) # ), # constr # ) prob = Problem( Minimize( cvx.max(cvx.abs(c[:, 0]) + r) + cvx.max(cvx.abs(c[:, 1]) + r)), constr) print(prob.is_dcp(), prob.is_dcp()) print(dccp.is_dccp(prob)) prob.solve(method='dccp', solver='ECOS', ep=1e-2, max_slack=1e-2, verbose=True) l = cvx.max(cvx.max(cvx.abs(c), axis=1) + r).value * 2 pi = np.pi ratio = pi * cvx.sum(cvx.square(r)).value / cvx.square(l).value print("ratio =", ratio) # plot plt.figure(figsize=(5, 5)) circ = np.linspace(0, 2 * pi)