← Documentation
ADS-IDAC Engine 5.0.0
ReasonMachine.h
Go to the documentation of this file.
1#pragma once
2
12
13#include <vector>
14#include <string>
15#include <sstream>
16#include <iostream>
17#include <fstream>
18#include <algorithm>
19#include <memory>
20
21#include "../Global/SimConstants.h"
22#include "../Global/TermConversions.h"
23#include "KBConcept.h" // Added by ClassView
24#include "SentenceUnit.h"
25#include "KnowledgeUnit.h"
26#include "KnowledgeElement.h"
27#include "../Branch/BranchRecord.h"
28#include "../Scheduler/CommunicationPlace.h"
29#include "IDElement.h"
30#include "Investigator.h"
31#include "InvestigatorLink.h"
33#include "../Global/fmodule.h"
34#include "RoutineMonitor.h" // Added by ClassView
35#include "InstantiationBase.h"
36#include "EventSchemaBase.h"
39#include "../Crew/TimeConstrainedModule.h"
40#include "ValueTimeLineUnit.h"
41#include "ProximityModel.h"
43
44
46 public:
47 void PrintKnowledgeWeb();
52 void AddDeltaToCognitiveLoad(float);
53 void AddDeltaToSystemDynamics(float);
57 std::vector<IDElement *> m_decayed_item_pt_list;
58 std::vector<std::string> m_decayed_item_ID_list;
63 void NotDoingAnything();
64 void AddItemToOngoingItemStack(std::string);
65 void EraseFromOngoingItemStack(std::string);
74 void WriteAuxInfo(std::string str);
75 void SaveThoughtLineHistory(std::string);
81 int GetAlarmStateImediately(std::string CP_name);
82 int GetAComponentStateImediately(std::string MR_name);
83 int GetASupportSystemStateImediately(std::string MR_name);
84 float GetAParameterValueImediately(std::string);
85 void SavePSFandDynamicParametersToFile(std::string _path);
88
90 void SaveInvestigationLinkInfo(std::string);
91 void SaveRMHisoty(std::string);
105 void AddANewDiagnoseInvestigator(DiagnoseInvestigator *_diagnose_invest_pt);
106 void SaveInvestigationsToFile(std::string _path);
107 void SaveStatementsToFile(std::string _path);
110 void PrintSemanticBase();
112 void PrintMessage(std::string);
114 void ErrorMessage(std::string);
116 void FirstRoundCheck();
120 void ChangeRMTokenValue(int);
126 void AddConsumptedDeltaT(double);
129 void ActivationDecayofRM();
142
149
154 float m_memory_span_base_value; //initiate attention span and memory span
156
159
160 //PSF history
161 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_time_load_history;
162 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_fatigue_history;
163 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_diagnosis_complexity_history;
164 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_cognitive_load_history;
165 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_stress_history;
166
167 //middle variable history
168 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_cognitive_resouse_use_history;
169
170 //manifestation history
171 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_routine_monitor_interval_multiplier_history;
172 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_attention_span_history;
173 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_memory_span_history;
174 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_decay_time_history;
175 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_cognitive_time_cost_multiplier_history;
176
179 std::vector<std::string> m_ongoing_item_stack;
180
181 std::unique_ptr<StringTimeIntervalUnit> m_current_thought_line_info;
182 std::vector<std::unique_ptr<StringTimeIntervalUnit>> m_thought_line_history;
183
184 std::unique_ptr<StringTimeIntervalUnit> m_current_investigation_info;
185 std::vector<std::unique_ptr<StringTimeIntervalUnit>> m_investigation_history;
186
188 std::unique_ptr<ProximityModel> m_proximity;
190 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_max_alarm_length_timeline;
191 std::vector<std::unique_ptr<ValueTimeLineUnit>> m_cognitive_time_cost_multiplier_timeline;
192
193 //Performance Shaping Factors
194 std::unique_ptr<PassiveAlarmLoadUnit> m_passive_alarm_load;
195 TimeConstrainedModule *m_time_constraint; // non-owning: points to Operator member
200
201
203
207 Statement *FindStatementByID(std::string);
208 std::string TranslateRMTokenToWords(int);
209
212 KnowledgeNode *FindKNByID(std::string);
215
217 SentenceUnit *SearchSentenceByID(std::string);
220
237
239
240 std::unique_ptr<EventSchemaBase> m_event_schema_base;
241 std::unique_ptr<InstantiationBase> m_IB;
242 Investigator *m_working_on_invest_pt; // non-owning: cross-ref into pool
243 InvestigatorLink *m_working_on_invest_link_pt; // non-owning: cross-ref into pool
244 IDElement *m_reading_indication_ID_pt; // non-owning: cross-ref into MR
245 std::unique_ptr<KBConcept> m_Concept_Base;
246 std::unique_ptr<RoutineMonitor> m_routine_monitor;
247 std::unique_ptr<MentalRepresentation> m_MR;
248
252
253 std::vector<std::unique_ptr<KnowledgeElement>> m_KE_list; //Knowledge Element pool
254 std::vector<std::unique_ptr<KnowledgeNode>> m_KN_list;
255 std::vector<std::unique_ptr<KnowledgeUnit>> m_Knowledge_list;
256 std::vector<std::unique_ptr<SentenceUnit>> m_Semantic_list;
257
258
259 std::vector<std::unique_ptr<Statement>> m_Statement_list;
260 std::vector<int> m_RM_Token_history;
261 std::vector<float> m_RM_token_endtime_history;
262 std::vector<std::unique_ptr<Investigator>> m_investigator_pool;
263 std::vector<std::unique_ptr<InvestigatorLink>> m_investigator_link_pool;
264
265 std::vector<Statement *> m_temporary_statement_list;
266 std::vector<Statement *> m_new_Statement_list;
267
268 std::vector<std::string> m_ID_temporary_statement_list;
269 std::vector<std::string> m_ID_new_statement_list;
270
271 std::vector<Investigator *> m_unresolved_investigator_pool;
272 std::vector<Investigator *> m_resolved_investigator_pool;
273 std::vector<Investigator *> m_success_investigator_pool; //3098, 3030
274 std::vector<Investigator *> m_failed_investigator_pool; //
275 std::vector<Investigator *> m_undetermined_investigator_pool; //3031
276 std::vector<Investigator *> m_discarded_investigator_pool; //3090
277 std::vector<Investigator *> m_cause_undetermined_investigato_pool; //3097
278 std::vector<IDElement *> m_feedback_stack;
279 std::vector<IDElement *> m_investigation_trace;
280
281 std::vector<std::string> m_ID_unresolved_invest_pool;
282 std::vector<std::string> m_ID_resolved_invest_pool;
283 std::vector<std::string> m_ID_succes_invest_pool;
284 std::vector<std::string> m_ID_failed_invest_pool;
285 std::vector<std::string> m_ID_undertermined_invest_pool;
286 std::vector<std::string> m_ID_discarded_invest_pool;
287 std::vector<std::string> m_ID_cause_undertermined_invest_pool;
288 std::vector<std::string> m_ID_feedback_stack;
289 std::vector<std::string> m_ID_invest_trace;
290
291 std::vector<MentalParameterValue *> m_tbi_P_list;
292 std::vector<MentalAlarm *> m_tbi_A_list;
293 std::vector<MentalComponentState *> m_tbi_C_list;
294 std::vector<MentalSupportSystemState *> m_tbi_SS_list;
295
296 std::vector<int> m_position_tbi_P_list;
297 std::vector<int> m_position_tbi_A_list;
298 std::vector<int> m_position_tbi_C_list;
299 std::vector<int> m_position_tbi_SS_list;
300
302 virtual ~ReasonMachine();
303};
ProblemSolvingStyle
Definition: SimConstants.h:10
std::vector< int > m_position_tbi_SS_list
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_time_load_history
void CopySemanticInfoFromAnotherSemanticBase(ReasonMachine *)
void ReadKnowledgeBaseFromInputFile()
std::vector< std::unique_ptr< StringTimeIntervalUnit > > m_investigation_history
float m_initial_fatigue_level
int m_max_length_of_alarms_stack
float m_system_dynamic_level
void PrintSemanticBase()
std::unique_ptr< KBConcept > m_Concept_Base
Investigator * FindASimilarInvestigatorRecentlyResolved(Investigator *)
Investigator * FindAMatchInvestigatorByKnowledgeElement(KnowledgeElement *, int, int)
InvestigatorLink * FindInvestigatorLinkByID(std::string)
void RemoveItemFromDecayedItemList(IDElement *)
void AddItemToDecayedItemList(IDElement *)
void SavePSFandDynamicParametersToFile(std::string _path)
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_fatigue_history
std::string m_ID_buffer_invest_pt
float m_memory_span_base_value
void UpdateManifestationParameterAtEndOfATimeStep()
void ConvertRMStaticInfoToStringForm()
void ReOpenItemWithActivationLevelAboveAGivenValue(float)
KnowledgeUnit * FindKnowledgeUnitByID(std::string)
std::vector< Statement * > m_new_Statement_list
float m_overall_stress
std::vector< std::string > m_ID_discarded_invest_pool
std::vector< std::unique_ptr< Investigator > > m_investigator_pool
void AddANewKnowledgeUnit(KnowledgeUnit *)
void ErrorMessage(std::string)
void SaveInvestigationsToFile(std::string _path)
SentenceUnit * SearchSentenceByID(std::string)
void PrintKnowledgeWeb()
double m_alarm_disruption_time_consumption
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_cognitive_resouse_use_history
void EraseFromOngoingItemStack(std::string)
void AddNewInvestigatorLink(InvestigatorLink *)
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_max_alarm_length_timeline
std::vector< std::unique_ptr< InvestigatorLink > > m_investigator_link_pool
std::string m_ID_working_on_invest
std::vector< Statement * > m_temporary_statement_list
void RandomlyGenerateKnowledgeBug()
std::vector< Investigator * > m_undetermined_investigator_pool
void AutoIgnitionOfDecayedInvestigatorInitiatedByActivatingAStatement(Statement *)
void ActivationUpdateByRefreshAStatement(Statement *)
float m_cognitive_time_cost_base_multiplier
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_cognitive_load_history
void AddPSFandManifestationDataSet()
void AddOneInvestigatorByStatement(Statement *)
float m_decay_time_base_value
float m_routine_monitor_threshold
double m_decay_constant_lamda
int GetAComponentStateImediately(std::string MR_name)
std::vector< MentalAlarm * > m_tbi_A_list
Investigator * m_working_on_invest_pt
Statement * FindRecentStatementBySentence(SentenceUnit *)
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_attention_span_history
bool m_first_round_check_done
void OneStepWorkOnSelectedInvestigatorLink3100()
float m_cognitive_load
void OneStepOfReasonMachine()
std::vector< MentalComponentState * > m_tbi_C_list
void WaitOneStepThereIsOneOrMoreOperatorBranches()
std::vector< Investigator * > m_failed_investigator_pool
void AddToRMFeedbackStack(IDElement *)
std::vector< std::string > m_ongoing_item_stack
void AddDeltaToCognitiveLoad(float)
std::vector< std::string > m_ID_unresolved_invest_pool
float GetAParameterValueImediately(std::string)
void DecayOfForgottenInvestigator()
void AddANewStatement(Statement *)
std::vector< Investigator * > m_discarded_investigator_pool
void ActivationDecayofRM()
void ZeroAllTheInterestFromSymptomInvestigator()
std::vector< std::unique_ptr< SentenceUnit > > m_Semantic_list
void CopyStaticKNfromAnotherRM(ReasonMachine *)
void RemoveInvestigatorFromUnresolvedPool(Investigator *)
float m_load_stress_integration_of_time
KnowledgeElement * FindKnowledgeElementByID(std::string)
SentenceUnit * FindAnIndefiniteSentenceMatchTheInputSentence(SentenceUnit *)
void AddItemToOngoingItemStack(std::string)
void CopyReasonMachineFromAnotherRM(ReasonMachine *)
TimeConstrainedModule * m_time_constraint
std::vector< std::string > m_ID_cause_undertermined_invest_pool
std::vector< std::unique_ptr< StringTimeIntervalUnit > > m_thought_line_history
std::vector< Investigator * > m_unresolved_investigator_pool
void ClearTBIListsForRestart()
bool m_block_alarm_jam
KnowledgeElement * FindAKEbySentenceAndNegationSign(SentenceUnit *, bool)
std::vector< std::string > m_ID_feedback_stack
void SetAllSentenceActivationRatioToOne()
void CopyStaticKEfromAnotherRM(ReasonMachine *)
void ClearThisReasonMachine()
void ReadOperatorReasonMachineProfile()
void SaveThoughtLineHistory(std::string)
void EraseItemFromFeedbackStack(IDElement *)
float m_cognitive_resource_use
int FindThePositionInTheInvestigationHistory(std::string)
void PropagateActivationFromConceptToSemanticSentence()
InvestigatorLink * m_working_on_invest_link_pt
int GetAlarmStateImediately(std::string CP_name)
float m_diagnosis_complexity
std::vector< std::unique_ptr< Statement > > m_Statement_list
float m_expert_level
std::vector< int > m_position_tbi_A_list
void ReadSemanticSentencesFromInputFile()
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_cognitive_time_cost_multiplier_history
std::unique_ptr< RoutineMonitor > m_routine_monitor
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_diagnosis_complexity_history
IDElement * FindInvestigatorOrLinkByID(std::string)
void ReadKEBaseAndKNFromInputFile()
std::vector< MentalParameterValue * > m_tbi_P_list
float m_ability_of_integrating_evidence
std::vector< IDElement * > m_feedback_stack
std::vector< Investigator * > m_cause_undetermined_investigato_pool
std::unique_ptr< ProximityModel > m_proximity
KnowledgeElement * FindKnowledgeElementByStatement(Statement *)
std::vector< std::string > m_ID_undertermined_invest_pool
IDElement * m_reading_indication_ID_pt
void SaveRMHisoty(std::string)
std::vector< std::unique_ptr< KnowledgeNode > > m_KN_list
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_routine_monitor_interval_multiplier_history
float m_consumed_time
void CutTheLengthOfAlarmStack()
void CheckWhetherTheThoughtLineHasChanged()
ProblemSolvingStyle m_problem_solving_style
void AddConsumptedDeltaT(double)
float m_interuptiveness
Definition: ReasonMachine.h:62
Statement * FoundASimilarStatementInLast10Seconds(Statement *)
void WriteAuxInfo(std::string str)
int m_investigator_number
std::vector< std::unique_ptr< KnowledgeElement > > m_KE_list
std::string m_ID_reading_indication
float m_fatigue_level
std::unique_ptr< InstantiationBase > m_IB
std::vector< float > m_RM_token_endtime_history
Statement * FindStatementByID(std::string)
std::unique_ptr< MentalRepresentation > m_MR
std::vector< std::string > m_ID_temporary_statement_list
float m_routine_monitor_interval_multiplier
void OneRoundActivationSpreadingFromASentence(SentenceUnit *)
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_stress_history
void PrintMessage(std::string)
Investigator * FindInvestigatorByID(std::string)
std::vector< std::string > m_ID_resolved_invest_pool
std::vector< IDElement * > m_investigation_trace
int GetASupportSystemStateImediately(std::string MR_name)
void OneStepInterpretation20()
SentenceUnit * CheckExistInSemanticPoolBySentence(SentenceUnit *)
void SettingForVagabondStyle()
Investigator * FindASimilarOngoingInvestigator(Investigator *)
std::vector< std::string > m_decayed_item_ID_list
Definition: ReasonMachine.h:58
std::vector< std::unique_ptr< KnowledgeUnit > > m_Knowledge_list
void InitiationOfReasonMachineFromInputFile()
float CheckRemainingTimeForThisStep()
std::vector< std::string > m_ID_invest_trace
void SaveStatementsToFile(std::string _path)
std::unique_ptr< StringTimeIntervalUnit > m_current_thought_line_info
std::vector< std::string > m_ID_new_statement_list
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_cognitive_time_cost_multiplier_timeline
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_memory_span_history
int FindThePositionInTheThoughtLineHistory(IDElement *)
void FindCorrespondingStatementWithinTimeRange(SentenceUnit *, int, int)
std::unique_ptr< EventSchemaBase > m_event_schema_base
std::unique_ptr< PassiveAlarmLoadUnit > m_passive_alarm_load
std::vector< std::string > m_ID_succes_invest_pool
void UpdatePSFAtEndOfATimeStep()
void AddDeltaToSystemDynamics(float)
KnowledgeNode * FindKNByID(std::string)
std::vector< Investigator * > m_resolved_investigator_pool
std::string TranslateRMTokenToWords(int)
std::vector< std::string > m_ID_failed_invest_pool
virtual ~ReasonMachine()
void AddBackToUnresolvedInvestigationPool(Investigator *)
float m_attention_span
Definition: ReasonMachine.h:67
void ChangeRMTokenValue(int)
void MakeOneStepInferenceFromAStatement(Statement *)
int m_investigator_link_number
std::vector< IDElement * > m_decayed_item_pt_list
Definition: ReasonMachine.h:57
void SaveInvestigationLinkInfo(std::string)
void BalanceTimerWithUnconsumedTime()
float m_goofy_start_time
Definition: ReasonMachine.h:59
void BuildTheConnectionsWithinRM()
bool FindAMatchingInvestigatorForAStatement(Statement *)
void CrankASentenceUnitActivationToAGivenValue(SentenceUnit *, float)
double m_decay_lamda
float m_cognitive_time_cost_multiplier
void SaveSequenceInfoToFile()
std::unique_ptr< StringTimeIntervalUnit > m_current_investigation_info
std::string m_ID_working_on_invest_link
Investigator * m_buffer_invest_pt
std::vector< int > m_RM_Token_history
Statement * CheckWhetherASentenceIsTrueFromMR(SentenceUnit *, int, int)
void OneStepPrioritizeInvestigation30()
float m_attention_span_base_value
double m_Interpretation_time_consumption
void AddNewInvestigator(Investigator *)
std::vector< int > m_position_tbi_C_list
void OneStepWorkOnSelectedInvestigator3000()
void AddANewDiagnoseInvestigator(DiagnoseInvestigator *_diagnose_invest_pt)
void OneStepRoutineMonitor10()
std::vector< std::unique_ptr< ValueTimeLineUnit > > m_decay_time_history
bool WetherAnInvestigationItemBelongsToTheCurrentThoughtLine(IDElement *)
std::vector< int > m_position_tbi_P_list
std::vector< Investigator * > m_success_investigator_pool
std::vector< MentalSupportSystemState * > m_tbi_SS_list
SentenceUnit * InstantiateAnIndefiniteSentenceWithLabel(SentenceUnit *, IDElement *)
void FirstRoundCheckInterpretation()