@@ -26,6 +26,7 @@ void optimize_tree_search_worker(
2626{
2727 Counter queue_size = 1 ;
2828 double maximum_approximation_ratio = parameters.initial_maximum_approximation_ratio ;
29+ std::shared_ptr<BranchingScheme::Node> cutoff = nullptr ;
2930 for (Counter iteration = 0 ;
3031 ;
3132 ++iteration) {
@@ -37,6 +38,7 @@ void optimize_tree_search_worker(
3738
3839 // Run tree search.
3940 branching_scheme_parameters.maximum_approximation_ratio = maximum_approximation_ratio;
41+ ibs_parameters.cutoff = cutoff;
4042 ibs_parameters.minimum_size_of_the_queue = queue_size;
4143 ibs_parameters.maximum_size_of_the_queue = queue_size;
4244 if (!parameters.json_search_tree_path .empty ()) {
@@ -56,6 +58,10 @@ void optimize_tree_search_worker(
5658 if (parameters.optimization_mode != OptimizationMode::Anytime)
5759 break ;
5860
61+ if (cutoff != nullptr )
62+ ibs_output.solution_pool .add (cutoff);
63+ cutoff = ibs_output.solution_pool .best ();
64+
5965 // Update beam size.
6066 queue_size = std::max (
6167 queue_size + 1 ,
@@ -110,12 +116,14 @@ void optimize_tree_search(
110116 } else {
111117 directions = {BranchingScheme::Direction::Any};
112118 }
119+ // directions = {BranchingScheme::Direction::LeftToRightThenBottomToTop};
113120
114121 std::vector<double > growth_factors = {1.5 };
115122 if (guides.size () * directions.size () * 2 <= 4 )
116123 growth_factors = {1.33 , 1.5 };
117124 if (parameters.optimization_mode != OptimizationMode::Anytime)
118125 growth_factors = {1.5 };
126+ // growth_factors = {1.5};
119127
120128 std::vector<BranchingScheme::Parameters> branching_scheme_parameters_list;
121129 std::vector<BranchingScheme> branching_schemes;
0 commit comments