diff --git a/cpp/src/dual_simplex/branch_and_bound.cpp b/cpp/src/dual_simplex/branch_and_bound.cpp index 1b8a307d2..f1075ed55 100644 --- a/cpp/src/dual_simplex/branch_and_bound.cpp +++ b/cpp/src/dual_simplex/branch_and_bound.cpp @@ -463,8 +463,10 @@ mip_status_t branch_and_bound_t::solve(mip_solution_t& solut global_variables::mutex_upper.unlock(); // We should be done here uncrush_primal_solution(original_problem, original_lp, incumbent.x, solution.x); - solution.objective = incumbent.objective; - solution.lower_bound = lower_bound; + solution.objective = incumbent.objective; + solution.lower_bound = lower_bound; + solution.nodes_explored = 0; + solution.simplex_iterations = root_relax_soln.iterations; settings.log.printf("Optimal solution found at root node. Objective %.16e. Time %.2f.\n", compute_user_objective(original_lp, root_objective), toc(start_time)); diff --git a/cpp/src/linear_programming/utilities/logger_init.hpp b/cpp/src/linear_programming/utilities/logger_init.hpp index 0e847065d..4d93f8cb6 100644 --- a/cpp/src/linear_programming/utilities/logger_init.hpp +++ b/cpp/src/linear_programming/utilities/logger_init.hpp @@ -37,6 +37,8 @@ class init_logger_t { // TODO save the defaul sink and restore it cuopt::default_logger().sinks().push_back( std::make_shared(log_file, true)); + cuopt::default_logger().set_pattern("%v"); + cuopt::default_logger().flush_on(rapids_logger::level_enum::info); } } ~init_logger_t() { cuopt::reset_default_logger(); } diff --git a/cpp/src/mip/presolve/trivial_presolve.cuh b/cpp/src/mip/presolve/trivial_presolve.cuh index d7cfa6dc1..e201f401e 100644 --- a/cpp/src/mip/presolve/trivial_presolve.cuh +++ b/cpp/src/mip/presolve/trivial_presolve.cuh @@ -234,6 +234,7 @@ void update_from_csr(problem_t& pb) // update objective_offset pb.presolve_data.objective_offset += + pb.presolve_data.objective_scaling_factor * thrust::transform_reduce(handle_ptr->get_thrust_policy(), thrust::counting_iterator(0), thrust::counting_iterator(pb.n_variables),