@@ -192,6 +192,12 @@ std::tuple<HighsStatus, HighsRanging> highs_getRanging(Highs* h) {
192192 return std::make_tuple (status, ranging);
193193}
194194
195+ std::tuple<HighsStatus, HighsIis> highs_getIis (Highs* h) {
196+ HighsIis iis;
197+ HighsStatus status = h->getIis (iis);
198+ return std::make_tuple (status, iis);
199+ }
200+
195201std::tuple<HighsStatus, dense_array_t <HighsInt>> highs_getBasicVariables (
196202 Highs* h) {
197203 HighsInt num_row = h->getNumRow ();
@@ -1062,17 +1068,27 @@ PYBIND11_MODULE(_core, m, py::mod_gil_not_used()) {
10621068 .value (" kIisStrategyLight" , IisStrategy::kIisStrategyLight )
10631069 .value (" kIisStrategyFromRay" , IisStrategy::kIisStrategyFromRay )
10641070 .value (" kIisStrategyFromLp" , IisStrategy::kIisStrategyFromLp )
1071+ .value (" kIisStrategyIrreducible" , IisStrategy::kIisStrategyIrreducible )
10651072 .value (" kIisStrategyColPriority" , IisStrategy::kIisStrategyColPriority )
1073+ .value (" kIisStrategyRelaxation" , IisStrategy::kIisStrategyRelaxation )
10661074 .value (" kIisStrategyMax" , IisStrategy::kIisStrategyMax )
10671075 .export_values ();
1076+
10681077 py::enum_<IisBoundStatus>(m, " IisBoundStatus" , py::module_local ())
1069- .value (" kIisBoundStatusDropped" , IisBoundStatus::kIisBoundStatusDropped )
1070- .value (" kIisBoundStatusNull" , IisBoundStatus::kIisBoundStatusNull )
1071- .value (" kIisBoundStatusFree" , IisBoundStatus::kIisBoundStatusFree )
1072- .value (" kIisBoundStatusLower" , IisBoundStatus::kIisBoundStatusLower )
1073- .value (" kIisBoundStatusUpper" , IisBoundStatus::kIisBoundStatusUpper )
1074- .value (" kIisBoundStatusBoxed" , IisBoundStatus::kIisBoundStatusBoxed )
1075- .export_values ();
1078+ .value (" kIisBoundStatusDropped" , IisBoundStatus::kIisBoundStatusDropped )
1079+ .value (" kIisBoundStatusNull" , IisBoundStatus::kIisBoundStatusNull )
1080+ .value (" kIisBoundStatusFree" , IisBoundStatus::kIisBoundStatusFree )
1081+ .value (" kIisBoundStatusLower" , IisBoundStatus::kIisBoundStatusLower )
1082+ .value (" kIisBoundStatusUpper" , IisBoundStatus::kIisBoundStatusUpper )
1083+ .value (" kIisBoundStatusBoxed" , IisBoundStatus::kIisBoundStatusBoxed )
1084+ .export_values ();
1085+
1086+ py::enum_<IisStatus>(m, " IisStatus" , py::module_local ())
1087+ .value (" kIisStatusNotInConflict" , IisStatus::kIisStatusNotInConflict )
1088+ .value (" kIisStatusMaybeInConflict" , IisStatus::kIisStatusMaybeInConflict )
1089+ .value (" kIisStatusInConflict" , IisStatus::kIisStatusInConflict )
1090+ .export_values ();
1091+
10761092 py::enum_<HighsDebugLevel>(m, " HighsDebugLevel" , py::module_local ())
10771093 .value (" kHighsDebugLevelNone" , HighsDebugLevel::kHighsDebugLevelNone )
10781094 .value (" kHighsDebugLevelCheap" , HighsDebugLevel::kHighsDebugLevelCheap )
@@ -1369,7 +1385,7 @@ PYBIND11_MODULE(_core, m, py::mod_gil_not_used()) {
13691385 py::arg (" local_lower_penalty" ) = py::none (),
13701386 py::arg (" local_upper_penalty" ) = py::none (),
13711387 py::arg (" local_rhs_penalty" ) = py::none ())
1372- .def (" getIis" , &Highs::getIis )
1388+ .def (" getIis" , &highs_getIis )
13731389 .def (" presolve" , &Highs::presolve,
13741390 py::call_guard<py::gil_scoped_release>())
13751391 .def (" writeSolution" , &highs_writeSolution)
@@ -1515,15 +1531,18 @@ PYBIND11_MODULE(_core, m, py::mod_gil_not_used()) {
15151531 py::class_<HighsIis>(m, " HighsIis" , py::module_local ())
15161532 .def (py::init<>())
15171533 .def (" clear" , &HighsIis::clear)
1518- .def_readwrite (" valid" , &HighsIis::valid_)
1519- .def_readwrite (" status" , &HighsIis::status_)
1520- .def_readwrite (" strategy" , &HighsIis::strategy_)
1521- .def_readwrite (" col_index" , &HighsIis::col_index_)
1522- .def_readwrite (" row_index" , &HighsIis::row_index_)
1523- .def_readwrite (" col_bound" , &HighsIis::col_bound_)
1524- .def_readwrite (" row_bound" , &HighsIis::row_bound_)
1525- .def_readwrite (" info" , &HighsIis::info_)
1526- .def_readwrite (" model" , &HighsIis::model_);
1534+ .def_readwrite (" valid_" , &HighsIis::valid_)
1535+ .def_readwrite (" status_" , &HighsIis::status_)
1536+ .def_readwrite (" strategy_" , &HighsIis::strategy_)
1537+ .def_readwrite (" col_index_" , &HighsIis::col_index_)
1538+ .def_readwrite (" row_index_" , &HighsIis::row_index_)
1539+ .def_readwrite (" col_bound_" , &HighsIis::col_bound_)
1540+ .def_readwrite (" row_bound_" , &HighsIis::row_bound_)
1541+ .def_readwrite (" col_status_" , &HighsIis::col_status_)
1542+ .def_readwrite (" row_status_" , &HighsIis::row_status_)
1543+ .def_readwrite (" info_" , &HighsIis::info_)
1544+ .def_readwrite (" model_" , &HighsIis::model_);
1545+
15271546 // structs
15281547 py::class_<HighsSolution>(m, " HighsSolution" , py::module_local ())
15291548 .def (py::init<>())
@@ -1727,16 +1746,6 @@ PYBIND11_MODULE(_core, m, py::mod_gil_not_used()) {
17271746 .value (" kSteepestEdge" , EdgeWeightMode::kSteepestEdge )
17281747 .value (" kCount" , EdgeWeightMode::kCount );
17291748
1730- /*
1731- py::module_ iis = m.def_submodule("iis", "IIS interface submodule");
1732- py::enum_<HighsIisStatus>(iis, "HighsIisStatus",
1733- py::module_local())
1734- .value("kIisStatusInConflict", HighsIisStatus::kIisStatusInConflict)
1735- .value("kIisStatusNotInConflict", HighsIisStatus::kIisStatusNotInConflict)
1736- .value("kIisStatusMaybeInConflict", HighsIisStatus::kIisStatusMaybeInConflict)
1737- .export_values();
1738- */
1739-
17401749 py::module_ callbacks = m.def_submodule (" cb" , " Callback interface submodule" );
17411750 // Types for interface
17421751 py::enum_<HighsCallbackType>(callbacks, " HighsCallbackType" ,
0 commit comments