diff --git a/cpp/src/mip/diversity/diversity_manager.cu b/cpp/src/mip/diversity/diversity_manager.cu index e0d96d447..856aa69b3 100644 --- a/cpp/src/mip/diversity/diversity_manager.cu +++ b/cpp/src/mip/diversity/diversity_manager.cu @@ -618,7 +618,8 @@ void diversity_manager_t::main_loop() auto best_sol = population.is_feasible() ? population.best_feasible() : population.best(); ls.run_fj_until_timer(best_sol, population.weights, timer); population.add_solution(std::move(best_sol)); - CUOPT_LOG_WARN("Enough solutions couldn't be generated,exiting heuristics!"); + CUOPT_LOG_INFO( + "Crossovers cannot continue. Running local search on best solution until time limit."); break; } if (timer.check_time_limit()) { break; } diff --git a/cpp/src/mip/solve.cu b/cpp/src/mip/solve.cu index 1500f94a4..a8988dcd8 100644 --- a/cpp/src/mip/solve.cu +++ b/cpp/src/mip/solve.cu @@ -89,7 +89,7 @@ mip_solution_t run_mip(detail::problem_t& problem, solution.compute_objective(); // just to ensure h_user_obj is set auto stats = solver_stats_t{}; stats.solution_bound = solution.get_user_objective(); - return solution.get_solution(true, stats, false); + return solution.get_solution(true, stats, settings.presolve); } // problem contains unpreprocessed data detail::problem_t scaled_problem(problem); @@ -144,8 +144,9 @@ mip_solution_t run_mip(detail::problem_t& problem, "please provide a more numerically stable problem."); } - auto sol = scaled_sol.get_solution( - is_feasible_before_scaling || is_feasible_after_unscaling, solver.get_solver_stats(), false); + auto sol = scaled_sol.get_solution(is_feasible_before_scaling || is_feasible_after_unscaling, + solver.get_solver_stats(), + settings.presolve); detail::print_solution(scaled_problem.handle_ptr, sol.get_solution()); return sol; }