def test_ipopt_solver(model_name): current_dir = pathlib.Path(__file__).parent osil_file = current_dir / 'models' / (model_name + '.osil') pyomo_model = read_pyomo_model(osil_file) problem = problem_from_pyomo_model(pyomo_model) atol = rtol = 1e-4 galini = Galini() galini.update_configuration({ 'galini': { 'constraint_violation_tol': 1e-2, }, 'logging': { 'stdout': True, }, 'branch_and_cut': { 'tolerance': atol, 'relative_tolerance': rtol, 'root_node_feasible_solution_search_timelimit': 0, 'cuts': { 'maxiter': 100, } }, 'cuts_generator': { 'generators': ['outer_approximation'], }, 'ipopt': { 'ipopt': { 'acceptable_constr_viol_tol': 1e-3 }, }, }) set_timelimit(30) start_timelimit() solver = BranchAndBoundSolver(galini) solver.before_solve(pyomo_model, problem) solution = solver.solve(problem) assert solution.status.is_success() sol_file = current_dir / 'solutions' / (model_name + '.sol') expected_solution = read_solution(sol_file) expected_objective = expected_solution['objective'] assert solution.objective is not None assert is_close(expected_objective, solution.objective.value, atol=atol, rtol=rtol) expected_variables = expected_solution['variables'] for var_sol in solution.variables: assert is_close( expected_variables[var_sol.name], var_sol.value, atol=atol, rtol=rtol, )
def test_ipopt_solver(model_name): current_dir = pathlib.Path(__file__).parent osil_file = current_dir / 'models' / (model_name + '.osil') pyomo_model = read_pyomo_model(osil_file) problem = problem_from_pyomo_model(pyomo_model) galini = Galini() galini.update_configuration({ 'galini': { 'constraint_violation_tol': 1e-2, }, 'ipopt': { 'ipopt': { 'acceptable_constr_viol_tol': 1e-3 }, }, }) solver = IpoptNLPSolver(galini) solution = solver.solve(problem) assert solution.status.is_success() sol_file = current_dir / 'solutions' / (model_name + '.sol') expected_solution = read_solution(sol_file) expected_objective = expected_solution['objective'] assert solution.objective is not None assert np.isclose(expected_objective, solution.objective.value) if False: expected_variables = expected_solution['variables'] assert len(expected_variables) == len(solution.variables) for variable, expected in zip(solution.variables, expected_variables): assert np.isclose(expected, variable.value)
def execute(self, args): assert args.problem pyomo_model = read_pyomo_model( args.problem, objective_prefix=args.objective_prefix, ) connected_pyomo_model, _ = create_connected_model(pyomo_model) return self.execute_with_model(connected_pyomo_model, args)
def execute(self, args): assert args.problem pyomo_model = read_pyomo_model( args.problem, objective_prefix=args.objective_prefix, ) problem = problem_from_pyomo_model(pyomo_model) return self.execute_with_problem(pyomo_model, problem, args)
def test_osil_model(order, model_name): if model_name in ['hatfldf.py']: pytest.skip('Known derivative fail.') current_dir = pathlib.Path(__file__).parent osil_file = current_dir / 'models' / model_name pyomo_model = read_pyomo_model(osil_file) dag = problem_from_pyomo_model(pyomo_model) derivative_check(model_name, dag, order)