Implements exhaustive (optimal) search yielding optimal feature subset with respect to chosen criterion.
More...
|
|
typedef Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | parent |
| | base class: the generic search interface
|
|
typedef std::shared_ptr< CRITERION > | PCriterion |
| | shared pointer to the criterion being optimized
|
|
typedef std::shared_ptr< SUBSET > | PSubset |
| | shared pointer to a feature subset
|
|
typedef Candidate_Evaluator< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | EVALUATORENGINE |
| | the candidate-evaluation engine type (sequential or threaded)
|
|
typedef std::shared_ptr< EVALUATORENGINE > | PEvaluatorEngine |
| | shared pointer to the evaluation engine
|
|
typedef std::shared_ptr< CRITERION > | PCriterion |
| | shared pointer to the criterion the search optimizes
|
|
typedef std::shared_ptr< SUBSET > | PSubset |
| | shared pointer to a feature subset
|
|
typedef std::shared_ptr< Result_Tracker< RETURNTYPE, SUBSET > > | PResultTracker |
| | shared pointer to the result tracker enabled via enable_result_tracking()
|
|
typedef Search_Observer< RETURNTYPE, SUBSET > | OBSERVER |
| | the observer interface type this search reports through (see Search_Observer)
|
|
typedef std::shared_ptr< OBSERVER > | PObserver |
| | shared pointer to an OBSERVER, as set via set_observer()
|
|
| | Search_Exhaustive (PEvaluatorEngine engine=PEvaluatorEngine()) |
| | Constructs the search with the given candidate-evaluation engine; a default-constructed engine falls back to Candidate_Evaluator_Sequential (in-line, unthreaded evaluation).
|
| virtual bool | search (const DIMTYPE target_d, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout) override |
| | evaluates every subset of the requested size (every subset of any size from 1 to n if target_d==0) and returns the best one + its criterion value; false if no candidate could be generated (n==0, or the subset object refused to enumerate) or a criterion evaluation failed
|
| virtual std::ostream & | print (std::ostream &os) const override |
| | writes a human-readable identification of the search and its configuration; base default writes nothing
|
|
void | enable_result_tracking (PResultTracker tracker) |
| | assigns a result tracker to the search process, i.e., enables logging of all evaluated subsets for future reuse (re-evaluation, etc.)
|
|
void | disable_result_tracking () |
| | detaches any result tracker (result_tracker_active() then returns false)
|
|
bool | result_tracker_active () const |
| | true if a result tracker was assigned via enable_result_tracking() and not since disabled
|
|
void | set_output_detail (OutputDetail detail) |
| | sets the amount of information that is logged to output stream throughout the course of search
|
|
OutputDetail | get_output_detail () const |
| | the currently configured output detail level
|
|
bool | output_normal () const |
| | true unless output detail is SILENT
|
|
bool | output_detailed () const |
| | true only at the DETAILED output level
|
|
void | set_observer (PObserver observer) |
| | redirects search progress reporting away from the default syncout text output to observer
|
template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION>
class FST::Search_Exhaustive< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >
Implements exhaustive (optimal) search yielding optimal feature subset with respect to chosen criterion.
This single class serves both the sequential and the threaded execution model: the evaluation strategy (a Candidate_Evaluator implementation) is injected through the constructor and defaults to sequential in-line evaluation; construct with a Candidate_Evaluator_Threaded to evaluate candidates in a thread pool. Results are the same either way - for a fixed seed the search yields the same subset at any thread count. Candidates are streamed to the evaluation engine - they are never materialized as a whole (their count grows combinatorially with n).
- Note
- Due to possibly high number of subsets to be tested expect excessive computational time. In case of result tracking the excessive number of possible combinations may consume unacceptable amount of memory - to prevent this it is highly recommended to set up result tracker storage limit.
template<class RETURNTYPE, typename DIMTYPE, class SUBSET, class CRITERION>
| bool FST::Search_Exhaustive< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >::search |
( |
const DIMTYPE | target_d, |
|
|
RETURNTYPE & | result, |
|
|
const PSubset | sub, |
|
|
const PCriterion | crit, |
|
|
std::ostream & | os = std::cout ) |
|
overridevirtual |
evaluates every subset of the requested size (every subset of any size from 1 to n if target_d==0) and returns the best one + its criterion value; false if no candidate could be generated (n==0, or the subset object refused to enumerate) or a criterion evaluation failed
Implements FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >.