diff --git a/cpp/src/mip/solution/solution.cu b/cpp/src/mip/solution/solution.cu index cabb0edda..5ad750f48 100644 --- a/cpp/src/mip/solution/solution.cu +++ b/cpp/src/mip/solution/solution.cu @@ -541,6 +541,8 @@ f_t solution_t::compute_max_int_violation() template f_t solution_t::compute_max_variable_violation() { + const auto num_variables = view().assignment.size(); + cuopt_assert(problem_ptr->n_variables == assignment.size(), "Size mismatch"); cuopt_assert(problem_ptr->n_variables == problem_ptr->variable_lower_bounds.size(), "Size mismatch"); @@ -549,7 +551,7 @@ f_t solution_t::compute_max_variable_violation() return thrust::transform_reduce( handle_ptr->get_thrust_policy(), thrust::make_counting_iterator(0), - thrust::make_counting_iterator(0) + problem_ptr->n_variables, + thrust::make_counting_iterator(0) + num_variables, cuda::proclaim_return_type([v = view()] __device__(i_t idx) -> f_t { f_t lower_vio = max(0., v.problem.variable_lower_bounds[idx] - v.assignment[idx]); f_t upper_vio = max(0., v.assignment[idx] - v.problem.variable_upper_bounds[idx]);