Exemple #1
0
def _test_infeasible_max(comm):
    solver = None
    if comm is not None:
        solver = Solver(comm=comm)

    baseline = SolverResults()
    baseline.solution_status = "infeasible"
    baseline.termination_condition = "optimality"
    baseline.objective = -inf
    baseline.bound = -inf
    baseline.nodes = 255
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    if comm is None:
        _execute_tests(comm, problem, baseline)
    else:
        _execute_single_test(problem, baseline, solver=solver)

    baseline = SolverResults()
    baseline.solution_status = "unknown"
    baseline.termination_condition = "queue_empty"
    baseline.objective = -inf
    baseline.bound = -16
    baseline.nodes = 31
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax(branching_abstol=0.1)
    if comm is None:
        _execute_tests(comm, problem, baseline)
    else:
        _execute_single_test(problem, baseline, solver=solver)

    baseline = SolverResults()
    baseline.solution_status = "unknown"
    baseline.termination_condition = "objective_limit"
    baseline.objective = -inf
    baseline.bound = -16
    baseline.nodes = 31
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax(branching_abstol=0.1)
    if comm is None:
        _execute_tests(comm, problem, baseline, bound_stop=-15)
    else:
        _execute_single_test(problem, baseline, solver=solver, bound_stop=-15)

    baseline = SolverResults()
    baseline.solution_status = "feasible"
    baseline.termination_condition = "objective_limit"
    baseline.objective = -20
    baseline.bound = -16
    baseline.absolute_gap = 4
    baseline.relative_gap = 0.2
    baseline.nodes = 31
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax(branching_abstol=0.1,
                                           fixed_objective=-20)
    if comm is None:
        _execute_tests(comm, problem, baseline, bound_stop=-15)
    else:
        _execute_single_test(problem, baseline, solver=solver, bound_stop=-15)

    baseline = SolverResults()
    baseline.solution_status = "unknown"
    baseline.termination_condition = "node_limit"
    baseline.objective = -inf
    baseline.bound = -16
    baseline.nodes = 31
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    if comm is None:
        _execute_tests(comm, problem, baseline, node_limit=31)
    elif comm.size <= 2:
        # skip for larger comm sizes
        # as the node_limit can lead to
        # a number of different outcomes
        _execute_single_test(problem, baseline, solver=solver, node_limit=31)

    baseline = SolverResults()
    baseline.solution_status = "feasible"
    baseline.termination_condition = "node_limit"
    baseline.objective = -17
    baseline.bound = -16
    baseline.absolute_gap = 1.0
    baseline.relative_gap = 1.0 / 17
    baseline.nodes = 31
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax(fixed_objective=-17)
    if comm is None:
        _execute_tests(comm, problem, baseline, node_limit=31)
    elif comm.size <= 2:
        # skip for larger comm sizes
        # as the node_limit can lead to
        # a number of different outcomes
        _execute_single_test(problem, baseline, solver=solver, node_limit=31)

    baseline = SolverResults()
    baseline.solution_status = "unknown"
    baseline.termination_condition = "time_limit"
    baseline.objective = -inf
    baseline.bound = inf
    baseline.nodes = 0
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    if comm is None:
        _execute_tests(comm, problem, baseline, time_limit=0)
    else:
        _execute_single_test(problem, baseline, solver=solver, time_limit=0)

    if solver is None:
        solver = Solver(comm=comm)
    baseline = SolverResults()
    baseline.solution_status = "infeasible"
    baseline.termination_condition = "optimality"
    baseline.objective = -inf
    baseline.bound = -inf
    baseline.nodes = 255
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        _execute_single_test(problem,
                             baseline,
                             solver=solver,
                             queue_strategy=queue_strategy)

    baseline = SolverResults()
    baseline.solution_status = "invalid"
    baseline.termination_condition = "optimality"
    baseline.objective = -100000000
    baseline.bound = -inf
    baseline.nodes = _ignore_value_
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        _execute_single_test(problem,
                             baseline,
                             solver=solver,
                             queue_strategy=queue_strategy,
                             best_objective=-100000000)

    baseline1 = SolverResults()
    baseline1.solution_status = "infeasible"
    baseline1.termination_condition = "optimality"
    baseline1.objective = -inf
    baseline1.bound = -inf
    baseline1.nodes = _ignore_value_
    baseline1.best_node = None
    baseline1.wall_time = _ignore_value_
    baseline2 = SolverResults()
    baseline2.solution_status = "infeasible"
    baseline2.termination_condition = "optimality"
    baseline2.objective = -inf
    baseline2.bound = -inf
    baseline2.nodes = _ignore_value_
    baseline2.best_node = None
    baseline2.wall_time = _ignore_value_
    problem = infeasible_max.InfeasibleMax()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        results = _execute_single_test(problem,
                                       baseline1,
                                       solver=solver,
                                       queue_strategy=queue_strategy)
        queue = solver.save_dispatcher_queue()
        _execute_single_test(problem,
                             baseline2,
                             solver=solver,
                             queue_strategy=queue_strategy,
                             initialize_queue=queue,
                             best_objective=results.objective,
                             best_node=results.best_node)
