From 86ca9f9fe407f8321eeeef348e2cc86c99d51a4a Mon Sep 17 00:00:00 2001 From: Thomas Purcell <purcell@fhi-berlin.mpg.de> Date: Thu, 8 Oct 2020 20:43:02 +0200 Subject: [PATCH] update generating phi Bug prevented getting the full selected feature space when generating it each generation --- .../feature_space/FeatureSpace.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/feature_creation/feature_space/FeatureSpace.cpp b/src/feature_creation/feature_space/FeatureSpace.cpp index e6b38d94..0b90a1fd 100644 --- a/src/feature_creation/feature_space/FeatureSpace.cpp +++ b/src/feature_creation/feature_space/FeatureSpace.cpp @@ -500,7 +500,7 @@ void FeatureSpace::project_generated(double* prop, int size, std::vector<node_pt while((ii < inds.size()) && (scores[inds[ii]] < -1.0)) ++ii; - while((ii < inds.size()) && (scores[inds[ii]] < worst_score)) + while((ii < inds.size()) && ((scores[inds[ii]] < worst_score) || (phi_sel_private.size() < _n_sis_select))) { double cur_score = scores[inds[ii]]; if((valid_feature_against_selected(generated_phi[inds[ii]]->value_ptr(), node_value_arrs::N_SELECTED - _n_sis_select)) && valid_feature_against_private_selected(generated_phi[inds[ii]]->value_ptr(), phi_sel_private)) @@ -529,10 +529,18 @@ void FeatureSpace::project_generated(double* prop, int size, std::vector<node_pt worst_score_ind = std::max_element(scores_sel.begin(), scores_sel.end()) - scores_sel.begin(); for(int sc = 0; sc < scores_sel_private.size(); ++sc) { - if((scores_sel_private[sc] < scores_sel[worst_score_ind]) && valid_feature_against_private_selected(phi_sel_private[sc]->value_ptr(), phi_sel)) + if(((phi_sel.size() < _n_sis_select) || (scores_sel_private[sc] < scores_sel[worst_score_ind])) && valid_feature_against_private_selected(phi_sel_private[sc]->value_ptr(), phi_sel)) { - scores_sel[worst_score_ind] = scores_sel_private[sc]; - phi_sel[worst_score_ind] = phi_sel_private[sc]; + if(phi_sel.size() == _n_sis_select) + { + scores_sel[worst_score_ind] = scores_sel_private[sc]; + phi_sel[worst_score_ind] = phi_sel_private[sc]; + } + else + { + scores_sel.push_back(scores_sel_private[sc]); + phi_sel.push_back(phi_sel_private[sc]); + } worst_score_ind = std::max_element(scores_sel.begin(), scores_sel.end()) - scores_sel.begin(); } } -- GitLab