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)
Beispiel #2
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
Beispiel #3
0
    # 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)