diff --git a/FEATURES.md b/FEATURES.md index 6ba63e7068..708e928092 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -8,9 +8,22 @@ The method `Highs::getDualObjectiveValue` now exitsts to compute the dual object The method `Highs::getStandardFormLp` now exists to return the incumbent LP in standard form - overlooking any integrality or Hessian. To determine the sizes of the vectors of data, the method is called without specifying pointers to the data arrays. - Added documentation on the use of presolve when solving an incumbent model, and clarifying the use of the method `Highs::presolve`. +HiGHS will now read a `MIPLIB` solution file + +Added time limit check to `HPresolve::strengthenInequalities` + +Added `getColIntegrality` to `highspy` + +Now computing the primal-dual integral, reporting it, and making it available as `HighsInfo::primal_dual_integral` + +Trivial primal heuristics "all zero", "all lower bound", "all upper bound", and "lock point" added to the MIP solver + + + + + diff --git a/src/mip/HighsMipSolverData.cpp b/src/mip/HighsMipSolverData.cpp index 6516dc3e89..d8896524d3 100644 --- a/src/mip/HighsMipSolverData.cpp +++ b/src/mip/HighsMipSolverData.cpp @@ -1096,7 +1096,7 @@ double HighsMipSolverData::transformNewIntegerFeasibleSolution( this->total_repair_lp++; double time_available = std::max(mipsolver.options_mip_->time_limit - - mipsolver.timer_.read(mipsolver.timer_.solve_clock), + mipsolver.timer_.read(mipsolver.timer_.total_clock), 0.1); Highs tmpSolver; const bool debug_report = false; @@ -2617,7 +2617,7 @@ void HighsMipSolverData::updatePrimalDualIntegral(const double from_lower_bound, assert(gap_consistent); } if (to_gap < kHighsInf) { - double time = mipsolver.timer_.read(mipsolver.timer_.solve_clock); + double time = mipsolver.timer_.read(mipsolver.timer_.total_clock); if (from_gap < kHighsInf) { // Need to update the P-D integral double time_diff = time - pdi.prev_time;