← Documentation
ADS-IDAC Engine 5.0.0
OperatorDM.cpp
Go to the documentation of this file.
1// OperatorDM.cpp: implementation of the OperatorDM class.
2//
4
5#include "OperatorDM.h"
6#include <memory>
7#include <sstream>
8#include "../Procedure/Procedures.h"
9#include "../ControlPanel/ControlPanel.h"
10#include <boost/serialization/export.hpp>
11#include "../Global/SimulationContext.h"
12#include <boost/archive/binary_oarchive.hpp>
13#include <boost/archive/binary_iarchive.hpp>
14BOOST_CLASS_EXPORT_IMPLEMENT(OperatorDM)
15using namespace std;
16
17
19// Construction/Destruction
21
24}
25
27
28}
30 bool branch_generated;
31 bool block_ordered_action = false;
32 bool block_decision_process = false;
33 bool mental_procedure_in_progress = false;
34 int current_strategy = sim::None;
35 string OAT_IR_procedure_name, OAT_IR_step_name;
36 InfoChunkMental *_wm;
37 _wm = this->memory.getWorkingMemory();
38 //
39 //if(!this->getPauseMentalProcedure() && !this->getPauseActivity() && !Action_Taker.getPauseMentalProcedure())
40 if (!this->getPauseMentalProcedure() && !g_sim.Action_Taker.getPauseMentalProcedure() && !this->getNewBranchGenerated()) {
44 OAT_IR_step_name)) {
45 //mental_procedure_in_progress = true; Y.L.
46 if (OAT_IR_step_name != "NO_STEP") {
47 mental_procedure_in_progress = true;
48 branch_generated = this->performAMentalProcedure(sim::Operator::ODM, OAT_IR_procedure_name, OAT_IR_step_name);
49 if (branch_generated) {
50 this->setPauseMentalProcedure(true);
51 return;
52 }
53 }
54 }
55 }
56 if (this->getPauseActivity() || this->getPauseMentalProcedure() || mental_procedure_in_progress) {
57 block_decision_process = true;
58 }
59 //
60 if (!block_decision_process) {
61 // select goal
62 branch_generated = selectGoal();
63 if (branch_generated) {
64 this->setPauseActivity(true);
65 return;
66 }
67 // select strategy
68 branch_generated = selectStrategy();
69 if (branch_generated) {
70 this->setPauseActivity(true);
71 return;
72 }
73 //
74 // check if Action Taker is busy - if so, block ODM from issuing odered actions
77 block_ordered_action = true;
78 //
80 && _wm->getCurrentStrategy() == sim::Strategy::FollowProcedure) { block_ordered_action = false; }
81 }
82 //
83 if (!block_ordered_action) {
84 current_strategy = _wm->getCurrentStrategy();
85 switch (current_strategy) {
86 // perform follow procedure strategy
88 break;
89 // perform inductive/deductive reasoning strategy
90 case (sim::Strategy::InductiveDeductive): branch_generated = this->performReasoningStrategy();
91 break;
92 default: break;
93 }
94 if (branch_generated) {
95 this->setPauseActivity(true);
96 return;
97 }
98 }
99 }
100
101}
103 InfoChunkMental *wm = 0;
104 KBHardWiredUnit *kb_hwd_ptr = 0;
105 BranchGoal *goal_pt = 0;
106 wm = this->memory.getWorkingMemory();
107 bool branch_generated = false;
108 bool normal_operation = false;
109 int who = sim::Operator::ODM;
110 int current_goal;
111 double dead_time = 60.0;
112 //
113 //
114 // do not select a goal until simulation has approached steady state conditions
115 // allow simulation to stabilize during dead_time before selecting a goal
116 if (r5pars_.timesno > dead_time) {
117 current_goal = wm->getCurrentGoal();
118 //
119 kb_hwd_ptr = this->knowledge_base.getPtrToHardWiredDiagnosis("Normal_Operation");
120 if (kb_hwd_ptr != 0) {
121 if (kb_hwd_ptr->getConfidenceLevel() >= kb_hwd_ptr->activation_probability.getProbability()) {
122 normal_operation = true;
123 }
124 }
125
126 //the reasoning module, when present, overrides the normal operation assessment
127 if (this->m_RM && this->m_RM->m_event_schema_base->WhetherItIsNormalOperating() == false) {
128 normal_operation = false;
129 if (current_goal != sim::Goal::MaintainGlobalSafetyMargin) {
130 // generate maintain global safety margin branch & enable procedure use
131 goal_pt = new BranchGoal();
132 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
133 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
136 g_sim.Branch_center.addGoal(who, goal_pt);
137 branch_generated = true;
138 //
140 < 0.9999) {// bypass maintain global safety margin branch & block long term procedure use
141 goal_pt = new BranchGoal();
142 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
143 goal_pt->setTimerAndProbability(1.0, 1.0 - this->getProcedureUseProbability()); //(remaining time, probability)
147 g_sim.Branch_center.addGoal(who, goal_pt);
148 branch_generated = true;
149 }
150 }
151 return branch_generated;
152 }
153 if (normal_operation && !this->getAbnormalSignalPerceived() && current_goal != sim::Goal::NormalOp) {
154 goal_pt = new BranchGoal();
155 goal_pt->setSenderAndReceiver(who, who);//(sender, receiver)
156 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability());//(remaining time, probability)
159 g_sim.Branch_center.addGoal(who, goal_pt);
160 branch_generated = true;
161 }
162 if (!normal_operation) {
163 if (!this->getBlockTroubleshooting() && current_goal != sim::Goal::TroubleShoot && !this->getAbnormalSignalPerceived()) {
164 // generate troubleshooting goal
165 // two branches can be generated depending on the value of "troubleshooting_probability"
166 if (this->getTroubleshootingProbability() > 0.9999) {
167 goal_pt = new BranchGoal();
168 goal_pt->setSenderAndReceiver(who, who);//(sender, receiver)
169 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability());//(remaining time, probability)
172 g_sim.Branch_center.addGoal(who, goal_pt);
173 branch_generated = true;
174 } else if (this->getTroubleshootingProbability() < 0.0001) {
175 // generate bypass troubleshooting branch
176 goal_pt = new BranchGoal();
177 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
178 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
182 g_sim.Branch_center.addGoal(who, goal_pt);
183 //
184 branch_generated = true;
185 } else {
186 // generate troubleshooting branch
187 goal_pt = new BranchGoal();
188 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
189 goal_pt->setTimerAndProbability(1.0, this->getTroubleshootingProbability()); //(remaining time, probability)
192 g_sim.Branch_center.addGoal(who, goal_pt);
193 //
194 // generate bypass troubleshooting branch
195 goal_pt = new BranchGoal();
196 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
197 goal_pt->setTimerAndProbability(1.0, 1.0 - this->getTroubleshootingProbability()); //(remaining time, probability)
201 g_sim.Branch_center.addGoal(who, goal_pt);
202 //
203 branch_generated = true;
204 }
205 } else if (this->getBlockTroubleshooting() && !this->getAbnormalSignalPerceived() && current_goal != sim::Goal::MonitorAbnormal) {
206 // set goal to monitoring situation
207 goal_pt = new BranchGoal();
208 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
209 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
212 g_sim.Branch_center.addGoal(who, goal_pt);
213 branch_generated = true;
214 }
215 //
216 else if (this->getAbnormalSignalPerceived() && current_goal == sim::Goal::MonitorAbnormal) {
217 // set goal to maintain global safety margin
218 goal_pt = new BranchGoal();
219 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
220 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
223 g_sim.Branch_center.addGoal(who, goal_pt);
224 branch_generated = true;
225 } else if (!this->getBlockProcedureUse() && current_goal == sim::Goal::TroubleShoot && this->getAbnormalSignalPerceived()) {
226 if (this->getProcedureUseProbability() > 0.9999) {
227 // generate a maintain global safety margin branch
228 goal_pt = new BranchGoal();
229 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
230 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
233 g_sim.Branch_center.addGoal(who, goal_pt);
234 branch_generated = true;
235 } else if (this->getProcedureUseProbability() < 0.0001) {
236 // bypass maintain global safety margin branch and block long term procedure use
237 goal_pt = new BranchGoal();
238 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
239 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalSelectionFailureProbability()); //(remaining time, probability)
243 g_sim.Branch_center.addGoal(who, goal_pt);
244 //
245 branch_generated = true;
246 } else {
247 // generate maintain global safety margin branch & enable procedure use
248 goal_pt = new BranchGoal();
249 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
250 goal_pt->setTimerAndProbability(1.0, this->getProcedureUseProbability()); //(remaining time, probability)
253 g_sim.Branch_center.addGoal(who, goal_pt);
254 //
255 // bypass maintain global safety margin branch & block long term procedure use
256 goal_pt = new BranchGoal();
257 goal_pt->setSenderAndReceiver(who, who); //(sender, receiver)
258 goal_pt->setTimerAndProbability(1.0, 1.0 - this->getProcedureUseProbability()); //(remaining time, probability)
262 g_sim.Branch_center.addGoal(who, goal_pt);
263 //
264 branch_generated = true;
265 }
266 }
267 }
268
269 }
270 //
271 return branch_generated;
272}
273
275 InfoChunkMental *wm;
276 BranchStrategy *strategy_pt = NULL;
277 wm = this->memory.getWorkingMemory();
278 bool branch_generated = false;
279 int who = sim::Operator::ODM;
280
282 // activate knowledge based reasoning strategy
283 strategy_pt = new BranchStrategy();
284 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
285 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategySelectionFailureProbability()); //(remaining time, probability)
288 } else if ((wm->getCurrentGoal() == sim::Goal::MaintainGlobalSafetyMargin || this->memory.perceived_info.getCurrentProcedureName() != "NO_PROCEDURE")
290 // activate follow procedure strategy
291 strategy_pt = new BranchStrategy();
292 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
293 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategySelectionFailureProbability()); //(remaining time, probability)
297 // activate wait and monitor strategy
298 strategy_pt = new BranchStrategy();
299 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
300 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategySelectionFailureProbability()); //(remaining time, probability)
303 }
304
305 //after 60 s, a current procedure and step in working memory select the FollowProcedure strategy
306 if (wm->getCurrentStrategy() != sim::Strategy::FollowProcedure && r5pars_.timesno > 60) {
307 if ((wm->getCurrentProcedureName() != "NONE")
308 && (wm->getCurrentProcedureName() != "NO_PROCEDURE")
309 && (wm->getCurrentProceduralStepName() != "NO_STEP")
310 && (wm->getCurrentProceduralStepName() != "NONE")) {
311 strategy_pt = new BranchStrategy();
312 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
313 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategySelectionFailureProbability()); //(remaining time, probability)
316 }
317 }
318
319 if (strategy_pt != NULL) {
320 g_sim.Branch_center.addStrategy(who, strategy_pt);
321 branch_generated = true;
322 }
323
324 return branch_generated;
325}
327// InfoChunkMental *wm;
328 string _procedure_name, _step_name;
329 DecisionProcedureStep *procedure_pt;
330 BranchProcedureStep *b_procedure_pt;
331 int who = sim::Operator::ODM;
332 ProcedureStep *_procedure_step_pt;
333 map<string, ProcedureStep *>::iterator procedure_map_itr;
334 BranchEndState *es_pt;
335 string str;
336 bool branch_generated = false;
337 //
339 if (procedure_pt == 0) { // i.e. no sim::State::Active or sim::State::Pause procedure steps in memory
340 _procedure_name = g_sim.All_procedure.getEntryProcedureName();
341 if (_procedure_name != "NO_PROCEDURE") {
342 _step_name = g_sim.All_procedure.getEntryStepName();
343 // determine if entry procedure has already been executed
344 if (this->memory.perceived_info.getStateOfAProcedureStep(_procedure_name, _step_name) == sim::None) {
345 b_procedure_pt = new BranchProcedureStep();
346 b_procedure_pt->setSenderAndReceiver(who, who); //(sender, receiver)
347 b_procedure_pt->setTimerAndProbability(5.0, 1.0 - this->hfe_bbn.getProcedureStepFailureProbability()); //(remaining time, probability)
348 b_procedure_pt->setProcedureName(_procedure_name);
349 b_procedure_pt->setStepName(_step_name);
351 g_sim.Branch_center.addProcedureStep(who, b_procedure_pt);
352 branch_generated = true;
353 } else {
354 // do nothing - entry procedure has already been attempted
355
356 }
357 } else {
358 ofstream fout("err messages.txt", ios::app);
359 cout << r5pars_.timesno << "OperatorDM::performFollowProcedure: No entry procedure is found." << endl;
360 fout << r5pars_.timesno << " OperatorDM::performFollowProcedure: No entry procedure is found.\n";
361 fout.close();
362 r5pars_.sim_err = true;
363 }
364 } else if (procedure_pt->getStateOfActivation() == sim::State::Pause) {
366 b_procedure_pt = new BranchProcedureStep();
367 b_procedure_pt->setSenderAndReceiver(who, who); //(sender, receiver)
368 b_procedure_pt->setTimerAndProbability(5.0, 1.0 - this->hfe_bbn.getProcedureStepFailureProbability()); //(remaining time, probability)
369 b_procedure_pt->setProcedureName(procedure_pt->getProcedureName());
370 b_procedure_pt->setStepName(procedure_pt->getStepName());
372 g_sim.Branch_center.addProcedureStep(who, b_procedure_pt);
373 branch_generated = true;
374 } else {
375 _procedure_name = procedure_pt->getProcedureName();
376 _step_name = procedure_pt->getStepName();
377 _procedure_name += _step_name;
378 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
379 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
380 _procedure_step_pt = procedure_map_itr->second;
381 _procedure_step_pt->setStateOfActivation(sim::State::Active);
382 branch_generated = _procedure_step_pt->oneThroughProcessForProcedureStep(*this,
385 this->getSkipProcedureStep(),
386 this->memory);
387 this->setSkipProcedureStep(false);
388 } else {//current procedure does not exist; find previously unfinished procedure
391 //
392 if (procedure_pt != 0) {
393 _procedure_name = procedure_pt->getProcedureName();
394 _step_name = procedure_pt->getStepName();
395 _procedure_name += _step_name;
396 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
397 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
398 _procedure_step_pt = procedure_map_itr->second;
399 _procedure_step_pt->setStateOfActivation(sim::State::Active);
401 branch_generated = _procedure_step_pt->oneThroughProcessForProcedureStep(*this,
404 this->getSkipProcedureStep(),
405 this->memory);
406 this->setSkipProcedureStep(false);
407 } else {
409 es_pt = new BranchEndState();
410 str = "Undefined procedure step at ";
411 str += procedure_pt->getProcedureName();
412 str += ' ';
413 str += procedure_pt->getStepName();
415 es_pt->setConsequenceDescription(str);
417 this->setPauseActivity(true);
418 }
419 } else {
420
421 // no other procedure is currently avialable
422 }
423 }
424 }
425 return branch_generated;
426}
427
429 int intended_receiver;
430 int sender;
431 //
432 for (auto &goal_elem : g_sim.Communication_place.goal) {
433 intended_receiver = goal_elem->getIntendedReceiver();
434 if (intended_receiver == sim::Operator::ODM) {
435 if (goal_elem->getStateOfActivation() != sim::Source::Bypass) {
436 memory.new_info.goal.push_back(goal_elem);
437 } else {
438 switch (goal_elem->getDecision()) {
440 break;
442 break;
443 default: break;
444 }
445 }
446 //
447 if (goal_elem->getTypeOfPauseActivity() == sim::Decision::Goal) {
448 this->setPauseActivity(false);
449 }
450 }
451 }
452 for (auto &strategy_elem : g_sim.Communication_place.strategy) {
453 intended_receiver = strategy_elem->getIntendedReceiver();
454 if (intended_receiver == sim::Operator::ODM) {
455 if (strategy_elem->getStateOfActivation() != sim::Source::Bypass) {
456 memory.new_info.strategy.push_back(strategy_elem);
457 }
458 //
459 if (strategy_elem->getTypeOfPauseActivity() == sim::Decision::Strategy) {
460 this->setPauseActivity(false);
461 }
462 }
463 }
464 for (auto &subgoal_elem : g_sim.Communication_place.subgoal) {
465 intended_receiver = subgoal_elem->getIntendedReceiver();
466 if (intended_receiver == sim::Operator::ODM) {
467 if (subgoal_elem->getStateOfActivation() != sim::Source::Bypass) {
468 memory.new_info.subgoal.push_back(subgoal_elem);
469 }
470 if (subgoal_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
471 this->setPauseActivity(false);
472 } else if (subgoal_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
473 this->setPauseMentalProcedure(false);
474 }
475 }
476 }
477 for (auto &diagnosis_elem : g_sim.Communication_place.diagnosis) {
478 intended_receiver = diagnosis_elem->getIntendedReceiver();
479 if (intended_receiver == sim::Operator::ODM) {
480 if (diagnosis_elem->getStateOfActivation() != sim::Source::Bypass) {
481 memory.new_info.diagnosis.push_back(diagnosis_elem);
482 }
483 if (diagnosis_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
484 this->setPauseActivity(false);
485 } else if (diagnosis_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
486 this->setPauseMentalProcedure(false);
487 }
488 }
489 }
490 for (auto &action_objective_elem : g_sim.Communication_place.action_objective) {
491 intended_receiver = action_objective_elem->getIntendedReceiver();
492 if (intended_receiver == sim::Operator::ODM) {
493 if (action_objective_elem->getStateOfActivation() != sim::Source::Bypass) {
494 memory.new_info.action_objective.push_back(action_objective_elem);
495 }
496 if (action_objective_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
497 this->setPauseActivity(false);
498 } else if (action_objective_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
499 this->setPauseMentalProcedure(false);
500 }
501 }
502 }
503 for (auto &action_pack_elem : g_sim.Communication_place.action_pack) {
504 intended_receiver = action_pack_elem->getIntendedReceiver();
505 if (intended_receiver == sim::Operator::ODM) {
506 if (action_pack_elem->getStateOfActivation() != sim::Source::Bypass) {
507 memory.new_info.action_pack.push_back(action_pack_elem);
508 }
509 if (action_pack_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
510 this->setPauseActivity(false);
511 } else if (action_pack_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
512 this->setPauseMentalProcedure(false);
513 }
514 }
515 }
516 for (auto &action_elem : g_sim.Communication_place.action) {
517 intended_receiver = action_elem->getIntendedReceiver();
518 sender = action_elem->getSender();
519 if (intended_receiver == sim::Operator::ODM) {
520 if (action_elem->getStateOfActivation() != sim::Source::Bypass) {
521 memory.new_info.action.push_back(action_elem);
522 }
523 if (action_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure || action_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
524 this->setPauseActivity(false);
525 if (action_elem->getStateOfActivation() == sim::State::Skip) {
526 this->setSkipProcedureStep(true);
527 }
528 } else if (action_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse || action_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
529 this->setPauseMentalProcedure(false);
530 if (action_elem->getStateOfActivation() == sim::State::Skip) {
532 }
533 }
534 }
535 }
536 for (auto &procedure_step_elem : g_sim.Communication_place.procedure_step) {
537 intended_receiver = procedure_step_elem->getIntendedReceiver();
538 sender = procedure_step_elem->getSender();
539 if (intended_receiver == sim::Operator::ODM) {
540 if (procedure_step_elem->getStateOfActivation() != sim::Source::Bypass) {
541 memory.new_info.procedure_step.push_back(procedure_step_elem);
542 if (procedure_step_elem->getStateOfActivation() != sim::State::Skip) {
543 this->checkAndResetProcedureStep(procedure_step_elem.get());
544 }
545 }
546 if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
547 || procedure_step_elem->getTypeOfPauseActivity() == sim::Branch::ProcedureXfr) {
548 this->setPauseActivity(false);
549 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
550 this->setSkipProcedureStep(true);
551 }
552 } else if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
553 this->setPauseMentalProcedure(false);
554 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
556 }
557 }
558 }
559 }
560 for (auto &procedure_step_elem : g_sim.Communication_place.instinctive_response_procedure) {
561 intended_receiver = procedure_step_elem->getIntendedReceiver();
562 sender = procedure_step_elem->getSender();
563 if (intended_receiver == sim::Operator::ODM) {
564 if (procedure_step_elem->getStateOfActivation() != sim::Source::Bypass) {
565 memory.new_info.instinctive_response_procedure.push_back(procedure_step_elem);
566 if (procedure_step_elem->getStateOfActivation() != sim::State::Skip) {
567 this->checkAndResetProcedureStep(procedure_step_elem.get());
568 }
569 }
570 if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
571 this->setPauseActivity(false);
572 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
573 this->setSkipProcedureStep(true);
574 }
575 } else if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
576 || procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
577 this->setPauseMentalProcedure(false);
578 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
580 }
581 }
582 }
583 }
584 for (auto &info_gather_mode_elem : g_sim.Communication_place.info_gather_mode) {
585 intended_receiver = info_gather_mode_elem->getIntendedReceiver();
586 sender = info_gather_mode_elem->getSender();
587 if (intended_receiver == sim::Operator::ODM) {
588 this->memory.setInfoGatherMode(info_gather_mode_elem->getInfoGatherMode());
589 if (info_gather_mode_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
590 || info_gather_mode_elem->getTypeOfPauseActivity() == sim::Branch::InfoGatherMode) {
591 this->setPauseActivity(false);
592 } else if (info_gather_mode_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
593 this->setPauseMentalProcedure(false);
594 }
595 }
596 }
597 for (auto &mental_belief_elem : g_sim.Communication_place.mental_belief) {
598 int state_of_activation;
599 intended_receiver = mental_belief_elem->getIntendedReceiver();
600 if (mental_belief_elem->getIntendedReceiver() == sim::Operator::ODM) {
601 state_of_activation = mental_belief_elem->getStateOfActivation();
602 if (state_of_activation != sim::State::OldInfo && state_of_activation != sim::Source::Bypass) {
603 this->memory.new_info.mental_belief.push_back(mental_belief_elem);
604 }
605 if (mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
606 || mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
607 this->setPauseActivity(false);
608 if (mental_belief_elem->getStateOfActivation() == sim::State::Skip) {
609 this->setSkipProcedureStep(true);
610 }
611 } else if (mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
612 this->setPauseMentalProcedure(false);
613 if (mental_belief_elem->getStateOfActivation() == sim::State::Skip) {
615 }
616 }
617 }
618 }
619
620 for (auto &scanned_parameter_elem : g_sim.Communication_place.scanned_parameter) {
621 int state_of_activation;
622 intended_receiver = scanned_parameter_elem->getIntendedReceiver();
623 if (scanned_parameter_elem->getIntendedReceiver() == sim::Operator::ODM) {
624 state_of_activation = scanned_parameter_elem->getStateOfActivation();
625 if (state_of_activation != sim::State::OldInfo && state_of_activation != sim::Source::Bypass) {
626 this->memory.new_info.scanned_parameter.push_back(scanned_parameter_elem);
627 }
628 if (scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
629 || scanned_parameter_elem->getTypeOfPauseActivity() == sim::ControlAction::ParameterScan) {
630 this->setPauseActivity(false);
631 if (scanned_parameter_elem->getStateOfActivation() == sim::State::Skip) {
632 this->setSkipProcedureStep(true);
633 }
634 } else if (scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
635 || scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
636 this->setPauseMentalProcedure(false);
637 if (scanned_parameter_elem->getStateOfActivation() == sim::State::Skip) {
639 }
640 }
641 }
642 }
643
644 for (auto &alarm_state_elem : g_sim.Communication_place.alarm_state) {
645 intended_receiver = alarm_state_elem->getIntendedReceiver();
646 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
647 if (alarm_state_elem->getStateOfActivation() != sim::Source::Bypass
648 && alarm_state_elem->getStateOfActivation() != sim::State::OldInfo) {
649 memory.new_info.alarm_state.push_back(alarm_state_elem);
650 }
651 if (intended_receiver == sim::Operator::ODM) {
652 if (alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
653 || alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
654 this->setPauseActivity(false);
655 } else if (alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
656 || alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
657 this->setPauseMentalProcedure(false);
658 }
659 }
660 }
661 }
662 for (auto &component_state_elem : g_sim.Communication_place.component_state) {
663 intended_receiver = component_state_elem->getIntendedReceiver();
664 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
665 if (component_state_elem->getStateOfActivation() != sim::Source::Bypass
666 && component_state_elem->getStateOfActivation() != sim::State::OldInfo) {
667 memory.new_info.component_state.push_back(component_state_elem);
668 }
669 if (intended_receiver == sim::Operator::ODM) {
670 if (component_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
671 || component_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
672 this->setPauseActivity(false);
673 } else if (component_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
674 || component_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
675 this->setPauseMentalProcedure(false);
676 }
677 }
678 }
679 }
680 for (auto &support_system_state_elem : g_sim.Communication_place.support_system_state) {
681 intended_receiver = support_system_state_elem->getIntendedReceiver();
682 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
683 if (support_system_state_elem->getStateOfActivation() != sim::Source::Bypass
684 && support_system_state_elem->getStateOfActivation() != sim::State::OldInfo) {
685 memory.new_info.support_system_state.push_back(support_system_state_elem);
686 }
687 if (intended_receiver == sim::Operator::ODM) {
688 if (support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
689 || support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
690 this->setPauseActivity(false);
691 } else if (support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
692 || support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
693 this->setPauseMentalProcedure(false);
694 }
695 }
696 }
697 }
698 for (auto &parameter_trend_elem : g_sim.Communication_place.parameter_trend) {
699 intended_receiver = parameter_trend_elem->getIntendedReceiver();
700 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
701 if (parameter_trend_elem->getStateOfActivation() != sim::Source::Bypass
702 && parameter_trend_elem->getStateOfActivation() != sim::State::OldInfo) {
703 memory.new_info.parameter_trend.push_back(parameter_trend_elem);
704 }
705 if (intended_receiver == sim::Operator::ODM) {
706 if (parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
707 || parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
708 this->setPauseActivity(false);
709 } else if (parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
710 || parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
711 this->setPauseMentalProcedure(false);
712 }
713 }
714 }
715 }
716 for (auto &parameter_value_elem : g_sim.Communication_place.parameter_value) {
717 intended_receiver = parameter_value_elem->getIntendedReceiver();
718 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
719 if (parameter_value_elem->getStateOfActivation() != sim::Source::Bypass
720 && parameter_value_elem->getStateOfActivation() != sim::State::OldInfo) {
721 memory.new_info.parameter_value.push_back(parameter_value_elem);
722 }
723 if (intended_receiver == sim::Operator::ODM) {
724 if (parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
725 || parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
726 this->setPauseActivity(false);
727 } else if (parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
728 || parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
729 this->setPauseMentalProcedure(false);
730 }
731 }
732 }
733 }
734 for (auto &parameter_difference_elem : g_sim.Communication_place.parameter_difference) {
735 intended_receiver = parameter_difference_elem->getIntendedReceiver();
736 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::Operator::OdmScan) {
737 if (parameter_difference_elem->getStateOfActivation() != sim::Source::Bypass
738 && parameter_difference_elem->getStateOfActivation() != sim::State::OldInfo) {
739 memory.new_info.parameter_difference.push_back(parameter_difference_elem);
740 }
741 if (intended_receiver == sim::Operator::ODM) {
742 if (parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
743 || parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
744 this->setPauseActivity(false);
745 } else if (parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse
746 || parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
747 this->setPauseMentalProcedure(false);
748 }
749 }
750 }
751 }
752 for (auto &new_alarm_elem : g_sim.Communication_place.new_alarm) {
753 intended_receiver = new_alarm_elem->getIntendedReceiver();
754 if (intended_receiver == sim::Operator::ODM || intended_receiver == sim::None) {
755 memory.new_info.new_alarm.push_back(new_alarm_elem);
756 }
757 }
758
759}
761//
762// perform control panel instrument scan every scan_periodicity
763 //
765 this->quantificationFilter(); // Item priority is reduced based on the age of the item in the queue and its relevance to the diagnosis, even be removed from the queue
767 for (auto& elem : this->scanned_indicators.parameter_scan_list) {
768 //
769 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
770 elem->setTimeOfCommunication(r5pars_.timesno);
771 elem->setIntendedReceiver(sim::Source::Plant);
772 elem->setSender(sim::Operator::OdmScan);
774 }
775 for (auto& elem : this->scanned_indicators.component_scan_list) {
776 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
777 elem->setTimeOfCommunication(r5pars_.timesno);
778 elem->setIntendedReceiver(sim::Source::Plant);
779 elem->setSender(sim::Operator::OdmScan);
781 }
782 for (auto& elem : this->scanned_indicators.support_system_scan_list) {
783 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
784 elem->setTimeOfCommunication(r5pars_.timesno);
785 elem->setIntendedReceiver(sim::Source::Plant);
786 elem->setSender(sim::Operator::OdmScan);
788 }
789 for (auto& elem : this->scanned_indicators.alarm_scan_list) {
790 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
791 elem->setTimeOfCommunication(r5pars_.timesno);
792 elem->setIntendedReceiver(sim::Source::Plant);
793 elem->setSender(sim::Operator::OdmScan);
794 g_sim.Communication_place.alarm_state.push_back(elem);
795 }
796 g_sim.Aux_info.addScanQueueData(r5pars_.timesno, this->getTypeOfOperator(), this->scanned_indicators);
797 }
798}
799
801 bool branch_generated;
802 bool reactor_tripped = false;
803 int num_branch, goal;
804 int total_new_items;
805 string limiting_tcl_parameter;
806 BranchScannedParameter *b_scan_pt;
807 ExpectedMentalBelief *emb_pt;
808 InfoChunkMental *wm;
809 this->setNewBranchGenerated(false);
810 wm = this->memory.getWorkingMemory();
811 this->receiveNewInformation();
812 goal = this->memory.getCurrentGoal();
814 //
815 //chunking info and update the confidence level on Hardwired KB based on the newly perceived information
816 total_new_items = this->infoChunking();
817 //
818 this->information_load.addInformationLoadData(r5pars_.timesno, total_new_items);
820 //
822 if (this->getPauseMentalProcedure() == false && this->getPauseActivity() == false) {
823 branch_generated = this->checkAndActivateHWKB();
824 if (branch_generated) this->setPauseMentalProcedure(true);
826 }
827 //
832 // if tcl is high, verify that main driver for time constrained load is in the scan queue
833 if (!this->getPauseActivity() && !this->getPauseMentalProcedure()) {
834 // generate branch to add prime time constrained load to scan queue
836 if (!this->scanned_indicators.checkIfParameterInQueue(limiting_tcl_parameter)) {
837 // add parameter to scan queue
838 b_scan_pt = new BranchScannedParameter();
839 b_scan_pt->setInfoName(limiting_tcl_parameter);
841 b_scan_pt->setScanPriority(1);
846 this->setPauseActivity(true);
847 }
848 }
849 }
850 //
851 if (!this->getAbnormalSignalPerceived() && !this->getPauseMentalProcedure()) {
852 emb_pt = this->memory.perceived_info.checkExistanceOfMentalBelief("Reactor_Tripped");
853 if (emb_pt != 0) {
854 if (emb_pt->getStateOfActivation() == sim::State::Succeed) {
855 reactor_tripped = true;
856 }
857 }
858 switch (goal) {
860 if ((this->diagnosis_matrix.getAbnormalConfidence() > this->getAbnormalSignalThreshold()) || reactor_tripped) {
861 this->setAbnormalSignalPerceived(true);
863 }
864 break;
866 if (reactor_tripped) {
867 this->setAbnormalSignalPerceived(true);
869 }
870 break;
872 break;
874 // do nothing
875 break;
876 case sim::None:
877 // do nothing
878 break;
879 default: ofstream fout("err messages.txt", ios::app);
880 cout << r5pars_.timesno << " OperatorDM::oneThroughProcessForBlockI: "
881 << g_sim.Translator.getString(wm->getCurrentGoal()) << " can not be recognized" << endl;
882 fout << r5pars_.timesno << " OperatorDM::oneThroughProcessForBlockI: "
883 << g_sim.Translator.getString(wm->getCurrentGoal()) << " can not be recognized\n";
884 fout.close();
885 this->setAbnormalSignalPerceived(true);
886 //
887 break;
888 }
889 }
890
891 //
892 if (this->getAbnormalSignalPerceived() && !this->getPauseMentalProcedure() && !this->getPauseActivity()) {
893 num_branch = generateInfoGatherModeBranch();
894 if (num_branch > 0) { this->setNewBranchGenerated(true); }
895 }
896}
898 //info identification and screening
899 this->memory.clearNewInfo();
901 Operator::biasFilter(); //NEED MORE WORK
902 //Operator::quantificationFilter(); //NEED MORE WORK
903}
905/*
906A. register perceived information
907 Go piece by piece of perceived new information (relevant_new_info) to
908 1. Add the piece of new information to perceived informatin list (perceived_info)
909 2. Check whether new InfoChunkMental should be added to the ShhortTermMemory based on teh sub-system; add InfoChunkMental if needed
910 3. Add pointer in InfoChunkMental to the information in the piece of info in the perceived_info.
911B. Update confidence level of KB::Hardwired diagnosis
912*/
913// vector<BranchExpectedParameterTrend *>::iterator parameter_trend_elem;
914//
915 ProcedureStep *pps_pt = 0;
916 DecisionAction *action_pt = 0;
917 DecisionProcedureStep *procedure_step_pt = 0;
918 MentalAlarm *perceived_alarms_pt = 0;
919 MentalComponentState *perceived_component_state_pt = 0;
920 MentalSupportSystemState *perceived_support_system_state_pt = 0;
921 MentalParameterValue *perceived_parameter_value_pt = 0;
922 ExpectedMentalBelief *mental_belief_pt1;
923 //
925 int sender;
926 int total_chunked_items = 0;
927 string _procedure_name, _step_name, mental_belief_name;
928 map<string, ProcedureStep *>::iterator procedure_map_itr;
929 BranchEndState *es_pt;
930 string str;
931//
932 for (auto &goal_elem : memory.new_info.goal) {
933 auto goal_sp = std::make_shared<DecisionGoal>();
934 goal_sp->copyDecisionGoal(*goal_elem);
935 goal_sp->setStateOfActivation(sim::State::Active);
936 memory.perceived_info.goal.push_back(goal_sp);
937 wm->pointToTheNewGoal(goal_sp.get());
938 total_chunked_items += 1;
939 }
940 for (auto &strategy_elem : memory.new_info.strategy) {
941 auto strategy_sp = std::make_shared<DecisionStrategy>();
942 strategy_sp->copyDecisionStrategy(*strategy_elem);
943 strategy_sp->setStateOfActivation(sim::State::Active);
944 memory.perceived_info.strategy.push_back(strategy_sp);
945 wm->pointToTheNewStrategy(strategy_sp.get());
946 total_chunked_items += 1;
947 }
948 for (auto &subgoal_elem : memory.new_info.subgoal) {
949 auto subgoal_sp = std::make_shared<DecisionSubGoal>();
950 subgoal_sp->copyDecisionSubGoal(*subgoal_elem);
951 subgoal_sp->setStateOfActivation(sim::State::Active);
952 memory.perceived_info.subgoal.push_back(subgoal_sp);
953 wm->pointToTheNewSubGoal(subgoal_sp.get());
954 total_chunked_items += 1;
955 }
956 for (auto &diagnosis_elem : memory.new_info.diagnosis) {
957 auto diagnosis_sp = std::make_shared<DecisionDiagnosis>();
958 diagnosis_sp->copyDecisionDiagnosis(*diagnosis_elem);
959 diagnosis_sp->setStateOfActivation(sim::State::Active);
960 sender = diagnosis_elem->getSender();
961 if (sender == sim::Operator::ODM) {
962 diagnosis_sp->setStateOfActivation(sim::State::Active);
963 this->memory.addNewInfoChunkMentalForTheDiagnosis(diagnosis_sp.get());
964 } else if (sender == sim::Operator::OCT) {
965 diagnosis_sp->setStateOfActivation(sim::None);
966 } else {}
967 memory.perceived_info.diagnosis.push_back(diagnosis_sp);
968 this->knowledge_base.KBcheckHardWiredMatchForMentalBelief(diagnosis_elem->getDiagnosis(), sim::State::Succeed);
969 total_chunked_items += 1;
970 }
971 for (auto &action_objective_elem : memory.new_info.action_objective) {
972 auto action_objective_sp = std::make_shared<DecisionActionObjective>();
973 action_objective_sp->copyDecisionActionObjective(*action_objective_elem);
974 action_objective_sp->setStateOfActivation(sim::State::Active);
975 memory.perceived_info.action_objective.push_back(action_objective_sp);
976 wm->pointToTheNewActionObjective(action_objective_sp.get());
977 total_chunked_items += 1;
978 }
979 for (auto &action_pack_elem : memory.new_info.action_pack) {
980 auto action_pack_sp = std::make_shared<DecisionActionPack>();
981 action_pack_sp->copyDecisionActionPack(*action_pack_elem);
982 action_pack_sp->setStateOfActivation(sim::State::Active);
983 memory.perceived_info.action_pack.push_back(action_pack_sp);
984 wm->pointToTheNewActionPack(action_pack_sp.get());
985 total_chunked_items += 1;
986 }
987 for (auto &action_elem : memory.new_info.action) {
988 action_pt = this->memory.perceived_info.checkExistanceOfAction(action_elem->getActionName());
989 if (action_pt == 0) {//info has not been perceived before
990 auto action_sp = std::make_shared<DecisionAction>();
991 action_sp->copyDecisionAction(*action_elem);
992 if (action_elem->getStateOfActivation() == sim::State::Skip) {
993 action_sp->setStateOfActivation(sim::State::Skip);
994 } else {
995 action_sp->setStateOfActivation(sim::State::Succeed);
996 }
997 memory.perceived_info.action.push_back(action_sp);
998 wm->pointToTheNewAction(action_sp.get());
999 this->knowledge_base.KBcheckHardWiredMatchForControl(action_sp->getActionName(), action_sp->getControlValue());
1000 } else {
1001 action_pt->copyDecisionAction(*action_elem);
1002 if (action_elem->getStateOfActivation() == sim::State::Skip) {
1004 } else {
1006 }
1007 wm->pointToTheNewAction(action_pt);
1009 }
1010 total_chunked_items += 1;
1011 }
1012
1013 for (auto &scanned_parameter_elem : memory.new_info.scanned_parameter) {
1014 string name;
1015 int scan_priority;
1016 if (scanned_parameter_elem->getStateOfActivation() != sim::State::Skip) {
1017 name = scanned_parameter_elem->getInfoName();
1018 scan_priority = scanned_parameter_elem->getScanPriority();
1019 switch (scanned_parameter_elem->getTypeOfScannedParameter()) {
1020
1021 case sim::Comm::ParameterValue: this->scanned_indicators.addScannedParameter(name, scan_priority);
1022 break;
1023
1024 case sim::Comm::ComponentState: this->scanned_indicators.addScannedComponent(name, scan_priority);
1025 break;
1026
1028 break;
1029
1030 case sim::Comm::AlarmState: this->scanned_indicators.addScannedAlarm(name, scan_priority);
1031 break;
1032
1033 default:
1034 // not a valid scan parameter
1035
1036 break;
1037 }
1038 total_chunked_items += 1;
1039 }
1040
1041 }
1042
1043 for (auto &procedure_step_elem : memory.new_info.procedure_step) {
1044 _procedure_name = procedure_step_elem->getProcedureName();
1045 _step_name = procedure_step_elem->getStepName();
1046 procedure_step_pt = this->memory.perceived_info.checkExistanceOfAProcedure(_procedure_name, _step_name);
1047 if (procedure_step_pt == 0) {
1048 auto procedure_step_sp = std::make_shared<DecisionProcedureStep>();
1049 procedure_step_sp->copyDecisionProcedureStep(*procedure_step_elem);
1050 procedure_step_sp->setStateOfActivation(sim::State::Active);
1051 memory.perceived_info.procedure_step.push_back(procedure_step_sp);
1052 procedure_step_pt = procedure_step_sp.get();
1053 } else {
1054 procedure_step_pt->setStateOfActivation(sim::State::Active);
1055 }
1056 // check for hard wired diagnosis match
1057 if (procedure_step_pt->getProcedureName() != procedure_step_pt->getLastProcedureName()) {
1059 procedure_step_pt->getStateOfActivation());
1061 }
1062 wm->pointToTheNewProcedureStep(procedure_step_pt);
1063 //update the activation state of the procedue step
1064 _procedure_name = procedure_step_pt->getProcedureName();
1065 _step_name = procedure_step_pt->getStepName();
1066 _procedure_name += _step_name;
1067 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
1068 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
1069 pps_pt = procedure_map_itr->second;
1071 } else {
1072 es_pt = new BranchEndState();
1073 str = "Undefined procedure step at ";
1074 str += procedure_step_pt->getProcedureName();
1075 str += ' ';
1076 str += procedure_step_pt->getStepName();
1078 es_pt->setConsequenceDescription(str);
1080
1081 int branch_number = g_sim.Branch_center.getIDOfRecentGeneratedBranch();
1083 g_sim.Aux_info.addRecord(str, branch_number);
1084 }
1085 total_chunked_items += 1;
1086 }
1087 for (auto &procedure_step_elem : memory.new_info.instinctive_response_procedure) {
1088 _procedure_name = procedure_step_elem->getProcedureName();
1089 _step_name = procedure_step_elem->getStepName();
1090 // check if instinctive response procedure has already been placed in memory and has not already been completed (sim::State::Done) or interrupted (VINTERRUPT)
1091 procedure_step_pt =
1092 this->memory.perceived_info.checkExistanceOfAnInstinctiveResponseProcedure(_procedure_name, _step_name);
1093 if (procedure_step_pt == 0) {
1094 auto procedure_step_sp = std::make_shared<DecisionProcedureStep>();
1095 procedure_step_sp->copyDecisionProcedureStep(*procedure_step_elem);
1096 procedure_step_sp->setStateOfActivation(sim::State::Active);
1097 memory.perceived_info.instinctive_response_procedure.push_back(procedure_step_sp);
1098 procedure_step_pt = procedure_step_sp.get();
1099 } else {
1100 procedure_step_pt->setStateOfActivation(sim::State::Active);
1101 }
1102 //
1103 if (procedure_step_pt->getProcedureName() != procedure_step_pt->getLastProcedureName()) {
1105 procedure_step_pt->getStateOfActivation());
1107 }
1108 //
1109 wm->pointToTheNewInstinctiveResponseProcedureStep(procedure_step_pt);
1110 //update the mark of activation state of the procedue step
1111 _procedure_name += _step_name;
1112 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
1113 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
1114 pps_pt = procedure_map_itr->second;
1116 } else {
1117 procedure_step_pt->setStateOfActivation(sim::State::Failed);
1120 cout << "Warning OperatorDM::infoChunking: mental procedure_step " << _procedure_name
1121 << " is not within the Procedures.txt" << endl;
1122 ofstream fout("err messages.txt", ios::app);
1123 fout << r5pars_.timesno << " Warning OperatorDM::infoChunking: mental procedure_step " << _procedure_name
1124 << " is not witin the Procedures.txt\n";
1125 fout.close();
1126 }
1127 total_chunked_items += 1;
1128 }
1129 for (auto &mental_belief_elem : memory.new_info.mental_belief) {
1130 mental_belief_name = mental_belief_elem->getInfoName();
1131 mental_belief_pt1 = this->memory.perceived_info.checkExistanceOfMentalBelief(mental_belief_name);
1132 if (mental_belief_pt1 == 0) { // belief has not been perceived
1133 // memorize the mental belief
1134 auto mental_belief_sp = std::make_shared<ExpectedMentalBelief>();
1135 mental_belief_sp->copyExpectedMentalBelief(*mental_belief_elem);
1136 memory.perceived_info.mental_belief.push_back(mental_belief_sp);
1137 } else {
1138 mental_belief_pt1->copyExpectedMentalBelief(*mental_belief_elem);
1139 }
1140 _procedure_name = this->knowledge_base.getProcedureNameOfHWDiagnosis(mental_belief_elem->getInfoName());
1141 _step_name = this->knowledge_base.getStepNameOfHWDiagnosis(mental_belief_elem->getInfoName());
1142 if (_procedure_name != "NONE" && _procedure_name != "None") {
1144 _step_name,
1145 mental_belief_elem->getMentalPriority(),
1147 mental_belief_elem->getActivationTime());
1148 }
1149 this->knowledge_base.KBcheckHardWiredMatchForMentalBelief(mental_belief_elem->getInfoName(),
1150 mental_belief_elem->getStateOfActivation());
1151 total_chunked_items += 1;
1152 }
1153 for (auto &alarm_state_elem : memory.new_info.alarm_state) {
1154 perceived_alarms_pt =
1155 this->memory.perceived_info.checkExistanceOfPerceivedAlarms(alarm_state_elem->getAlarmName());
1156 if (perceived_alarms_pt == 0) {//the alarm has not been perceived
1157 auto alarm_sp = std::make_shared<MentalAlarm>();
1158 alarm_sp->copyMentalAlarm(*alarm_state_elem);
1159 memory.perceived_info.perceived_alarms.push_back(alarm_sp);
1160 perceived_alarms_pt = alarm_sp.get();
1162 } else {//the operator perceived alarm earlier of the sequence
1163 //perceived_alarms_pt->setDisplayedAlarmState(alarm_state_elem->getDisplayedAlarmState());
1164 perceived_alarms_pt->setObservedAlarmState(alarm_state_elem->getObservedAlarmState());
1165 perceived_alarms_pt->setTimeAtWhichThisInfoIsPerceived(alarm_state_elem->getTimeAtWhichThisInfoIsPerceived());
1166 }
1167 if (g_sim.config.rm_cycle_enabled && this->m_RM) this->m_RM->m_tbi_A_list.push_back(perceived_alarms_pt); // only the RM reasoning cycle (disabled by default) consumes these
1168 //check point
1169 if (r5pars_.timesno > 119) { total_chunked_items += 0; }
1171 perceived_alarms_pt->getObservedAlarmState());//KB Hardwired Update
1172 total_chunked_items += 1;
1173 }
1174 for (auto &new_alarm_elem : memory.new_info.new_alarm) {
1175 perceived_alarms_pt = this->memory.perceived_info.checkExistanceOfPerceivedAlarms(new_alarm_elem->getAlarmName());
1176 if (perceived_alarms_pt == 0) {//the alarm has not been perceived
1177 auto alarm_sp = std::make_shared<MentalAlarm>();
1178 alarm_sp->copyAlarmElement(*new_alarm_elem);
1179 alarm_sp->setObservedAlarmState(new_alarm_elem->getDisplayedAlarmState());
1180 memory.perceived_info.perceived_alarms.push_back(alarm_sp);
1181 perceived_alarms_pt = alarm_sp.get();
1183 } else {//the operator perceived alarm earlier of the sequence
1184 //perceived_alarms_pt->setDisplayedAlarmState(new_alarm_elem->getDisplayedAlarmState());
1185 perceived_alarms_pt->setObservedAlarmState(new_alarm_elem->getDisplayedAlarmState());
1186 perceived_alarms_pt->setTimeAtWhichThisInfoIsPerceived(new_alarm_elem->getTimeAtWhichThisAlarmIsActivated());
1187 perceived_alarms_pt->setTimeAtWhichThisAlarmIsActivated(new_alarm_elem->getTimeAtWhichThisAlarmIsActivated());
1188 }
1189 if (g_sim.config.rm_cycle_enabled && this->m_RM) this->m_RM->m_tbi_A_list.push_back(perceived_alarms_pt); // only the RM reasoning cycle (disabled by default) consumes these
1190 //check point
1191 if (r5pars_.timesno > 119) { total_chunked_items += 0; }
1193 perceived_alarms_pt->getObservedAlarmState());//KB Hardwired Update
1194 total_chunked_items += 1;
1195 }
1196 for (auto &component_state_elem : memory.new_info.component_state) {
1197 perceived_component_state_pt =
1198 this->memory.perceived_info.checkExistanceOfPerceivedComponentState(component_state_elem->getDisplayName());
1199 if (perceived_component_state_pt == 0) {
1200 auto component_state_sp = std::make_shared<MentalComponentState>();
1201 component_state_sp->copyMentalComponentState(*component_state_elem);
1202 memory.perceived_info.perceived_component_state.push_back(component_state_sp);
1203 perceived_component_state_pt = component_state_sp.get();
1205 this->knowledge_base);
1206 } else {
1207 perceived_component_state_pt->setObservedComponentState(component_state_elem->getObservedComponentState());
1208 perceived_component_state_pt->setTimeAtWhichThisInfoIsPerceived(component_state_elem->getTimeAtWhichThisInfoIsPerceived());
1209 }
1210 if (g_sim.config.rm_cycle_enabled && this->m_RM) this->m_RM->m_tbi_C_list.push_back(perceived_component_state_pt);
1211 this->knowledge_base.KBcheckHardWiredMatchForComponentState(perceived_component_state_pt->getDisplayName(),
1212 perceived_component_state_pt->getObservedComponentState());//KB Hardwired Update
1213 total_chunked_items += 1;
1214 }
1215 for (auto &support_system_state_elem : memory.new_info.support_system_state) {
1216 perceived_support_system_state_pt =
1217 this->memory.perceived_info.checkExistanceOfPerceivedSupportSystemState(support_system_state_elem->getDisplayName());
1218 if (perceived_support_system_state_pt == 0) {
1219 auto support_system_state_sp = std::make_shared<MentalSupportSystemState>();
1220 support_system_state_sp->copyMentalSupportSystemState(*support_system_state_elem);
1221 memory.perceived_info.perceived_support_system_state.push_back(support_system_state_sp);
1222 perceived_support_system_state_pt = support_system_state_sp.get();
1224 this->knowledge_base);
1225 } else {
1226 perceived_support_system_state_pt->setObservedSupportSystemState(support_system_state_elem->getObservedSupportSystemState());
1227 perceived_support_system_state_pt->setTimeAtWhichThisInfoIsPerceived(support_system_state_elem->getTimeAtWhichThisInfoIsPerceived());
1228 }
1229 if (g_sim.config.rm_cycle_enabled && this->m_RM) this->m_RM->m_tbi_SS_list.push_back(perceived_support_system_state_pt);
1230 this->knowledge_base.KBcheckHardWiredMatchForSupportSystemState(perceived_support_system_state_pt->getDisplayName(),
1231 perceived_support_system_state_pt->getObservedSupportSystemState());//KB Hardwired Update
1232 total_chunked_items += 1;
1233 }
1234 for (auto &parameter_value_elem : memory.new_info.parameter_value) {
1235 perceived_parameter_value_pt =
1236 this->memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_value_elem->getDisplayName());
1237 if (perceived_parameter_value_pt == 0) {
1238 auto parameter_value_sp = std::make_shared<MentalParameterValue>();
1239 parameter_value_sp->copyMentalParameterValue(*parameter_value_elem);
1240 memory.perceived_info.perceived_parameter_value.push_back(parameter_value_sp);
1241 perceived_parameter_value_pt = parameter_value_sp.get();
1243 this->knowledge_base);
1244 } else {
1245 perceived_parameter_value_pt->setObservedParameterValue(parameter_value_elem->getObservedParameterValue());
1246 perceived_parameter_value_pt->setTimeAtWhichThisInfoIsPerceived(parameter_value_elem->getTimeAtWhichThisInfoIsPerceived());
1247 }
1248 // clear memory created for parameter scan function
1249 //if (parameter_value_elem->getIntendedReceiver() == sim::Operator::OdmScan) {
1250 //delete *parameter_value_elem;
1251 //Communication_place.parameter_value.erase(parameter_value_elem);
1252 //}
1253 if (g_sim.config.rm_cycle_enabled && this->m_RM) this->m_RM->m_tbi_P_list.push_back(perceived_parameter_value_pt);
1254 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt->getDisplayName(),
1255 perceived_parameter_value_pt->getObservedParameterValue(),
1256 sim::Operator::ODM);//KB Hardwired Update
1257 total_chunked_items += 1;
1258 }
1259 for (auto &parameter_difference_elem : memory.new_info.parameter_difference) {
1260 // check if first difference parameter has been previously memorized
1261 perceived_parameter_value_pt =
1262 this->memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_difference_elem->first_mental_parameter.getDisplayName());
1263 if (perceived_parameter_value_pt == 0) {
1264 auto param_value_sp = std::make_shared<MentalParameterValue>();
1265 param_value_sp->copyMentalParameterValue(parameter_difference_elem->first_mental_parameter);
1266 memory.perceived_info.perceived_parameter_value.push_back(param_value_sp);
1267 perceived_parameter_value_pt = param_value_sp.get();
1269 this->knowledge_base);
1270 } else {
1271 perceived_parameter_value_pt->setObservedParameterValue(parameter_difference_elem->first_mental_parameter.getObservedParameterValue());
1272 perceived_parameter_value_pt->setTimeAtWhichThisInfoIsPerceived(parameter_difference_elem->first_mental_parameter.getTimeAtWhichThisInfoIsPerceived());
1273 }
1274 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt->getDisplayName(),
1275 perceived_parameter_value_pt->getObservedParameterValue(),
1276 sim::Operator::ODM);//KB Hardwired Update
1277 //check if second difference parameter has been previously memorized
1278 perceived_parameter_value_pt =
1279 this->memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_difference_elem->second_mental_parameter.getDisplayName());
1280 if (perceived_parameter_value_pt == 0) {
1281 auto param_value_sp2 = std::make_shared<MentalParameterValue>();
1282 param_value_sp2->copyMentalParameterValue(parameter_difference_elem->second_mental_parameter);
1283 memory.perceived_info.perceived_parameter_value.push_back(param_value_sp2);
1284 perceived_parameter_value_pt = param_value_sp2.get();
1286 this->knowledge_base);
1287 } else {
1288 perceived_parameter_value_pt->setObservedParameterValue(parameter_difference_elem->second_mental_parameter.getObservedParameterValue());
1289 perceived_parameter_value_pt->setTimeAtWhichThisInfoIsPerceived(parameter_difference_elem->second_mental_parameter.getTimeAtWhichThisInfoIsPerceived());
1290 }
1291 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt->getDisplayName(),
1292 perceived_parameter_value_pt->getObservedParameterValue(),
1293 sim::Operator::ODM);//KB Hardwired Update
1294 total_chunked_items += 1;
1295 }
1296 return total_chunked_items;
1297
1298}
1301}
1304}
1307}
1308
1311}
1314}
1317}
1320}
1322 InfoChunkMental *wm;
1323 string _procedure_name, _step_name, diagnosis;
1324 DecisionProcedureStep *procedure_pt;
1325 BranchProcedureStep *b_procedure_pt;
1326 int who = sim::Operator::ODM;
1327 ProcedureStep *_procedure_step_pt;
1328 map<string, ProcedureStep *>::iterator procedure_map_itr;
1329 string str;
1330//
1331 wm = this->memory.getWorkingMemory();
1332 bool branch_generated = false;
1333 procedure_pt = wm->getCurrentInstinctiveResponseProcedurePtr();
1334 if (procedure_pt == 0) {
1335 diagnosis = wm->getCurrentDiagnosis();
1336 if (diagnosis != "NONE") {
1337 _procedure_name = this->knowledge_base.getProcedureNameOfHWDiagnosis(diagnosis);
1338 _step_name = this->knowledge_base.getStepNameOfHWDiagnosis(diagnosis);
1339 b_procedure_pt = new BranchProcedureStep();
1340 b_procedure_pt->setSenderAndReceiver(who, who);//(sender, receiver)
1341 b_procedure_pt->setTimerAndProbability(5.0, 1.0 - this->hfe_bbn.getProcedureStepFailureProbability());//(remaining time, probability)
1342 b_procedure_pt->setProcedureName(_procedure_name);
1343 b_procedure_pt->setStepName(_step_name);
1346 branch_generated = true;
1347 } else {
1348 ofstream fout("err messages.txt", ios::app);
1349 cout << "OperatorDM::performFollowProcedure: No entry procedure is found." << endl;
1350 fout << r5pars_.timesno << " OperatorDM::performFollowProcedure: No entry procedure is found.\n";
1351 fout.close();
1352 r5pars_.sim_err = true;
1353 }
1354 } else {
1355 diagnosis = wm->getCurrentDiagnosis();
1356 _procedure_name = this->knowledge_base.getProcedureNameOfHWDiagnosis(diagnosis);
1357 _step_name = this->knowledge_base.getStepNameOfHWDiagnosis(diagnosis);
1358 _procedure_name += _step_name;
1359 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
1360 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
1361 _procedure_step_pt = procedure_map_itr->second;
1362 _procedure_step_pt->setStateOfActivation(sim::State::Active);
1363 branch_generated = _procedure_step_pt->oneThroughProcessForInstinctiveResponseProcedure(*this,
1364 this->getSkipActionThreshold(),
1367 this->memory);
1368 this->setSkipInstinctiveResponseStep(false);
1369 } else {
1372 }
1373 }
1374 return branch_generated;
1375}
1376
1378 fout << "OperatorDM\n";
1379 this->saveOperatorToFile(fout);
1380}
1382 string str;
1383 fin >> str;
1384 if (str != "OperatorDM") {
1385 ofstream fout("err messages.txt", ios::app);
1386 cout << "OperatorDM::retrieveOperatorDMFromFile File retrieval error in previous function" << endl;
1387 fout << r5pars_.timesno << " OperatorDM::retrieveOperatorDMFromFile File retrieval error in previous function\n";
1388 fout.close();
1389 r5pars_.sim_err = true;
1390 g_sim.Branch_center.setTempESMessage("OperatorDM::retrieveOperatorDMFromFile Prior error");
1392 return;
1393 }
1394 this->retrieveOperatorFromFile(fin);
1395}
Operator Decision Maker — IDAC Block D (decision) and Block I (information gathering).
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void setTimeAtWhichThisAlarmIsActivated(double)
std::string getAlarmName()
void addRecord(std::string, int)
void addScanQueueData(double, int, KBScannedParameters &)
The end state (ES node) that terminates one sequence of the DET.
void setTypeOfConsequence(Consequence)
void setConsequenceDescription(std::string)
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
void addAnEndState(BranchEndState *)
Closes the running sequence with an end state and takes ownership of it.
void addProcedureStep(int, BranchProcedureStep *)
int num_of_ODM_branch
Definition: BranchRecord.h:298
void addInstinctiveResponseProcedure(int, BranchProcedureStep *)
void addScannedParameter(int, BranchScannedParameter *)
Crew fork registration for a scanned parameter; same contract as addGoal().
int getIDOfRecentGeneratedBranch()
void addStrategy(int, BranchStrategy *)
void setTempESMessage(std::string)
Stores the description of the end state the running sequence will get if it is terminated (set by mod...
void addGoal(int, BranchGoal *)
int num_of_OAT_branch
Definition: BranchRecord.h:298
std::vector< std::shared_ptr< BranchSubGoal > > subgoal
Definition: BranchUnit.h:55
std::vector< std::shared_ptr< BranchExpectedParameterTrend > > parameter_trend
Definition: BranchUnit.h:63
std::vector< std::shared_ptr< BranchInfoGatherMode > > info_gather_mode
Definition: BranchUnit.h:68
std::vector< std::shared_ptr< BranchProcedureStep > > instinctive_response_procedure
Definition: BranchUnit.h:67
std::vector< std::shared_ptr< BranchGoal > > goal
Definition: BranchUnit.h:53
std::vector< std::shared_ptr< BranchActionPack > > action_pack
Definition: BranchUnit.h:58
std::vector< std::shared_ptr< BranchExpectedSupportSystemState > > support_system_state
Definition: BranchUnit.h:62
std::vector< std::shared_ptr< BranchExpectedParameterDifference > > parameter_difference
Definition: BranchUnit.h:65
std::vector< std::shared_ptr< BranchDiagnosis > > diagnosis
Definition: BranchUnit.h:56
std::vector< std::shared_ptr< BranchExpectedMentalBelief > > mental_belief
Definition: BranchUnit.h:69
std::vector< std::shared_ptr< BranchExpectedParameterValue > > parameter_value
Definition: BranchUnit.h:64
std::vector< std::shared_ptr< BranchScannedParameter > > scanned_parameter
Definition: BranchUnit.h:70
std::vector< std::shared_ptr< BranchExpectedComponentState > > component_state
Definition: BranchUnit.h:61
std::vector< std::shared_ptr< BranchStrategy > > strategy
Definition: BranchUnit.h:54
std::vector< std::shared_ptr< BranchProcedureStep > > procedure_step
Definition: BranchUnit.h:66
std::vector< std::shared_ptr< BranchExpectedAlarmState > > alarm_state
Definition: BranchUnit.h:60
std::vector< std::shared_ptr< BranchAction > > action
Definition: BranchUnit.h:59
std::vector< std::shared_ptr< BranchActionObjective > > action_objective
Definition: BranchUnit.h:57
void displayInformation(std::string strInformation)
std::vector< std::shared_ptr< BranchSystemAlarmState > > new_alarm
void setSenderAndReceiver(int, int)
void setTypeOfPauseActivity(int)
double getControlValue()
std::string getString(int) const
std::string getActionName()
void copyDecisionAction(DecisionAction &)
void setProcedureName(std::string)
void setDecision(int)
Definition: Decision.cpp:26
std::string getDisplayName()
void updateBothRationalConfidence(KB &)
void copyExpectedMentalBelief(ExpectedMentalBelief &)
void pointToTheNewActionPack(DecisionActionPack *)
Definition: InfoChunk.cpp:755
std::vector< std::shared_ptr< MentalSupportSystemState > > perceived_support_system_state
Definition: InfoChunk.h:146
DecisionAction * checkExistanceOfAction(std::string)
Definition: InfoChunk.cpp:834
int getCurrentGoal()
Definition: InfoChunk.cpp:82
std::string getCurrentDiagnosis()
Definition: InfoChunk.cpp:125
std::vector< std::shared_ptr< MentalParameterValue > > perceived_parameter_value
Definition: InfoChunk.h:147
std::vector< std::shared_ptr< DecisionSubGoal > > subgoal
Definition: InfoChunk.h:137
void pointToTheNewGoal(DecisionGoal *)
Definition: InfoChunk.cpp:685
std::string getCurrentProceduralStepName()
Definition: InfoChunk.cpp:155
DecisionProcedureStep * getCurrentProcedureStepPtr(int)
Definition: InfoChunk.cpp:201
MentalParameterValue * checkExistanceOfPerceivedParameterValue(std::string)
Definition: InfoChunk.cpp:921
std::string getCurrentInstinctiveResponseProceduralStepName()
Definition: InfoChunk.cpp:185
MentalAlarm * checkExistanceOfPerceivedAlarms(std::string)
Definition: InfoChunk.cpp:847
std::vector< std::shared_ptr< DecisionStrategy > > strategy
Definition: InfoChunk.h:136
std::string getCurrentProcedureName()
Definition: InfoChunk.cpp:140
bool isThereMentalProcedureWaitingForExecution(std::string, std::string)
Definition: InfoChunk.cpp:608
DecisionProcedureStep * checkExistanceOfAProcedure(std::string, std::string)
Definition: InfoChunk.cpp:878
MentalComponentState * checkExistanceOfPerceivedComponentState(std::string)
Definition: InfoChunk.cpp:895
std::vector< std::shared_ptr< DecisionAction > > action
Definition: InfoChunk.h:141
void pointToTheNewActionObjective(DecisionActionObjective *)
Definition: InfoChunk.cpp:741
void pointToTheNewProcedureStep(DecisionProcedureStep *)
Definition: InfoChunk.cpp:783
std::vector< std::shared_ptr< DecisionActionPack > > action_pack
Definition: InfoChunk.h:140
void pointToTheNewAction(DecisionAction *)
Definition: InfoChunk.cpp:769
DecisionProcedureStep * getCurrentInstinctiveResponseProcedurePtr()
Definition: InfoChunk.cpp:226
std::vector< std::shared_ptr< ExpectedMentalBelief > > mental_belief
Definition: InfoChunk.h:149
void pointToTheNewSubGoal(DecisionSubGoal *)
Definition: InfoChunk.cpp:713
MentalSupportSystemState * checkExistanceOfPerceivedSupportSystemState(std::string)
Definition: InfoChunk.cpp:908
DecisionProcedureStep * checkExistanceOfAnInstinctiveResponseProcedure(std::string, std::string)
Definition: InfoChunk.cpp:860
void pointToTheNewStrategy(DecisionStrategy *)
Definition: InfoChunk.cpp:699
void pointToTheNewInstinctiveResponseProcedureStep(DecisionProcedureStep *)
Definition: InfoChunk.cpp:808
int getStateOfAProcedureStep(std::string, std::string)
Definition: InfoChunk.cpp:1309
std::vector< std::shared_ptr< DecisionGoal > > goal
Definition: InfoChunk.h:135
std::vector< std::shared_ptr< DecisionDiagnosis > > diagnosis
Definition: InfoChunk.h:138
int getCurrentStrategy()
Definition: InfoChunk.cpp:97
std::vector< std::shared_ptr< DecisionProcedureStep > > instinctive_response_procedure
Definition: InfoChunk.h:143
std::vector< std::shared_ptr< MentalAlarm > > perceived_alarms
Definition: InfoChunk.h:144
std::vector< std::shared_ptr< MentalComponentState > > perceived_component_state
Definition: InfoChunk.h:145
std::vector< std::shared_ptr< DecisionProcedureStep > > procedure_step
Definition: InfoChunk.h:142
void addNewInstinctiveResponseProcedure(std::string, std::string, int, int, double)
Definition: InfoChunk.cpp:272
ExpectedMentalBelief * checkExistanceOfMentalBelief(std::string)
Definition: InfoChunk.cpp:934
std::vector< std::shared_ptr< DecisionActionObjective > > action_objective
Definition: InfoChunk.h:139
std::string getCurrentInstinctiveResponseProcedureName()
Definition: InfoChunk.cpp:170
double calculateAverageInformationLoadPIFValue()
void addInformationLoadData(double, double)
void setInfoName(std::string)
Definition: KBElement.cpp:25
Probability activation_probability
double getConfidenceLevel()
void addScannedAlarm(std::string, int)
std::vector< std::shared_ptr< BranchExpectedParameterValue > > parameter_scan_list
std::vector< std::shared_ptr< BranchExpectedSupportSystemState > > support_system_scan_list
bool checkIfParameterInQueue(std::string)
void addScannedParameter(std::string, int)
void addScannedSupportSystem(std::string, int)
std::vector< std::shared_ptr< BranchExpectedAlarmState > > alarm_scan_list
void addScannedComponent(std::string, int)
std::vector< std::shared_ptr< BranchExpectedComponentState > > component_scan_list
void setLastPanelScanTime(double)
void KBcheckHardWiredMatchForControl(std::string, double)
Definition: KB.cpp:225
void KBcheckHardWiredMatchForProcedureActivity(std::string, int)
Definition: KB.cpp:235
KBHardWiredUnit * getPtrToHardWiredDiagnosis(std::string)
Definition: KB.cpp:400
void KBcheckHardWiredMatchForAlarmState(std::string, int)
Definition: KB.cpp:240
void KBcheckHardWiredMatchForParameterValue(std::string, double, int)
Definition: KB.cpp:255
std::string getStepNameOfHWDiagnosis(std::string)
Definition: KB.cpp:358
void KBcalculateHardWiredConfidence()
Definition: KB.cpp:329
void KBcheckHardWiredMatchForComponentState(std::string, int)
Definition: KB.cpp:245
std::string getProcedureNameOfHWDiagnosis(std::string)
Definition: KB.cpp:334
void KBcheckHardWiredMatchForSupportSystemState(std::string, int)
Definition: KB.cpp:250
void KBcheckHardWiredMatchForMentalBelief(std::string, int)
Definition: KB.cpp:230
void setObservedAlarmState(int)
Definition: MentalAlarm.cpp:32
int getObservedAlarmState()
Definition: MentalAlarm.cpp:33
void setTimeAtWhichThisInfoIsPerceived(double)
Definition: MentalInfo.cpp:26
void setObservedParameterValue(double)
void copyOperatorDMFromRestartInfoMultiProcessor(OperatorDM &)
void retrieveOperatorDMFromFile(std::ifstream &)
int infoChunking()
Definition: OperatorDM.cpp:904
bool performFollowProcedureStrategy()
Definition: OperatorDM.cpp:326
void identifyRelevantInformation()
Definition: OperatorDM.cpp:428
void saveOperatorDMToFile(std::ofstream &)
void clearOperatorDMFromRestartNodeInfoMultiProcessors()
void copyOperatorDMToRestartInfo(OperatorDM &)
void copyOperatorDMFromRestartInfo(OperatorDM &)
void oneThroughProcessForBlockD()
Definition: OperatorDM.cpp:29
void clearOperatorDMFinal()
void receiveNewInformation()
Definition: OperatorDM.cpp:897
void clearOperatorDMForRestart()
bool performRecoveryAction()
bool selectGoal()
Definition: OperatorDM.cpp:102
void clearOperatorDMFromRestartInfo()
virtual ~OperatorDM()
Definition: OperatorDM.cpp:26
bool selectStrategy()
Definition: OperatorDM.cpp:274
void scanControlPanel()
Definition: OperatorDM.cpp:760
void oneThroughProcessForBlockI()
Definition: OperatorDM.cpp:800
bool getSkipInstinctiveResponseStep()
Definition: Operator.cpp:594
void setSkipProcedureStep(bool)
Definition: Operator.cpp:591
int generateInfoGatherModeBranch()
Definition: Operator.cpp:917
void retrieveOperatorFromFile(std::ifstream &)
Definition: Operator.cpp:1020
std::unique_ptr< ReasonMachine > m_RM
Definition: Operator.h:55
void interruptLowPriorityMentalProcedures()
Definition: Operator.cpp:1421
bool getBlockTroubleshooting()
Definition: Operator.cpp:909
bool getSkipProcedureStep()
Definition: Operator.cpp:592
void setPauseActivity(bool)
Definition: Operator.cpp:577
void checkAndExecuteManeuverAction()
Definition: Operator.cpp:1315
void setTypeOfOperator(int)
Definition: Operator.cpp:58
void copyOperatorFromRestartInfo(Operator &)
Definition: Operator.cpp:647
void quantificationFilter()
Definition: Operator.cpp:421
double getSkipActionThreshold()
Definition: Operator.cpp:786
void clearOperatorFromRestartNodeInfoMultiProcessors()
Definition: Operator.cpp:771
void clearOperatorFinal()
Definition: Operator.cpp:759
void clearOperatorForRestart()
Definition: Operator.cpp:734
bool checkAndActivateHWKB()
Definition: Operator.cpp:795
TimeConstrainedModule time_constrained_load
Definition: Operator.h:132
void copyOperatorFromRestartInfoMultiProcessor(Operator &)
Definition: Operator.cpp:693
SPDS safety_parameters
Definition: Operator.h:131
double getTroubleshootingProbability()
Definition: Operator.cpp:792
double getProcedureUseProbability()
Definition: Operator.cpp:794
double getSkipNonResponseThreshold()
Definition: Operator.cpp:788
ShortTermMemory memory
Definition: Operator.h:126
void setBlockProcedureUse(bool)
Definition: Operator.cpp:910
bool performAMentalProcedure(int, std::string, std::string)
Definition: Operator.cpp:1233
bool getBlockProcedureUse()
Definition: Operator.cpp:911
void copyOperatorToRestartInfo(Operator &)
Definition: Operator.cpp:595
void checkAndResetProcedureStep(BranchProcedureStep *)
Definition: Operator.cpp:1336
bool performReasoningStrategy()
Definition: Operator.cpp:1308
void setAbnormalSignalPerceived(bool)
Definition: Operator.cpp:587
KB knowledge_base
Definition: Operator.h:127
void setPauseMentalProcedure(bool)
Definition: Operator.cpp:583
InformationLoadModule information_load
Definition: Operator.h:133
void clearOperatorFromRestartInfo()
Definition: Operator.cpp:746
HumanFailureEventsBBN hfe_bbn
Definition: Operator.h:136
bool getAbnormalSignalPerceived()
Definition: Operator.cpp:588
void setNewBranchGenerated(bool)
Definition: Operator.cpp:581
EventSymptomMatrix diagnosis_matrix
Definition: Operator.h:129
KBScannedParameters scanned_indicators
Definition: Operator.h:128
void biasFilter()
Definition: Operator.cpp:289
bool getPauseMentalProcedure()
Definition: Operator.cpp:586
bool getPauseActivity()
Definition: Operator.cpp:580
void setBlockTroubleshooting(bool)
Definition: Operator.cpp:908
void setSkipInstinctiveResponseStep(bool)
Definition: Operator.cpp:593
void saveOperatorToFile(std::ofstream &)
Definition: Operator.cpp:964
double getProbability()
Definition: Probability.cpp:27
bool oneThroughProcessForProcedureStep(Operator &, double, double, bool, ShortTermMemory &)
bool oneThroughProcessForInstinctiveResponseProcedure(Operator &, double, double, bool, ShortTermMemory &)
std::string getEntryProcedureName()
Definition: Procedures.cpp:168
std::map< std::string, ProcedureStep * > procedure_map
Definition: Procedures.h:72
std::string getEntryStepName()
Definition: Procedures.cpp:175
void updateAllSPDSValueAndRate(InfoChunk *)
Definition: SPDS.cpp:106
void addNewInfoChunkMentalForTheDiagnosis(DecisionDiagnosis *)
void calculatePriorityAndSetStateOfActivation()
void activatePausedInfoChunck()
void checkAndGenerateInfoChunkMentalForRelatedAlarm(MentalAlarm *, KB &)
void checkAndGenerateInfoChunkMentalForRelatedComponentState(MentalComponentState *, KB &)
CommunicationPlace new_info
void checkAndGenerateInfoChunkMentalForRelatedParameterValue(MentalParameterValue *, KB &)
InfoChunkMental * getWorkingMemory()
void checkAndGenerateInfoChunkMentalForRelatedSupportSystemState(MentalSupportSystemState *, KB &)
void setInfoGatherMode(int)
void failCurrentDiagnosisAndActivateAPausedDiagnosis()
InfoChunk perceived_info
void setStateOfActivation(int)
void operatorUpdateTimeConstrainedValuesWithGoal(InfoChunk *)
std::string determineLimitingTimeConstrainedParameter()
void setTimerAndProbability(double, double)
struct @0 r5pars_
constexpr int InfoGatherMode
Definition: SimConstants.h:264
constexpr int ProcedureXfr
Definition: SimConstants.h:262
constexpr int SupportSystemState
Definition: SimConstants.h:292
constexpr int ComponentState
Definition: SimConstants.h:285
constexpr int AlarmState
Definition: SimConstants.h:284
constexpr int ParameterValue
Definition: SimConstants.h:286
constexpr int ParameterScan
Definition: SimConstants.h:252
constexpr int Goal
Definition: SimConstants.h:190
constexpr int Strategy
Definition: SimConstants.h:192
constexpr int MonitorAbnormal
Definition: SimConstants.h:161
constexpr int NormalOp
Definition: SimConstants.h:158
constexpr int MaintainGlobalSafetyMargin
Definition: SimConstants.h:160
constexpr int TroubleShoot
Definition: SimConstants.h:159
constexpr int OCT
Definition: SimConstants.h:146
constexpr int OdmScan
Definition: SimConstants.h:153
constexpr int ODM
Definition: SimConstants.h:145
constexpr int Bypass
Definition: SimConstants.h:132
constexpr int Plant
Definition: SimConstants.h:135
constexpr int Failed
Definition: SimConstants.h:103
constexpr int OldInfo
Definition: SimConstants.h:126
constexpr int Succeed
Definition: SimConstants.h:104
constexpr int Done
Definition: SimConstants.h:123
constexpr int Active
Definition: SimConstants.h:118
constexpr int Skip
Definition: SimConstants.h:108
constexpr int Waiting
Definition: SimConstants.h:125
constexpr int Pause
Definition: SimConstants.h:119
constexpr int WaitMonitor
Definition: SimConstants.h:172
constexpr int InstinctiveResponse
Definition: SimConstants.h:175
constexpr int FollowProcedure
Definition: SimConstants.h:177
constexpr int FollowInstruction
Definition: SimConstants.h:180
constexpr int InductiveDeductive
Definition: SimConstants.h:176
constexpr int None
Definition: SimConstants.h:75
bool rm_cycle_enabled
–enable-rm-cycle: ReasonMachine snapshot/restore/serialize/tbi machinery (see docs/developer/internal...
Definition: SimConfig.h:46
Procedures All_procedure
Emergency operating procedures.
OperatorAT Action_Taker
Crew action execution model.
CommandControlCenter Command_handler
Command/control dispatch.
CommunicationPlace Communication_place
Inter-module communication.
AnalysisInfoContainer Aux_info
Analysis records.
BranchRecord Branch_center
Dynamic event tree state.
ConvertToString Translator
Parameter name/value conversion.