88 #include "../r_code/time_buffer.h"
92 #include "pattern_extractor.h"
106 bool trace_injections_;
107 bool decompile_models_;
108 std::vector<Group *> output_groups_;
113 uint32 positive_evidences_;
114 float32 success_rate_;
115 float32 delta_success_rate_;
117 static bool DeltaSuccessRate(float32 delta_success_rate) {
119 return delta_success_rate > 0 && delta_success_rate < _Mem::Get()->get_tpx_dsr_thr();
122 Rating() : evidences_(0), positive_evidences_(0), success_rate_(0), delta_success_rate_(1) {}
124 void add_evidence(
bool success) {
128 ++positive_evidences_;
129 delta_success_rate_ = success_rate_;
130 success_rate_ = positive_evidences_ / evidences_;
131 delta_success_rate_ = success_rate_ - delta_success_rate_;
143 RatingMap goal_ratings_;
144 RatingMap prediction_ratings_;
146 static const uint32 CacheInitialSize = 128;
147 static const uint32 CrossBufferInitialSize = 1024;
152 void notify(
_Fact *target,
View *input, TPXMap &map);
153 void dispatch_pred_success(
Success* success, TPXMap &map);
154 void dispatch(
View *input,
_Fact *abstract_input,
BindingMap *bm,
bool &injected, TPXMap &map);
158 if (!gtpx_on_ && !ptpx_on_)
159 return new TPX(
this, target, pattern, bm);
162 return new TPX(
this, target, pattern, bm);
164 RatingMap::const_iterator r = map.find(pattern);
165 if (r != map.end()) {
167 if (Rating::DeltaSuccessRate(r->second.delta_success_rate_))
168 return new TPX(
this, target, pattern, bm);
170 return new T(
this, target, pattern, bm, f_imdl);
172 return new T(
this, target, pattern, bm, f_imdl);
184 void inject_input(
View *input, uint32 start);
188 bool decompile_models()
const {
return decompile_models_; }
189 bool gtpx_on()
const {
return gtpx_on_; }
190 bool ptpx_on()
const {
return ptpx_on_; }
191 Group *get_primary_group()
const {
return output_groups_[0]; }