AERA
Public Member Functions | List of all members
r_exec::TopLevelMDLController Class Reference

#include <mdl_controller.h>

Inheritance diagram for r_exec::TopLevelMDLController:
r_exec::PMDLController r_exec::MDLController r_exec::HLPController r_exec::OController r_exec::Controller core::_Object

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)
 
_Factget_lhs () const
 
_Factget_rhs () const
 
Factget_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::Codeget_core_object () const override
 
r_code::Codeget_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::Codeget_out_group (uint16 i) const
 
Groupget_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::Codeget_object () const
 
r_exec::Viewget_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 MDLControllerNew (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::Codelhs_
 
P< r_code::Coderhs_
 
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< EvidenceEntryevidences_
 
CriticalSectionList< PredictedEvidenceEntrypredicted_evidences_
 
P< HLPBindingMapbindings_
 
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::_Viewview_
 
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
 

Detailed Description

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.

Member Function Documentation

◆ store_requirement()

void r_exec::TopLevelMDLController::store_requirement ( _Fact f_p_f_imdl,
MkRdx mk_rdx,
MDLController controller,
bool  chaining_was_allowed 
)
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.


The documentation for this class was generated from the following files: