|
AERA
|
#include <mdl_controller.h>
Public Member Functions | |
| TopLevelMDLController (r_code::_View *view) | |
| void | take_input (r_exec::View *input) override |
| void | reduce (r_exec::View *input) |
| void | store_requirement (_Fact *f_p_f_imdl, MkRdx *mk_rdx, MDLController *controller, bool chaining_was_allowed) override |
| 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) override |
| void | register_pred_outcome (Fact *f_pred, r_code::Code *mk_rdx, bool success, _Fact *evidence, float32 confidence, bool rate_failures) override |
| void | register_goal_outcome (Fact *goal, bool success, _Fact *evidence) const override |
| void | register_simulated_goal_outcome (Fact *goal, bool success, _Fact *evidence) const override |
| void | register_req_outcome (Fact *f_pred, bool success, bool rate_failures) override |
Public Member Functions inherited from r_exec::PMDLController | |
| void | add_g_monitor (_GMonitor *m) |
| void | remove_g_monitor (_GMonitor *m) |
| void | add_r_monitor (_GMonitor *m) |
| void | remove_r_monitor (_GMonitor *m) |
| void | register_predicted_goal_outcome (Fact *goal, HLPBindingMap *bm, Fact *f_imdl, bool success, bool injected_goal) |
| void | inject_simulated_goal_success (Fact *goal, bool success, _Fact *evidence) const |
Public Member Functions inherited from r_exec::MDLController | |
| 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 |
| 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) |
| 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) |
Public Member Functions inherited from r_exec::HLPController | |
| 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 |
Public Member Functions inherited from r_exec::Controller | |
| 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 *) |
Public Member Functions inherited from core::_Object | |
| void | incRef () |
| virtual void | decRef () |
Additional Inherited Members | |
Static Public Member Functions inherited from r_exec::MDLController | |
| static MDLController * | New (View *view, bool &inject_in_secondary_group) |
| static bool | get_imdl_template_timings (r_code::Code *imdl, Timestamp &after, Timestamp &before, uint16 *after_ts_index=NULL, uint16 *before_ts_index=NULL) |
Protected Types inherited from r_exec::MDLController | |
| enum | RequirementType { NOT_A_REQUIREMENT = 0, WEAK_REQUIREMENT = 1, STRONG_REQUIREMENT = 2 } |
Protected Member Functions inherited from r_exec::PMDLController | |
| void | inject_goal (HLPBindingMap *bm, Fact *goal, Fact *f_imdl) const |
| void | inject_simulation (Fact *simulation, Timestamp injectionTime) const |
| bool | monitor_goals (_Fact *input) |
| std::chrono::microseconds | get_sim_thz (Timestamp now, Timestamp deadline) const |
| PMDLController (r_code::_View *view) | |
Protected Member Functions inherited from r_exec::MDLController | |
| void | _store_requirement (r_code::list< RequirementEntry > *cache, RequirementEntry &e) |
| float32 | get_success_rate () const |
| template<class C > | |
| void | reduce_cache (Fact *f_p_f_imdl, MDLController *controller) |
| template<class E > | |
| void | reduce_cache (CriticalSectionList< E > *cache, Fact *f_p_f_imdl, MDLController *controller) |
| bool | monitor_predictions (_Fact *input) |
| MDLController (r_code::_View *view) | |
Protected Member Functions inherited from r_exec::HLPController | |
| template<class E > | |
| void | _store_evidence (CriticalSectionList< E > *cache, _Fact *evidence) |
| bool | evaluate_bwd_guards (HLPBindingMap *bm, bool narrow_fwd_timings=false) |
| MatchResult | check_evidences (_Fact *target, _Fact *&evidence) |
| MatchResult | check_predicted_evidences (_Fact *target, _Fact *&evidence) |
| void | inject_notification_into_out_groups (r_code::Code *origin, r_code::Code *marker) const |
| bool | is_orphan () |
| bool | become_invalidated () |
| virtual void | kill_views () |
| HLPController (r_code::_View *view) | |
Protected Member Functions inherited from r_exec::OController | |
| OController (r_code::_View *view) | |
Protected Member Functions inherited from r_exec::Controller | |
| template<class C > | |
| void | __take_input (r_exec::View *input) |
| Controller (r_code::_View *view) | |
Static Protected Member Functions inherited from r_exec::Controller | |
| static void | push_reduction_job (_ReductionJob *j) |
Protected Attributes inherited from r_exec::PMDLController | |
| CriticalSection | g_monitorsCS_ |
| r_code::list< P< _GMonitor > > | g_monitors_ |
| r_code::list< P< _GMonitor > > | r_monitors_ |
Protected Attributes inherited from r_exec::MDLController | |
| RequirementCache | requirements_ |
| RequirementCache | simulated_requirements_ |
| CriticalSection | p_monitorsCS_ |
| r_code::list< P< PMonitor > > | p_monitors_ |
| P< r_code::Code > | lhs_ |
| P< r_code::Code > | rhs_ |
| RequirementType | requirement_type_ |
| bool | is_reuse_ |
| bool | is_cmd_ |
| CriticalSection | active_requirementsCS_ |
| std::unordered_map< P< _Fact >, RequirementsPair, r_code::PHash< _Fact > > | active_requirements_ |
Protected Attributes inherited from r_exec::HLPController | |
| CriticalSectionList< EvidenceEntry > | evidences_ |
| CriticalSectionList< PredictedEvidenceEntry > | predicted_evidences_ |
| P< HLPBindingMap > | bindings_ |
| bool | has_tpl_args_ |
| uint32 | ref_count_ |
| std::vector< P< HLPController > > | controllers_ |
| Timestamp | last_match_time_ |
Protected Attributes inherited from r_exec::OController | |
| r_code::list< P< Overlay > > | overlays_ |
Protected Attributes inherited from r_exec::Controller | |
| volatile uint32 | invalidated_ |
| volatile uint32 | activated_ |
| std::chrono::microseconds | time_scope_ |
| r_code::_View * | view_ |
| CriticalSection | reductionCS_ |
Protected Attributes inherited from core::_Object | |
| std::atomic_int32_t | refCount_ |
Static Protected Attributes inherited from r_exec::MDLController | |
| static const uint32 | LHSController = 0 |
| static const uint32 | RHSController = 1 |
See g_monitor.h: controllers and monitors work closely together.
Min sthz is the time allowed for simulated predictions to flow upward. Max sthz sets the responsiveness of the model, i.e. limits the time waiting for simulation results, i.e. limits the latency of decision making. Simulation is synchronous, i.e. is performed within the enveloppe of sthz, recursively.
Drives are not monitored (since they are not produced by models): they are injected periodically by user-defined pgms. Drives are not observable: they cannot be predicted to succeed or fail. RHS is a drive; the model is an axiom: no rating and lives in the primary group only. The model does not predict. There is exactly one top-level model for each drive: hence no simulation during backward chaining. Top-level models cannot have requirements.
Backward chaining: inputs are drives. If LHS is in the fact cache, stop. If LHS is in the prediction cache, spawn a g-monitor (will be ready to catch a counter-prediction, invalidate the goal and trigger the re-issuing of a new goal). Else commit to the sub-goal; this will trigger the simulation of sub-sub-goals; N.B.: commands are not simulated, commands with unbound values are not injected.
Definition at line 382 of file mdl_controller.h.
|
overridevirtual |
If f_p_f_imdl->get_pred()->is_simulation(), then this is for a simulation.
Implements r_exec::MDLController.
Definition at line 1261 of file mdl_controller.cpp.
1.8.18