|
void | add_monitor (PMonitor *m) |
|
void | remove_monitor (PMonitor *m) |
|
_Fact * | get_lhs () const |
|
_Fact * | get_rhs () const |
|
Fact * | get_f_ihlp (HLPBindingMap *bindings, bool wr_enabled) const override |
|
virtual void | store_requirement (_Fact *f_p_f_imdl, MkRdx *mk_rdx, MDLController *controller, bool chaining_was_allowed)=0 |
|
ChainingStatus | retrieve_imdl_fwd (const HLPBindingMap *bm, Fact *f_imdl, RequirementsPair &r_p, std::vector< BindingResult > &results, MDLController *req_controller, bool &wr_enabled) |
|
ChainingStatus | retrieve_imdl_bwd (HLPBindingMap *bm, Fact *f_imdl, Fact *&ground, Fact *&strong_requirement_ground) |
|
ChainingStatus | retrieve_simulated_imdl_fwd (const HLPBindingMap *bm, Fact *f_imdl, Sim *sim, std::vector< BindingResult > &results) |
|
ChainingStatus | retrieve_simulated_imdl_bwd (HLPBindingMap *bm, Fact *f_imdl, Sim *prediction_sim, Fact *&ground, Fact *&strong_requirement_ground) |
|
virtual void | predict (HLPBindingMap *bm, _Fact *input, Fact *f_imdl, bool chaining_was_allowed, RequirementsPair &r_p, Fact *ground, MkRdx *ground_mk_rdx, std::vector< P< _Fact > > &already_predicted)=0 |
|
virtual void | register_pred_outcome (Fact *f_pred, r_code::Code *mk_rdx, bool success, _Fact *evidence, float32 confidence, bool rate_failures)=0 |
|
virtual void | register_req_outcome (Fact *f_pred, bool success, bool rate_failures)=0 |
|
void | add_requirement_to_rhs () |
|
void | remove_requirement_from_rhs () |
|
bool | is_requirement () const |
|
bool | is_reuse () const |
|
bool | is_cmd () const |
|
void | register_requirement (_Fact *f_pred, RequirementsPair &r_p) |
|
void | invalidate () override |
|
r_code::Code * | get_core_object () const override |
|
r_code::Code * | get_unpacked_object () const |
|
void | add_requirement (bool strong) |
|
void | remove_requirement (bool strong) |
|
uint32 | get_requirement_count (uint32 &weak_requirement_count, uint32 &strong_requirement_count) |
|
uint32 | get_requirement_count () |
|
void | store_evidence (_Fact *evidence) |
|
void | store_predicted_evidence (_Fact *evidence) |
|
uint16 | get_out_group_count () const |
|
r_code::Code * | get_out_group (uint16 i) const |
|
Group * | get_host () const |
|
bool | has_tpl_args () const |
|
bool | inject_prediction (Fact *prediction, float32 confidence) const |
|
std::chrono::microseconds | get_tsc () |
|
bool | is_invalidated () |
|
void | activate (bool a) |
|
bool | is_activated () const |
|
bool | is_alive () const |
|
r_code::Code * | get_object () const |
|
r_exec::View * | get_view () const |
|
void | _take_input (r_exec::View *input) |
|
virtual void | gain_activation () |
|
virtual void | lose_activation () |
|
void | set_view (View *view) |
|
void | debug (View *) |
|
void | incRef () |
|
virtual void | decRef () |
|
Requirements don't monitor their predictions: they don't inject any; instead, they store a f->imdl in the controlled model controllers (both primary and secondary), thus, no success injected for the productions of requirements. Models controlled by requirements maintain for each prediction they make, a list of all the controllers of the requirements having allowed/inhibited said prediction. P-monitors (associated to non-requirement models) propagate the outcome to the controllers associated with the prediction they monitor.
Predictions and goals are injected in the primary group only. Simulations are injected in the primary group only; no mk.rdx.
Each time a prediction is made by a non-req model, a f->imdl is injected in both primary and secondary groups. If the input was a prediction, f->pred->f->imdl is injected instead. f->imdl can also be tagged as simulations.
Successes and failures are injected only in output groups.
If forward chaining is inhibited (by strong reqs with better cfd than weak reqs), predictions are still produced, but not injected (no mk.rdx): this is to allow the rating of the requirements.
Definition at line 187 of file mdl_controller.h.