Exemple #2
0
def _test_zero_objective_min(comm):
    solver = Solver(comm=comm)
    baseline = SolverResults()
    baseline.solution_status = "optimal"
    baseline.termination_condition = "optimality"
    baseline.objective = 0.0
    baseline.bound = -0.0078125
    baseline.absolute_gap = 0.0078125
    baseline.relative_gap = 0.0078125
    baseline.nodes = 255
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = zero_objective_min.ZeroObjectiveMin()
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.01,
                         absolute_gap=0.01)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.0,
                         absolute_gap=0.01)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.01,
                         absolute_gap=0.0)

    baseline = SolverResults()
    baseline.solution_status = "optimal"
    baseline.termination_condition = "optimality"
    baseline.objective = 0.0
    baseline.bound = -0.0009765625
    baseline.absolute_gap = 0.0009765625
    baseline.relative_gap = 0.0009765625
    baseline.nodes = 2047
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = zero_objective_min.ZeroObjectiveMin()
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.001,
                         absolute_gap=0.001)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.0,
                         absolute_gap=0.001)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.001,
                         absolute_gap=0.0)

    baseline = SolverResults()
    baseline.solution_status = "feasible"
    baseline.termination_condition = "queue_empty"
    baseline.objective = 0.0
    baseline.bound = -0.0009765625
    baseline.absolute_gap = 0.0009765625
    baseline.relative_gap = 0.0009765625
    baseline.nodes = 2047
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = zero_objective_min.ZeroObjectiveMin()
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.0001,
                         absolute_gap=0.0001)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.0,
                         absolute_gap=0.0001)
    _execute_single_test(problem,
                         baseline,
                         solver=solver,
                         relative_gap=0.0001,
                         absolute_gap=0.0)

    baseline = SolverResults()
    baseline.solution_status = "optimal"
    baseline.termination_condition = "optimality"
    baseline.objective = 0.0
    baseline.bound = -0.0078125
    baseline.absolute_gap = 0.0078125
    baseline.relative_gap = 0.0078125
    baseline.nodes = None
    baseline.best_node = _ignore_value_
    baseline.wall_time = _ignore_value_
    problem = zero_objective_min.ZeroObjectiveMin()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        elif queue_strategy == "random":
            baseline.nodes = _ignore_value_
        else:
            baseline.nodes = 255
        _execute_single_test(problem,
                             baseline,
                             solver=solver,
                             relative_gap=0.01,
                             absolute_gap=0.01,
                             queue_strategy=queue_strategy)
Exemple #3
0
def _test_delayed_unbounded_min(comm):
    solver = Solver(comm=comm)
    baseline1 = SolverResults()
    baseline1.solution_status = "unbounded"
    baseline1.termination_condition = "optimality"
    baseline1.objective = -inf
    baseline1.bound = -inf
    baseline1.nodes = _ignore_value_
    baseline1.best_node = None
    baseline1.wall_time = _ignore_value_
    baseline2 = SolverResults()
    baseline2.solution_status = "unbounded"
    baseline2.termination_condition = "optimality"
    baseline2.objective = -inf
    baseline2.bound = -inf
    baseline2.nodes = 0
    baseline2.best_node = None
    baseline2.wall_time = _ignore_value_
    problem = delayed_unbounded_min.DelayedUnboundedMin()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        results = _execute_single_test(problem,
                                       baseline1,
                                       solver=solver,
                                       queue_strategy=queue_strategy)
        queue = solver.save_dispatcher_queue()
        _execute_single_test(problem,
                             baseline2,
                             solver=solver,
                             queue_strategy=queue_strategy,
                             initialize_queue=queue,
                             best_objective=results.objective,
                             best_node=results.best_node)
    # test the NestedSolver
    results = _execute_single_test(NestedSolver(problem,
                                                time_limit=None,
                                                node_limit=None),
                                   baseline1,
                                   solver=solver)
    queue = solver.save_dispatcher_queue()
    _execute_single_test(NestedSolver(problem,
                                      time_limit=None,
                                      node_limit=None),
                         baseline2,
                         solver=solver,
                         initialize_queue=queue,
                         best_objective=results.objective,
                         best_node=results.best_node)
Exemple #4
0
def _test_unbounded_max(comm):
    solver = Solver(comm=comm)

    baseline = SolverResults()
    baseline.solution_status = "unbounded"
    baseline.termination_condition = "optimality"
    baseline.objective = inf
    baseline.bound = inf
    baseline.nodes = 1
    baseline.best_node = None
    baseline.wall_time = _ignore_value_
    problem = unbounded_max.UnboundedMax()
    _execute_single_test(problem, baseline, solver=solver)
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        _execute_single_test(problem,
                             baseline,
                             solver=solver,
                             queue_strategy=queue_strategy)

    baseline1 = SolverResults()
    baseline1.solution_status = "unbounded"
    baseline1.termination_condition = "optimality"
    baseline1.objective = inf
    baseline1.bound = inf
    baseline1.nodes = 1
    baseline1.best_node = None
    baseline1.wall_time = _ignore_value_
    baseline2 = SolverResults()
    baseline2.solution_status = "unbounded"
    baseline2.termination_condition = "optimality"
    baseline2.objective = inf
    baseline2.bound = inf
    baseline2.nodes = 0
    baseline2.best_node = None
    baseline2.wall_time = _ignore_value_
    problem = unbounded_max.UnboundedMax()
    for queue_strategy in _queue_strategies:
        if queue_strategy == "custom":
            continue
        results = _execute_single_test(problem,
                                       baseline1,
                                       solver=solver,
                                       queue_strategy=queue_strategy)
        queue = solver.save_dispatcher_queue()
        _execute_single_test(problem,
                             baseline2,
                             solver=solver,
                             queue_strategy=queue_strategy,
                             initialize_queue=queue,
                             best_objective=results.objective,
                             best_node=results.best_node)