1#ifndef FSTRESULTTRACKERREGULARIZER_H
2#define FSTRESULTTRACKERREGULARIZER_H
103template<
class RETURNTYPE,
typename IDXTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
104class Result_Tracker_Regularizer :
public Clonable_Impl<Result_Tracker_Regularizer<RETURNTYPE,IDXTYPE,DIMTYPE,SUBSET,CRITERION>,Result_Tracker_Dupless<RETURNTYPE,IDXTYPE,DIMTYPE,SUBSET>,CLONE_INHERIT,CLONE_INHERIT,CLONE_DEEP> {
164template<
class RETURNTYPE,
typename IDXTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
173 RETURNTYPE bestval, val;
176 if(!crit->evaluate(bestval,sel->sub))
return false;
177 notify(
"sel: val1=",sel->value,
", val2=",bestval,
", getd ",sel->sub->get_d(),
".");
179 const RETURNTYPE threshold=sel->value-margin;
183 if(iter->value<threshold) stop=
true;
else
186 if(!crit->evaluate(val,iter->sub))
return false;
187 notify(
"iter: val1=",iter->value,
", val2=",val,
", getd ",iter->sub->get_d(),
".");
188 if(val>bestval || (val==bestval && sel->sub->get_d()>iter->sub->get_d())) {bestval=val; sel=iter;
notify(
"best updated.");}
192 result1=sel->value; result2=bestval; sub=sel->sub;
196template<
class RETURNTYPE,
typename IDXTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
201 RETURNTYPE val, maxval1, maxval2;
PSubset maxsub=
_iter->sub;
202 maxval1=
_iter->value;
208 if(val>maxval2 || (val==maxval2 && maxsub->get_d()>
_iter->sub->get_d())) {maxval2=val; maxsub=
_iter->sub;}
212 result1=maxval1; result2=maxval2; sub=maxsub;
216template<
class RETURNTYPE,
typename IDXTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
227template<
class RETURNTYPE,
typename IDXTYPE,
typename DIMTYPE,
class SUBSET,
class CRITERION>
CRTP mixin implementing the Clonable protocol for a concrete class.
Definition clonable.hpp:184
Collects multiple results, avoiding duplicates.
Definition result_tracker_dupless.hpp:92
RESULTSITER end()
iterator past the last held result
Definition result_tracker_dupless.hpp:147
parent::ResultRec ResultRec
see Result_Tracker::ResultRec
Definition result_tracker_dupless.hpp:96
std::list< ResultRec > results
held results, sorted descending by value (ties broken toward the smaller subset); see add() for the e...
Definition result_tracker_dupless.hpp:138
const IDXTYPE _capacity_limit
set by the constructor; 0 = unlimited
Definition result_tracker_dupless.hpp:141
std::list< ResultRec >::const_iterator CONSTRESULTSITER
read-only iterator over results, for use by subclasses/friends inspecting the collected results
Definition result_tracker_dupless.hpp:144
RETURNTYPE _margin
set via set_inclusion_margin(); 0 = no margin restriction
Definition result_tracker_dupless.hpp:139
Collects multiple results. Enables eventual selection of alternative solution based on secondary crit...
Definition result_tracker_regularizer.hpp:104
bool _searching
true while an equivalence-group scan is in progress, i.e. optimize_within_next_equivalence_group() ma...
Definition result_tracker_regularizer.hpp:159
virtual bool optimize_within_next_equivalence_group(RETURNTYPE &result1, RETURNTYPE &result2, PSubset &sub)
Continues the scan started by optimize_within_first_equivalence_group(): returns the best subset of t...
Definition result_tracker_regularizer.hpp:228
virtual bool optimize_within_margin(const RETURNTYPE margin, RETURNTYPE &result1, RETURNTYPE &result2, PSubset &sub, const PCriterion crit)
Re-ranks the tracked results within margin of the best tracked (primary) value by a secondary crit,...
Definition result_tracker_regularizer.hpp:165
std::shared_ptr< CRITERION > PCriterion
shared pointer to a criterion (the secondary criterion used to re-rank tracked results)
Definition result_tracker_regularizer.hpp:111
std::shared_ptr< SUBSET > PSubset
shared pointer to a feature subset
Definition result_tracker_regularizer.hpp:110
RETURNTYPE _prevmax
the primary value of the equivalence group currently being scanned; helper of optimize_within_equival...
Definition result_tracker_regularizer.hpp:157
Result_Tracker_Dupless< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET > parent
base class alias
Definition result_tracker_regularizer.hpp:106
Result_Tracker_Regularizer(const Result_Tracker_Regularizer &rtr)
the copy starts with a fresh (non-searching) equivalence-group cursor; _crit/_prevmax/_iter are not c...
Definition result_tracker_regularizer.hpp:113
Clonable_Impl< Result_Tracker_Regularizer, parent, CLONE_INHERIT, CLONE_INHERIT, CLONE_DEEP > parent_impl
implements stateless_clone() via Clonable_Impl; clone()/sharing_clone() defer to Result_Tracker's thr...
Definition result_tracker_regularizer.hpp:107
virtual std::ostream & print(std::ostream &os) const override
writes a human-readable identification of the object; base default writes nothing
Definition result_tracker_regularizer.hpp:152
parent::CONSTRESULTSITER _iter
cursor into the tracked results list, carried across optimize_within_*_equivalence_group() calls so s...
Definition result_tracker_regularizer.hpp:158
ResultRec * PResultRec
raw pointer to a ResultRec
Definition result_tracker_regularizer.hpp:109
bool optimize_within_equivalence_group(RETURNTYPE &result1, RETURNTYPE &result2, PSubset &sub)
building block for optimize_within_*_equivalence_group
Definition result_tracker_regularizer.hpp:197
virtual bool optimize_within_first_equivalence_group(RETURNTYPE &result1, RETURNTYPE &result2, PSubset &sub, const PCriterion crit)
Starts a group-by-group scan: returns the subset of the first equivalence group (the tracked subsets ...
Definition result_tracker_regularizer.hpp:217
PCriterion _crit
the secondary criterion set by optimize_within_first_equivalence_group(), reused by subsequent optimi...
Definition result_tracker_regularizer.hpp:156
Result_Tracker_Regularizer(const IDXTYPE capacity_limit=0)
capacity_limit forwarded to Result_Tracker_Dupless (0 = unlimited)
Definition result_tracker_regularizer.hpp:112
parent::ResultRec ResultRec
one tracked [value,subset] result record, as defined by Result_Tracker
Definition result_tracker_regularizer.hpp:108
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
Enables collecting multiple results.