示例#1
0
def solve_problem(problem_instance):
    np.random.seed(0)
    problem = problem_instance.create()

    problem.solve(solver=cp.SCS)
    obj0 = problem.objective.value

    logging.debug(problem_instance.name)
    cvxpy_solver.solve(
        problem, rel_tol=REL_TOL.get(problem_instance.name, 1e-3))
    obj1 = problem.objective.value

    # A lower objective is okay
    assert obj1 <= obj0 + 1e-2*abs(obj0) + 1e-4, "%.2e vs. %.2e" % (obj1, obj0)
示例#2
0
def benchmark_epsilon(cvxpy_prob, **kwargs):
    if args.iterations:
        kwargs["abs_tol"] = 1e-8
        kwargs["rel_tol"] = 1e-8
        kwargs["max_iterations"] = args.iterations
    else:
        kwargs["max_iterations"] = 50000

	if "epsilon_eps" in cvxpy_prob.kwargs:
		kwargs["abs_tol"] = cvxpy_prob.kwargs["epsilon_eps"]
		kwargs["rel_tol"] = cvxpy_prob.kwargs["epsilon_eps"]/100.

    cvxpy_solver.solve(cvxpy_prob, **kwargs)
    if args.debug:
        print_constraints(cvxpy_prob)
    return cvxpy_prob.objective.value
示例#3
0
def benchmark_epsilon(cvxpy_prob, **kwargs):
    if args.iterations:
        kwargs["abs_tol"] = 1e-8
        kwargs["rel_tol"] = 1e-8
        kwargs["max_iterations"] = args.iterations
    else:
        kwargs["max_iterations"] = 50000

	if "epsilon_eps" in cvxpy_prob.kwargs:
		kwargs["abs_tol"] = cvxpy_prob.kwargs["epsilon_eps"]
		kwargs["rel_tol"] = cvxpy_prob.kwargs["epsilon_eps"]/100.

    cvxpy_solver.solve(cvxpy_prob, **kwargs)
    if args.debug:
        print_constraints(cvxpy_prob)
    return cvxpy_prob.objective.value
示例#4
0
def solve_problem(problem_instance, params):
    np.random.seed(0)
    problem = problem_instance.create()
    if isinstance(problem, tuple):
        problem, f_eval = problem
    logging.debug(problem_instance.name)

    problem.solve(solver=cp.SCS)
    obj0 = problem.objective.value

    # per-instance rel_tol
    params["rel_tol"] = REL_TOL.get(problem_instance.name, 1e-3)
    cvxpy_solver.solve(problem, **params)
    obj1 = problem.objective.value

    # A lower objective is okay
    assert obj1 <= obj0 + 1e-2*abs(obj0) + 1e-4, "%.2e vs. %.2e" % (obj1, obj0)
示例#5
0
def solve_problem(problem_instance, params):
    np.random.seed(0)
    problem = problem_instance.create()
    if isinstance(problem, tuple):
        problem, f_eval = problem
    logging.debug(problem_instance.name)

    problem.solve(solver=cp.SCS)
    obj0 = problem.objective.value

    # per-instance rel_tol
    params["rel_tol"] = REL_TOL.get(problem_instance.name, 1e-3)
    cvxpy_solver.solve(problem, **params)
    obj1 = problem.objective.value

    # A lower objective is okay
    assert obj1 <= obj0 + 1e-2 * abs(obj0) + 1e-4, "%.2e vs. %.2e" % (obj1,
                                                                      obj0)
示例#6
0
def run_atom(atom, problem, obj_val, solver):
    assert problem.is_dcp()
    print(problem.objective)
    print(problem.constraints)
    if check_solver(problem, solver):
        print("solver", solver)
        tolerance = SOLVER_TO_TOL[solver]
        if solver == EPSILON:
            status, result = cvxpy_solver.solve(
                problem, rel_tol=1e-3, max_iterations=10000)
        else:
            result = problem.solve(solver=solver, verbose=False)
            status = problem.status
        if status is OPTIMAL:
            print(result)
            print(obj_val)
            assert( -tolerance <= (result - obj_val)/(1+np.abs(obj_val)) <= tolerance )
        else:
            assert False, "failed"
def run_atom(atom, problem, obj_val, solver):
    assert problem.is_dcp()
    print((problem.objective))
    print((problem.constraints))
    if check_solver(problem, solver):
        print(("solver", solver))
        tolerance = SOLVER_TO_TOL[solver]
        if solver == EPSILON:
            status, result = cvxpy_solver.solve(problem,
                                                rel_tol=1e-3,
                                                max_iterations=10000)
        else:
            result = problem.solve(solver=solver, verbose=False)
            status = problem.status
        if status is OPTIMAL:
            print(result)
            print(obj_val)
            assert (-tolerance <=
                    (result - obj_val) / (1 + np.abs(obj_val)) <= tolerance)
        else:
            assert False, "failed"
示例#8
0
def benchmark_epsilon(cvxpy_prob):
    cvxpy_solver.solve(cvxpy_prob, rel_tol=1e-2, abs_tol=1e-4)
    return cvxpy_prob.objective.value