This could be an issue with HiGHS not providing enough clarity in status codes, but I'll start the discussion on the Julia side. If you look at highsStatusFromHighsModelStatus, the statuses that map to HighsStatus::Error are better covered by MOI statuses instead of throwing a Julia error. Somehow this particular case should end up begin reported as an MOI.OTHER_ERROR or MOI.NUMERICAL_ERROR.
The underlying numerical issue is also related to failing to clean up unscaled infeasibilities (like #46). Here's the solve log with some level of verbose output: https://pastebin.com/bjBTAFg1
I think I just made this an error for initial simplicity. HiGHS could return more information via the C API, but the MOI wrapper should also not throw an error like this.
I have an instance that triggers this code path:
https://github.com/ERGO-Code/HiGHS/blob/cfe064e60fdca9dc8008fd956fff04d7b562e210/src/simplex/HApp.h#L281-L286
This causes
run()
to returnHighsStatus::Error
:https://github.com/ERGO-Code/HiGHS/blob/cfe064e60fdca9dc8008fd956fff04d7b562e210/src/simplex/HApp.h#L316-L322
In Julia, this triggers an error from
optimize!
that supersedes the regular status reporting mechanism:https://github.com/jump-dev/HiGHS.jl/blob/7a059816e40fcab256f13a1f6c05224f6e0b573a/src/MOI_wrapper.jl#L1521-L1528
This could be an issue with HiGHS not providing enough clarity in status codes, but I'll start the discussion on the Julia side. If you look at highsStatusFromHighsModelStatus, the statuses that map to
HighsStatus::Error
are better covered by MOI statuses instead of throwing a Julia error. Somehow this particular case should end up begin reported as an MOI.OTHER_ERROR or MOI.NUMERICAL_ERROR.The underlying numerical issue is also related to failing to clean up unscaled infeasibilities (like #46). Here's the solve log with some level of verbose output: https://pastebin.com/bjBTAFg1
@jajhall