← Documentation
ADS-IDAC Engine 5.0.0
MentalRepresentation.cpp
Go to the documentation of this file.
1// MentalRepresentation.cpp: implementation of the MentalRepresentation class.
2//
4
5#include <iostream>
6#include <fstream>
7#include <sstream>
8
10#include "../Global/TermConversions.h"
11#include "../Scheduler/Scheduler.h"
12#include "../Crew/OperatorDM.h"
13#include "../Global/SimulationContext.h"
14
15
16using namespace std;
17
19// Construction/Destruction
21
23 this->m_check_value_or_rate = 0;
25 this->m_MR_A_itr = this->m_MRAlarm_list.begin();
26 this->m_MR_C_itr = this->m_MRComponent_list.begin();
27 this->m_MR_P_itr = this->m_MRParameter_list.begin();
28
29 //0--check vale
30 //1--check rate
31}
32
34 // unique_ptr elements are automatically deleted when vectors are destroyed
35}
36
38 string file_name;
39 string concept_ID, indicator_ID, str, str1, rate_indicator_ID, control_value_indicator_ID;
40 int n_Unit, n_type;
41 int i;
42 MRParameterUnit *MRPar_pt;
43 MRComponentStateUnit *MRComponentState_pt;
44 MRSupportSystemStateUnit *MRSupportSystemState_pt;
45 MRAlarmUnit *MRAlarm_pt;
46 bool found_file;
47 ifstream fin;
48 ReasonMachine *RM_pt;
49 double v1, v2, v3, v4;
50 string err_mes;
51 string ID_name;
52 stringstream conv;
53
54 //find corresponding ReasonMachine
55 if (this->m_operator == sim::Operator::ODM) { RM_pt = g_sim.Decision_Maker.m_RM.get(); }
56 else if (this->m_operator == sim::Operator::OAT) { RM_pt = g_sim.Action_Taker.m_RM.get(); }
57 else {
58 err_mes = "could not identify operator type in MentalRepresentation::ReadMentalRepresentationtInfoFromInputFile()";
59 this->ErrorMessage(err_mes);
60 return;
61 }
62
63 if (this->m_operator == sim::Operator::ODM) {
64 file_name = g_sim.SScheduler.getODMDirectory();
65 file_name += "RM/";
66 file_name += "KB_ODM_Mental_Representation.txt";
67 } else if (this->m_operator == sim::Operator::OAT) {
68 file_name = g_sim.SScheduler.getOATDirectory();
69 file_name += "RM/";
70 file_name += "KB_OAT_Mental_Representation.txt";
71 } else {
72 err_mes = "could not identify the operator in MentalRepresentation::ReadMentalRepresentationtInfoFromInputFile()";
73 this->ErrorMessage(err_mes);
74 return;
75 }
76
77 fin.open(file_name.c_str(), ios::in);
78 if (!fin.is_open()) {
79 err_mes = "can not find file: " + file_name;
80 this->ErrorMessage(err_mes);
81 found_file = false;
82 return; //has to return and close this program if there is an error
83 } else {
84 found_file = true;
85
86 //MR of parameters
87 fin >> str >> n_Unit;
88 for (i = 0; i < n_Unit; i++) {
89 fin >> str >> concept_ID;
90 if (str.compare("Parameter_Concept_ID") != 0) {
91 err_mes = concept_ID + " is not aligned in the right position";
92 this->ErrorMessage(err_mes);
93 return;
94 }
95 fin >> str >> indicator_ID;
96 if (str.compare("Corresponding_Value_Indicator") != 0) {
97 err_mes = indicator_ID + " is not aligned in the right position";
98 this->ErrorMessage(err_mes);
99 return;
100 }
101 fin >> str >> rate_indicator_ID;
102 if (str.compare("Corresponding_Rate_Indicator") != 0) {
103 err_mes = "Corresponding_Rate_Indicator of " + rate_indicator_ID + " is not aligned in the right position";
104 this->ErrorMessage(err_mes);
105 return;
106 }
107 fin >> str >> v1;
108 if (str.compare("increase_detect_threshold") != 0) {
109 err_mes = "increase_dectect_threshold of " + concept_ID + " is not aligned in the right position";
110 this->ErrorMessage(err_mes);
111 return;
112 }
113 fin >> str >> v2;
114 if (str.compare("decrease_detect_threshold") != 0) {
115 err_mes = "decrease_dectect_threshold of " + concept_ID + " is not aligned in the right position";
116 this->ErrorMessage(err_mes);
117 return;
118 }
119 fin >> str >> v3;
120 if (str.compare("increase_rate_detect_threshold") != 0) {
121 err_mes = "increase_rate_detect_threshold of " + concept_ID + " is not aligned in the right position";
122 this->ErrorMessage(err_mes);
123 return;
124 }
125 fin >> str >> v4;
126 if (str.compare("decrease_rate_detect_threshold") != 0) {
127 err_mes = "decrease_rate_detect_threshold of " + concept_ID + " is not aligned in the right position";
128 this->ErrorMessage(err_mes);
129 return;
130 }
131
132 auto MRPar_upt = make_unique<MRParameterUnit>();
133 MRPar_pt = MRPar_upt.get();
134
135 conv.str("");
136 conv << this->m_MRParameter_list.size();
137 ID_name = "MR_Parameter_" + conv.str();
138 MRPar_pt->m_ID = ID_name;
139 MRPar_pt->m_operator = this->m_operator;
140 MRPar_pt->m_parameter_concept_ID = concept_ID;
141 MRPar_pt->m_Concept_ID_pt = RM_pt->m_Concept_Base->FindConceptByID(concept_ID);
142 if (MRPar_pt->m_Concept_ID_pt == NULL) {
143 err_mes = "could not find concept: " + concept_ID
144 + " in semantic base, error location: Mental representation txt file";
145 this->ErrorMessage(err_mes);
146 return;
147 }
148 MRPar_pt->m_parameter_indicator_ID = indicator_ID;
149 MRPar_pt->m_parameter_rate_indicator_ID = rate_indicator_ID;
150 MRPar_pt->m_increase_threshold = v1;
151 MRPar_pt->m_decrease_threshold = v2;
152 MRPar_pt->m_increase_rate_threshold = v3;
153 MRPar_pt->m_decrease_rate_threshold = v4;
154 this->m_MRParameter_list.push_back(std::move(MRPar_upt));
155 }
156
157 //MR of component states
158 fin >> str >> n_Unit;
159 if (str.compare("No_of_Component_State_Concept") != 0) {
160 err_mes = "No_of_Component_State_Concept is not aligned in the proper position in Mental Representation txt file";
161 this->ErrorMessage(err_mes);
162 return;
163 }
164 for (i = 0; i < n_Unit; i++) {
165 control_value_indicator_ID = "NONE";
166 fin >> str >> concept_ID;
167 if (str.compare("Component_Concept_ID") != 0) {
168 err_mes = "Component_Concept_ID of " + concept_ID
169 + " is not aligned in the proper position in Mental Representation txt file";
170 this->ErrorMessage(err_mes);
171 return;
172 }
173 fin >> str >> n_type;
174 if (str.compare("Component_State_Type") != 0) {
175 err_mes = "Component_State_Type " + concept_ID
176 + " is not aligned in the proper position in Mental Representation txt file";
177 this->ErrorMessage(err_mes);
178 return;
179 }
180 auto MRComp_upt = make_unique<MRComponentStateUnit>();
181 MRComponentState_pt = MRComp_upt.get();
182 conv.str("");
183 conv << this->m_MRComponent_list.size();
184 ID_name = "MR_Component_State_" + conv.str();
185 MRComponentState_pt->m_ID = ID_name;
186
187 MRComponentState_pt->m_operator = this->m_operator;
188 MRComponentState_pt->m_concept_ID = concept_ID;
189 MRComponentState_pt->m_Concept_ID_pt = RM_pt->m_Concept_Base->FindConceptByID(concept_ID);
190 if (MRComponentState_pt->m_Concept_ID_pt == NULL) {
191 err_mes = "could not find a corresponding concept in the semantic base for MR item " + concept_ID;
192 this->ErrorMessage(err_mes);
193 return;
194 }
195 MRComponentState_pt->m_CS_type = n_type;
196 switch (n_type) {
197 case 0: fin >> str >> str1;
198 if (str.compare("Conponent_State_Indicator") != 0) {
199 err_mes = "MR Item: " + concept_ID + ". Conponent_State_Indicator is not aligned in right posiiton";
200 this->ErrorMessage(err_mes);
201 return;
202 }
203 MRComponentState_pt->Component_State_Indicator_ID = str1;
204 break;
205 case 1: fin >> str >> str1;
206 if (str.compare("Component_position_Indicator") != 0) {
207 err_mes = "MR Item: " + concept_ID + ". Component_position_Indicator is not aligned in right posiiton";
208 this->ErrorMessage(err_mes);
209 return;
210 }
211 MRComponentState_pt->Control_Value_Indicator_ID = str1;
212 fin >> str >> v1;
213 if (str.compare("Component_position_change_detect_threshold") != 0) {
214 err_mes = "MR Item: " + concept_ID
215 + ". Component_position_change_detect_threshold is not aligned in right posiiton";
216 this->ErrorMessage(err_mes);
217 return;
218 }
219 MRComponentState_pt->m_change_threshold = v1;
220 break;
221 default: break;//error message, should not be here
222 }
223 this->m_MRComponent_list.push_back(std::move(MRComp_upt));
224 }
225
226 //MR of Support Systems
227 fin >> str >> n_Unit;
228 if (str.compare("No_of_Support_System_Concept") != 0) {
229 err_mes = "No_of_Support_System_Concept is mis-aligned with " + str;
230 this->ErrorMessage(err_mes);
231 return;
232 }
233 for (i = 0; i < n_Unit; i++) {
234 fin >> str >> concept_ID;
235 if (str.compare("Support_System_State_Concept_ID") != 0) {
236 err_mes = "Support_System_Concept_ID is mis-aligned with" + str;
237 this->ErrorMessage(err_mes);
238 return;
239 }
240 fin >> str >> indicator_ID;
241 if (str.compare("Support_System_State_Indicator") != 0) {
242 err_mes = "Support_System_Indicator is mis-aligned with" + str;
243 this->ErrorMessage(err_mes);
244 return;
245 }
246 auto MRSS_upt = make_unique<MRSupportSystemStateUnit>();
247 MRSupportSystemState_pt = MRSS_upt.get();
248
249 conv.str("");
250 conv << this->m_MRSupportSystem_list.size();
251 ID_name = "MR_Support_System_" + conv.str();
252 MRSupportSystemState_pt->m_ID = ID_name;
253
254 MRSupportSystemState_pt->m_operator = this->m_operator;
255 MRSupportSystemState_pt->m_concept_ID = concept_ID;
256 MRSupportSystemState_pt->m_Concept_ID_pt = RM_pt->m_Concept_Base->FindConceptByID(concept_ID);
257 if (MRSupportSystemState_pt->m_Concept_ID_pt == NULL) {
258 err_mes = "could not find concept: " + concept_ID
259 + " in semantic base. Error location: Mental representation txt file";
260 this->ErrorMessage(err_mes);
261 return;
262 }
263 MRSupportSystemState_pt->Support_System_State_Indicator_ID = indicator_ID;
264 this->m_MRSupportSystem_list.push_back(std::move(MRSS_upt));
265 }
266
267 //MR of Alarms
268 fin >> str >> n_Unit;
269 if (str.compare("No_of_Alarm_Concept") != 0) {
270 err_mes = "No_of_Alarm_Concept is mis-aligned with " + str;
271 this->ErrorMessage(err_mes);
272 return;
273 }
274 for (i = 0; i < n_Unit; i++) {
275 fin >> str >> concept_ID;
276 if (str.compare("Alarm_Concept_ID") != 0) {
277 err_mes = "Alarm_Concept_ID is mis-aligned with" + str;
278 this->ErrorMessage(err_mes);
279 return;
280 }
281 fin >> str >> indicator_ID;
282 if (str.compare("Alarm_Indicator") != 0) {
283 err_mes = "Alarm_Indicator is mis-aligned with" + str;
284 this->ErrorMessage(err_mes);
285 return;
286 }
287 auto MRAlarm_upt = make_unique<MRAlarmUnit>();
288 MRAlarm_pt = MRAlarm_upt.get();
289
290 conv.str("");
291 conv << this->m_MRAlarm_list.size();
292 ID_name = "MR_Alarm_" + conv.str();
293 MRAlarm_pt->m_ID = ID_name;
294
295 MRAlarm_pt->m_operator = this->m_operator;
296 //MRComponentState_pt->Component_Concept_ID = concept_ID; to be modified
297 MRAlarm_pt->m_Concept_ID = concept_ID;
298 MRAlarm_pt->m_Concept_pt = RM_pt->m_Concept_Base->FindConceptByID(concept_ID);
299 if (MRAlarm_pt->m_Concept_pt == NULL) {
300 err_mes = "could not find concept: " + concept_ID
301 + " in semantic base. Error location: Mental representation txt file";
302 this->ErrorMessage(err_mes);
303 return;
304 }
305 MRAlarm_pt->m_alarm_indicator_name = indicator_ID;
306 this->m_MRAlarm_list.push_back(std::move(MRAlarm_upt));
307 }
308 }
309 fin.close();
310}
311
313 IDElement *ID_pt = NULL;
314 MRParameterUnit *P_pt;
317 MRAlarmUnit *A_pt;
318
319 bool found = false;
320
321 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end() && found == false; P_itr++) {
322 P_pt = P_itr->get();
323 if (P_pt->m_parameter_indicator_ID == _indicator || P_pt->m_parameter_rate_indicator_ID == _indicator) {
324 found = true;
325 ID_pt = P_pt;
326 }
327 }
328 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end() && found == false; C_itr++) {
329 C_pt = C_itr->get();
330 if (C_pt->Component_State_Indicator_ID == _indicator || C_pt->Control_Value_Indicator_ID == _indicator) {
331 found = true;
332 ID_pt = C_pt;
333 }
334 }
335 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end() && found == false;
336 SS_itr++) {
337 SS_pt = SS_itr->get();
338 if (SS_pt->Support_System_State_Indicator_ID == _indicator) {
339 found = true;
340 ID_pt = SS_pt;
341 }
342 }
343 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end() && found == false; A_itr++) {
344 A_pt = A_itr->get();
345 if (A_pt->m_alarm_indicator_name == _indicator) {
346 found = true;
347 ID_pt = A_pt;
348 }
349 }
350 return ID_pt;
351
352}
353
355 IDElement *ID_pt = NULL;
356 MRParameterUnit *P_pt;
359 MRAlarmUnit *A_pt;
360
361 bool found = false;
362 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end() && found == false; P_itr++) {
363 P_pt = P_itr->get();
364 if (P_pt->m_Concept_ID_pt->m_ID == _ID_pt->m_ID) {
365 found = true;
366 ID_pt = (IDElement *) P_pt;
367 }
368 }
369 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end() && found == false; C_itr++) {
370 C_pt = C_itr->get();
371 if (C_pt->m_Concept_ID_pt->m_ID == _ID_pt->m_ID) {
372 found = true;
373 ID_pt = (IDElement *) C_pt;
374 }
375 }
376 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end() && found == false;
377 SS_itr++) {
378 SS_pt = SS_itr->get();
379 if (SS_pt->m_Concept_ID_pt->m_ID == _ID_pt->m_ID) {
380 found = true;
381 ID_pt = (IDElement *) SS_pt;
382 }
383 }
384 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end() && found == false; A_itr++) {
385 A_pt = A_itr->get();
386 if (A_pt->m_Concept_pt->m_ID == _ID_pt->m_ID) {
387 found = true;
388 ID_pt = (IDElement *) A_pt;
389 }
390 }
391 return ID_pt;
392
393}
394
396 IDElement *ID_pt = NULL;
397 MRParameterUnit *P_pt;
400 MRAlarmUnit *A_pt;
401
402 bool found = false;
403 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end() && found == false; P_itr++) {
404 P_pt = P_itr->get();
405 if (P_pt->m_Concept_ID_pt->m_ID == _ID_str) {
406 found = true;
407 ID_pt = (IDElement *) P_pt;
408 }
409 }
410 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end() && found == false; C_itr++) {
411 C_pt = C_itr->get();
412 if (C_pt->m_Concept_ID_pt->m_ID == _ID_str) {
413 found = true;
414 ID_pt = (IDElement *) C_pt;
415 }
416 }
417 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end() && found == false;
418 SS_itr++) {
419 SS_pt = SS_itr->get();
420 if (SS_pt->m_Concept_ID_pt->m_ID == _ID_str) {
421 found = true;
422 ID_pt = (IDElement *) SS_pt;
423 }
424 }
425 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end() && found == false; A_itr++) {
426 A_pt = A_itr->get();
427 if (A_pt->m_Concept_pt->m_ID == _ID_str) {
428 found = true;
429 ID_pt = (IDElement *) A_pt;
430 }
431 }
432 return ID_pt;
433}
434
436 MRParameterUnit *P_pt;
439 MRAlarmUnit *A_pt;
440
441 ReasonMachine *RM_pt;
442 string err_mes;
443
444 //find corresponding ReasonMachine
445 int operator_branch_num = 0;
446 if (this->m_operator == sim::Operator::ODM) {
447 RM_pt = g_sim.Decision_Maker.m_RM.get();
448 operator_branch_num = g_sim.Branch_center.getNumOfODMBranch();
449 } else if (this->m_operator == sim::Operator::OAT) {
450 RM_pt = g_sim.Action_Taker.m_RM.get();
451 operator_branch_num = g_sim.Branch_center.getNumOfOATBranch();
452 } else {}//add error message
453
454 if (operator_branch_num > 0) {
456 return;
457 }
458
459 if (this->m_first_round_initiated_bl == false) {
460 this->m_MR_P_itr = this->m_MRParameter_list.begin();
461 this->m_MR_C_itr = this->m_MRComponent_list.begin();
462 this->m_MR_SS_itr = this->m_MRSupportSystem_list.begin();
463 this->m_MR_A_itr = this->m_MRAlarm_list.begin();
464 this->m_first_round_initiated_bl = true;
465 }
466 if (this->m_MR_P_itr != this->m_MRParameter_list.end()) {
467 P_pt = this->m_MR_P_itr->get();
468 if (this->m_check_value_or_rate == 0) {
469 P_pt->ReadParameterValue(0);
470 this->m_check_value_or_rate = 1;
471 } else {
472 P_pt->ReadParameterRate(0);
473 this->m_check_value_or_rate = 0;
474 (this->m_MR_P_itr)++;
475 }
476 } else if (this->m_MR_C_itr != this->m_MRComponent_list.end()) {
477 C_pt = this->m_MR_C_itr->get();
479 (this->m_MR_C_itr)++;
480 } else if (this->m_MR_SS_itr != this->m_MRSupportSystem_list.end()) {
481 SS_pt = this->m_MR_SS_itr->get();
483 (this->m_MR_SS_itr)++;
484 } else if (this->m_MR_A_itr != this->m_MRAlarm_list.end()) {
485 A_pt = this->m_MR_A_itr->get();
486 A_pt->ReadAlarmIndication(0);
487 (this->m_MR_A_itr)++;
488 } else {
489 RM_pt->m_first_round_check_done = true;
490 }
491}
492
494 cout << r5pars_.timesno << " " << str << " in MentalRepresentation.cpp" << '\n';
495 ofstream fout("err messages.txt", ios::app);
496 fout << r5pars_.timesno << " " << str << '\n';
497 fout.close();
498 //r5pars_.terminateall = true;
499}
500
502 MRParameterUnit *P_pt;
505 MRAlarmUnit *A_pt;
506
507 ofstream fout(_path.c_str(), ios::out);
508 fout << "ID" << '\t';
509 fout << "Reading History" << '\n';
510
511 //Add Alarm Information
512 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end(); A_itr++) {
513 A_pt = A_itr->get();
514 fout << A_pt->m_Concept_pt->m_ID << ": State" << '\t';
515 for (const auto &e : A_pt->m_history_state_list) {
516 if (e->m_perceived_state == true) {
517 fout << "ON" << '\t';
518 } else {
519 fout << "OFF" << '\t';
520 }
521 }
522 if (A_pt->m_recent_state != NULL) {
523 if (A_pt->m_recent_state->m_perceived_state == true) {
524 fout << "ON" << '\t';
525 } else {
526 fout << "OFF" << '\t';
527 }
528 }
529 fout << '\n';
530 fout << A_pt->m_Concept_pt->m_ID << ": Reading time" << '\t';
531 for (const auto &e : A_pt->m_history_state_list) {
532 fout << e->m_time_perceived << '\t';
533 }
534 if (A_pt->m_recent_state != NULL) {
535 fout << A_pt->m_recent_state->m_time_perceived << '\t';
536 }
537 fout << '\n';
538 }
539
540 //Add parameter information
541 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end(); P_itr++) {
542 P_pt = P_itr->get();
543 //Add parameter reading
544 fout << P_pt->m_Concept_ID_pt->m_ID << ": Value" << '\t';
545 for (const auto &e : P_pt->m_parameter_history_value) {
546 fout << e->m_perceived_value;
547 fout << '\t';
548 }
549 if (P_pt->m_recent_parameter_value != NULL) {
550 fout << P_pt->m_recent_parameter_value->m_perceived_value;
551 }
552 fout << '\n';
553
554 fout << P_pt->m_Concept_ID_pt->m_ID << ": Value reading time" << '\t';
555 for (const auto &e : P_pt->m_parameter_history_value) {
556 fout << e->m_time_perceived;
557 fout << '\t';
558 }
559 if (P_pt->m_recent_parameter_value != NULL) {
560 fout << P_pt->m_recent_parameter_value->m_time_perceived;
561 }
562 fout << '\n';
563
564 //Add the change rate reading
565 if (P_pt->m_parameter_rate_indicator_ID == "NONE") { continue; }
566
567 fout << P_pt->m_Concept_ID_pt->m_ID << ": Rate" << '\t';
568 for (const auto &e : P_pt->m_parameter_history_rate) {
569 fout << e->m_perceived_value;
570 fout << '\t';
571 }
572 if (P_pt->m_recent_parameter_rate != NULL) {
573 fout << P_pt->m_recent_parameter_rate->m_perceived_value;
574 }
575 fout << '\n';
576
577 fout << P_pt->m_Concept_ID_pt->m_ID << ": Value reading time" << '\t';
578 for (const auto &e : P_pt->m_parameter_history_rate) {
579 fout << e->m_time_perceived;
580 fout << '\t';
581 }
582 if (P_pt->m_recent_parameter_rate != NULL) {
583 fout << P_pt->m_recent_parameter_rate->m_time_perceived;
584 }
585 fout << '\n';
586 }
587
588 //Add Component State Information
589 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end(); C_itr++) {
590 C_pt = C_itr->get();
591 switch (C_pt->m_CS_type) {
592 case 0: fout << C_pt->m_Concept_ID_pt->m_ID << ": State" << '\t';
593 for (const auto &e : C_pt->m_history_state) {
594 if (e->m_perceived_state == true) {
595 fout << "ON" << '\t';
596 } else {
597 fout << "OFF" << '\t';
598 }
599 }
600 if (C_pt->m_recent_state != NULL) {
601 if (C_pt->m_recent_state->m_perceived_state == true) {
602 fout << "ON" << '\t';
603 } else {
604 fout << "OFF" << '\t';
605 }
606 }
607 fout << '\n';
608 fout << C_pt->m_Concept_ID_pt->m_ID << ": Reading time" << '\t';
609 for (const auto &e : C_pt->m_history_state) {
610 fout << e->m_time_perceived << '\t';
611 }
612 if (C_pt->m_recent_state != NULL) {
613 fout << C_pt->m_recent_state->m_time_perceived << '\t';
614 }
615 fout << '\n';
616 break;
617
618 case 1: fout << C_pt->m_Concept_ID_pt->m_ID << ": Position" << '\t';
619 for (const auto &e : C_pt->m_history_position_value) {
620 fout << e->m_perceived_value << '\t';
621 }
622 if (C_pt->m_recent_position_value != NULL) {
623 fout << C_pt->m_recent_position_value->m_perceived_value << '\t';
624 }
625 fout << '\n';
626 fout << C_pt->m_Concept_ID_pt->m_ID << ": Reading time" << '\t';
627 for (const auto &e : C_pt->m_history_position_value) {
628 fout << e->m_time_perceived << '\t';
629 }
630 if (C_pt->m_recent_position_value != NULL) {
631 fout << C_pt->m_recent_position_value->m_time_perceived << '\t';
632 }
633 fout << '\n';
634 break;
635 default: break;
636 }
637 }
638
639 //Add Support System State Information
640 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end(); SS_itr++) {
641 SS_pt = SS_itr->get();
642 fout << SS_pt->m_Concept_ID_pt->m_ID << ": State" << '\t';
643 for (const auto &e : SS_pt->m_history_state) {
644 if (e->m_perceived_state == true) {
645 fout << "ON" << '\t';
646 } else {
647 fout << "OFF" << '\t';
648 }
649 }
650 if (SS_pt->m_recent_state != NULL) {
651 if (SS_pt->m_recent_state->m_perceived_state == true) {
652 fout << "ON" << '\t';
653 } else {
654 fout << "OFF" << '\t';
655 }
656 }
657 fout << '\n';
658 fout << SS_pt->m_Concept_ID_pt->m_ID << ": Reading time" << '\t';
659 for (const auto &e : SS_pt->m_history_state) {
660 fout << e->m_time_perceived << '\t';
661 }
662 if (SS_pt->m_recent_state != NULL) {
663 fout << SS_pt->m_recent_state->m_time_perceived << '\t';
664 }
665 fout << '\n';
666 }
667
668 fout.close();
669}
670
672 IDElement *ID_pt;
673 MRParameterUnit *P_pt;
676 MRAlarmUnit *A_pt;
677 MRStateSchema *S_schema_pt, *S_new_schema_pt = NULL;
678 float value1, value2;
679 SentenceUnit *found_sent_pt = NULL;
680 SentenceUnit increase_sent, decrease_sent, open_bigger_sent, close_smaller_sent;
681 SentenceUnit turn_on_sent, turn_off_sent, ON_sent, OFF_sent;
682 SentenceUnit *increase_sent_pt = NULL, *decrease_sent_pt = NULL;
683 SentenceUnit *open_bigger_sent_pt = NULL, *close_smaller_sent_pt = NULL;
684 SentenceUnit *turn_on_sent_pt = NULL, *turn_off_sent_pt = NULL;
685 SentenceUnit *ON_sent_pt = NULL, *OFF_sent_pt = NULL;
686 ReasonMachine *RM_pt;
687 Statement *new_statement_pt;
688 Investigator *invest_pt;
689
690 if (this->m_operator == sim::Operator::ODM) { RM_pt = g_sim.Decision_Maker.m_RM.get(); }
691 else if (this->m_operator == sim::Operator::OAT) { RM_pt = g_sim.Action_Taker.m_RM.get(); }
692 else {}//add error message
693
694 if (r5pars_.timesno > 886) { this->ErrorMessage(""); }
695 //caution: only the type 3 sentence is included in this function
696 ID_pt = this->CheckExistenceByConceptStrict(_statement_pt->m_sent_pt->m_subject_pt);
697 if (ID_pt == NULL) { return; }
698 switch (_statement_pt->m_sent_pt->m_sentence_type) {
699 case 1: S_schema_pt = NULL;
700 if (ID_pt->m_ID_Type == 201) {
701 P_pt = (MRParameterUnit *) ID_pt;
702 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getIncreasePt()
703 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getStablePt()
704 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getDecreasePt()) {
705 if (P_pt->m_recent_trend != NULL) {
706 if (_statement_pt->m_time_range.GetTimeBoundLater()
708 P_pt->m_recent_trend = _statement_pt;
709 RM_pt->AddDeltaToSystemDynamics(0.12);
710 }
711 } else {
712 P_pt->m_recent_trend = _statement_pt;
713 RM_pt->AddDeltaToSystemDynamics(0.12);
714 }
715 }
716 } else if (ID_pt->m_ID_Type == 202) {
717 C_pt = (MRComponentStateUnit *) ID_pt;
718 //update the statement
719 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getBiggerPt()
720 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getCloseSmallerPt()
721 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
722 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
723 if (C_pt->m_recent_action_statement != NULL) {
724 if (_statement_pt->m_time_range.GetTimeBoundLater()
726 C_pt->m_recent_action_statement = _statement_pt;
727 RM_pt->AddDeltaToSystemDynamics(0.12);
728 }
729 } else {
730 C_pt->m_recent_action_statement = _statement_pt;
731 RM_pt->AddDeltaToSystemDynamics(0.12);
732 }
733 }
734 //update the ON/OFF state
735 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
736 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
737 if (C_pt->m_recent_state) {
738 if (_statement_pt->m_time_range.GetTimeBoundLater() > C_pt->m_recent_state->m_time_perceived) {
739 C_pt->m_history_state.push_back(std::move(C_pt->m_recent_state));
740 C_pt->m_recent_state = make_unique<MRStateSchema>();
741 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
742 C_pt->m_recent_state->m_perceived_state = true;
743 } else { C_pt->m_recent_state->m_perceived_state = false; }
744 C_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
745 S_schema_pt = C_pt->m_recent_state.get();
746 }
747 } else {
748 C_pt->m_recent_state = make_unique<MRStateSchema>();
749 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
750 C_pt->m_recent_state->m_perceived_state = true;
751 } else { C_pt->m_recent_state->m_perceived_state = false; }
752 C_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
753 S_schema_pt = C_pt->m_recent_state.get();
754 }
755 }
756 } else if (ID_pt->m_ID_Type == 203) {
757 A_pt = (MRAlarmUnit *) ID_pt;
758 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
759 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
760 if (A_pt->m_recent_action_statement != NULL) {
761 if (_statement_pt->m_time_range.GetTimeBoundLater()
763 A_pt->m_recent_action_statement = _statement_pt;
764 RM_pt->AddDeltaToSystemDynamics(0.12);
765 }
766 } else {
767 A_pt->m_recent_action_statement = _statement_pt;
768 RM_pt->AddDeltaToSystemDynamics(0.12);
769 }
770 }
771 //update the ON/OFF state
772 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
773 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
774 if (A_pt->m_recent_state) {
775 if (_statement_pt->m_time_range.GetTimeBoundLater() > A_pt->m_recent_state->m_time_perceived) {
776 A_pt->m_history_state_list.push_back(std::move(A_pt->m_recent_state));
777 A_pt->m_recent_state = make_unique<MRStateSchema>();
778 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
779 A_pt->m_recent_state->m_perceived_state = true;
780 } else { A_pt->m_recent_state->m_perceived_state = false; }
781 A_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
782 S_schema_pt = A_pt->m_recent_state.get();
783 }
784 } else {
785 A_pt->m_recent_state = make_unique<MRStateSchema>();
786 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
787 A_pt->m_recent_state->m_perceived_state = true;
788 } else { A_pt->m_recent_state->m_perceived_state = false; }
789 A_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
790 S_schema_pt = A_pt->m_recent_state.get();
791 }
792 }
793 } else if (ID_pt->m_ID_Type == 204) {
794 SS_pt = (MRSupportSystemStateUnit *) ID_pt;
795 //update the statement
796 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
797 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
798 if (SS_pt->m_recent_action_statement != NULL) {
799 if (_statement_pt->m_time_range.GetTimeBoundLater()
801 SS_pt->m_recent_action_statement = _statement_pt;
802 RM_pt->AddDeltaToSystemDynamics(0.12);
803 }
804 } else {
805 SS_pt->m_recent_action_statement = _statement_pt;
806 RM_pt->AddDeltaToSystemDynamics(0.12);
807 }
808 }
809 //update the ON/OFF state
810 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()
811 || _statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOffPt()) {
812 if (SS_pt->m_recent_state) {
813 if (_statement_pt->m_time_range.GetTimeBoundLater() > SS_pt->m_recent_state->m_time_perceived) {
814 SS_pt->m_history_state.push_back(std::move(SS_pt->m_recent_state));
815 SS_pt->m_recent_state = make_unique<MRStateSchema>();
816 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
817 SS_pt->m_recent_state->m_perceived_state = true;
818 } else { SS_pt->m_recent_state->m_perceived_state = false; }
819 SS_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
820 S_schema_pt = SS_pt->m_recent_state.get();
821 }
822 } else {
823 SS_pt->m_recent_state = make_unique<MRStateSchema>();
824 if (_statement_pt->m_sent_pt->m_process_pt == RM_pt->m_Concept_Base->getTurnOnPt()) {
825 SS_pt->m_recent_state->m_perceived_state = true;
826 } else { SS_pt->m_recent_state->m_perceived_state = false; }
827 SS_pt->m_recent_state->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
828 S_schema_pt = SS_pt->m_recent_state.get();
829 }
830 }
832 if (S_schema_pt != NULL) {
833 new_statement_pt = NULL;
834 ON_sent_pt = NULL;
835 OFF_sent_pt = NULL;
836 found_sent_pt = NULL;
837 if (C_pt != NULL) {
838 if (S_schema_pt->m_perceived_state == true
839 && C_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getONpt()) {
840 ON_sent_pt = &ON_sent;
841 } else if (S_schema_pt->m_perceived_state == false
842 && C_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getOFFpt()) {
843 OFF_sent_pt = &OFF_sent;
844 }
845 } else if (A_pt != NULL) {
846 if (S_schema_pt->m_perceived_state == true
847 && A_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getONpt()) {
848 ON_sent_pt = &ON_sent;
849 } else if (S_schema_pt->m_perceived_state == false
850 && A_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getOFFpt()) {
851 OFF_sent_pt = &OFF_sent;
852 }
853 } else if (SS_pt != NULL) {
854 if (S_schema_pt->m_perceived_state == true
855 && SS_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getONpt()) {
856 ON_sent_pt = &ON_sent;
857 } else if (S_schema_pt->m_perceived_state == false
858 && SS_pt->m_recent_state_statement->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getOFFpt()) {
859 OFF_sent_pt = &OFF_sent;
860 }
861 if (ON_sent_pt != NULL) {
862 ON_sent_pt->m_sentence_type = 2;
863 ON_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
864 ON_sent_pt->m_state_pt = RM_pt->m_Concept_Base->getONpt();
865 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(ON_sent_pt);
866 ON_sent_pt = NULL;
867 } else if (OFF_sent_pt != NULL) {
868 OFF_sent_pt->m_sentence_type = 2;
869 OFF_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
870 OFF_sent_pt->m_state_pt = RM_pt->m_Concept_Base->getOFFpt();
871 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(OFF_sent_pt);
872 OFF_sent_pt = NULL;
873 }
874
875 if (found_sent_pt != NULL) {
876 auto stmt = make_unique<Statement>();
877 stmt->m_sent_pt = found_sent_pt;
878 if (_statement_pt->m_factual_type == 1 || _statement_pt->m_factual_type == 2) {
879 stmt->m_factual_type = 2;
880 } else { stmt->m_factual_type = 3; }
881 stmt->m_confidence = _statement_pt->m_confidence;
882 stmt->m_state = true;
883 stmt->m_time_range.m_start_time = S_schema_pt->m_time_perceived;
884 stmt->m_time_range.m_end_time = S_schema_pt->m_time_perceived;
885 new_statement_pt = stmt.get();
886 RM_pt->AddANewStatement(stmt.release());
887 if (C_pt != NULL) {
888 C_pt->m_recent_state_statement = new_statement_pt;
889 } else if (A_pt != NULL) {
890 A_pt->m_recent_state_statement = new_statement_pt;
891 } else if (SS_pt != NULL) {
892 SS_pt->m_recent_state_statement = new_statement_pt;
893 }
894 }
895 }
896
897 break;
898 case 2:C_pt = NULL;
899 SS_pt = NULL;
900 A_pt = NULL;
901 S_new_schema_pt = NULL;
902 turn_on_sent_pt = NULL;
903 turn_off_sent_pt = NULL;
904 new_statement_pt = NULL;
905 new_statement_pt = NULL;
906 //caution
907 if (_statement_pt->m_state == false) { return; }
908 if (_statement_pt->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getONpt()
909 && _statement_pt->m_sent_pt->m_state_pt != RM_pt->m_Concept_Base->getOFFpt()) { return; }
910
911 if (ID_pt->m_ID_Type == 202) {
912 C_pt = (MRComponentStateUnit *) ID_pt;
913 S_schema_pt = C_pt->m_recent_state.get();
914 } else if (ID_pt->m_ID_Type == 203) {
915 A_pt = (MRAlarmUnit *) ID_pt;
916 S_schema_pt = A_pt->m_recent_state.get();
917 } else if (ID_pt->m_ID_Type == 204) {
918 SS_pt = (MRSupportSystemStateUnit *) ID_pt;
919 S_schema_pt = SS_pt->m_recent_state.get();
920 }
921 if (S_schema_pt != NULL) {
922 if (_statement_pt->m_time_range.GetTimeBoundLater()
923 > S_schema_pt->m_time_perceived) {//Only in the following two situations , there is a need to generate new statements
924 if (_statement_pt->m_sent_pt->m_state_pt == RM_pt->m_Concept_Base->getONpt()
925 && S_schema_pt->m_perceived_state == false) {
926 S_new_schema_pt = new MRStateSchema(); // raw new: ownership transferred to unique_ptr via .reset() below
927 S_new_schema_pt->m_perceived_state = true;
928 S_new_schema_pt->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
929 } else if (_statement_pt->m_sent_pt->m_state_pt == RM_pt->m_Concept_Base->getOFFpt()
930 && S_schema_pt->m_perceived_state == true) {
931 S_new_schema_pt = new MRStateSchema(); // raw new: ownership transferred to unique_ptr via .reset() below
932 S_new_schema_pt->m_perceived_state = false;
933 S_new_schema_pt->m_time_perceived = _statement_pt->m_time_range.GetTimeBoundLater();
934 }
935 }
936 if (S_new_schema_pt != NULL) {//update the state schema and the statement
937
938 if (_statement_pt->m_sent_pt->m_state_pt == RM_pt->m_Concept_Base->getONpt()) {
939 turn_on_sent_pt = &turn_on_sent;
940 turn_on_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
941 turn_on_sent_pt->m_sentence_type = 1;
942 turn_on_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getTurnOnPt();
943 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(turn_on_sent_pt);
944 turn_on_sent_pt = NULL;
945 } else if (_statement_pt->m_sent_pt->m_state_pt == RM_pt->m_Concept_Base->getOFFpt()) {
946 turn_off_sent_pt = &turn_off_sent;
947 turn_off_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
948 turn_off_sent_pt->m_sentence_type = 1;
949 turn_off_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getTurnOffPt();
950 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(turn_off_sent_pt);
951 turn_off_sent_pt = NULL;
952 }
953 if (found_sent_pt == NULL) { this->ErrorMessage("Error!"); }
954
955 if (C_pt != NULL) {
956 if (C_pt->m_recent_action_statement != NULL) {
957 if (C_pt->m_recent_action_statement->m_sent_pt == found_sent_pt) {
958 found_sent_pt = NULL;
959 }
960 }
961 } else if (A_pt != NULL) {
962 if (A_pt->m_recent_action_statement != NULL) {
963 if (A_pt->m_recent_action_statement->m_sent_pt == found_sent_pt) {
964 found_sent_pt = NULL;
965 }
966 }
967 } else if (SS_pt != NULL) {
968 if (SS_pt->m_recent_action_statement != NULL) {
969 if (SS_pt->m_recent_action_statement->m_sent_pt == found_sent_pt) {
970 found_sent_pt = NULL;
971 }
972 }
973 }
974
975 if (found_sent_pt != NULL) {
976 auto stmt = make_unique<Statement>();
977 stmt->m_confidence = _statement_pt->m_confidence;
978 if (_statement_pt->m_factual_type == 1 || _statement_pt->m_factual_type == 2) {
979 stmt->m_factual_type = 2;
980 } else { stmt->m_factual_type = 3; }
981 stmt->m_state = _statement_pt->m_state;
982 stmt->m_sent_pt = found_sent_pt;
983 stmt->m_time_range.m_time_after = S_schema_pt->m_time_perceived;
984 stmt->m_time_range.m_time_before = S_new_schema_pt->m_time_perceived;
985 new_statement_pt = stmt.get();
986 RM_pt->AddANewStatement(stmt.release());
987 RM_pt->AddDeltaToSystemDynamics(0.12);
988 if (C_pt != NULL) {
989 C_pt->m_recent_action_statement = new_statement_pt;
990 } else if (A_pt != NULL) {
991 A_pt->m_recent_action_statement = new_statement_pt;
992 } else if (SS_pt != NULL) {
993 SS_pt->m_recent_action_statement = new_statement_pt;
994 }
995
996 //Add an investigator for this statement
997 auto inv = make_unique<Investigator>();
998 inv->m_note = "by a statement";
999 inv->m_motivation = 1;
1000 inv->m_Statement_pt = new_statement_pt;
1001 RM_pt->AddDeltaToCognitiveLoad(0.024);
1002 inv->m_Happen = 3;
1003 inv->m_operator = this->m_operator;
1004 inv->m_root_of_a_thought_line = true;
1005 invest_pt = inv.get();
1006 RM_pt->AddNewInvestigator(inv.release());
1007 //link the statement to the statement pointer
1008 new_statement_pt->m_investigator_ID_pt = (IDElement *) invest_pt;
1009
1010 if (C_pt != NULL) {
1011 C_pt->m_history_state.push_back(std::move(C_pt->m_recent_state));
1012 C_pt->m_recent_state.reset(S_new_schema_pt);
1013 C_pt->m_recent_state_statement = _statement_pt;
1014 C_pt->m_recent_action_statement = new_statement_pt;
1015 } else if (A_pt != NULL) {
1016 A_pt->m_history_state_list.push_back(std::move(A_pt->m_recent_state));
1017 A_pt->m_recent_state.reset(S_new_schema_pt);
1018 A_pt->m_recent_state_statement = _statement_pt;
1019 A_pt->m_recent_action_statement = new_statement_pt;
1020 } else if (SS_pt != NULL) {
1021 SS_pt->m_history_state.push_back(std::move(SS_pt->m_recent_state));
1022 SS_pt->m_recent_state.reset(S_new_schema_pt);
1023 SS_pt->m_recent_state_statement = _statement_pt;
1024 SS_pt->m_recent_action_statement = new_statement_pt;
1025 }
1026 }
1027 }
1028 }
1029 break;
1030 case 3: new_statement_pt = NULL;
1031 if (ID_pt->m_ID_Type == 201) {
1032 P_pt = (MRParameterUnit *) ID_pt;
1033 if (P_pt->m_recent_parameter_value == NULL) { return; }
1034 if (P_pt->m_recent_parameter_value->m_time_perceived
1035 >= _statement_pt->m_time_range.m_start_time) { return; }
1036
1037 value1 = P_pt->m_recent_parameter_value->m_perceived_value;
1038 value2 = _statement_pt->m_sent_pt->m_value;
1039 if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1040 && value2 > value1
1041 && _statement_pt->m_state == true) {
1042 increase_sent_pt = &increase_sent;
1043 increase_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1044 increase_sent_pt->m_sentence_type = 1;
1045 increase_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getIncreasePt();
1046 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1047 && value2 < value1
1048 && _statement_pt->m_state == true) {
1049 decrease_sent_pt = &decrease_sent;
1050 decrease_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1051 decrease_sent_pt->m_sentence_type = 1;
1052 decrease_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getDecreasePt();
1053 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1054 && value2 > value1
1055 && _statement_pt->m_state == false) {
1056 increase_sent_pt = &increase_sent;
1057 increase_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1058 increase_sent_pt->m_sentence_type = 1;
1059 increase_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getIncreasePt();
1060 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1061 && value2 < value1
1062 && _statement_pt->m_state == false) {
1063 decrease_sent_pt = &decrease_sent;
1064 decrease_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1065 decrease_sent_pt->m_sentence_type = 1;
1066 decrease_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getDecreasePt();
1067 }
1068
1069 if (increase_sent_pt != NULL) {
1070 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(increase_sent_pt);
1071 increase_sent_pt = NULL;
1072 } else if (decrease_sent_pt != NULL) {
1073 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(decrease_sent_pt);
1074 decrease_sent_pt = NULL;
1075 }
1076 if (found_sent_pt != NULL) {
1077 auto stmt = make_unique<Statement>();
1078 stmt->m_sent_pt = found_sent_pt;
1079 stmt->m_confidence = _statement_pt->m_confidence;
1080 if (_statement_pt->m_factual_type == 1 || _statement_pt->m_factual_type == 2) {
1081 stmt->m_factual_type = 2;
1082 } else { stmt->m_factual_type = 3; }
1083 stmt->m_state = true;
1084 stmt->m_time_range.m_time_after = P_pt->m_recent_parameter_value->m_time_perceived;
1085 if (_statement_pt->m_time_range.m_start_time != 0) {
1086 stmt->m_time_range.m_time_before = _statement_pt->m_time_range.m_start_time;
1087 } else {
1088 stmt->m_time_range.m_time_before = _statement_pt->m_time_range.m_time_after;
1089 }
1090
1091 if (P_pt->m_recent_trend != NULL) {
1092 //if(new_statement_pt->m_time_range.m_time_before > P_pt->m_recent_trend->m_time_range.m_end_time
1093 // &&new_statement_pt->m_time_range.m_time_before > P_pt->m_recent_trend->m_time_range.m_time_before)
1094 if (P_pt->m_recent_trend->m_sent_pt != stmt->m_sent_pt ||
1095 P_pt->m_recent_trend->m_state != stmt->m_state) {
1096 new_statement_pt = stmt.get();
1097 RM_pt->AddANewStatement(stmt.release());
1098 P_pt->m_recent_trend = new_statement_pt;
1099 RM_pt->AddDeltaToSystemDynamics(0.12);
1100 } else {//only update the time
1103 // stmt is automatically deleted when unique_ptr goes out of scope
1104 new_statement_pt = NULL;
1105 if (P_pt->m_recent_trend->m_investigator_ID_pt == NULL) { new_statement_pt = P_pt->m_recent_trend; }
1106 }
1107 } else {
1108 new_statement_pt = stmt.get();
1109 RM_pt->AddANewStatement(stmt.release());
1110 P_pt->m_recent_trend = new_statement_pt;
1111 }
1112
1113 }
1114 } else if (ID_pt->m_ID_Type == 202) {
1115 C_pt = (MRComponentStateUnit *) ID_pt;
1116 if (C_pt->m_CS_type == 0) { return; }
1117
1118 if (C_pt->m_recent_position_value == NULL) { return; }
1119
1120 if (C_pt->m_recent_position_value->m_time_perceived >= _statement_pt->m_time_range.m_start_time) { return; }
1121
1122 value1 = C_pt->m_recent_position_value->m_perceived_value;
1123 value2 = _statement_pt->m_sent_pt->m_value;
1124
1125 if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1126 && value2 > value1
1127 && _statement_pt->m_state == true) {
1128 open_bigger_sent_pt = &open_bigger_sent;
1129 open_bigger_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1130 open_bigger_sent_pt->m_sentence_type = 1;
1131 open_bigger_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getOpenBiggerPt();
1132 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1133 && value2 < value1
1134 && _statement_pt->m_state == true) {
1135 close_smaller_sent_pt = &close_smaller_sent;
1136 close_smaller_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1137 close_smaller_sent_pt->m_sentence_type = 1;
1138 close_smaller_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getCloseSmallerPt();
1139 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1140 && value2 > value1
1141 && _statement_pt->m_state == false) {
1142 open_bigger_sent_pt = &open_bigger_sent;
1143 open_bigger_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1144 open_bigger_sent_pt->m_sentence_type = 1;
1145 open_bigger_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getOpenBiggerPt();
1146 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1147 && value2 < value1
1148 && _statement_pt->m_state == false) {
1149 close_smaller_sent_pt = &close_smaller_sent;
1150 close_smaller_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1151 close_smaller_sent_pt->m_sentence_type = 1;
1152 close_smaller_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getCloseSmallerPt();
1153 }
1154
1155 if (open_bigger_sent_pt != NULL) {
1156 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(open_bigger_sent_pt);
1157 open_bigger_sent_pt = NULL;
1158 } else if (close_smaller_sent_pt != NULL) {
1159 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(close_smaller_sent_pt);
1160 close_smaller_sent_pt = NULL;
1161 }
1162 if (found_sent_pt != NULL) {
1163 auto stmt = make_unique<Statement>();
1164 stmt->m_sent_pt = found_sent_pt;
1165 stmt->m_confidence = _statement_pt->m_confidence;
1166 if (_statement_pt->m_factual_type == 1 || _statement_pt->m_factual_type == 2) {
1167 stmt->m_factual_type = 2;
1168 } else { stmt->m_factual_type = 3; }
1169 stmt->m_state = true;
1170 stmt->m_time_range.m_time_after = C_pt->m_recent_position_value->m_time_perceived;
1171 new_statement_pt = stmt.get();
1172 RM_pt->AddANewStatement(stmt.release());
1173 RM_pt->AddDeltaToSystemDynamics(0.12);
1174 if (_statement_pt->m_time_range.m_start_time != 0) {
1175 new_statement_pt->m_time_range.m_time_before = _statement_pt->m_time_range.m_start_time;
1176 } else {
1177 new_statement_pt->m_time_range.m_time_before = _statement_pt->m_time_range.m_time_after;
1178 }
1179
1180 if (C_pt->m_recent_action_statement != NULL) {
1181 if (new_statement_pt->m_time_range.m_time_before
1183 && new_statement_pt->m_time_range.m_time_before
1185 C_pt->m_recent_action_statement = new_statement_pt;
1186 }
1187 } else {
1188 C_pt->m_recent_action_statement = new_statement_pt;
1189 }
1190
1191 }
1192 } else if (ID_pt->m_ID_Type == 202) {
1193 C_pt = (MRComponentStateUnit *) ID_pt;
1194 if (C_pt->m_CS_type == 0) { return; }
1195
1196 if (C_pt->m_recent_position_value == NULL) { return; }
1197
1198 if (C_pt->m_recent_position_value->m_time_perceived >= _statement_pt->m_time_range.m_start_time) { return; }
1199
1200 value1 = C_pt->m_recent_position_value->m_perceived_value;
1201 value2 = _statement_pt->m_sent_pt->m_value;
1202
1203 if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1204 && value2 > value1
1205 && _statement_pt->m_state == true) {
1206 open_bigger_sent_pt = &open_bigger_sent;
1207 open_bigger_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1208 open_bigger_sent_pt->m_sentence_type = 1;
1209 open_bigger_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getOpenBiggerPt();
1210 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1211 && value2 < value1
1212 && _statement_pt->m_state == true) {
1213 close_smaller_sent_pt = &close_smaller_sent;
1214 close_smaller_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1215 close_smaller_sent_pt->m_sentence_type = 1;
1216 close_smaller_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getCloseSmallerPt();
1217 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getSmallerPt()
1218 && value2 > value1
1219 && _statement_pt->m_state == false) {
1220 open_bigger_sent_pt = &open_bigger_sent;
1221 open_bigger_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1222 open_bigger_sent_pt->m_sentence_type = 1;
1223 open_bigger_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getOpenBiggerPt();
1224 } else if (_statement_pt->m_sent_pt->m_comparison_pt == RM_pt->m_Concept_Base->getBiggerPt()
1225 && value2 < value1
1226 && _statement_pt->m_state == false) {
1227 close_smaller_sent_pt = &close_smaller_sent;
1228 close_smaller_sent_pt->m_subject_pt = _statement_pt->m_sent_pt->m_subject_pt;
1229 close_smaller_sent_pt->m_sentence_type = 1;
1230 close_smaller_sent_pt->m_process_pt = RM_pt->m_Concept_Base->getCloseSmallerPt();
1231 }
1232
1233 if (open_bigger_sent_pt != NULL) {
1234 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(open_bigger_sent_pt);
1235 open_bigger_sent_pt = NULL;
1236 } else if (close_smaller_sent_pt != NULL) {
1237 found_sent_pt = RM_pt->CheckExistInSemanticPoolBySentence(close_smaller_sent_pt);
1238 close_smaller_sent_pt = NULL;
1239 }
1240 if (found_sent_pt != NULL) {
1241 auto stmt = make_unique<Statement>();
1242 stmt->m_sent_pt = found_sent_pt;
1243 stmt->m_confidence = _statement_pt->m_confidence;
1244 if (_statement_pt->m_factual_type == 1 || _statement_pt->m_factual_type == 2) {
1245 stmt->m_factual_type = 2;
1246 } else { stmt->m_factual_type = 3; }
1247 stmt->m_state = true;
1248 stmt->m_time_range.m_time_after = C_pt->m_recent_position_value->m_time_perceived;
1249 new_statement_pt = stmt.get();
1250 RM_pt->AddANewStatement(stmt.release());
1251 RM_pt->AddDeltaToSystemDynamics(0.12);
1252 if (_statement_pt->m_time_range.m_start_time != 0) {
1253 new_statement_pt->m_time_range.m_time_before = _statement_pt->m_time_range.m_start_time;
1254 } else {
1255 new_statement_pt->m_time_range.m_time_before = _statement_pt->m_time_range.m_time_after;
1256 }
1257
1258 if (C_pt->m_recent_action_statement != NULL) {
1259 if (new_statement_pt->m_time_range.m_time_before
1261 && new_statement_pt->m_time_range.m_time_before
1263 C_pt->m_recent_action_statement = new_statement_pt;
1264 }
1265 } else {
1266 C_pt->m_recent_action_statement = new_statement_pt;
1267 }
1268
1269 }
1270 }
1271 if (new_statement_pt != NULL) {
1272 //Add an investigator for this statement
1273 auto inv = make_unique<Investigator>();
1274 inv->m_note = "by a statement";
1275 inv->m_motivation = 1;
1276 inv->m_Statement_pt = new_statement_pt;
1277 RM_pt->AddDeltaToCognitiveLoad(0.024);
1278 inv->m_Happen = 3;
1279 inv->m_invest_dormant = false;
1280 inv->m_operator = this->m_operator;
1281 inv->m_root_of_a_thought_line = true;
1282 invest_pt = inv.get();
1283 RM_pt->AddNewInvestigator(inv.release());
1284 //link the statement to the statement pointer
1285 new_statement_pt->m_investigator_ID_pt = (IDElement *) invest_pt;
1286 }
1287 break;
1288 default: break;
1289 }
1290 }
1291 }
1292}
1293
1295
1296 this->m_operator = _MR_pt->m_operator;
1299
1300 bool found;
1301
1302 MRParameterUnit *P_pt;
1303 if (this->m_MRParameter_list.size() != 0) {
1304 this->ErrorMessage("this->m_MRParameter_list.size() != 0");
1305 return;
1306 }
1307
1308 //m_MRParameter_list
1309 for (auto P_itr = _MR_pt->m_MRParameter_list.begin(); P_itr != _MR_pt->m_MRParameter_list.end(); P_itr++) {
1310 auto p = make_unique<MRParameterUnit>();
1311 p->CopyMRParameterUnitInforFromAnother(P_itr->get());
1312 this->m_MRParameter_list.push_back(std::move(p));
1313 }
1314 //copy the iterator position
1315 found = false;
1316 this->m_MR_P_itr = this->m_MRParameter_list.begin();
1317 auto P_src_itr = _MR_pt->m_MRParameter_list.begin();
1318 while (found == false && P_src_itr != _MR_pt->m_MRParameter_list.end()) {
1319 if (_MR_pt->m_MR_P_itr == P_src_itr) {
1320 found = true;
1321 break;
1322 } else {
1323 P_src_itr++;
1324 this->m_MR_P_itr++;
1325 }
1326 }
1327
1328 //m_MRComponent_list
1330 if (this->m_MRComponent_list.size() != 0) {
1331 this->ErrorMessage("this->m_MRComponent_list.size() != 0");
1332 return;
1333 }
1334 for (auto C_itr = _MR_pt->m_MRComponent_list.begin(); C_itr != _MR_pt->m_MRComponent_list.end(); C_itr++) {
1335 auto c = make_unique<MRComponentStateUnit>();
1336 c->CopyMRComponentStateInfoFromAnother(C_itr->get());
1337 this->m_MRComponent_list.push_back(std::move(c));
1338 }
1339 //copy the iterator position
1340 found = false;
1341 this->m_MR_C_itr = this->m_MRComponent_list.begin();
1342 auto C_src_itr = _MR_pt->m_MRComponent_list.begin();
1343 while (found == false && C_src_itr != _MR_pt->m_MRComponent_list.end()) {
1344 if (C_src_itr == _MR_pt->m_MR_C_itr) {
1345 found = true;
1346 break;
1347 } else {
1348 C_src_itr++;
1349 this->m_MR_C_itr++;
1350 }
1351 }
1352
1353 //m_MRSupportSystem_list
1355 if (this->m_MRSupportSystem_list.size() != 0) {
1356 this->ErrorMessage("this->m_MRSupportSystem_list.size() != 0");
1357 return;
1358 }
1359 for (auto SS_itr = _MR_pt->m_MRSupportSystem_list.begin(); SS_itr != _MR_pt->m_MRSupportSystem_list.end(); SS_itr++) {
1360 auto ss = make_unique<MRSupportSystemStateUnit>();
1361 ss->CopyMRSupportSystemStateUnitInfoFromAnother(SS_itr->get());
1362 this->m_MRSupportSystem_list.push_back(std::move(ss));
1363 }
1364 //copy the iterator position
1365 found = false;
1366 this->m_MR_SS_itr = this->m_MRSupportSystem_list.begin();
1367 auto SS_src_itr = _MR_pt->m_MRSupportSystem_list.begin();
1368 while (found == false && SS_src_itr != _MR_pt->m_MRSupportSystem_list.end()) {
1369 if (SS_src_itr == _MR_pt->m_MR_SS_itr) {
1370 found = true;
1371 break;
1372 } else {
1373 SS_src_itr++;
1374 this->m_MR_SS_itr++;
1375 }
1376 }
1377
1378 MRAlarmUnit *A_pt;
1379 if (this->m_MRAlarm_list.size() != 0) {
1380 this->ErrorMessage("this->m_MRAlarm_list.size() != 0");
1381 return;
1382 }
1383
1384 for (auto A_itr = _MR_pt->m_MRAlarm_list.begin(); A_itr != _MR_pt->m_MRAlarm_list.end(); A_itr++) {
1385 auto a = make_unique<MRAlarmUnit>();
1386 a->CopyMRAlarmUnitInfoFromAnother(A_itr->get());
1387 this->m_MRAlarm_list.push_back(std::move(a));
1388 }
1389 //copy the iterator position
1390 this->m_MR_A_itr = this->m_MRAlarm_list.begin();
1391 auto A_src_itr = _MR_pt->m_MRAlarm_list.begin();
1392 found = false;
1393 while (found == false && A_src_itr != _MR_pt->m_MRAlarm_list.end()) {
1394 if (A_src_itr == _MR_pt->m_MR_A_itr) {
1395 found = true;
1396 break;
1397 } else {
1398 this->m_MR_A_itr++;
1399 A_src_itr++;
1400 }
1401 }
1402}
1403
1405 IDElement *found_pt = NULL;
1406 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end() && found_pt == NULL; P_itr++) {
1407 if ((*P_itr)->m_ID == _ID) { found_pt = (IDElement *) P_itr->get(); }
1408 }
1409 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end() && found_pt == NULL; C_itr++) {
1410 if ((*C_itr)->m_ID == _ID) { found_pt = (IDElement *) C_itr->get(); }
1411 }
1412 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end() && found_pt == NULL;
1413 SS_itr++) {
1414 if ((*SS_itr)->m_ID == _ID) { found_pt = (IDElement *) SS_itr->get(); }
1415 }
1416 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end() && found_pt == NULL; A_itr++) {
1417 if ((*A_itr)->m_ID == _ID) { found_pt = (IDElement *) A_itr->get(); }
1418 }
1419 return found_pt;
1420}
1421
1423 for (auto P_itr = this->m_MRParameter_list.begin(); P_itr != this->m_MRParameter_list.end();
1424 P_itr++) { (*P_itr)->BuildConnectionsForThisMRParameter(_pt); }
1425 for (auto C_itr = this->m_MRComponent_list.begin(); C_itr != this->m_MRComponent_list.end();
1426 C_itr++) { (*C_itr)->BuildConnectionsForThisMRComponentState(_pt); }
1427 for (auto SS_itr = this->m_MRSupportSystem_list.begin(); SS_itr != this->m_MRSupportSystem_list.end();
1428 SS_itr++) { (*SS_itr)->BuildConnectionsForThisMRSupportSystemStateUnit(_pt); }
1429 for (auto A_itr = this->m_MRAlarm_list.begin(); A_itr != this->m_MRAlarm_list.end();
1430 A_itr++) { (*A_itr)->BuildConnectionsForThisMRAlarmUnit(_pt); }
1431
1432}
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
document e
int getNumOfOATBranch()
int getNumOfODMBranch()
int m_ID_Type
Definition: IDElement.h:15
std::string m_ID
Definition: IDElement.h:16
int m_operator
Definition: MRAlarmUnit.h:32
void ReadAlarmIndication(double)
IDElement * m_Concept_pt
Definition: MRAlarmUnit.h:39
std::vector< std::unique_ptr< MRStateSchema > > m_history_state_list
Definition: MRAlarmUnit.h:35
Statement * m_recent_state_statement
Definition: MRAlarmUnit.h:37
std::string m_alarm_indicator_name
Definition: MRAlarmUnit.h:31
Statement * m_recent_action_statement
Definition: MRAlarmUnit.h:38
std::unique_ptr< MRStateSchema > m_recent_state
Definition: MRAlarmUnit.h:34
std::string m_Concept_ID
Definition: MRAlarmUnit.h:41
std::unique_ptr< MRStateSchema > m_recent_state
Statement * m_recent_state_statement
std::string Control_Value_Indicator_ID
void ReadComponentStateIndication(double)
std::string Component_State_Indicator_ID
std::vector< std::unique_ptr< MRValueSchema > > m_history_position_value
Statement * m_recent_action_statement
std::unique_ptr< MRValueSchema > m_recent_position_value
std::vector< std::unique_ptr< MRStateSchema > > m_history_state
std::string m_parameter_concept_ID
float m_decrease_rate_threshold
void ReadParameterRate(double)
Statement * m_recent_trend
std::string m_parameter_indicator_ID
std::unique_ptr< MRValueSchema > m_recent_parameter_rate
IDElement * m_Concept_ID_pt
std::vector< std::unique_ptr< MRValueSchema > > m_parameter_history_rate
void UpdateTheRelevantInvestigator(int)
float m_increase_rate_threshold
float m_decrease_threshold
float m_increase_threshold
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
float m_time_perceived
Definition: MRStateSchema.h:11
bool m_perceived_state
Definition: MRStateSchema.h:12
std::unique_ptr< MRStateSchema > m_recent_state
std::vector< std::unique_ptr< MRStateSchema > > m_history_state
std::vector< std::unique_ptr< MRAlarmUnit > > m_MRAlarm_list
std::vector< std::unique_ptr< MRParameterUnit > > m_MRParameter_list
decltype(m_MRAlarm_list) ::iterator m_MR_A_itr
decltype(m_MRSupportSystem_list) ::iterator m_MR_SS_itr
std::vector< std::unique_ptr< MRComponentStateUnit > > m_MRComponent_list
std::vector< std::unique_ptr< MRSupportSystemStateUnit > > m_MRSupportSystem_list
void CopyMentalRepresentationFromAnother(MentalRepresentation *)
IDElement * CheckExistenceByIndicationName(std::string)
IDElement * CheckExistenceByConceptName(std::string)
void SaveMentalRepresentationInforToFile(std::string _path)
void ReadMentalRepresentationtInfoFromInputFile()
decltype(m_MRParameter_list) ::iterator m_MR_P_itr
void UpdateMRwithNewInference(Statement *)
void ErrorMessage(std::string)
IDElement * FindMRUnitByID(std::string)
decltype(m_MRComponent_list) ::iterator m_MR_C_itr
IDElement * CheckExistenceByConceptStrict(IDElement *)
void BuildConnectionsForMentalRepresentation(void *)
std::unique_ptr< ReasonMachine > m_RM
Definition: Operator.h:55
std::unique_ptr< KBConcept > m_Concept_Base
bool m_first_round_check_done
void WaitOneStepThereIsOneOrMoreOperatorBranches()
void AddDeltaToCognitiveLoad(float)
void AddANewStatement(Statement *)
SentenceUnit * CheckExistInSemanticPoolBySentence(SentenceUnit *)
void AddDeltaToSystemDynamics(float)
void AddNewInvestigator(Investigator *)
std::string getOATDirectory()
Definition: Scheduler.cpp:622
std::string getODMDirectory()
Definition: Scheduler.cpp:619
IDElement * m_process_pt
Definition: SentenceUnit.h:38
int m_sentence_type
Definition: SentenceUnit.h:34
double m_value
Definition: SentenceUnit.h:31
IDElement * m_state_pt
Definition: SentenceUnit.h:36
IDElement * m_comparison_pt
Definition: SentenceUnit.h:37
IDElement * m_subject_pt
Definition: SentenceUnit.h:40
float m_confidence
Definition: Statement.h:34
TimeRange m_time_range
Definition: Statement.h:40
int m_factual_type
Definition: Statement.h:33
SentenceUnit * m_sent_pt
Definition: Statement.h:43
void RefreshStatementEndTimeToCurrentTime(int)
Definition: Statement.cpp:73
IDElement * m_investigator_ID_pt
Definition: Statement.h:42
bool m_state
Definition: Statement.h:35
float m_start_time
Definition: TimeRange.h:21
float m_time_before
Definition: TimeRange.h:19
float m_time_after
Definition: TimeRange.h:18
float m_end_time
Definition: TimeRange.h:20
float GetTimeBoundLater()
Definition: TimeRange.cpp:26
struct @0 r5pars_
Definition: RMTokens.h:21
constexpr int ODM
Definition: SimConstants.h:145
constexpr int OAT
Definition: SimConstants.h:144
Scheduler SScheduler
Simulation scheduling, parses CLI options.
OperatorAT Action_Taker
Crew action execution model.
OperatorDM Decision_Maker
Crew decision-making model.
BranchRecord Branch_center
Dynamic event tree state.