diff --git a/include/treesearchsolver/iterative_beam_search.hpp b/include/treesearchsolver/iterative_beam_search.hpp index 1041c4a..cfb1a07 100644 --- a/include/treesearchsolver/iterative_beam_search.hpp +++ b/include/treesearchsolver/iterative_beam_search.hpp @@ -273,11 +273,12 @@ inline const IterativeBeamSearchOutput iterative_beam_search( algorithm_formatter.print(ss); // Increase the size of the queue. - output.maximum_size_of_the_queue = std::max( + NodeId maximum_size_of_the_queue_next = std::max( output.maximum_size_of_the_queue + 1, (NodeId)(output.maximum_size_of_the_queue * parameters.growth_factor)); - if (output.maximum_size_of_the_queue > parameters.maximum_size_of_the_queue) + if (maximum_size_of_the_queue_next > parameters.maximum_size_of_the_queue) break; + output.maximum_size_of_the_queue = maximum_size_of_the_queue_next; // Stop if no nodes has been pruned. if (stop) diff --git a/include/treesearchsolver/iterative_beam_search_2.hpp b/include/treesearchsolver/iterative_beam_search_2.hpp index 4b25e8b..8c6da68 100644 --- a/include/treesearchsolver/iterative_beam_search_2.hpp +++ b/include/treesearchsolver/iterative_beam_search_2.hpp @@ -277,11 +277,12 @@ inline const IterativeBeamSearch2Output iterative_beam_search_2 algorithm_formatter.print(ss); // Increase the size of the queue. - output.maximum_size_of_the_queue = std::max( + NodeId maximum_size_of_the_queue_next = std::max( output.maximum_size_of_the_queue + 1, (NodeId)(output.maximum_size_of_the_queue * parameters.growth_factor)); - if (output.maximum_size_of_the_queue > parameters.maximum_size_of_the_queue) + if (maximum_size_of_the_queue_next > parameters.maximum_size_of_the_queue) break; + output.maximum_size_of_the_queue = maximum_size_of_the_queue_next; // Stop if no nodes has been pruned. if (stop)