12#include "../Crew/OperatorDM.h"
13#include "../Crew/OperatorAT.h"
18#include "../Global/SimulationContext.h"
57 bool NewStatement_bl =
false;
58 bool new_invest_bl =
false;
62 vector<SentenceUnit *> sent_list;
63 vector<SentenceUnit *>::iterator sent_itr;
68 prompt =
"Received new reading of ";
115 if((NewValue - this->
m_recent_parameter_value->m_perceived_value) < this->m_increase_rate_threshold * (
r5pars_.timesno - this->m_recent_parameter_value->m_time_perceived)
117 (NewValue - this->m_recent_parameter_value->m_perceived_value) > this->m_decrease_rate_threshold * (
r5pars_.timesno - this->m_recent_parameter_value->m_time_perceived))
123 if(NewValue < 0.0001)
135 {NewStatement_bl =
true;}
137 {NewStatement_bl =
true;}
139 {NewStatement_bl =
true;}
140 if(NewStatement_bl ==
true)
142 new_invest_bl =
true;
153 {NewStatement_bl =
true;}
155 {NewStatement_bl =
true;}
157 {NewStatement_bl =
true;}
158 if(NewStatement_bl ==
true)
160 new_invest_bl =
true;
171 {NewStatement_bl =
true;}
173 {NewStatement_bl =
true;}
174 if(NewStatement_bl ==
true)
176 new_invest_bl =
false;
188 if(found_sent_pt != NULL && NewStatement_bl ==
true)
191 auto stmt = make_unique<Statement>();
192 stmt->m_sent_pt = found_sent_pt;
193 stmt->m_state =
true;
194 stmt->m_time_range.m_time_before =
r5pars_.timesno;
196 stmt->m_confidence = 0.9;
197 stmt->m_factual_type = 2;
198 statement_pt = stmt.get();
203 if(_expecting ==
true)
211 new_invest_bl =
false;
219 else if( new_invest_bl ==
true)
222 auto inv = make_unique<Investigator>();
223 inv->m_note =
"by a statement";
224 inv->m_motivation = 1;
226 inv->m_Statement_pt = statement_pt;
229 inv->m_root_of_a_thought_line =
true;
230 invest_pt =
inv.get();
257 if(sem_e->m_sentence_type == 3 || sem_e->m_sentence_type == 4)
259 if(sem_e->m_subject_pt == this->m_Concept_ID_pt || sem_e->m_object_pt == this->m_Concept_ID_pt)
261 sent_list.push_back(sem_e.get());
271 for(sent_itr = sent_list.begin(); sent_itr != sent_list.end(); sent_itr++)
273 new_statement_pt = NULL;
274 NewStatement_bl =
false;
290 NewStatement_bl =
true;
297 NewStatement_bl =
true;
311 else if(sent_pt->
m_object_pt == this->m_Concept_ID_pt)
344 NewStatement_bl =
true;
349 if(value1 < value2 - sent_pt->m_delta_value)
351 NewStatement_bl =
true;
356 if(value1 > value2 - sent_pt->
m_delta_value && value1 < value2 + sent_pt->m_delta_value)
358 NewStatement_bl =
true;
370 if(NewStatement_bl ==
true)
372 auto stmt = make_unique<Statement>();
373 stmt->m_sent_pt = sent_pt;
374 stmt->m_state =
true;
375 stmt->m_time_generated =
r5pars_.timesno;
376 stmt->m_time_range.m_start_time =
r5pars_.timesno;
377 stmt->m_time_range.m_end_time =
r5pars_.timesno;
378 stmt->m_confidence = 1;
379 new_statement_pt = stmt.get();
383 new_invest_bl =
false;
391 if(state_ritr->get() != new_statement_pt)
392 {statement_pt = state_ritr->get();}
393 else if((*state_ritr)->m_time_range.GetTimeBoundLater() <
r5pars_.timesno - 600)
401 if((*invest_ritr)->m_KElement_ID_pt != NULL)
405 {invest_pt = invest_ritr->get();}
407 else if((*invest_ritr)->m_Statement_pt != NULL)
409 if((*invest_ritr)->m_Statement_pt->m_sent_pt == sent_pt)
410 {invest_pt = invest_ritr->get();}
412 else if((*invest_ritr)->m_investigation_initiate_time <
r5pars_.timesno - 600)
416 if(invest_pt == NULL)
417 {new_invest_bl =
true;}
421 {new_invest_bl =
true;}
423 {new_invest_bl =
true;}
426 if(statement_pt == NULL)
427 {new_invest_bl =
true;}
429 {new_invest_bl =
true;}
433 if(new_invest_bl ==
true)
436 auto inv = make_unique<Investigator>();
437 inv->m_note =
"by a statement";
438 inv->m_motivation = 1;
440 inv->m_Statement_pt = new_statement_pt;
443 inv->m_root_of_a_thought_line =
true;
444 invest_pt =
inv.get();
461 bool NewStatement_bl =
false;
468 prompt =
"Received new reading of ";
473 prompt += conv.str();
494 if(found_sent_pt != 0 )
497 {NewStatement_bl =
true;}
499 {NewStatement_bl =
true;}
501 {NewStatement_bl =
true;}
511 if(found_sent_pt != 0 )
514 {NewStatement_bl =
true;}
516 {NewStatement_bl =
true;}
518 {NewStatement_bl =
true;}
528 if(found_sent_pt != 0 )
531 {NewStatement_bl =
true;}
533 {NewStatement_bl =
true;}
539 {NewStatement_bl =
false;}
543 if(NewStatement_bl ==
true && found_sent_pt!= NULL)
546 auto stmt = make_unique<Statement>();
547 stmt->m_sent_pt = found_sent_pt;
548 stmt->m_state =
true;
549 stmt->m_time_range.m_start_time =
r5pars_.timesno;
550 stmt->m_time_range.m_end_time =
r5pars_.timesno;
551 stmt->m_confidence = 1.0;
552 stmt->m_factual_type = 1;
553 statement_pt = stmt.get();
559 if(_expecting ==
true)
585 auto inv = make_unique<Investigator>();
586 inv->m_note =
"by a statement";
587 inv->m_motivation = 1;
588 inv->m_Statement_pt = statement_pt;
592 inv->m_root_of_a_thought_line =
true;
593 invest_pt =
inv.get();
624 else if(this->
m_recent_parameter_value->m_time_perceived >= _start && this->m_recent_parameter_value->m_time_perceived <= _end)
634 if(
e->m_time_perceived >= _start &&
e->m_time_perceived <= _end)
636 value_schema_pt =
e.get();
641 return value_schema_pt;
685 if(this->
m_recent_parameter_value->m_time_perceived >= _start && this->m_recent_parameter_value->m_time_perceived <= _end)
691 for(
auto ritr = this->
m_parameter_history_value.rbegin(); ritr != this->m_parameter_history_value.rend() && found ==
false; ++ritr)
693 if((*ritr)->m_time_perceived <= _end)
695 if((*ritr)->m_time_perceived >= _start)
698 value_schema_pt = ritr->get();
707 return value_schema_pt;
759 bool NewStatement_bl =
false;
763 prompt =
"Received new reading of ";
768 prompt += conv.str();
786 {NewStatement_bl =
true;}
788 {NewStatement_bl =
true;}
789 if(NewStatement_bl ==
true)
801 {NewStatement_bl =
true;}
803 {NewStatement_bl =
true;}
804 if(NewStatement_bl ==
true)
816 {NewStatement_bl =
true;}
818 {NewStatement_bl =
true;}
819 if(NewStatement_bl ==
true)
828 if(found_sent_pt != NULL && NewStatement_bl ==
true)
831 auto stmt = make_unique<Statement>();
832 stmt->m_sent_pt = found_sent_pt;
833 stmt->m_state =
true;
834 stmt->m_time_range.m_time_before =
r5pars_.timesno;
836 stmt->m_confidence = 0.9;
837 stmt->m_factual_type = 2;
838 statement_pt = stmt.get();
863 bool NewStatement_bl =
false;
868 prompt =
"Received new reading of ";
873 prompt += conv.str();
890 if(found_sent_pt != 0 )
893 {NewStatement_bl =
true;}
895 {NewStatement_bl =
true;}
905 if(found_sent_pt != 0 )
908 {NewStatement_bl =
true;}
910 {NewStatement_bl =
true;}
920 if(found_sent_pt != 0 )
923 {NewStatement_bl =
true;}
925 {NewStatement_bl =
true;}
928 if(NewStatement_bl ==
true && found_sent_pt!= NULL)
931 auto stmt = make_unique<Statement>();
932 stmt->m_sent_pt = found_sent_pt;
933 stmt->m_state =
true;
934 stmt->m_time_range.m_start_time =
r5pars_.timesno;
935 stmt->m_time_range.m_end_time =
r5pars_.timesno;
936 stmt->m_confidence = 1.0;
937 stmt->m_factual_type = 1;
938 statement_pt = stmt.get();
958 cout <<
"Time: " <<
r5pars_.timesno <<
": " << str <<
'\n';
961 ofstream fout(
"RMI.txt", ios::app);
962 fout <<
"Time: " <<
r5pars_.timesno <<
": " << str <<
'\n';
989 {comparison_type = 1;}
991 {comparison_type = 2;}
993 {comparison_type = 3;}
1005 && this->m_recent_parameter_value->m_time_perceived <= _end)
1007 switch (comparison_type)
1023 && this->m_recent_parameter_value->m_perceived_value - value < delta)
1044 value_schema_pt = VS_ritr->get();
1048 switch (comparison_type)
1053 found_schema_pt = value_schema_pt;
1059 found_schema_pt = value_schema_pt;
1066 found_schema_pt = value_schema_pt;
1082 return found_schema_pt;
1099 int comparison_type;
1108 {comparison_type = 1;}
1110 {comparison_type = 2;}
1112 {comparison_type = 3;}
1124 && this->m_recent_parameter_value->m_time_perceived <= _end)
1126 switch (comparison_type)
1142 && this->m_recent_parameter_value->m_perceived_value - value <= delta))
1163 value_schema_pt = VS_ritr->get();
1167 switch (comparison_type)
1172 found_schema_pt = value_schema_pt;
1178 found_schema_pt = value_schema_pt;
1185 found_schema_pt = value_schema_pt;
1201 return found_schema_pt;
1207 cout <<
r5pars_.timesno <<
" " << str <<
" in MRParameterUnit.cpp" <<
'\n';
1208 ofstream fout(
"err messages.txt", ios::app);
1209 fout <<
r5pars_.timesno <<
" " << str <<
'\n';
1250 auto value_pt = make_unique<MRValueSchema>();
1251 value_pt->CopyMRValueSchemaFromAnother(
e.get());
1256 auto value_pt = make_unique<MRValueSchema>();
1257 value_pt->CopyMRValueSchemaFromAnother(
e.get());
1309 if(invest_pt != NULL)
Diagnostic reasoning engine — knowledge representation, mental model, and inference.
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void CopyIDElementToRestartInfo(IDElement *)
bool m_investigation_closed
SentenceUnit * GetSemanticSentenceOfThisInvestigator()
void ReopenThisInvestigator()
Statement * m_possible_statement_pt
Statement * m_Statement_pt
SentenceUnit * m_SentenceUnit_pt
std::string m_parameter_concept_ID
std::string m_ID_recent_trend
float m_decrease_rate_threshold
MRValueSchema * FindAReadingConsistantWithASentenceWithinTimeRange(float _start, float _end, SentenceUnit *_sent_pt)
void ReadParameterRate(double)
Statement * m_recent_trend
void AddNewRateForFirstRoundCheck(float, int)
std::string m_parameter_indicator_ID
void PrintMessage(std::string)
void AddNewRate(float, int, bool)
std::unique_ptr< MRValueSchema > m_recent_parameter_rate
void AddNewValue(float, int, bool)
virtual ~MRParameterUnit()
IDElement * m_Concept_ID_pt
std::vector< std::unique_ptr< MRValueSchema > > m_parameter_history_rate
void UpdateTheRelevantInvestigator(int)
void AddNewValueForFirstRoundCheck(float, int)
MRValueSchema * FoundAValueReadingWithinTimeRange(float, float)
float m_increase_rate_threshold
float m_decrease_threshold
float m_increase_threshold
void ReadParameterIndication(double)
void ErrorMessage(std::string str)
void BuildConnectionsForThisMRParameter(void *)
void CopyMRParameterUnitInforFromAnother(MRParameterUnit *)
std::string m_parameter_rate_indicator_ID
void ReadParameterValue(double)
std::vector< std::unique_ptr< MRValueSchema > > m_parameter_history_value
std::unique_ptr< MRValueSchema > m_recent_parameter_value
MRValueSchema * FindAReadingInconsistantWithASentenceWithinTimeRange(float _start, float _end, SentenceUnit *_sent_pt)
MRValueSchema * CheckReadingWithinTimeRange(double, double)
std::unique_ptr< ReasonMachine > m_RM
void ActiveFetchParameterValueInfo(std::string, int)
std::unique_ptr< KBConcept > m_Concept_Base
std::vector< std::unique_ptr< Investigator > > m_investigator_pool
Investigator * m_working_on_invest_pt
void AddDeltaToCognitiveLoad(float)
void AddANewStatement(Statement *)
std::vector< std::unique_ptr< SentenceUnit > > m_Semantic_list
std::vector< std::unique_ptr< Statement > > m_Statement_list
Statement * FindStatementByID(std::string)
std::unique_ptr< MentalRepresentation > m_MR
SentenceUnit * CheckExistInSemanticPoolBySentence(SentenceUnit *)
void AddDeltaToSystemDynamics(float)
void AddNewInvestigator(Investigator *)
IDElement * m_comparison_pt
void RefreshStatementEndTimeToCurrentTime(int)
IDElement * m_investigator_ID_pt
float GetTimeBoundEarlier()
OperatorAT Action_Taker
Crew action execution model.
OperatorDM Decision_Maker
Crew decision-making model.