1#ifndef FSTSEARCHRANKING_H
2#define FSTSEARCHRANKING_H
112template<
class RETURNTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
115 typedef Search<RETURNTYPE,DIMTYPE,SUBSET,CRITERION>
parent;
123 notify(
"Search_Ranking constructor.");
132 virtual bool search(
const DIMTYPE target_d, RETURNTYPE &result,
const PSubset sub,
const PCriterion crit, std::ostream& os=std::cout)
override;
137 virtual std::ostream&
print(std::ostream& os)
const override {os <<
"Search_Ranking() abstract class";
return os;};
148 mutable typename FEATURELIST::const_iterator
get_iter;
154template<
class RETURNTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
162 value=(*get_iter).critval;
163 feature=(*get_iter).feature;
169template<
class RETURNTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
176 value=(*get_iter).critval;
177 feature=(*get_iter).feature;
183template<
class RETURNTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
187 notify(
"Search_Ranking::search().");
191 assert(sub->get_n()>0);
192 assert(target_d<sub->get_n());
193 DIMTYPE _n=sub->get_n();
197 sos <<
"---------------------------------------" << std::endl;
198 sos <<
"Starting " << *
this << std::endl;
199 sos <<
"with Criterion: " << *crit << std::endl;
200 if(target_d==0) sos <<
"Subset size to be optimized." << std::endl;
else sos <<
"Target subset size set to: " << target_d << std::endl;
201 sos << std::endl << std::flush;
207 std::shared_ptr<SUBSET> tempsub(
new SUBSET(_n));
208 typename FEATURELIST::const_iterator iter;
212 for(iter=
bifs.begin(),i=0; iter!=
bifs.end() && i<target_d; iter++,i++) sub->select((*iter).feature);
213 if(!crit->evaluate(result,sub))
return false;
217 tempsub->deselect_all();
226 RETURNTYPE best=RETURNTYPE();
229 if(first || cval>best) {
231 sub->stateless_copy(*csub);
238 _engine->initialize(crit, _n, on_result);
239 for(iter=
bifs.begin(); iter!=
bifs.end(); iter++) {
240 tempsub->select((*iter).feature);
241 if(!
_engine->add_candidate(tempsub))
return false;
243 if(!
_engine->collect())
return false;
248 sos <<
"......................................." << std::endl;
249 sos << *
this <<
" search finished. " << swatch << std::endl;
250 sos <<
"Search result: "<< std::endl << *sub << std::endl <<
"Criterion value: " << result << std::endl << std::endl << std::flush;
Abstract candidate-evaluation strategy: the seam through which one search algorithm body evaluates ca...
Implements sequential in-line evaluation of a criterion on a set of subset candidates.
Implements sequential in-line evaluation of a criterion on a set of subset candidates.
Definition candidate_evaluator_sequential.hpp:62
Abstract candidate-evaluation strategy (sequential-inline vs. thread-pooled).
Definition candidate_evaluator.hpp:86
std::function< void(const RETURNTYPE, const PSubset &, const DIMTYPE)> ResultCallback
fired once per evaluated batch candidate: (criterion value, candidate, feature tag as passed to add_c...
Definition candidate_evaluator.hpp:94
Abstract base of the feature-ranking methods: scores features one by one, then turns the ranking into...
Definition search_ranking.hpp:113
virtual std::ostream & print(std::ostream &os) const override
writes a human-readable identification of the search and its configuration; base default writes nothi...
Definition search_ranking.hpp:137
FEATURELIST bifs
the individual-feature ranking; empty until evaluate_individuals() is called
Definition search_ranking.hpp:146
Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > parent
the abstract Search interface this class implements
Definition search_ranking.hpp:115
std::mutex get_iter_mutex
protects get_iter for thread-safe iteration
Definition search_ranking.hpp:150
bool getFirstFeature(RETURNTYPE &value, DIMTYPE &feature) const
iterator over bifs (the ranking built by evaluate_individuals()), highest-ranked feature first; retur...
Definition search_ranking.hpp:155
PEvaluatorEngine _engine
Definition search_ranking.hpp:139
std::list< OneFeature > FEATURELIST
the individual-feature ranking built by evaluate_individuals(), sorted descending by critval
Definition search_ranking.hpp:145
Search_Ranking(PEvaluatorEngine engine=PEvaluatorEngine())
Definition search_ranking.hpp:121
std::shared_ptr< CRITERION > PCriterion
shared pointer to the criterion the search optimizes
Definition search_ranking.hpp:116
std::shared_ptr< SUBSET > PSubset
shared pointer to a feature subset
Definition search_ranking.hpp:117
virtual bool evaluate_individuals(const DIMTYPE n, const PCriterion crit, std::ostream &os=std::cout)=0
ranks all n features individually by crit, filling bifs descending by criterion value (the order with...
Candidate_Evaluator< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > EVALUATORENGINE
the injected candidate-evaluation engine interface driving individual-feature evaluation
Definition search_ranking.hpp:118
FEATURELIST::const_iterator get_iter
iteration cursor for getFirstFeature()/getNextFeature() (single shared cursor; see get_iter_mutex und...
Definition search_ranking.hpp:148
std::shared_ptr< EVALUATORENGINE > PEvaluatorEngine
Definition search_ranking.hpp:119
virtual bool search(const DIMTYPE target_d, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout) override
ranks the features (evaluate_individuals()) and returns the target_d best-ranked ones,...
Definition search_ranking.hpp:184
bool getNextFeature(RETURNTYPE &value, DIMTYPE &feature) const
continues the getFirstFeature() iteration; returns false once the ranking is exhausted....
Definition search_ranking.hpp:170
bool output_normal() const
true unless output detail is SILENT
Definition search.hpp:159
void report(std::ostream &os, const msgbuf &m) const
delivers one pre-formatted progress message: to the observer if attached, otherwise as syncout text t...
Definition search.hpp:170
bool result_tracker_active() const
true if a result tracker was assigned via enable_result_tracking() and not since disabled
Definition search.hpp:155
OutputDetail get_output_detail() const
the currently configured output detail level
Definition search.hpp:158
PResultTracker _tracker
the assigned result tracker, or null (see enable_result_tracking()/result_tracker_active())
Definition search.hpp:179
void report_solution(std::ostream &os, const RETURNTYPE value, const SUBSET &sub, const msgbuf &m) const
like report(), for sites announcing a new (sub-)solution; fires on_solution instead
Definition search.hpp:175
Simple stopwatch to measure run time of search algorithms.
Definition stopwatch.hpp:92
Message accumulator for Search::report() - collects one progress message exactly as an std::ostringst...
Definition search.hpp:87
FST4 specific error passing class.
The Feature Selection Toolbox 4 library: every library component – data access, criteria and classifi...
Definition data_accessor.hpp:80
void notify(const std::string msg)
Prints msg followed by a newline via syncout::print(); a no-op unless the preprocessor macro DEBUG is...
Definition global.hpp:112
Defines interface for search method implementations.
Simple tool to measure run time.
Structure to hold [feature,criterion value] pair while ranking features.
Definition search_ranking.hpp:141
RETURNTYPE critval
the feature's individual criterion value, as evaluated by evaluate_individuals()
Definition search_ranking.hpp:143
DIMTYPE feature
the feature's index
Definition search_ranking.hpp:142