@@ -828,7 +828,28 @@ def _solve(
828828 -------
829829 Result
830830 """
831- CONDITION_MAP : dict [str , str ] = {}
831+ # https://ergo-code.github.io/HiGHS/dev/structures/enums/#HighsModelStatus
832+ CONDITION_MAP : dict [highspy .HighsModelStatus , TerminationCondition ] = {
833+ highspy .HighsModelStatus .kNotset : TerminationCondition .unknown ,
834+ highspy .HighsModelStatus .kLoadError : TerminationCondition .internal_solver_error ,
835+ highspy .HighsModelStatus .kModelError : TerminationCondition .internal_solver_error ,
836+ highspy .HighsModelStatus .kPresolveError : TerminationCondition .internal_solver_error ,
837+ highspy .HighsModelStatus .kSolveError : TerminationCondition .internal_solver_error ,
838+ highspy .HighsModelStatus .kPostsolveError : TerminationCondition .internal_solver_error ,
839+ highspy .HighsModelStatus .kModelEmpty : TerminationCondition .unknown ,
840+ highspy .HighsModelStatus .kMemoryLimit : TerminationCondition .resource_interrupt ,
841+ highspy .HighsModelStatus .kOptimal : TerminationCondition .optimal ,
842+ highspy .HighsModelStatus .kInfeasible : TerminationCondition .infeasible ,
843+ highspy .HighsModelStatus .kUnboundedOrInfeasible : TerminationCondition .infeasible_or_unbounded ,
844+ highspy .HighsModelStatus .kUnbounded : TerminationCondition .unbounded ,
845+ highspy .HighsModelStatus .kObjectiveBound : TerminationCondition .terminated_by_limit ,
846+ highspy .HighsModelStatus .kObjectiveTarget : TerminationCondition .terminated_by_limit ,
847+ highspy .HighsModelStatus .kTimeLimit : TerminationCondition .time_limit ,
848+ highspy .HighsModelStatus .kIterationLimit : TerminationCondition .iteration_limit ,
849+ highspy .HighsModelStatus .kSolutionLimit : TerminationCondition .terminated_by_limit ,
850+ highspy .HighsModelStatus .kInterrupt : TerminationCondition .user_interrupt ,
851+ highspy .HighsModelStatus .kUnknown : TerminationCondition .unknown ,
852+ }
832853
833854 if log_fn is not None :
834855 self .solver_options ["log_file" ] = path_to_string (log_fn )
@@ -844,10 +865,10 @@ def _solve(
844865
845866 h .run ()
846867
847- condition = h .modelStatusToString ( h . getModelStatus ()). lower ()
848- termination_condition = CONDITION_MAP .get (condition , condition )
868+ condition = h .getModelStatus ()
869+ termination_condition = CONDITION_MAP .get (condition , TerminationCondition . unknown )
849870 status = Status .from_termination_condition (termination_condition )
850- status .legacy_status = condition
871+ status .legacy_status = h . modelStatusToString ( condition )
851872
852873 if basis_fn :
853874 h .writeBasis (path_to_string (basis_fn ))
0 commit comments