Skip to content

Commit 0d7a162

Browse files
committed
Improve get_status.
1 parent bea0cce commit 0d7a162

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

pyomo/contrib/solver/solvers/knitro/engine.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ class Engine:
3838
obj_nl_expr: Optional[NonlinearExpressionData]
3939
con_nl_expr_map: MutableMapping[int, NonlinearExpressionData]
4040

41+
_status: Optional[int]
42+
4143
def __init__(self):
42-
self._kc = None
4344
self.var_map = {}
4445
self.con_map = {}
4546
self.obj_nl_expr = None
4647
self.con_nl_expr_map = {}
48+
self._kc = None
49+
self._status = None
4750

4851
def __del__(self):
4952
self.close()
@@ -53,7 +56,7 @@ def renew(self):
5356
self._kc = Package.create_context()
5457

5558
def close(self):
56-
if hasattr(self, "_kc") and self._kc is not None:
59+
if self._kc is not None:
5760
self._execute(knitro.KN_free)
5861
self._kc = None
5962

@@ -151,11 +154,14 @@ def set_obj(self, obj: ObjectiveData):
151154

152155
def solve(self) -> int:
153156
self._register_callback()
154-
return self._execute(knitro.KN_solve)
157+
self._status = self._execute(knitro.KN_solve)
158+
return self._status
155159

156160
def get_status(self) -> int:
157-
status, _, _, _ = self._execute(knitro.KN_get_solution)
158-
return status
161+
if self._status is None:
162+
msg = "Solver has not been run yet. Since the solver has not been executed, no status is available."
163+
raise RuntimeError(msg)
164+
return self._status
159165

160166
def get_num_iters(self) -> int:
161167
return self._execute(knitro.KN_get_number_iters)

0 commit comments

Comments
 (0)