Abstract class, defines interface for sequential search method implementations, provides common implementation of the "sequential step" operation. More...
#include <search_seq.hpp>
Public Types | |
| typedef Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | parent |
| base class alias | |
| typedef std::shared_ptr< EVALUATOR > | PEvaluator |
| shared pointer to the sequential-step evaluator that implements Step()'s candidate generation and selection | |
| 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 | |
| Public Types inherited from FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | |
| 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() | |
Public Member Functions | |
| Search_Sequential (const PEvaluator evaluator) | |
evaluator must be non-null | |
| virtual bool | search (const DIMTYPE target_d, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os) override=0 |
| returns the found subset of target_d features + its criterion value; target_d==0 asks the method to pick the best subset size itself (it then keeps the best-valued subset over all sizes it visits) | |
| bool | Step (const bool forward, RETURNTYPE &result, const PSubset sub, const PCriterion crit, std::ostream &os=std::cout) |
Performs one sequential step: adds (forward) or removes (!forward) the best g-tuple of features, g being the generalization level. | |
| void | set_generalization_level (const DIMTYPE g) |
| optional parameter to enlarge the number of considered candidates (g is the number of features added/removed in one Step) | |
| DIMTYPE | get_generalization_level () const |
| the currently configured generalization level (see set_generalization_level()) | |
| void | enable_initial_subset () |
makes search() start from the caller-supplied contents of its sub argument instead of the concrete method's default (empty set for FORWARD, full set for BACKWARD) | |
| void | disable_initial_subset () |
reverts to the default: incoming sub contents are ignored by search() | |
| bool | initial_subset_enabled () const |
| true if enable_initial_subset() was called (and not since disabled by disable_initial_subset()) | |
| Public Member Functions inherited from FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | |
| 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 | |
| virtual std::ostream & | print (std::ostream &os) const |
| writes a human-readable identification of the search and its configuration; base default writes nothing | |
Protected Attributes | |
| PEvaluator | _evaluator |
| the sequential-step evaluator injected at construction; drives Step()'s candidate generation and best/worst choice | |
| DIMTYPE | _generalization_level |
| number of features added/removed together in one Step() call (see set_generalization_level()) | |
| bool | _initial_subset_enabled |
| by default all concrete search methods ignore the contents of supplied 'PSubset set' and initialize sub according to their definition; if enabled, then (if possible) the search() starts from supplied 'PSubset sub' contents | |
| Protected Attributes inherited from FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | |
| PResultTracker | _tracker |
| the assigned result tracker, or null (see enable_result_tracking()/result_tracker_active()) | |
| OutputDetail | _detail |
| the output detail level set via set_output_detail(); read by output_normal()/output_detailed() | |
| PObserver | _observer |
| the attached progress observer, or null (see set_observer(), report(), report_solution()) | |
Additional Inherited Members | |
| Protected Member Functions inherited from FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION > | |
| void | report (std::ostream &os, const msgbuf &m) const |
| delivers one pre-formatted progress message: to the observer if attached, otherwise as syncout text to os | |
| 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 | |
Abstract class, defines interface for sequential search method implementations, provides common implementation of the "sequential step" operation.
|
overridepure virtual |
returns the found subset of target_d features + its criterion value; target_d==0 asks the method to pick the best subset size itself (it then keeps the best-valued subset over all sizes it visits)
Implements FST::Search< RETURNTYPE, DIMTYPE, SUBSET, CRITERION >.
Implemented in FST::Search_DOS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >, FST::Search_OS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >, FST::Search_SFFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >, FST::Search_SFRS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >, and FST::Search_SFS< RETURNTYPE, DIMTYPE, SUBSET, CRITERION, EVALUATOR >.
|
inline |
Performs one sequential step: adds (forward) or removes (!forward) the best g-tuple of features, g being the generalization level.
The work is done by the injected evaluator, which replaces sub's contents by the candidate it chose and stores its criterion value in result. The subset's forward/backward mode is switched for the duration of the call and restored afterwards, so a backward step inside a forward search costs nothing but the step itself.
sub is the traversal state of the candidate enumeration and may have been modified even then - it is the caller's business to abandon the search.