← Documentation
ADS-IDAC Engine 5.0.0
OperatorAT.cpp
Go to the documentation of this file.
1// OperatorAT.cpp: implementation of the OperatorAT class.
2//
4
5#include "OperatorAT.h"
6#include "OperatorDM.h"
7#include "../Procedure/Procedures.h"
8#include <boost/serialization/export.hpp>
9#include "../Global/SimulationContext.h"
10using namespace std;
11
12
14// Construction/Destruction
16
19}
20
22}
24 bool branch_generated;
25 bool block_VSIR = false;
26 bool block_decision_process = false;
27 bool mental_procedure_in_progress = false;
28 string ODM_IR_procedure_name, ODM_IR_step_name;
29 InfoChunkMental *_wm;
30 //
31 // block instinctive response procedure if Decision Maker is waiting for information
32 if (this->existOrderedActivity() || this->getPauseActivity() || this->getNewBranchGenerated()) {
33 block_VSIR = true;
34 }
35 //
36 if (!this->getPauseMentalProcedure() && !block_VSIR) {
39 bool isThere = this->memory.perceived_info.isThereMentalProcedureWaitingForExecution(ODM_IR_procedure_name,
40 ODM_IR_step_name);
41 if (isThere) {
42 mental_procedure_in_progress = true;
43 branch_generated = this->performAMentalProcedure(sim::Operator::OAT, ODM_IR_procedure_name, ODM_IR_step_name);
44 if (branch_generated) {
45 this->setPauseMentalProcedure(true);
46 return;
47 }
48 }
49 }
50 //
51 if (this->getPauseActivity() || this->getPauseMentalProcedure() || mental_procedure_in_progress) {
52 block_decision_process = true;
53 }
54 if ((this->getAbnormalSignalPerceived() || this->existOrderedActivity()) && !block_decision_process)
55 //
56 {
57 branch_generated = selectGoal();
58 if (branch_generated) {
59 this->setPauseActivity(true);
60 return;
61 }
62 branch_generated = selectStrategy();
63 if (branch_generated) {
64 this->setPauseActivity(true);
65 return;
66 }
67 //
68 _wm = this->memory.getWorkingMemory();
69 //
70 if (_wm->getCurrentStrategy() == sim::Strategy::FollowInstruction && this->existOrderedActivity()) {
71 branch_generated = performFollowInstructionStrategy();
72 if (branch_generated) {
73 this->setPauseActivity(true);
74 return;
75 }
76 }
77 }
78}
79
81 // action_taker goal is set to be consistent with decision_maker
83 BranchGoal *goal_pt;
84 int ODM_goal;
85 wm = this->memory.getWorkingMemory();
86 bool branch_generated = false;
87 int who = sim::Operator::OAT;
89 //
90 // set OAT goal equal to ODM goal
91 if (wm->getCurrentGoal() != ODM_goal) {
92 goal_pt = new BranchGoal();
93 goal_pt->setSenderAndReceiver(who, who);//(sender, receiver)
94 goal_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getGoalCommunicationFailureProbability());//(remaining time, probability)
95 goal_pt->setDecision(ODM_goal);
97 g_sim.Branch_center.addGoal(who, goal_pt);
98 branch_generated = true;
99 }
100 return branch_generated;
101}
102
104 InfoChunkMental *wm, *d_wm;
105 BranchStrategy *strategy_pt;
106 wm = this->memory.getWorkingMemory();
107 bool branch_generated = false;
108 int who = sim::Operator::OAT;
110 if ((d_wm->getCurrentStrategy() == sim::Strategy::FollowProcedure || this->existOrderedActivity()) && wm->getCurrentStrategy() != sim::Strategy::FollowInstruction) {
111 strategy_pt = new BranchStrategy();
112 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
113 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability()); //(remaining time, probability)
116 g_sim.Branch_center.addStrategy(who, strategy_pt);
117 branch_generated = true;
119 strategy_pt = new BranchStrategy();
120 strategy_pt->setSenderAndReceiver(who, who); //(sender, receiver)
121 strategy_pt->setTimerAndProbability(1.0, 1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability()); //(remaining time, probability)
124 g_sim.Branch_center.addStrategy(who, strategy_pt);
125 branch_generated = true;
126 } else {}
127 return branch_generated;
128}
130 int intended_receiver;
131 int sender;
132 //
133 for (auto &goal_elem : g_sim.Communication_place.goal) {
134 intended_receiver = goal_elem->getIntendedReceiver();
135 sender = goal_elem->getSender();
136 if (intended_receiver == sim::Operator::OAT) {
137 if (goal_elem->getStateOfActivation() != sim::Source::Bypass) {
138 memory.new_info.goal.push_back(goal_elem);
139 } else if (goal_elem->getDecision() == sim::Goal::TroubleShoot) { // bypass troubleshooting goal
140 this->setBlockTroubleshooting(true);
141 }
142 //
143 if (goal_elem->getTypeOfPauseActivity() == sim::Decision::Goal) {
144 this->setPauseActivity(false);
145 }
146 }
147 }
148 for (auto &strategy_elem : g_sim.Communication_place.strategy) {
149 intended_receiver = strategy_elem->getIntendedReceiver();
150 sender = strategy_elem->getSender();
151 if (intended_receiver == sim::Operator::OAT) {
152 if (strategy_elem->getStateOfActivation() != sim::Source::Bypass) {
153 memory.new_info.strategy.push_back(strategy_elem);
154 }
155 //
156 if (strategy_elem->getTypeOfPauseActivity() == sim::Decision::Strategy) {
157 this->setPauseActivity(false);
158 }
159
160 }
161 }
162 for (auto &subgoal_elem : g_sim.Communication_place.subgoal) {
163 intended_receiver = subgoal_elem->getIntendedReceiver();
164 sender = subgoal_elem->getSender();
165 if (intended_receiver == sim::Operator::OAT) {
166 if (subgoal_elem->getStateOfActivation() != sim::Source::Bypass) {
167 memory.new_info.subgoal.push_back(subgoal_elem);
168 }
169 if (subgoal_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
170 this->setPauseActivity(false);
171 } else if (subgoal_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
172 this->setPauseMentalProcedure(false);
173 }
174 }
175 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && subgoal_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
176 this->setPauseActivity(false);
177 }
178 }
179 for (auto &diagnosis_elem : g_sim.Communication_place.diagnosis) {
180 intended_receiver = diagnosis_elem->getIntendedReceiver();
181 sender = diagnosis_elem->getSender();
182 if (intended_receiver == sim::Operator::OAT) {
183 if (diagnosis_elem->getStateOfActivation() != sim::Source::Bypass) {
184 memory.new_info.diagnosis.push_back(diagnosis_elem);
185 }
186 if (diagnosis_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
187 this->setPauseActivity(false);
188 } else if (diagnosis_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
189 this->setPauseMentalProcedure(false);
190 }
191 }
192 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && diagnosis_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
193 this->setPauseActivity(false);
194 }
195 }
196 for (auto &action_objective_elem : g_sim.Communication_place.action_objective) {
197 intended_receiver = action_objective_elem->getIntendedReceiver();
198 sender = action_objective_elem->getSender();
199 if (intended_receiver == sim::Operator::OAT) {
200 if (action_objective_elem->getStateOfActivation() != sim::Source::Bypass) {
201 memory.new_info.action_objective.push_back(action_objective_elem);
202 }
203 if (action_objective_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
204 this->setPauseActivity(false);
205 } else if (action_objective_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
206 this->setPauseMentalProcedure(false);
207 }
208 }
209 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && action_objective_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
210 this->setPauseActivity(false);
211 }
212 }
213 for (auto &action_pack_elem : g_sim.Communication_place.action_pack) {
214 intended_receiver = action_pack_elem->getIntendedReceiver();
215 sender = action_pack_elem->getSender();
216 if (intended_receiver == sim::Operator::OAT) {
217 if (action_pack_elem->getStateOfActivation() != sim::Source::Bypass) {
218 memory.new_info.action_pack.push_back(action_pack_elem);
219 }
220 if (action_pack_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
221 this->setPauseActivity(false);
222 } else if (action_pack_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
223 this->setPauseMentalProcedure(false);
224 }
225 }
226 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && action_pack_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
227 this->setPauseActivity(false);
228 }
229 }
230 for (auto &action_elem : g_sim.Communication_place.action) {
231 intended_receiver = action_elem->getIntendedReceiver();
232 sender = action_elem->getSender();
233 if (intended_receiver == sim::Operator::OAT) {
234 if (action_elem->getStateOfActivation() != sim::Source::Bypass) {
235 memory.new_info.action.push_back(action_elem);
236 }
237 if (action_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure || action_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
238 || action_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
239 if (sender != sim::Operator::ODM) {
240 // action is ordered by ODM - do not reset pause activity flag
241 this->setPauseActivity(false);
242 }
243 if (action_elem->getStateOfActivation() == sim::State::Skip) {
244 this->setSkipProcedureStep(true);
245 }
246 } else if (action_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
247 this->setPauseMentalProcedure(false);
248 if (action_elem->getStateOfActivation() == sim::State::Skip) {
250 }
251 }
252 }
253 //
254 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && action_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
255 this->setPauseActivity(false);
256 }
257 }
258 for (auto &procedure_step_elem : g_sim.Communication_place.procedure_step) {
259 intended_receiver = procedure_step_elem->getIntendedReceiver();
260 sender = procedure_step_elem->getSender();
261 if (intended_receiver == sim::Operator::OAT) {
262 if (procedure_step_elem->getStateOfActivation() != sim::Source::Bypass) {
263 memory.new_info.procedure_step.push_back(procedure_step_elem);
264 if (procedure_step_elem->getStateOfActivation() != sim::State::Skip) {
265 this->checkAndResetProcedureStep(procedure_step_elem.get());
266 }
267 }
268 if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
269 if (sender != sim::Operator::ODM) {
270 // action is ordered by ODM - do not reset pause activity flag
271 this->setPauseActivity(false);
272 }
273 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
274 this->setSkipProcedureStep(true);
275 }
276 } else if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
277 this->setPauseMentalProcedure(false);
278 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
280 }
281 }
282 }
283 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
284 this->setPauseActivity(false);
285 }
286 }
287 for (auto &procedure_step_elem : g_sim.Communication_place.instinctive_response_procedure) {
288 intended_receiver = procedure_step_elem->getIntendedReceiver();
289 sender = procedure_step_elem->getSender();
290 if (intended_receiver == sim::Operator::OAT) {
291 if (procedure_step_elem->getStateOfActivation() != sim::Source::Bypass) {
292 memory.new_info.instinctive_response_procedure.push_back(procedure_step_elem);
293 if (procedure_step_elem->getStateOfActivation() != sim::State::Skip) {
294 this->checkAndResetProcedureStep(procedure_step_elem.get());
295 }
296 }
297 if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
298 this->setPauseActivity(false);
299 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
300 this->setSkipProcedureStep(true);
301 }
302
303 } else if (procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
304 this->setPauseMentalProcedure(false);
305 if (procedure_step_elem->getStateOfActivation() == sim::State::Skip) {
307 }
308 }
309 }
310 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && procedure_step_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
311 this->setPauseActivity(false);
312 }
313 }
314 for (auto &info_gather_mode_elem : g_sim.Communication_place.info_gather_mode) {
315 intended_receiver = info_gather_mode_elem->getIntendedReceiver();
316 sender = info_gather_mode_elem->getSender();
317 if (intended_receiver == sim::Operator::OAT) {
318 this->memory.setInfoGatherMode(info_gather_mode_elem->getInfoGatherMode());
319 if (info_gather_mode_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
320 || info_gather_mode_elem->getTypeOfPauseActivity() == sim::Branch::InfoGatherMode) {
321 this->setPauseActivity(false);
322 } else if (info_gather_mode_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
323 this->setPauseMentalProcedure(false);
324 }
325 }
326 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && info_gather_mode_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
327 this->setPauseActivity(false);
328 }
329 }
330 for (auto &mental_belief_elem : g_sim.Communication_place.mental_belief) {
331 int state_of_activation;
332 intended_receiver = mental_belief_elem->getIntendedReceiver();
333 sender = mental_belief_elem->getSender();
334 if (mental_belief_elem->getIntendedReceiver() == sim::Operator::OAT) {
335 state_of_activation = mental_belief_elem->getStateOfActivation();
336 if (state_of_activation != sim::State::OldInfo && state_of_activation != sim::Source::Bypass) {
337 this->memory.new_info.mental_belief.push_back(mental_belief_elem);
338 }
339 if (mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
340 || mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive) {
341 this->setPauseActivity(false);
342 } else if (mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
343 this->setPauseMentalProcedure(false);
344 }
345 }
346 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && mental_belief_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
347 this->setPauseActivity(false);
348 }
349 }
350
351 for (auto &scanned_parameter_elem : g_sim.Communication_place.scanned_parameter) {
352 int state_of_activation;
353 intended_receiver = scanned_parameter_elem->getIntendedReceiver();
354 sender = scanned_parameter_elem->getSender();
355 if (scanned_parameter_elem->getIntendedReceiver() == sim::Operator::OAT) {
356 state_of_activation = scanned_parameter_elem->getStateOfActivation();
357 if (state_of_activation != sim::State::OldInfo && state_of_activation != sim::Source::Bypass) {
358 this->memory.new_info.scanned_parameter.push_back(scanned_parameter_elem);
359 }
360 if (scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
361 || scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction
362 || scanned_parameter_elem->getTypeOfPauseActivity() == sim::ControlAction::ParameterScan) {
363 this->setPauseActivity(false);
364 if (scanned_parameter_elem->getStateOfActivation() == sim::State::Skip) {
365 this->setSkipProcedureStep(true);
366 }
367 } else if (scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
368 this->setPauseMentalProcedure(false);
369 if (scanned_parameter_elem->getStateOfActivation() == sim::State::Skip) {
371 }
372 }
373 }
374 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && scanned_parameter_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure) {
375 this->setPauseActivity(false);
376 }
377 }
378
379 for (auto &alarm_state_elem : g_sim.Communication_place.alarm_state) {
380 intended_receiver = alarm_state_elem->getIntendedReceiver();
381 sender = alarm_state_elem->getSender();
382 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
383 if (alarm_state_elem->getStateOfActivation() != sim::Source::Bypass
384 && alarm_state_elem->getStateOfActivation() != sim::State::OldInfo) {
385 memory.new_info.alarm_state.push_back(alarm_state_elem);
386 }
387 if (intended_receiver == sim::Operator::OAT) {
388 if (alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
389 || alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
390 || alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
391 if (sender != sim::Operator::ODM) {
392 // action is ordered by ODM - do not reset pause activity flag
393 this->setPauseActivity(false);
394 }
395 } else if (alarm_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
396 this->setPauseMentalProcedure(false);
397 }
398 }
399 }
400 //
401 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && alarm_state_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
402 this->setPauseActivity(false);
403 }
404 }
405 for (auto &component_state_elem : g_sim.Communication_place.component_state) {
406 intended_receiver = component_state_elem->getIntendedReceiver();
407 sender = component_state_elem->getSender();
408 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
409 if (component_state_elem->getStateOfActivation() != sim::Source::Bypass
410 && component_state_elem->getStateOfActivation() != sim::State::OldInfo) {
411 memory.new_info.component_state.push_back(component_state_elem);
412 }
413 if (intended_receiver == sim::Operator::OAT) {
414 if (component_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
415 || component_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
416 || component_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
417 if (sender != sim::Operator::ODM) {
418 // action is ordered by ODM - do not reset pause activity flag
419 this->setPauseActivity(false);
420 }
421 } else if (component_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
422 this->setPauseMentalProcedure(false);
423 }
424 }
425 }
426 //
427 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && component_state_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
428 this->setPauseActivity(false);
429 }
430 }
431 for (auto &support_system_state_elem : g_sim.Communication_place.support_system_state) {
432 intended_receiver = support_system_state_elem->getIntendedReceiver();
433 sender = support_system_state_elem->getSender();
434 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
435 if (support_system_state_elem->getStateOfActivation() != sim::Source::Bypass
436 && support_system_state_elem->getStateOfActivation() != sim::State::OldInfo) {
437 memory.new_info.support_system_state.push_back(support_system_state_elem);
438 }
439 if (intended_receiver == sim::Operator::OAT) {
440 if (support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
441 || support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
442 || support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
443 if (sender != sim::Operator::ODM) {
444 // action is ordered by ODM - do not reset pause activity flag
445 this->setPauseActivity(false);
446 }
447 } else if (support_system_state_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
448 this->setPauseMentalProcedure(false);
449 }
450 }
451 }
452 //
453 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && support_system_state_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
454 this->setPauseActivity(false);
455 }
456 }
457 for (auto &parameter_trend_elem : g_sim.Communication_place.parameter_trend) {
458 intended_receiver = parameter_trend_elem->getIntendedReceiver();
459 sender = parameter_trend_elem->getSender();
460 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
461 if (parameter_trend_elem->getStateOfActivation() != sim::Source::Bypass
462 && parameter_trend_elem->getStateOfActivation() != sim::State::OldInfo) {
463 memory.new_info.parameter_trend.push_back(parameter_trend_elem);
464 }
465 if (intended_receiver == sim::Operator::OAT) {
466 if (parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
467 || parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
468 || parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
469 if (sender != sim::Operator::ODM) {
470 // action is ordered by ODM - do not reset pause activity flag
471 this->setPauseActivity(false);
472 }
473 } else if (parameter_trend_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
474 this->setPauseMentalProcedure(false);
475 }
476 }
477 }
478 //
479 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && parameter_trend_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
480 this->setPauseActivity(false);
481 }
482 }
483 for (auto &parameter_value_elem : g_sim.Communication_place.parameter_value) {
484 intended_receiver = parameter_value_elem->getIntendedReceiver();
485 sender = parameter_value_elem->getSender();
486 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
487 if (parameter_value_elem->getStateOfActivation() != sim::Source::Bypass
488 && parameter_value_elem->getStateOfActivation() != sim::State::OldInfo) {
489 memory.new_info.parameter_value.push_back(parameter_value_elem);
490 }
491 if (intended_receiver == sim::Operator::OAT) {
492 if (parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
493 || parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
494 || parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
495 if (sender != sim::Operator::ODM) {
496 // action is ordered by ODM - do not reset pause activity flag
497 this->setPauseActivity(false);
498 }
499 } else if (parameter_value_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
500 this->setPauseMentalProcedure(false);
501 }
502
503 }
504 }
505 //
506 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && parameter_value_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
507 this->setPauseActivity(false);
508 }
509 }
510 for (auto &parameter_difference_elem : g_sim.Communication_place.parameter_difference) {
511 intended_receiver = parameter_difference_elem->getIntendedReceiver();
512 sender = parameter_difference_elem->getSender();
513 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::Operator::OatScan) {
514 if (parameter_difference_elem->getStateOfActivation() != sim::Source::Bypass
515 && parameter_difference_elem->getStateOfActivation() != sim::State::OldInfo) {
516 memory.new_info.parameter_difference.push_back(parameter_difference_elem);
517 }
518 if (intended_receiver == sim::Operator::OAT) {
519 if (parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::FollowProcedure
520 || parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::InductiveDeductive
521 || parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::FollowInstruction) {
522 if (sender != sim::Operator::ODM) {
523 // action is ordered by ODM - do not reset pause activity flag
524 this->setPauseActivity(false);
525 }
526 } else if (parameter_difference_elem->getTypeOfPauseActivity() == sim::Strategy::InstinctiveResponse) {
527 this->setPauseMentalProcedure(false);
528 }
529
530 }
531 }
532 //
533 if (sender == sim::Operator::OAT && intended_receiver == sim::Operator::ODM && parameter_difference_elem->getTypeOfPauseActivity() != sim::Strategy::InstinctiveResponse) {
534 this->setPauseActivity(false);
535 }
536 }
537 for (auto &new_alarm_elem : g_sim.Communication_place.new_alarm) {
538 intended_receiver = new_alarm_elem->getIntendedReceiver();
539 sender = new_alarm_elem->getSender();
540 if (intended_receiver == sim::Operator::OAT || intended_receiver == sim::None) {
541 memory.new_info.new_alarm.push_back(new_alarm_elem);
542 }
543
544 }
545
546}
548//
549// perform control panel instrument scan every scan_periodicity
550// panel scan is currently set up to handle only parameter values and trends
551 //
553 this->quantificationFilter();
555 for (auto& elem : this->scanned_indicators.parameter_scan_list) {
556 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
557 elem->setTimeOfCommunication(r5pars_.timesno);
558 elem->setIntendedReceiver(sim::Source::Plant);
559 elem->setSender(sim::Operator::OatScan);
561 }
562 for (auto& elem : this->scanned_indicators.component_scan_list) {
563 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
564 elem->setTimeOfCommunication(r5pars_.timesno);
565 elem->setIntendedReceiver(sim::Source::Plant);
566 elem->setSender(sim::Operator::OatScan);
568 }
569 for (auto& elem : this->scanned_indicators.support_system_scan_list) {
570 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
571 elem->setTimeOfCommunication(r5pars_.timesno);
572 elem->setIntendedReceiver(sim::Source::Plant);
573 elem->setSender(sim::Operator::OatScan);
575 }
576 for (auto& elem : this->scanned_indicators.alarm_scan_list) {
577 elem->setTimeAtWhichThisInfoIsPerceived(r5pars_.timesno);
578 elem->setTimeOfCommunication(r5pars_.timesno);
579 elem->setIntendedReceiver(sim::Source::Plant);
580 elem->setSender(sim::Operator::OatScan);
581 g_sim.Communication_place.alarm_state.push_back(elem);
582 }
583 g_sim.Aux_info.addScanQueueData(r5pars_.timesno, this->getTypeOfOperator(), this->scanned_indicators);
584 }
585}
586
588 int num_branch, goal;
589 int total_new_items;
590 bool branch_generated;
591 bool reactor_tripped = false;
592 BranchScannedParameter *b_scan_pt;
593 string limiting_tcl_parameter;
594 ExpectedMentalBelief *emb_pt;
595 this->setNewBranchGenerated(false);
596 this->receiveNewInformation();
597 //
598 goal = this->memory.getCurrentGoal();
600 //
601 total_new_items = this->infoChunking();
602 //
603 // calculate information load
604 this->information_load.addInformationLoadData(r5pars_.timesno, total_new_items);
606 //
608 //
609 if (this->getPauseMentalProcedure() == false && this->getPauseActivity() == false
610 && this->existOrderedActivity() == false) {
611 branch_generated = this->checkAndActivateHWKB();
612 if (branch_generated) this->setPauseMentalProcedure(true);
614 }
615 //
618 //
621 // if tcl is high, verify that main driver for time constrained load is in the scan queue
622 if (!this->getPauseActivity() && !this->getPauseMentalProcedure() && !this->existOrderedActivity()) {
623 // generate branch to add limiting time constrained load to scan queue
625 if (!this->scanned_indicators.checkIfParameterInQueue(limiting_tcl_parameter)) {
626 // add parameter to scan queue
627 b_scan_pt = new BranchScannedParameter();
628 b_scan_pt->setInfoName(limiting_tcl_parameter);
630 b_scan_pt->setScanPriority(1);
635 this->setPauseActivity(true);
636 }
637 }
638 }
639 //
640 //set abnormal signal perceived flag based on abnormal event confidence
641 if (!this->getPauseMentalProcedure() && !this->getAbnormalSignalPerceived()) {
642 emb_pt = this->memory.perceived_info.checkExistanceOfMentalBelief("Reactor_Tripped");
643 if (emb_pt != 0) {
644 if (emb_pt->getStateOfActivation() == sim::State::Succeed) {
645 reactor_tripped = true;
646 }
647 }
648 if ((this->diagnosis_matrix.getAbnormalConfidence() > this->getAbnormalSignalThreshold()) || reactor_tripped) {
649 this->setAbnormalSignalPerceived(true);
650 //
651 // set all currently active low priority instinctive response procedures to sim::State::Interrupted
653 }
654 }
655 //
656 //
657 if (this->getAbnormalSignalPerceived() && !this->getPauseMentalProcedure() && !this->getPauseActivity()) {
658 num_branch = generateInfoGatherModeBranch();
659 if (num_branch > 0) { this->setNewBranchGenerated(true); }
660 }
661}
662
664 //info identification and screening
665 this->memory.clearNewInfo();
667 Operator::biasFilter(); // NEED MORE WORK
668 //Operator::quantificationFilter(); // NEED MORE WORK
669//info relating and grouping
670}
671
673 int n_return;
674 n_return = ordered_action.size() +
675 ordered_alarm_state.size() +
681 return n_return;
682}
684/*
685A. register perceived information
686 Go piece by piece of perceived new information (relevant_new_info) to
687 1. Add the piece of new information to perceived informatin list (perceived_info)
688 2. Check whether new InfoChunkMental should be added to the ShhortTermMemory based on teh sub-system; add InfoChunkMental if needed
689 3. Add pointer in InfoChunkMental to the information in the piece of info in the perceived_info.
690B. Update confidence level of KB::Hardwired diagnosis
691*/
692// vector<BranchExpectedParameterTrend *>::iterator parameter_trend_elem;
693//
694 BranchAction *b_action_pt;
695 BranchExpectedAlarmState *b_alarm_state_pt;
696 BranchExpectedComponentState *b_component_state_pt;
697 BranchExpectedSupportSystemState *b_support_system_state_pt;
698 BranchExpectedParameterValue *b_parameter_value_pt;
699 BranchExpectedParameterDifference *b_parameter_difference_pt;
700//
701 DecisionProcedureStep *procedure_step_pt;
702 DecisionAction *action_pt1;
703 MentalAlarm *perceived_alarms_pt1;
704 MentalComponentState *perceived_component_state_pt1;
705 MentalSupportSystemState *perceived_support_system_state_pt1;
706 MentalParameterValue *perceived_parameter_value_pt1;
707 ExpectedMentalBelief *mental_belief_pt1;
708 map<string, ProcedureStep *>::iterator procedure_map_itr;
709 ProcedureStep *pps_pt = 0;
710 //
712 int sender, intended_received;
713 int total_chunked_items = 0;
714 string _procedure_name, _step_name, mental_belief_name;
715 bool found_info;
716//
717 for (auto &goal_elem : memory.new_info.goal) {
718 auto goal_sp = make_shared<DecisionGoal>();
719 goal_sp->copyDecisionGoal(*goal_elem);
720 goal_sp->setStateOfActivation(sim::State::Active);
721 memory.perceived_info.goal.push_back(goal_sp);
722 wm->pointToTheNewGoal(goal_sp.get());
723 total_chunked_items += 1;
724 }
725 for (auto &strategy_elem : memory.new_info.strategy) {
726 auto strategy_sp = make_shared<DecisionStrategy>();
727 strategy_sp->copyDecisionStrategy(*strategy_elem);
728 strategy_sp->setStateOfActivation(sim::State::Active);
729 memory.perceived_info.strategy.push_back(strategy_sp);
730 wm->pointToTheNewStrategy(strategy_sp.get());
731 total_chunked_items += 1;
732 }
733 for (auto &subgoal_elem : memory.new_info.subgoal) {
734 auto subgoal_sp = make_shared<DecisionSubGoal>();
735 subgoal_sp->copyDecisionSubGoal(*subgoal_elem);
736 subgoal_sp->setStateOfActivation(sim::State::Active);
737 memory.perceived_info.subgoal.push_back(subgoal_sp);
738 wm->pointToTheNewSubGoal(subgoal_sp.get());
739 total_chunked_items += 1;
740 }
741 for (auto &diagnosis_elem : memory.new_info.diagnosis) {
742 auto diagnosis_sp = make_shared<DecisionDiagnosis>();
743 diagnosis_sp->copyDecisionDiagnosis(*diagnosis_elem);
744 diagnosis_sp->setStateOfActivation(sim::State::Active);
745 memory.perceived_info.diagnosis.push_back(diagnosis_sp);
747 this->knowledge_base.KBcheckHardWiredMatchForMentalBelief(diagnosis_elem->getDiagnosis(), sim::State::Succeed);
748 total_chunked_items += 1;
749 }
750 for (auto &action_objective_elem : memory.new_info.action_objective) {
751 auto action_objective_sp = make_shared<DecisionActionObjective>();
752 action_objective_sp->copyDecisionActionObjective((DecisionActionObjective &) (*action_objective_elem));
753 action_objective_sp->setStateOfActivation(sim::State::Active);
754 memory.perceived_info.action_objective.push_back(action_objective_sp);
755 wm->pointToTheNewActionObjective(action_objective_sp.get());
756 total_chunked_items += 1;
757 }
758 for (auto &action_pack_elem : memory.new_info.action_pack) {
759 auto action_pack_sp = make_shared<DecisionActionPack>();
760 action_pack_sp->copyDecisionActionPack(*action_pack_elem);
761 action_pack_sp->setStateOfActivation(sim::State::Active);
762 memory.perceived_info.action_pack.push_back(action_pack_sp);
763 wm->pointToTheNewActionPack(action_pack_sp.get());
764 total_chunked_items += 1;
765 }
766
767 for (auto &action_elem : memory.new_info.action) {
768 sender = action_elem->getSender();
769 total_chunked_items += 1;
770 if (sender == sim::Operator::ODM) {
771 //for the response which to follow
772 {
773 auto p = make_unique<BranchAction>();
774 p->copyBranchAction(*action_elem);
775 p->setSender(sim::Operator::OAT);
776 p->setIntendedReceiver(sim::Source::Plant);
777 this->ordered_action.push_back(std::move(p));
778 }
779 } else if (sender == sim::Source::Plant) {
780 found_info = this->checkExistanceOfOrderedAction(action_elem->getActionName());
781 action_pt1 = this->memory.perceived_info.checkExistanceOfAction(action_elem->getActionName());
782 if (action_pt1 == 0) {//info has not been perceived before
783 auto action_sp = make_shared<DecisionAction>();
784 action_sp->copyDecisionAction(*action_elem);
785 action_sp->setStateOfActivation(sim::State::Succeed);
786 memory.perceived_info.action.push_back(action_sp);
787 wm->pointToTheNewAction(action_sp.get());
788 this->knowledge_base.KBcheckHardWiredMatchForControl(action_sp->getActionName(), action_sp->getControlValue());
789 } else {
790 action_pt1->copyDecisionAction(*action_elem);
792 wm->pointToTheNewAction(action_pt1);
794 action_pt1->getControlValue());
795 }
796 if (found_info) {//Action is requested by the Decision Maker
797 b_action_pt = new BranchAction();
798 b_action_pt->copyBranchAction(*action_elem);
800 b_action_pt->setSender(sim::Operator::OAT);
803 this->setPauseActivity(true);
804 this->removeOrderedActionMemoryAndPointer(action_elem->getActionName());
805 }
806 } else {//do nothing
807 }
808 }
809
810 for (auto &scanned_parameter_elem : memory.new_info.scanned_parameter) {
811 string name;
812 int scan_priority;
813 if (scanned_parameter_elem->getStateOfActivation() != sim::State::Skip) {
814 name = scanned_parameter_elem->getInfoName();
815 scan_priority = scanned_parameter_elem->getScanPriority();
816 switch (scanned_parameter_elem->getTypeOfScannedParameter()) {
817
819 break;
820
822 break;
823
825 break;
826
827 case sim::Comm::AlarmState: this->scanned_indicators.addScannedAlarm(name, scan_priority);
828 break;
829
830 default:
831 // not a valid scan parameter
832
833 break;
834 }
835 }
836 total_chunked_items += 1;
837
838 }
839
840 for (auto &procedure_step_elem : memory.new_info.procedure_step) {
841 auto procedure_step_sp = make_shared<DecisionProcedureStep>();
842 procedure_step_sp->copyDecisionProcedureStep(*procedure_step_elem);
843 procedure_step_sp->setStateOfActivation(sim::State::Active);
844 memory.perceived_info.procedure_step.push_back(procedure_step_sp);
845 if (procedure_step_sp->getProcedureName() != procedure_step_sp->getLastProcedureName()) {
846 this->knowledge_base.KBcheckHardWiredMatchForProcedureActivity(procedure_step_sp->getProcedureName(),
847 procedure_step_sp->getStateOfActivation());
848 this->knowledge_base.KBcheckHardWiredMatchForProcedureActivity(procedure_step_sp->getLastProcedureName(), sim::State::Done);
849 }
850 wm->pointToTheNewProcedureStep(procedure_step_sp.get());
851 total_chunked_items += 1;
852 }
853 for (auto &procedure_step_elem : memory.new_info.instinctive_response_procedure) {
854 _procedure_name = procedure_step_elem->getProcedureName();
855 _step_name = procedure_step_elem->getStepName();
856 procedure_step_pt =
858 if (procedure_step_pt == 0) {
859 auto irp_sp = make_shared<DecisionProcedureStep>();
860 irp_sp->copyDecisionProcedureStep(*procedure_step_elem);
861 irp_sp->setStateOfActivation(sim::State::Active);
863 procedure_step_pt = irp_sp.get();
864 } else {
865 procedure_step_pt->setStateOfActivation(sim::State::Active);
866 }
867 if (procedure_step_pt->getProcedureName() != procedure_step_pt->getLastProcedureName()) {
869 procedure_step_pt->getStateOfActivation());
871 }
873 //update the mark of activation state of the procedue step
874 _procedure_name += _step_name;
875 procedure_map_itr = g_sim.All_procedure.procedure_map.find(_procedure_name);
876 if (procedure_map_itr != g_sim.All_procedure.procedure_map.end()) {
877 pps_pt = procedure_map_itr->second;
879 } else {
880 procedure_step_pt->setStateOfActivation(sim::State::Failed);
883 cout << "Warning OperatorAT::infoChunking: mental procedure_step " << _procedure_name
884 << " is not within the Procedures.txt" << endl;
885 ofstream fout("err messages.txt", ios::app);
886 fout << r5pars_.timesno << " Warning OperatorAT::infoChunking: mental procedure_step " << _procedure_name
887 << " is not witin the Procedures.txt\n";
888 fout.close();
889 }
890 total_chunked_items += 1;
891 }
892 for (auto &alarm_state_elem : memory.new_info.alarm_state) {
893 sender = alarm_state_elem->getSender();
894 total_chunked_items += 1;
895 if (sender == sim::Operator::ODM) {//order from ODM is received; need to check plant state and reply back to ODM
896 //for the response which to follow
897 {
898 auto p = make_unique<BranchExpectedAlarmState>();
899 p->copyBranchExpectedAlarmState(*alarm_state_elem);
900 p->setBothTotalTimeRequiredAndRemainingTime(1.0);
901 p->setSender(sim::Operator::OAT);
902 p->setIntendedReceiver(sim::Source::Plant);
903 this->ordered_alarm_state.push_back(std::move(p));
904 }
905 } else if (sender == sim::Source::Plant) {
906 found_info = this->checkExistanceOfOrderedAlarmState(alarm_state_elem->getAlarmName());
907 perceived_alarms_pt1 =
908 this->memory.perceived_info.checkExistanceOfPerceivedAlarms(alarm_state_elem->getAlarmName());
909 if (perceived_alarms_pt1 == 0) {//Info has not been perceived before
910 //memorize the info
911 auto alarm_sp = make_shared<MentalAlarm>();
912 alarm_sp->copyMentalAlarm(*alarm_state_elem);
913 memory.perceived_info.perceived_alarms.push_back(alarm_sp);
914 memory.checkAndGenerateInfoChunkMentalForRelatedAlarm(alarm_sp.get(), this->knowledge_base);
915 this->knowledge_base.KBcheckHardWiredMatchForAlarmState(alarm_sp->getAlarmName(),
916 alarm_sp->getObservedAlarmState());//KB Hardwired Update
917 } else {
918 perceived_alarms_pt1->copyMentalAlarm(*alarm_state_elem);
920 perceived_alarms_pt1->getObservedAlarmState());//KB Hardwired Update
921 }
922 if (found_info
923 && alarm_state_elem->getIntendedReceiver() != sim::Operator::OatScan) {//alarm is requested by the Decision Maker
924 //reply to ODM
925 b_alarm_state_pt = new BranchExpectedAlarmState();
926 b_alarm_state_pt->copyBranchExpectedAlarmState(*alarm_state_elem);
927 b_alarm_state_pt->setTimerAndProbability(0.0, 1.0 - this->hfe_bbn.getPerceiveStateInfoFailureProbability());
928 b_alarm_state_pt->setSender(sim::Operator::OAT);
929 b_alarm_state_pt->setIntendedReceiver(sim::Operator::ODM);
931 this->setPauseActivity(true);
932 this->removeOrderedAlarmStateMemoryAndPointer(alarm_state_elem->getAlarmName());
933 }
934 } else {//do nothing
935 }
936 }
937 for (auto &mental_belief_elem : memory.new_info.mental_belief) {
938 // need to revise to check if mental belief had been previously noted...
939 mental_belief_name = mental_belief_elem->getInfoName();
940 mental_belief_pt1 = this->memory.perceived_info.checkExistanceOfMentalBelief(mental_belief_name);
941 if (mental_belief_pt1 == 0) { // belief has not been perceived
942 // memorize the mental belief
943 auto belief_sp = make_shared<ExpectedMentalBelief>();
944 belief_sp->copyExpectedMentalBelief(*mental_belief_elem);
945 memory.perceived_info.mental_belief.push_back(belief_sp);
946 } else {
947 mental_belief_pt1->copyExpectedMentalBelief(*mental_belief_elem);
948 }
949 _procedure_name = this->knowledge_base.getProcedureNameOfHWDiagnosis(mental_belief_elem->getInfoName());
950 _step_name = this->knowledge_base.getStepNameOfHWDiagnosis(mental_belief_elem->getInfoName());
951 if (_procedure_name != "NONE" && _procedure_name != "None") {
953 _step_name,
954 mental_belief_elem->getMentalPriority(),
956 mental_belief_elem->getActivationTime());
957 }
958 this->knowledge_base.KBcheckHardWiredMatchForMentalBelief(mental_belief_elem->getInfoName(),
959 mental_belief_elem->getStateOfActivation());
960 total_chunked_items += 1;
961 }
962 for (auto &new_alarm_elem : memory.new_info.new_alarm) {
963 perceived_alarms_pt1 =
964 this->memory.perceived_info.checkExistanceOfPerceivedAlarms(new_alarm_elem->getAlarmName());
965 if (perceived_alarms_pt1 == 0) {
966 auto new_alarm_sp = make_shared<MentalAlarm>();
967 new_alarm_sp->copyAlarmElement(*new_alarm_elem);
968 new_alarm_sp->setObservedAlarmState(new_alarm_elem->getDisplayedAlarmState());
969 memory.perceived_info.perceived_alarms.push_back(new_alarm_sp);
970 memory.checkAndGenerateInfoChunkMentalForRelatedAlarm(new_alarm_sp.get(), this->knowledge_base);
971 this->knowledge_base.KBcheckHardWiredMatchForAlarmState(new_alarm_sp->getAlarmName(),
972 new_alarm_sp->getObservedAlarmState());//KB Hardwired Update
973 } else {
974 perceived_alarms_pt1->setObservedAlarmState(new_alarm_elem->getDisplayedAlarmState());
975 perceived_alarms_pt1->setTimeAtWhichThisInfoIsPerceived(new_alarm_elem->getTimeAtWhichThisAlarmIsActivated());
976 perceived_alarms_pt1->setTimeAtWhichThisAlarmIsActivated(new_alarm_elem->getTimeAtWhichThisAlarmIsActivated());
978 perceived_alarms_pt1->getObservedAlarmState());
979 }
980 total_chunked_items += 1;
981 }
982 for (auto &component_state_elem : memory.new_info.component_state) {
983 sender = component_state_elem->getSender();
984 total_chunked_items += 1;
985 if (sender == sim::Operator::ODM) {//order from ODM is received; need to check plant state and reply back to ODM
986 //response to Decision Maker's request
987 {
988 auto p = make_unique<BranchExpectedComponentState>();
989 p->copyBranchExpectedComponentState(*component_state_elem);
990 p->setBothTotalTimeRequiredAndRemainingTime(1.0);
991 p->setSender(sim::Operator::OAT);
992 p->setIntendedReceiver(sim::Source::Plant);
993 this->ordered_component_state.push_back(std::move(p));
994 }
995 } else if (sender == sim::Source::Plant) {
996 found_info = this->checkExistenceOfOrderedComponentState(component_state_elem->getDisplayName());
997 perceived_component_state_pt1 =
998 memory.perceived_info.checkExistanceOfPerceivedComponentState(component_state_elem->getDisplayName());
999 if (perceived_component_state_pt1 == 0) {//info has not been perceived before
1000 //memorize the info
1001 auto comp_sp = make_shared<MentalComponentState>();
1002 comp_sp->copyMentalComponentState(*component_state_elem);
1005 this->knowledge_base);
1006 this->knowledge_base.KBcheckHardWiredMatchForComponentState(comp_sp->getDisplayName(),
1007 comp_sp->getObservedComponentState());//KB Hardwired Update
1008 } else {
1009 perceived_component_state_pt1->copyMentalComponentState(*component_state_elem);
1010 this->knowledge_base.KBcheckHardWiredMatchForComponentState(perceived_component_state_pt1->getDisplayName(),
1011 perceived_component_state_pt1->getObservedComponentState());//KB Hardwired Update
1012 }
1013 if (found_info && component_state_elem->getIntendedReceiver() != sim::Operator::OatScan) {//info asked by Decision Maker
1014 //reply to ODM
1015 b_component_state_pt = new BranchExpectedComponentState();
1016 b_component_state_pt->copyBranchExpectedComponentState(*component_state_elem);
1017 b_component_state_pt->setTimerAndProbability(0.0, 1.0 - this->hfe_bbn.getPerceiveStateInfoFailureProbability());
1018 b_component_state_pt->setSender(sim::Operator::OAT);
1019 b_component_state_pt->setIntendedReceiver(sim::Operator::ODM);
1021 this->setPauseActivity(true);
1022 this->removeOrderedComponentStateMemoryAndPointer(component_state_elem->getDisplayName());
1023 }
1024 } else {//do nothing
1025 }
1026 }
1027 for (auto &support_system_state_elem : memory.new_info.support_system_state) {
1028 sender = support_system_state_elem->getSender();
1029 total_chunked_items += 1;
1030 if (sender == sim::Operator::ODM) {//order from ODM is received; need to check support system state and reply back to ODM
1031 //response to Decision Maker's request
1032 {
1033 auto p = make_unique<BranchExpectedSupportSystemState>();
1034 p->copyBranchExpectedSupportSystemState(*support_system_state_elem);
1035 p->setBothTotalTimeRequiredAndRemainingTime(1.0);
1036 p->setSender(sim::Operator::OAT);
1037 p->setIntendedReceiver(sim::Source::Plant);
1038 this->ordered_support_system_state.push_back(std::move(p));
1039 }
1040 } else if (sender == sim::Source::Plant) {
1041 found_info = this->checkExistenceOfOrderedSupportSystemState(support_system_state_elem->getDisplayName());
1042 perceived_support_system_state_pt1 =
1043 memory.perceived_info.checkExistanceOfPerceivedSupportSystemState(support_system_state_elem->getDisplayName());
1044 if (perceived_support_system_state_pt1 == 0) {//info has not been perceived before
1045 //memorize the info
1046 auto ss_sp = make_shared<MentalSupportSystemState>();
1047 ss_sp->copyMentalSupportSystemState(*support_system_state_elem);
1050 this->knowledge_base);
1051 this->knowledge_base.KBcheckHardWiredMatchForSupportSystemState(ss_sp->getDisplayName(),
1052 ss_sp->getObservedSupportSystemState());//KB Hardwired Update
1053 } else {
1054 perceived_support_system_state_pt1->copyMentalSupportSystemState(*support_system_state_elem);
1055 this->knowledge_base.KBcheckHardWiredMatchForSupportSystemState(perceived_support_system_state_pt1->getDisplayName(),
1056 perceived_support_system_state_pt1->getObservedSupportSystemState());//KB Hardwired Update
1057 }
1058 if (found_info && support_system_state_elem->getIntendedReceiver() != sim::Operator::OatScan) {//info asked by Decision Maker
1059 //reply to ODM
1060 b_support_system_state_pt = new BranchExpectedSupportSystemState();
1061 b_support_system_state_pt->copyBranchExpectedSupportSystemState(*support_system_state_elem);
1062 b_support_system_state_pt->setTimerAndProbability(0.0, 1.0 - this->hfe_bbn.getPerceiveStateInfoFailureProbability());
1063 b_support_system_state_pt->setSender(sim::Operator::OAT);
1064 b_support_system_state_pt->setIntendedReceiver(sim::Operator::ODM);
1065 g_sim.Branch_center.addSupportSystemState(sim::Operator::OAT, b_support_system_state_pt);
1066 this->setPauseActivity(true);
1067 this->removeOrderedSupportSystemStateMemoryAndPointer(support_system_state_elem->getDisplayName());
1068 }
1069 } else {//do nothing
1070 }
1071 }
1072 for (auto &parameter_value_elem : memory.new_info.parameter_value) {
1073 sender = parameter_value_elem->getSender();
1074 intended_received = parameter_value_elem->getIntendedReceiver();
1075 total_chunked_items += 1;
1076 if (sender == sim::Operator::ODM) {//order from ODM is received; need to check plant state and reply back to ODM
1077 //for the response which to follow
1078 {
1079 auto p = make_unique<BranchExpectedParameterValue>();
1080 p->copyBranchExpectedParameterValue(*parameter_value_elem);
1081 p->setBothTotalTimeRequiredAndRemainingTime(1.0);
1082 p->setSender(sim::Operator::OAT);
1083 p->setIntendedReceiver(sim::Source::Plant);
1084 this->ordered_parameter_value.push_back(std::move(p));
1085 }
1086 } else if (sender == sim::Source::Plant) {
1087 found_info = this->checkExistanceOfOrderedParameterValue(parameter_value_elem->getDisplayName());
1088 perceived_parameter_value_pt1 =
1089 memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_value_elem->getDisplayName());
1090 if (perceived_parameter_value_pt1 == 0) {//OAT self act
1091 //memorize the info
1092 auto pv_sp = make_shared<MentalParameterValue>();
1093 pv_sp->copyMentalParameterValue(*parameter_value_elem);
1096 this->knowledge_base);
1097 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(pv_sp->getDisplayName(),
1098 pv_sp->getObservedParameterValue(),
1099 sim::Operator::OAT);//KB Hardwired Update
1100 } else {
1101 perceived_parameter_value_pt1->copyMentalParameterValue(*parameter_value_elem);
1102 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt1->getDisplayName(),
1103 perceived_parameter_value_pt1->getObservedParameterValue(),
1104 sim::Operator::OAT);//KB Hardwired Update
1105 }
1106 if (found_info && parameter_value_elem->getIntendedReceiver() != sim::Operator::OatScan) {//info requested by Decision Maker
1107 b_parameter_value_pt = new BranchExpectedParameterValue();
1108 b_parameter_value_pt->copyBranchExpectedParameterValue(*parameter_value_elem);
1109 b_parameter_value_pt->setTimerAndProbability(0.0, 1.0 - this->hfe_bbn.getPerceiveStateInfoFailureProbability());
1110 b_parameter_value_pt->setSender(sim::Operator::OAT);
1111 b_parameter_value_pt->setIntendedReceiver(sim::Operator::ODM);
1113 this->setPauseActivity(true);
1114 this->removeOrderedParameterValueMemoryAndPointer(parameter_value_elem->getDisplayName());
1115 }
1116 } else {//do nothing
1117 }
1118 }
1119
1120 for (auto &parameter_difference_elem : memory.new_info.parameter_difference) {
1121 sender = parameter_difference_elem->getSender();
1122 intended_received = parameter_difference_elem->getIntendedReceiver();
1123 total_chunked_items += 1;
1124 if (sender == sim::Operator::ODM) {//order from ODM is received; need to check plant state and reply back to ODM
1125 //for the response which to follow
1126 {
1127 auto p = make_unique<BranchExpectedParameterDifference>();
1128 p->copyBranchExpectedParameterDifference(*parameter_difference_elem);
1129 p->setBothTotalTimeRequiredAndRemainingTime(1.0);
1130 p->setSender(sim::Operator::OAT);
1131 p->setIntendedReceiver(sim::Source::Plant);
1132 this->ordered_parameter_difference.push_back(std::move(p));
1133 }
1134 } else if (sender == sim::Source::Plant) {
1135 found_info =
1136 this->checkExistanceOfOrderedParameterDifference(parameter_difference_elem->first_mental_parameter.getDisplayName(),
1137 parameter_difference_elem->second_mental_parameter.getDisplayName());
1138 // check if first parameter has been previously memorized and check for KB Hard Wired match
1139 perceived_parameter_value_pt1 =
1140 memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_difference_elem->first_mental_parameter.getDisplayName());
1141 if (perceived_parameter_value_pt1 == 0) {
1142 //memorize the first differene parameter
1143 auto pv1_sp = make_shared<MentalParameterValue>();
1144 pv1_sp->copyMentalParameterValue(parameter_difference_elem->first_mental_parameter);
1147 this->knowledge_base);
1148 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(pv1_sp->getDisplayName(),
1149 pv1_sp->getObservedParameterValue(),
1150 sim::Operator::OAT);//KB Hardwired Update
1151 } else {
1152 perceived_parameter_value_pt1->copyMentalParameterValue(parameter_difference_elem->first_mental_parameter);
1153 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt1->getDisplayName(),
1154 perceived_parameter_value_pt1->getObservedParameterValue(),
1155 sim::Operator::OAT);//KB Hardwired Update
1156 }
1157 // check if second parameter has been previously memorized and check for KB Hard Wired match
1158 perceived_parameter_value_pt1 =
1159 memory.perceived_info.checkExistanceOfPerceivedParameterValue(parameter_difference_elem->second_mental_parameter.getDisplayName());
1160 if (perceived_parameter_value_pt1 == 0) {
1161 //memorize the second difference parameter
1162 auto pv2_sp = make_shared<MentalParameterValue>();
1163 pv2_sp->copyMentalParameterValue(parameter_difference_elem->second_mental_parameter);
1166 this->knowledge_base);
1167 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(pv2_sp->getDisplayName(),
1168 pv2_sp->getObservedParameterValue(),
1169 sim::Operator::OAT);//KB Hardwired Update
1170 } else {
1171 perceived_parameter_value_pt1->copyMentalParameterValue(parameter_difference_elem->second_mental_parameter);
1172 this->knowledge_base.KBcheckHardWiredMatchForParameterValue(perceived_parameter_value_pt1->getDisplayName(),
1173 perceived_parameter_value_pt1->getObservedParameterValue(),
1174 sim::Operator::OAT);//KB Hardwired Update
1175 }
1176 // check for KB Hard Wired Match for Parameter Difference
1177 // future implementation...
1178 //
1179 if (found_info
1180 && parameter_difference_elem->getIntendedReceiver() != sim::Operator::OatScan) {//info requested by Decision Maker
1181 b_parameter_difference_pt = new BranchExpectedParameterDifference();
1182 b_parameter_difference_pt->copyBranchExpectedParameterDifference(*parameter_difference_elem);
1183 b_parameter_difference_pt->setTimerAndProbability(0.0, 1.0 - this->hfe_bbn.getPerceiveStateInfoFailureProbability());
1184 b_parameter_difference_pt->setSender(sim::Operator::OAT);
1185 b_parameter_difference_pt->setIntendedReceiver(sim::Operator::ODM);
1187 this->setPauseActivity(true);
1188 this->removeOrderedParameterDifferenceMemoryAndPointer(parameter_difference_elem->first_mental_parameter.getDisplayName(),
1189 parameter_difference_elem->second_mental_parameter.getDisplayName());
1190 }
1191 } else {//do nothing
1192 }
1193 }
1194 return total_chunked_items;
1195}
1197 bool branch_generated = false;
1198 decltype(ordered_action)::iterator ordered_action_itr;
1199 decltype(ordered_alarm_state)::iterator ordered_alarm_state_itr;
1200 decltype(ordered_component_state)::iterator ordered_component_state_itr;
1201 decltype(ordered_support_system_state)::iterator ordered_support_system_state_itr;
1202 decltype(ordered_parameter_trend)::iterator ordered_parameter_trend_itr;
1203 decltype(ordered_parameter_value)::iterator ordered_parameter_value_itr;
1204 decltype(ordered_parameter_difference)::iterator ordered_parameter_difference_itr;
1205 BranchAction *b_act_pt;
1206 BranchExpectedAlarmState *b_alarm_pt;
1209 BranchExpectedParameterTrend *b_trend_pt;
1212
1213 if (ordered_action.size() > 0) {
1214 ordered_action_itr = ordered_action.begin();
1215 b_act_pt = new BranchAction();
1216 (*ordered_action_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1217 b_act_pt->copyBranchAction(**ordered_action_itr);
1219 branch_generated = true;
1220 return branch_generated;
1221 }
1222 if (ordered_alarm_state.size() > 0) {
1223 ordered_alarm_state_itr = ordered_alarm_state.begin();
1224 b_alarm_pt = new BranchExpectedAlarmState();
1225 (*ordered_alarm_state_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1226 b_alarm_pt->copyBranchExpectedAlarmState(**ordered_alarm_state_itr);
1228 branch_generated = true;
1229 return branch_generated;
1230 }
1231 if (ordered_component_state.size() > 0) {
1232 ordered_component_state_itr = ordered_component_state.begin();
1233 b_comp_pt = new BranchExpectedComponentState();
1234 (*ordered_component_state_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1235 b_comp_pt->copyBranchExpectedComponentState(**ordered_component_state_itr);
1237 branch_generated = true;
1238 return branch_generated;
1239 }
1240 if (ordered_support_system_state.size() > 0) {
1241 ordered_support_system_state_itr = ordered_support_system_state.begin();
1242 b_ss_pt = new BranchExpectedSupportSystemState();
1243 (*ordered_support_system_state_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1244 b_ss_pt->copyBranchExpectedSupportSystemState(**ordered_support_system_state_itr);
1246 branch_generated = true;
1247 return branch_generated;
1248 }
1249 if (ordered_parameter_value.size() > 0) {
1250 ordered_parameter_value_itr = ordered_parameter_value.begin();
1251 b_par_pt = new BranchExpectedParameterValue();
1252 (*ordered_parameter_value_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1253 b_par_pt->copyBranchExpectedParameterValue(**ordered_parameter_value_itr);
1255 branch_generated = true;
1256 return branch_generated;
1257 }
1258 if (ordered_parameter_difference.size() > 0) {
1259 ordered_parameter_difference_itr = ordered_parameter_difference.begin();
1260 b_diff_pt = new BranchExpectedParameterDifference();
1261 (*ordered_parameter_difference_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1262 b_diff_pt->copyBranchExpectedParameterDifference(**ordered_parameter_difference_itr);
1264 branch_generated = true;
1265 return branch_generated;
1266 }
1267 if (ordered_parameter_trend.size() > 0) {
1268 ordered_parameter_trend_itr = ordered_parameter_trend.begin();
1269 b_trend_pt = new BranchExpectedParameterTrend();
1270 (*ordered_parameter_trend_itr)->setProbability(1.0 - this->hfe_bbn.getStrategyCommunicationFailureProbability());
1271 b_trend_pt->copyBranchExpectedParameterTrend(**ordered_parameter_trend_itr);
1273// ordered_parameter_trend.erase(ordered_parameter_trend_itr);
1274 branch_generated = true;
1275 return branch_generated;
1276 }
1277 return branch_generated;
1278}
1280 this->copyOperatorToRestartInfo(_operator);
1281 this->copyOrderedInfo(_operator);
1282
1283}
1286 this->copyOrderedInfo(_operator);
1287}
1290 this->copyOrderedInfo(_operator);
1291}
1292
1295 this->clearOrderedItems();
1296}
1299 this->clearOrderedItems();
1300};
1303 this->clearOrderedItems();
1304};
1307 this->clearOrderedItems();
1308}
1310 for (const auto &src : _operator.ordered_action) {
1311 auto dst = make_unique<BranchAction>();
1312 dst->copyBranchAction(*src);
1313 this->ordered_action.push_back(std::move(dst));
1314 }
1315 for (const auto &src : _operator.ordered_alarm_state) {
1316 auto dst = make_unique<BranchExpectedAlarmState>();
1317 dst->copyBranchExpectedAlarmState(*src);
1318 this->ordered_alarm_state.push_back(std::move(dst));
1319 }
1320 for (const auto &src : _operator.ordered_component_state) {
1321 auto dst = make_unique<BranchExpectedComponentState>();
1322 dst->copyBranchExpectedComponentState(*src);
1323 this->ordered_component_state.push_back(std::move(dst));
1324 }
1325 for (const auto &src : _operator.ordered_support_system_state) {
1326 auto dst = make_unique<BranchExpectedSupportSystemState>();
1327 dst->copyBranchExpectedSupportSystemState(*src);
1328 this->ordered_support_system_state.push_back(std::move(dst));
1329 }
1330 for (const auto &src : _operator.ordered_parameter_trend) {
1331 auto dst = make_unique<BranchExpectedParameterTrend>();
1332 dst->copyBranchExpectedParameterTrend(*src);
1333 this->ordered_parameter_trend.push_back(std::move(dst));
1334 }
1335 for (const auto &src : _operator.ordered_parameter_value) {
1336 auto dst = make_unique<BranchExpectedParameterValue>();
1337 dst->copyBranchExpectedParameterValue(*src);
1338 this->ordered_parameter_value.push_back(std::move(dst));
1339 }
1340 for (const auto &src : _operator.ordered_parameter_difference) {
1341 auto dst = make_unique<BranchExpectedParameterDifference>();
1342 dst->copyBranchExpectedParameterDifference(*src);
1343 this->ordered_parameter_difference.push_back(std::move(dst));
1344 }
1345}
1347 ordered_action.clear();
1348 ordered_alarm_state.clear();
1354}
1356 fout << "OperatorAT\n" << ordered_action.size() << '\n';
1357 for (const auto &p : ordered_action) {
1358 p->saveBranchActionToFile(fout);
1359 }
1360 fout << "OperatorAT_ordered_alarm " << ordered_alarm_state.size() << '\n';
1361 for (const auto &p : ordered_alarm_state) {
1362 p->saveBranchExpectedAlarmStateToFile(fout);
1363 }
1364 fout << "OperatorAT_ordered_component " << ordered_component_state.size() << '\n';
1365 for (const auto &p : ordered_component_state) {
1366 p->saveBranchExpectedComponentStateToFile(fout);
1367 }
1368 fout << "OperatorAT_ordered_support_system " << ordered_support_system_state.size() << '\n';
1369 for (const auto &p : ordered_support_system_state) {
1370 p->saveBranchExpectedSupportSystemStateToFile(fout);
1371 }
1372 fout << "OperatorAT_ordered_parameter_trend " << ordered_parameter_trend.size() << '\n';
1373 for (const auto &p : ordered_parameter_trend) {
1374 p->saveBranchExpectedParameterTrendToFile(fout);
1375 }
1376 fout << "OperatorAT_ordered_parameter_value " << ordered_parameter_value.size() << '\n';
1377 for (const auto &p : ordered_parameter_value) {
1378 p->saveBranchExpectedParameterValueToFile(fout);
1379 }
1380 fout << "OperatorAT_ordered_parameter_difference " << ordered_parameter_difference.size() << '\n';
1381 for (const auto &p : ordered_parameter_difference) {
1382 p->saveBranchExpectedParameterDifferenceToFile(fout);
1383 }
1384 this->saveOperatorToFile(fout);
1385}
1387 int i, num;
1388 string str;
1389 // all push_backs below use make_unique directly
1390//
1391 fin >> str >> num;
1392 if (str != "OperatorAT_ordered_alarm") {
1393 ofstream fout("err messages.txt", ios::app);
1394 cout << "OperatorAT::retrieveOperatorDMFromFile peratorAT_ordered_alarm File retrieval error in previous function"
1395 << endl;
1396 fout << r5pars_.timesno
1397 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_alarm File retrieval error in previous function\n";
1398 fout.close();
1399 r5pars_.sim_err = true;
1400 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior error");
1402 return;
1403 }
1404 for (i = 0; i < num; i++) {
1405 auto p = make_unique<BranchExpectedAlarmState>();
1406 p->retrieveBranchExpectedAlarmStateFromFile(fin);
1407 this->ordered_alarm_state.push_back(std::move(p));
1408 }
1409 //ordered_component
1410 fin >> str >> num;
1411 if (str != "OperatorAT_ordered_component") {
1412 ofstream fout("err messages.txt", ios::app);
1413 cout
1414 << "OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_component File retrieval error in previous function"
1415 << endl;
1416 fout << r5pars_.timesno
1417 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_component File retrieval error in previous function\n";
1418 fout.close();
1419 r5pars_.sim_err = true;
1420 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior err.");
1422 return;
1423 }
1424 for (i = 0; i < num; i++) {
1425 auto p = make_unique<BranchExpectedComponentState>();
1426 p->retrieveBranchExpectedComponentStateFromFile(fin);
1427 this->ordered_component_state.push_back(std::move(p));
1428 }
1429 //ordered_support_system
1430 fin >> str >> num;
1431 if (str != "OperatorAT_ordered_support_system") {
1432 ofstream fout("err messages.txt", ios::app);
1433 cout
1434 << "OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_support_system File retrieval error in previous function"
1435 << endl;
1436 fout << r5pars_.timesno
1437 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_support_system File retrieval error in previous function\n";
1438 fout.close();
1439 r5pars_.sim_err = true;
1440 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior err.");
1442 return;
1443 }
1444 for (i = 0; i < num; i++) {
1445 auto p = make_unique<BranchExpectedSupportSystemState>();
1446 p->retrieveBranchExpectedSupportSystemStateFromFile(fin);
1447 this->ordered_support_system_state.push_back(std::move(p));
1448 }
1449 //ordered_parameter_trend
1450 fin >> str >> num;
1451 if (str != "OperatorAT_ordered_parameter_trend") {
1452 ofstream fout("err messages.txt", ios::app);
1453 cout
1454 << "OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_trend File retrieval error in previous function"
1455 << endl;
1456 fout << r5pars_.timesno
1457 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_trend File retrieval error in previous function\n";
1458 fout.close();
1459 r5pars_.sim_err = true;
1460 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior error");
1462 return;
1463 }
1464 for (i = 0; i < num; i++) {
1465 auto p = make_unique<BranchExpectedParameterTrend>();
1466 p->retrieveBranchExpectedParameterTrendFromFile(fin);
1467 this->ordered_parameter_trend.push_back(std::move(p));
1468 }
1469 //ordered_parameter_value
1470 fin >> str >> num;
1471 if (str != "OperatorAT_ordered_parameter_value") {
1472 ofstream fout("err messages.txt", ios::app);
1473 cout
1474 << "OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_value File retrieval error in previous function"
1475 << endl;
1476 fout << r5pars_.timesno
1477 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_value File retrieval error in previous function\n";
1478 fout.close();
1479 r5pars_.sim_err = true;
1480 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior error");
1482 return;
1483 }
1484 for (i = 0; i < num; i++) {
1485 auto p = make_unique<BranchExpectedParameterValue>();
1486 p->retrieveBranchExpectedParameterValueFromFile(fin);
1487 this->ordered_parameter_value.push_back(std::move(p));
1488 }
1489 //ordered_parameter_difference
1490 fin >> str >> num;
1491 if (str != "OperatorAT_ordered_parameter_difference") {
1492 ofstream fout("err messages.txt", ios::app);
1493 cout
1494 << "OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_difference File retrieval error in previous function"
1495 << endl;
1496 fout << r5pars_.timesno
1497 << " OperatorAT::retrieveOperatorDMFromFile OperatorAT_ordered_parameter_difference File retrieval error in previous function\n";
1498 fout.close();
1499 r5pars_.sim_err = true;
1500 g_sim.Branch_center.setTempESMessage("OperatorAT::retrieveOperatorDMFromFile Prior err.");
1502 return;
1503 }
1504 for (i = 0; i < num; i++) {
1505 auto p = make_unique<BranchExpectedParameterDifference>();
1506 p->retrieveBranchExpectedParameterDifferenceFromFile(fin);
1507 this->ordered_parameter_difference.push_back(std::move(p));
1508 }
1509 this->retrieveOperatorFromFile(fin);
1510}
1512 bool order_exist = false;
1513 if (ordered_action.size() > 0 ||
1514 ordered_alarm_state.size() > 0 ||
1515 ordered_component_state.size() > 0 ||
1516 ordered_parameter_value.size() > 0 ||
1517 ordered_parameter_trend.size() > 0 ||
1518 ordered_parameter_difference.size() > 0) {
1519 order_exist = true;
1520 }
1521 return order_exist;
1522}
1523
1525 bool found = false;
1526 decltype(ordered_action)::iterator ordered_action_itr, ordered_action_itr_end;
1527 ordered_action_itr = this->ordered_action.begin();
1528 ordered_action_itr_end = this->ordered_action.end();
1529 while (ordered_action_itr != ordered_action_itr_end && !found) {
1530 if ((*ordered_action_itr)->getActionName() == _name) {
1531 found = true;
1532 } else {
1533 ordered_action_itr++;
1534 }
1535 }
1536 return found;
1537}
1539 bool found = false;
1540 decltype(ordered_action)::iterator ordered_action_itr, ordered_action_itr_end;
1541 ordered_action_itr = this->ordered_action.begin();
1542 ordered_action_itr_end = this->ordered_action.end();
1543 while (ordered_action_itr != ordered_action_itr_end && !found) {
1544 if ((*ordered_action_itr)->getActionName() == _name) {
1545 found = true;
1546 this->ordered_action.erase(ordered_action_itr);
1547 } else {
1548 ordered_action_itr++;
1549 }
1550 }
1551}
1552
1554 bool found = false;
1555 decltype(ordered_alarm_state)::iterator ordered_alarm_state_itr, ordered_alarm_state_itr_end;
1556 ordered_alarm_state_itr = this->ordered_alarm_state.begin();
1557 ordered_alarm_state_itr_end = this->ordered_alarm_state.end();
1558 while (ordered_alarm_state_itr != ordered_alarm_state_itr_end && !found) {
1559 if ((*ordered_alarm_state_itr)->getAlarmName() == _name) {
1560 found = true;
1561 } else {
1562 ordered_alarm_state_itr++;
1563 }
1564 }
1565 return found;
1566}
1568 bool found = false;
1569 decltype(ordered_alarm_state)::iterator ordered_alarm_state_itr, ordered_alarm_state_itr_end;
1570 ordered_alarm_state_itr = this->ordered_alarm_state.begin();
1571 ordered_alarm_state_itr_end = this->ordered_alarm_state.end();
1572 while (ordered_alarm_state_itr != ordered_alarm_state_itr_end && !found) {
1573 if ((*ordered_alarm_state_itr)->getAlarmName() == _name) {
1574 found = true;
1575 this->ordered_alarm_state.erase(ordered_alarm_state_itr);
1576 } else {
1577 ordered_alarm_state_itr++;
1578 }
1579 }
1580}
1581
1583 bool found = false;
1584 decltype(ordered_component_state)::iterator ordered_component_state_itr, ordered_component_state_itr_end;
1585 ordered_component_state_itr = this->ordered_component_state.begin();
1586 ordered_component_state_itr_end = this->ordered_component_state.end();
1587 while (ordered_component_state_itr != ordered_component_state_itr_end && !found) {
1588 if ((*ordered_component_state_itr)->getDisplayName() == _name) {
1589 found = true;
1590 } else {
1591 ordered_component_state_itr++;
1592 }
1593 }
1594 return found;
1595}
1597 bool found = false;
1598 decltype(ordered_support_system_state)::iterator ordered_support_system_state_itr,
1599 ordered_support_system_state_itr_end;
1600 ordered_support_system_state_itr = this->ordered_support_system_state.begin();
1601 ordered_support_system_state_itr_end = this->ordered_support_system_state.end();
1602 while (ordered_support_system_state_itr != ordered_support_system_state_itr_end && !found) {
1603 if ((*ordered_support_system_state_itr)->getDisplayName() == _name) {
1604 found = true;
1605 } else {
1606 ordered_support_system_state_itr++;
1607 }
1608 }
1609 return found;
1610}
1612 bool found = false;
1613 decltype(ordered_component_state)::iterator ordered_component_state_itr, ordered_component_state_itr_end;
1614 ordered_component_state_itr = this->ordered_component_state.begin();
1615 ordered_component_state_itr_end = this->ordered_component_state.end();
1616 while (ordered_component_state_itr != ordered_component_state_itr_end && !found) {
1617 if ((*ordered_component_state_itr)->getDisplayName() == _name) {
1618 found = true;
1619 this->ordered_component_state.erase(ordered_component_state_itr);
1620 } else {
1621 ordered_component_state_itr++;
1622 }
1623 }
1624}
1626 bool found = false;
1627 decltype(ordered_support_system_state)::iterator ordered_support_system_state_itr,
1628 ordered_support_system_state_itr_end;
1629 ordered_support_system_state_itr = this->ordered_support_system_state.begin();
1630 ordered_support_system_state_itr_end = this->ordered_support_system_state.end();
1631 while (ordered_support_system_state_itr != ordered_support_system_state_itr_end && !found) {
1632 if ((*ordered_support_system_state_itr)->getDisplayName() == _name) {
1633 found = true;
1634 this->ordered_support_system_state.erase(ordered_support_system_state_itr);
1635 } else {
1636 ordered_support_system_state_itr++;
1637 }
1638 }
1639}
1640
1642 bool found = false;
1643 decltype(ordered_parameter_trend)::iterator ordered_parameter_trend_itr, ordered_parameter_trend_itr_end;
1644 ordered_parameter_trend_itr = this->ordered_parameter_trend.begin();
1645 ordered_parameter_trend_itr_end = this->ordered_parameter_trend.end();
1646 while (ordered_parameter_trend_itr != ordered_parameter_trend_itr_end && !found) {
1647 if ((*ordered_parameter_trend_itr)->getDisplayName() == _name) {
1648 found = true;
1649 } else {
1650 ordered_parameter_trend_itr++;
1651 }
1652 }
1653 return found;
1654}
1656 bool found = false;
1657 decltype(ordered_parameter_trend)::iterator ordered_parameter_trend_itr, ordered_parameter_trend_itr_end;
1658 ordered_parameter_trend_itr = this->ordered_parameter_trend.begin();
1659 ordered_parameter_trend_itr_end = this->ordered_parameter_trend.end();
1660 while (ordered_parameter_trend_itr != ordered_parameter_trend_itr_end && !found) {
1661 if ((*ordered_parameter_trend_itr)->getDisplayName() == _name) {
1662 found = true;
1663 this->ordered_parameter_trend.erase(ordered_parameter_trend_itr);
1664 } else {
1665 ordered_parameter_trend_itr++;
1666 }
1667 }
1668}
1669
1671 bool found = false;
1672 decltype(ordered_parameter_value)::iterator ordered_parameter_value_itr, ordered_parameter_value_itr_end;
1673 ordered_parameter_value_itr = this->ordered_parameter_value.begin();
1674 ordered_parameter_value_itr_end = this->ordered_parameter_value.end();
1675 while (ordered_parameter_value_itr != ordered_parameter_value_itr_end && !found) {
1676 if ((*ordered_parameter_value_itr)->getDisplayName() == _name) {
1677 found = true;
1678 } else {
1679 ordered_parameter_value_itr++;
1680 }
1681 }
1682 return found;
1683}
1684
1686 bool found = false;
1687 decltype(ordered_parameter_value)::iterator ordered_parameter_value_itr, ordered_parameter_value_itr_end;
1688 ordered_parameter_value_itr = this->ordered_parameter_value.begin();
1689 ordered_parameter_value_itr_end = this->ordered_parameter_value.end();
1690 while (ordered_parameter_value_itr != ordered_parameter_value_itr_end && !found) {
1691 if ((*ordered_parameter_value_itr)->getDisplayName() == _name) {
1692 found = true;
1693 this->ordered_parameter_value.erase(ordered_parameter_value_itr);
1694 } else {
1695 ordered_parameter_value_itr++;
1696 }
1697 }
1698}
1699
1701 bool found = false;
1702 decltype(ordered_parameter_difference)::iterator ordered_parameter_difference_itr,
1703 ordered_parameter_difference_itr_end;
1704 ordered_parameter_difference_itr = this->ordered_parameter_difference.begin();
1705 ordered_parameter_difference_itr_end = this->ordered_parameter_difference.end();
1706 while (ordered_parameter_difference_itr != ordered_parameter_difference_itr_end && !found) {
1707 if ((*ordered_parameter_difference_itr)->first_mental_parameter.getDisplayName() == _name1 &&
1708 (*ordered_parameter_difference_itr)->second_mental_parameter.getDisplayName() == _name2) {
1709 found = true;
1710 } else {
1711 ordered_parameter_difference_itr++;
1712 }
1713 }
1714 return found;
1715}
1716
1718 bool found = false;
1719 decltype(ordered_parameter_difference)::iterator ordered_parameter_difference_itr,
1720 ordered_parameter_difference_itr_end;
1721 ordered_parameter_difference_itr = this->ordered_parameter_difference.begin();
1722 ordered_parameter_difference_itr_end = this->ordered_parameter_difference.end();
1723 while (ordered_parameter_difference_itr != ordered_parameter_difference_itr_end && !found) {
1724 if ((*ordered_parameter_difference_itr)->first_mental_parameter.getDisplayName() == _name1 &&
1725 (*ordered_parameter_difference_itr)->second_mental_parameter.getDisplayName() == _name2) {
1726 found = true;
1727 this->ordered_parameter_difference.erase(ordered_parameter_difference_itr);
1728 } else {
1729 ordered_parameter_difference_itr++;
1730 }
1731 }
1732}
1733
1734#include <boost/archive/binary_oarchive.hpp>
1735#include <boost/archive/binary_iarchive.hpp>
1736BOOST_CLASS_EXPORT_IMPLEMENT(OperatorAT)
Operator Action Taker — executes crew actions on plant systems and components.
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 addScanQueueData(double, int, KBScannedParameters &)
void copyBranchAction(BranchAction &)
void copyBranchExpectedAlarmState(BranchExpectedAlarmState &)
void copyBranchExpectedComponentState(BranchExpectedComponentState &)
void copyBranchExpectedParameterDifference(BranchExpectedParameterDifference &)
void copyBranchExpectedParameterTrend(BranchExpectedParameterTrend &)
void copyBranchExpectedParameterValue(BranchExpectedParameterValue &)
void copyBranchExpectedSupportSystemState(BranchExpectedSupportSystemState &)
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
void addAction(int, BranchAction *)
void addComponentState(int, BranchExpectedComponentState *)
void addParameterTrend(int, BranchExpectedParameterTrend *)
void addParameterValue(int, BranchExpectedParameterValue *)
void addScannedParameter(int, BranchScannedParameter *)
Crew fork registration for a scanned parameter; same contract as addGoal().
void addParameterDifference(int, BranchExpectedParameterDifference *)
void addSupportSystemState(int, BranchExpectedSupportSystemState *)
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 addAlarmState(int, BranchExpectedAlarmState *)
void addGoal(int, BranchGoal *)
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
std::vector< std::shared_ptr< BranchSystemAlarmState > > new_alarm
void setSenderAndReceiver(int, int)
void setSender(int)
void setIntendedReceiver(int)
void setTypeOfPauseActivity(int)
double getControlValue()
std::string getActionName()
void copyDecisionAction(DecisionAction &)
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::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
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
bool isThereMentalProcedureWaitingForExecution(std::string, std::string)
Definition: InfoChunk.cpp:608
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
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
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
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
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 copyMentalAlarm(MentalAlarm &)
Definition: MentalAlarm.cpp:34
void setObservedAlarmState(int)
Definition: MentalAlarm.cpp:32
int getObservedAlarmState()
Definition: MentalAlarm.cpp:33
void copyMentalComponentState(MentalComponentState &)
void setTimeAtWhichThisInfoIsPerceived(double)
Definition: MentalInfo.cpp:26
void copyMentalParameterValue(MentalParameterValue &)
void copyMentalSupportSystemState(MentalSupportSystemState &)
std::list< std::unique_ptr< BranchExpectedComponentState > > ordered_component_state
Definition: OperatorAT.h:66
void removeOrderedComponentStateMemoryAndPointer(std::string)
void removeOrderedParameterTrendMemoryAndPointer(std::string)
void retrieveOperatorATFromFile(std::ifstream &)
void oneThroughProcessForBlockI()
Definition: OperatorAT.cpp:587
void clearOperatorATForRestart()
void copyOperatorATToRestartInfo(OperatorAT &)
bool checkExistenceOfOrderedComponentState(std::string)
int infoChunking()
Definition: OperatorAT.cpp:683
bool checkExistanceOfOrderedParameterValue(std::string)
void clearOrderedItems()
std::list< std::unique_ptr< BranchExpectedParameterValue > > ordered_parameter_value
Definition: OperatorAT.h:69
bool checkExistanceOfOrderedAlarmState(std::string)
void receiveNewInformation()
Definition: OperatorAT.cpp:663
std::list< std::unique_ptr< BranchExpectedParameterDifference > > ordered_parameter_difference
Definition: OperatorAT.h:70
std::list< std::unique_ptr< BranchAction > > ordered_action
Definition: OperatorAT.h:64
void oneThroughProcessForBlockD()
Definition: OperatorAT.cpp:23
void clearOperatorATFinal()
void clearOperatorATFromRestartInfo()
std::list< std::unique_ptr< BranchExpectedSupportSystemState > > ordered_support_system_state
Definition: OperatorAT.h:67
void copyOrderedInfo(OperatorAT &)
int getNumberOfOrderedAction()
Definition: OperatorAT.cpp:672
void scanControlPanel()
Definition: OperatorAT.cpp:547
bool checkExistanceOfOrderedAction(std::string)
bool selectGoal()
Definition: OperatorAT.cpp:80
bool checkExistenceOfOrderedSupportSystemState(std::string)
void saveOperatorATToFile(std::ofstream &)
bool existOrderedActivity()
void removeOrderedActionMemoryAndPointer(std::string)
void removeOrderedParameterDifferenceMemoryAndPointer(std::string, std::string)
void identifyRelevantInformation()
Definition: OperatorAT.cpp:129
bool selectStrategy()
Definition: OperatorAT.cpp:103
std::list< std::unique_ptr< BranchExpectedAlarmState > > ordered_alarm_state
Definition: OperatorAT.h:65
bool checkExistanceOfOrderedParameterDifference(std::string, std::string)
void copyOperatorATFromRestartInfo(OperatorAT &)
void removeOrderedParameterValueMemoryAndPointer(std::string)
void copyOperatorATFromRestartInfoMultiProcessor(OperatorAT &)
void removeOrderedSupportSystemStateMemoryAndPointer(std::string)
std::list< std::unique_ptr< BranchExpectedParameterTrend > > ordered_parameter_trend
Definition: OperatorAT.h:68
bool checkExistanceOfOrderedParameterTrend(std::string)
void clearOperatorATFromRestartNodeInfoMultiProcessors()
virtual ~OperatorAT()
Definition: OperatorAT.cpp:21
void removeOrderedAlarmStateMemoryAndPointer(std::string)
bool performFollowInstructionStrategy()
void setSkipProcedureStep(bool)
Definition: Operator.cpp:591
int generateInfoGatherModeBranch()
Definition: Operator.cpp:917
void retrieveOperatorFromFile(std::ifstream &)
Definition: Operator.cpp:1020
void interruptLowPriorityMentalProcedures()
Definition: Operator.cpp:1421
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
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
ShortTermMemory memory
Definition: Operator.h:126
bool performAMentalProcedure(int, std::string, std::string)
Definition: Operator.cpp:1233
void copyOperatorToRestartInfo(Operator &)
Definition: Operator.cpp:595
void checkAndResetProcedureStep(BranchProcedureStep *)
Definition: Operator.cpp:1336
bool getNewBranchGenerated()
Definition: Operator.cpp:582
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
std::map< std::string, ProcedureStep * > procedure_map
Definition: Procedures.h:72
void updateAllSPDSValueAndRate(InfoChunk *)
Definition: SPDS.cpp:106
void addNewInfoChunkMentalForTheDiagnosis(DecisionDiagnosis *)
void calculatePriorityAndSetStateOfActivation()
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 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 MaintainGlobalSafetyMargin
Definition: SimConstants.h:160
constexpr int TroubleShoot
Definition: SimConstants.h:159
constexpr int OatScan
Definition: SimConstants.h:152
constexpr int ODM
Definition: SimConstants.h:145
constexpr int OAT
Definition: SimConstants.h:144
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 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
Procedures All_procedure
Emergency operating procedures.
OperatorDM Decision_Maker
Crew decision-making model.
CommunicationPlace Communication_place
Inter-module communication.
AnalysisInfoContainer Aux_info
Analysis records.
BranchRecord Branch_center
Dynamic event tree state.