diff --git a/src/feature_creation/feature_space/FeatureSpace.cpp b/src/feature_creation/feature_space/FeatureSpace.cpp
index 1c72bdef02c6c71e4aeaa9023792b7d206f45e4e..a7d7d55dcd349c6f444231c52168361bfd16b520 100644
--- a/src/feature_creation/feature_space/FeatureSpace.cpp
+++ b/src/feature_creation/feature_space/FeatureSpace.cpp
@@ -347,14 +347,14 @@ void FeatureSpace::generate_reparam_feature_set(const std::vector<double>& prop)
             std::shared_ptr<NLOptimizer> optimizer_param = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, _prop, _max_phi, _max_param_depth);
             std::shared_ptr<NLOptimizer> optimizer_reparam = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, prop, _max_phi, _max_param_depth);
 
-            #pragma omp for schedule(dynamic)
+            #pragma omp for schedule(monotonic: dynamic)
             for(auto feat_1 = _phi_reparam.begin() + _start_gen_reparam.back() + _mpi_comm->rank(); feat_1 < _phi_reparam.end(); feat_1 += _mpi_comm->size())
             {
                 generate_non_param_feats(feat_1, next_phi_private, _phi_reparam.begin(), feat_ind, l_bound, u_bound);
                 generate_param_feats(feat_1, next_phi_private, _phi_reparam.begin(), feat_ind, optimizer_param, l_bound, u_bound);
             }
 
-            #pragma omp for schedule(dynamic)
+            #pragma omp for schedule(monotonic: dynamic)
             for(auto feat_1 = _phi.begin() + _start_gen[nn-1] + _mpi_comm->rank(); feat_1 < _phi.begin() + _end_no_params[nn-1]; feat_1 += _mpi_comm->size())
             {
                 generate_reparam_feats(feat_1, next_phi_private, feat_ind, optimizer_reparam, l_bound, u_bound);
@@ -572,7 +572,7 @@ void FeatureSpace::generate_feature_space()
             std::vector<node_ptr> next_phi_private;
             std::shared_ptr<NLOptimizer> optimizer = nlopt_wrapper::get_optimizer(_project_type, _task_sizes, _prop, _max_phi, _max_param_depth);
 
-            #pragma omp for schedule(dynamic)
+            #pragma omp for schedule(monotonic: dynamic)
             for(auto feat_1 = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat_1 < _phi.end(); feat_1 += _mpi_comm->size())
             {
                 generate_non_param_feats(feat_1, next_phi_private, _phi.begin(), feat_ind, l_bound, u_bound);
@@ -586,7 +586,7 @@ void FeatureSpace::generate_feature_space()
         #pragma omp parallel firstprivate(feat_ind, l_bound, u_bound)
         {
             std::vector<node_ptr> next_phi_private;
-            #pragma omp for schedule(dynamic)
+            #pragma omp for schedule(monotonic: dynamic)
             for(auto feat_1 = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat_1 < _phi.end(); feat_1 += _mpi_comm->size())
             {
                 generate_non_param_feats(feat_1, next_phi_private, _phi.begin(), feat_ind, l_bound, u_bound);
@@ -967,7 +967,7 @@ void FeatureSpace::project_generated(const double* prop, const int size, std::ve
         }
         #endif
 
-        #pragma omp for schedule(dynamic)
+        #pragma omp for schedule(monotonic: dynamic)
         for(auto feat = _phi.begin() + _start_gen.back() + _mpi_comm->rank(); feat < _phi.end(); feat += _mpi_comm->size())
         {
             unsigned long int feat_ind = _phi.size() + _n_sis_select * (omp_get_num_threads() + _mpi_comm->size());