Coverage for src/distopf/pyomo_models/solvers.py: 92%

12 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-13 17:34 -0800

1from distopf.pyomo_models.protocol import LindistModelProtocol 

2from distopf.pyomo_models.results import OpfResult 

3import pyomo.environ as pyo 

4from time import perf_counter 

5 

6 

7def solve(model: LindistModelProtocol) -> OpfResult: 

8 # t0 = perf_counter() 

9 # Solve the model 

10 results = pyo.SolverFactory("ipopt").solve(model) 

11 # t1 = perf_counter() 

12 # Extract and display results 

13 if results.solver.status == pyo.SolverStatus.ok: 

14 print("Optimization successful!") 

15 print(f"Objective value: {pyo.value(model.objective)}") 

16 res = OpfResult(model) 

17 

18 else: 

19 raise ValueError(results.solver.status) 

20 return res