@@ -834,7 +834,28 @@ def _solve(
834834 -------
835835 Result
836836 """
837- CONDITION_MAP : dict [str , str ] = {}
837+ # https://ergo-code.github.io/HiGHS/dev/structures/enums/#HighsModelStatus
838+ CONDITION_MAP : dict [highspy .HighsModelStatus , TerminationCondition ] = {
839+ highspy .HighsModelStatus .kNotset : TerminationCondition .unknown ,
840+ highspy .HighsModelStatus .kLoadError : TerminationCondition .internal_solver_error ,
841+ highspy .HighsModelStatus .kModelError : TerminationCondition .internal_solver_error ,
842+ highspy .HighsModelStatus .kPresolveError : TerminationCondition .internal_solver_error ,
843+ highspy .HighsModelStatus .kSolveError : TerminationCondition .internal_solver_error ,
844+ highspy .HighsModelStatus .kPostsolveError : TerminationCondition .internal_solver_error ,
845+ highspy .HighsModelStatus .kModelEmpty : TerminationCondition .unknown ,
846+ highspy .HighsModelStatus .kMemoryLimit : TerminationCondition .resource_interrupt ,
847+ highspy .HighsModelStatus .kOptimal : TerminationCondition .optimal ,
848+ highspy .HighsModelStatus .kInfeasible : TerminationCondition .infeasible ,
849+ highspy .HighsModelStatus .kUnboundedOrInfeasible : TerminationCondition .infeasible_or_unbounded ,
850+ highspy .HighsModelStatus .kUnbounded : TerminationCondition .unbounded ,
851+ highspy .HighsModelStatus .kObjectiveBound : TerminationCondition .terminated_by_limit ,
852+ highspy .HighsModelStatus .kObjectiveTarget : TerminationCondition .terminated_by_limit ,
853+ highspy .HighsModelStatus .kTimeLimit : TerminationCondition .time_limit ,
854+ highspy .HighsModelStatus .kIterationLimit : TerminationCondition .iteration_limit ,
855+ highspy .HighsModelStatus .kSolutionLimit : TerminationCondition .terminated_by_limit ,
856+ highspy .HighsModelStatus .kInterrupt : TerminationCondition .user_interrupt ,
857+ highspy .HighsModelStatus .kUnknown : TerminationCondition .unknown ,
858+ }
838859
839860 if log_fn is not None :
840861 self .solver_options ["log_file" ] = path_to_string (log_fn )
@@ -850,10 +871,12 @@ def _solve(
850871
851872 h .run ()
852873
853- condition = h .modelStatusToString (h .getModelStatus ()).lower ()
854- termination_condition = CONDITION_MAP .get (condition , condition )
874+ condition = h .getModelStatus ()
875+ termination_condition = CONDITION_MAP .get (
876+ condition , TerminationCondition .unknown
877+ )
855878 status = Status .from_termination_condition (termination_condition )
856- status .legacy_status = condition
879+ status .legacy_status = h . modelStatusToString ( condition )
857880
858881 if basis_fn :
859882 h .writeBasis (path_to_string (basis_fn ))
0 commit comments