In the sampling step, the --no-weighting switch disables the equivalence-class weighting by using a weight of one instead of the equivalence-class size. This is usually not a good idea, and should only be used for demonstration purposes, or if the fault model requires weight-less sampling. Change-Id: Id903d1924c6ecbcd217815aa5ce9271560130071
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#ifndef __FESAMPLING_PRUNER_H__
|
|
#define __FESAMPLING_PRUNER_H__
|
|
|
|
#include "Pruner.hpp"
|
|
#include "util/CommandLine.hpp"
|
|
|
|
///
|
|
/// FESamplingPruner: implements sampling with Fault Expansion
|
|
///
|
|
/// The FESamplingPruner implements the fault-expansion variance reduction
|
|
/// technique (FE-VRT) as described in: Smith, D. Todd and Johnson, Barry W.
|
|
/// and Andrianos, Nikos and Profeta, III, Joseph A., "A variance-reduction
|
|
/// technique via fault-expansion for fault-coverage estimation" (1997),
|
|
/// 366--374.
|
|
///
|
|
class FESamplingPruner : public Pruner {
|
|
fail::CommandLine::option_handle SAMPLESIZE;
|
|
fail::CommandLine::option_handle USE_KNOWN_RESULTS;
|
|
fail::CommandLine::option_handle NO_WEIGHTING;
|
|
|
|
unsigned m_samplesize;
|
|
bool m_use_known_results, m_weighting;
|
|
|
|
public:
|
|
FESamplingPruner() : m_samplesize(0), m_use_known_results(false), m_weighting(true) { }
|
|
virtual std::string method_name() { return "FESampling"; }
|
|
virtual bool commandline_init();
|
|
virtual bool prune_all();
|
|
|
|
void getAliases(std::deque<std::string> *aliases) {
|
|
aliases->push_back("FESamplingPruner");
|
|
aliases->push_back("sampling");
|
|
}
|
|
|
|
private:
|
|
bool sampling_prune(const fail::Database::Variant& variant);
|
|
};
|
|
|
|
#endif
|