← Documentation
ADS-IDAC Engine 5.0.0
ExpectationORUnit.cpp
Go to the documentation of this file.
1// ExpectationORUnit.cpp: implementation of the ExpectationORUnit class.
2//
4
5#include "ExpectationORUnit.h"
12#include "../Crew/Operator.h"
13#include <boost/serialization/export.hpp>
14#include <boost/archive/binary_oarchive.hpp>
15#include <boost/archive/binary_iarchive.hpp>
16#include "../Global/SimulationContext.h"
17BOOST_CLASS_EXPORT_IMPLEMENT(ExpectationORUnit)
18using namespace std;
19
20
22// Construction/Destruction
24
26}
27
29}
30
32 expectation_OR.push_back(unique_ptr<ExpectationElement>(_pt));
33};
36 int type_of_exp;
37 for (auto& src : _exp.expectation_OR) {
38 type_of_exp = src->getTypeOfExpectation();
39 if (type_of_exp == sim::Comm::AlarmState) {
40 auto ptr = make_unique<ProcedureExpectedAlarmStateUnit>();
41 ptr->copyProcedureExpectedAlarmStateUnit((ProcedureExpectedAlarmStateUnit &) *src);
42 expectation_OR.push_back(std::move(ptr));
43 } else if (type_of_exp == sim::Comm::ComponentState) {
44 auto ptr = make_unique<ProcedureExpectedComponentStateUnit>();
45 ptr->copyProcedureExpectedComponentStateUnit((ProcedureExpectedComponentStateUnit &) *src);
46 expectation_OR.push_back(std::move(ptr));
47 } else if (type_of_exp == sim::Comm::SupportSystemState) {
48 auto ptr = make_unique<ProcedureExpectedSupportSystemStateUnit>();
49 ptr->copyProcedureExpectedSupportSystemStateUnit((ProcedureExpectedSupportSystemStateUnit &) *src);
50 expectation_OR.push_back(std::move(ptr));
51 } else if (type_of_exp == sim::Comm::ParameterValue) {
52 auto ptr = make_unique<ProcedureExpectedParameterValueUnit>();
53 ptr->copyProcedureExpectedParameterValueUnit((ProcedureExpectedParameterValueUnit &) *src);
54 expectation_OR.push_back(std::move(ptr));
55 } else if (type_of_exp == sim::Comm::ParameterDifference) {
56 auto ptr = make_unique<ProcedureExpectedParameterDifferenceUnit>();
57 ptr->copyProcedureExpectedParameterDifferenceUnit((ProcedureExpectedParameterDifferenceUnit &) *src);
58 expectation_OR.push_back(std::move(ptr));
59 } else if (type_of_exp == sim::Comm::ParameterTrend) {
60 auto ptr = make_unique<ProcedureExpectedParameterTrendUnit>();
61 ptr->copyProcedureExpectedParameterTrendUnit((ProcedureExpectedParameterTrendUnit &) *src);
62 expectation_OR.push_back(std::move(ptr));
63 } else if (type_of_exp == sim::Branch::MentalBelief) {
64 auto ptr = make_unique<ExpectedMentalBelief>();
65 ptr->copyExpectedMentalBelief((ExpectedMentalBelief &) *src);
66 expectation_OR.push_back(std::move(ptr));
67 } else {
68 ofstream fout("err messages.txt", ios::app);
69 cout << "ExpectationORUnit::copyExpectationORUnit Type_of_exp: " << type_of_exp << " can not be recognized"
70 << endl;
71 fout << r5pars_.timesno << " ExpectationORUnit::copyExpectationORUnit Type_of_exp: " << type_of_exp
72 << " can not be recognized\n";
73 fout.close();
74 r5pars_.sim_err = true;
75 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::copyExpectationORUnit err.");
77 }
78 }
79};
81 bool found_exp = false;
82 bool branch_generated = false;
83 bool use_old_info = false;
84 bool recent_info = false;
85 double time;
86 int info_gather_mode;
87 int exp_state, type_of_exp, r_state, n_count, observation;
88 BranchExpectedAlarmState *b_alarm_state;
89 BranchExpectedComponentState *b_component_state;
90 BranchExpectedSupportSystemState *b_support_system_state;
91 BranchExpectedParameterValue *b_parameter_value;
92 BranchExpectedParameterDifference *b_parameter_difference;
93 //BranchExpectedParameterTrend *b_parameter_trend;
94 BranchExpectedMentalBelief *b_mental_belief;
100 //ProcedureExpectedParameterTrendUnit *par_trend_pt;
101 ExpectedMentalBelief *mental_belief_pt, *mental_belief_pt1;
102 MentalAlarm *ma_pt;
103 MentalComponentState *mcs_pt;
105 MentalParameterValue *mpv_pt, *mpv_pt1, *mpv_pt2;
106 MentalParameterTrend *mpt_pt;
107 int receiver = sim::Operator::OAT;
108 if (_operator.getTypeOfOperator() == sim::Operator::OAT) receiver = sim::Source::Plant;
109 //
110 info_gather_mode = _stm.getInfoGatherMode();
111 //
112 decltype(expectation_OR)::iterator exp_itr;
113 exp_itr = expectation_OR.begin();
114 n_count = 1;
115 while (exp_itr != expectation_OR.end() && !found_exp) {
116 exp_state = (*exp_itr)->getStateOfExpectation();
117 if (exp_state == sim::None) {
118 (*exp_itr)->setStateOfExpectation(sim::State::Active);
119 type_of_exp = (*exp_itr)->getTypeOfExpectation();
120 if (type_of_exp == sim::Comm::AlarmState) {
121 alarm_pt = (ProcedureExpectedAlarmStateUnit *) exp_itr->get();
123 if (ma_pt != 0 && info_gather_mode == sim::State::OldInfo
124 && alarm_pt->getUseNewInfo() != sim::Bool::Yes) { // use found memorized information
126 > r5pars_.timesno) {
127 if (ma_pt->getObservedAlarmState() == alarm_pt->getExpectedState()) {
128 observation = sim::State::Succeed;
129 } else {
130 observation = sim::State::Failed;
131 }
132 use_old_info = true;
133 (*exp_itr)->setStateOfExpectation(observation);
134 b_alarm_state = new BranchExpectedAlarmState();
135 b_alarm_state->copyMentalAlarm(*ma_pt);
136 b_alarm_state->copyKBExpectedAlarmStateUnit(*alarm_pt);
137 b_alarm_state->copyTimer(*alarm_pt);
138 b_alarm_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
139 // set time delay for memorized information to 1.0 second
141 //
143 b_alarm_state->setTypeOfPauseActivity(_entry);
144 g_sim.Branch_center.addAlarmState(_operator.getTypeOfOperator(), b_alarm_state);
145 branch_generated = true;
146 }
147 }
148 if (!use_old_info) {
149 b_alarm_state = new BranchExpectedAlarmState();
150 b_alarm_state->copyKBExpectedAlarmStateUnit(*alarm_pt);
151 b_alarm_state->copyTimer(*alarm_pt);
152 b_alarm_state->setAlarmName(alarm_pt->getInfoName());
153 b_alarm_state->setInfoName(alarm_pt->getInfoName());
154 b_alarm_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
155 // set stochastic time to check expectation
156 time = alarm_pt->calculateRequiredTime();
158 //
159 //b_alarm_state->setTimerAndProbability(alarm_pt->getRemainingTime(), 1.0);
160 b_alarm_state->setExpectedState(alarm_pt->getExpectedState());
161 b_alarm_state->setTypeOfPauseActivity(_entry);
162 g_sim.Branch_center.addAlarmState(_operator.getTypeOfOperator(), b_alarm_state);
163 branch_generated = true;
164 }
165 } else if (type_of_exp == sim::Comm::ComponentState) {
166 comp_pt = (ProcedureExpectedComponentStateUnit *) exp_itr->get();
168 use_old_info = false;
169 if (mcs_pt != 0 && info_gather_mode == sim::State::OldInfo
170 && comp_pt->getUseNewInfo() != sim::Bool::Yes) {//found memorized information
172 > r5pars_.timesno) {
173 if (mcs_pt->getObservedComponentState() == comp_pt->getExpectedState()) {
174 observation = sim::State::Succeed;
175 } else {
176 observation = sim::State::Failed;
177 }
178 use_old_info = true;
179 (*exp_itr)->setStateOfExpectation(observation);
180 b_component_state = new BranchExpectedComponentState();
181 b_component_state->copyMentalComponentState(*mcs_pt);
182 b_component_state->copyKBExpectedComponentStateUnit(*comp_pt);
183 b_component_state->copyTimer(*comp_pt);
184 b_component_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
185 //set time for memorized information to 1.0 second
186 b_component_state->setTimerAndProbability(1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
187 b_component_state->setStateOfActivation(sim::State::OldInfo);
188 b_component_state->setTypeOfPauseActivity(_entry);
189 g_sim.Branch_center.addComponentState(_operator.getTypeOfOperator(), b_component_state);
190 branch_generated = true;
191 }
192 }
193 if (!use_old_info) {
194 b_component_state = new BranchExpectedComponentState();
195 b_component_state->copyKBExpectedComponentStateUnit(*comp_pt);
196 b_component_state->copyTimer(*comp_pt);
197 b_component_state->setDisplayName(comp_pt->getInfoName());
198 b_component_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
199 // set stochastic action time
200 time = comp_pt->calculateRequiredTime();
201 b_component_state->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
202 b_component_state->setExpectedState(comp_pt->getExpectedState());
203 b_component_state->setTypeOfPauseActivity(_entry);
204 g_sim.Branch_center.addComponentState(_operator.getTypeOfOperator(), b_component_state);
205 branch_generated = true;
206 }
207 } else if (type_of_exp == sim::Comm::SupportSystemState) {
208 ss_pt = (ProcedureExpectedSupportSystemStateUnit *) exp_itr->get();
210 use_old_info = false;
211 if (msss_pt != 0 && info_gather_mode == sim::State::OldInfo
212 && ss_pt->getUseNewInfo() != sim::Bool::Yes) {//found memorized information
214 > r5pars_.timesno) {
215 if (msss_pt->getObservedSupportSystemState() == ss_pt->getExpectedState()) {
216 observation = sim::State::Succeed;
217 } else {
218 observation = sim::State::Failed;
219 }
220 use_old_info = true;
221 (*exp_itr)->setStateOfExpectation(observation);
222 b_support_system_state = new BranchExpectedSupportSystemState();
223 b_support_system_state->copyMentalSupportSystemState(*msss_pt);
224 b_support_system_state->copyKBExpectedSupportSystemStateUnit(*ss_pt);
225 b_support_system_state->copyTimer(*ss_pt);
226 b_support_system_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
227 //set time for memorized information to 1.0 second
228 b_support_system_state->setTimerAndProbability(1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
229 b_support_system_state->setStateOfActivation(sim::State::OldInfo);
230 b_support_system_state->setTypeOfPauseActivity(_entry);
231 std::cout << "Created support system state: " << b_support_system_state->getDisplayName() << std::endl;
232 g_sim.Branch_center.addSupportSystemState(_operator.getTypeOfOperator(), b_support_system_state);
233 branch_generated = true;
234 }
235 }
236 if (!use_old_info) {
237 b_support_system_state = new BranchExpectedSupportSystemState();
238 b_support_system_state->copyKBExpectedSupportSystemStateUnit(*ss_pt);
239 b_support_system_state->copyTimer(*ss_pt);
240 b_support_system_state->setDisplayName(ss_pt->getInfoName());
241 b_support_system_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
242 // set stochastic action time
243 time = ss_pt->calculateRequiredTime();
244 b_support_system_state->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
245 b_support_system_state->setExpectedState(ss_pt->getExpectedState());
246 b_support_system_state->setTypeOfPauseActivity(_entry);
247 std::cout << "Created support system state: " << b_support_system_state->getDisplayName() << std::endl;
248 g_sim.Branch_center.addSupportSystemState(_operator.getTypeOfOperator(), b_support_system_state);
249 branch_generated = true;
250 }
251 } else if (type_of_exp == sim::Comm::ParameterValue || type_of_exp == sim::Comm::ParameterTrend) {
252 par_value_pt = (ProcedureExpectedParameterValueUnit *) exp_itr->get();
254 use_old_info = false;
255 if (mpv_pt != 0 && info_gather_mode == sim::State::OldInfo
256 && par_value_pt->getUseNewInfo() != sim::Bool::Yes) {//found memorized information
259 > r5pars_.timesno) && (observation == sim::State::Succeed || observation == sim::State::Failed)) {
260 use_old_info = true;
261 (*exp_itr)->setStateOfExpectation(observation);
262 b_parameter_value = new BranchExpectedParameterValue();
263 b_parameter_value->copyMentalParameterValue(*mpv_pt);
264 b_parameter_value->copyTimer(*par_value_pt);
265 b_parameter_value->copyKBExpectedParameterValueUnit(*par_value_pt);
266 b_parameter_value->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
267 b_parameter_value->setStateOfActivation(sim::State::OldInfo);
268 // use 1 second delay for memorized information
269 b_parameter_value->setTimerAndProbability(1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
270 b_parameter_value->setTypeOfPauseActivity(_entry);
271 g_sim.Branch_center.addParameterValue(_operator.getTypeOfOperator(), b_parameter_value);
272 branch_generated = true;
273 }
274 }
275 if (!use_old_info) {
276 b_parameter_value = new BranchExpectedParameterValue();
277 b_parameter_value->copyKBExpectedParameterValueUnit(*par_value_pt);
278 b_parameter_value->copyTimer(*par_value_pt);
279 b_parameter_value->setDisplayName(par_value_pt->getInfoName());
280 b_parameter_value->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
281 // calculate stochastic time for checking expectation
282 time = par_value_pt->calculateRequiredTime();
283 b_parameter_value->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
284 b_parameter_value->setTypeOfPauseActivity(_entry);
285 g_sim.Branch_center.addParameterValue(_operator.getTypeOfOperator(), b_parameter_value);
286 branch_generated = true;
287 }
288 } else if (type_of_exp == sim::Comm::ParameterDifference) {
289 par_diff_pt = (ProcedureExpectedParameterDifferenceUnit *) exp_itr->get();
290 mpv_pt1 =
292 mpv_pt2 =
294 use_old_info = false;
295 if (mpv_pt1 != 0 && mpv_pt2 != 0 && info_gather_mode == sim::State::OldInfo
296 && par_diff_pt->getUseNewInfo() != sim::Bool::Yes) {//found memorized information
299 > r5pars_.timesno)
301 > r5pars_.timesno)) {
302 recent_info = true;
303 }
304 if (recent_info && (observation == sim::State::Succeed || observation == sim::State::Failed)) {
305 use_old_info = true;
306 (*exp_itr)->setStateOfExpectation(observation);
307 b_parameter_difference = new BranchExpectedParameterDifference();
308 b_parameter_difference->first_mental_parameter.copyMentalParameterValue(*mpv_pt1);
309 b_parameter_difference->second_mental_parameter.copyMentalParameterValue(*mpv_pt2);
310 b_parameter_difference->copyKBExpectedParameterDifferenceUnit(*par_diff_pt);
311 b_parameter_difference->copyTimer(*par_diff_pt);
312 b_parameter_difference->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
313 b_parameter_difference->setStateOfActivation(sim::State::OldInfo);
314 // use 1 second delay for memorized information
315 b_parameter_difference->setTimerAndProbability(1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
316 b_parameter_difference->setTypeOfPauseActivity(_entry);
317 g_sim.Branch_center.addParameterDifference(_operator.getTypeOfOperator(), b_parameter_difference);
318 branch_generated = true;
319 }
320 }
321 if (!use_old_info) {
322 b_parameter_difference = new BranchExpectedParameterDifference();
323 b_parameter_difference->copyKBExpectedParameterDifferenceUnit(*par_diff_pt);
324 b_parameter_difference->copyTimer(*par_diff_pt);
325 b_parameter_difference->first_mental_parameter.setDisplayName(par_diff_pt->first_indicator.getInfoName());
326 b_parameter_difference->second_mental_parameter.setDisplayName(par_diff_pt->second_indicator.getInfoName());
327 b_parameter_difference->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
328 // calculate stochastic time for checking expectation
329 time = par_diff_pt->calculateRequiredTime();
330 b_parameter_difference->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
331 b_parameter_difference->setTypeOfPauseActivity(_entry);
332 g_sim.Branch_center.addParameterDifference(_operator.getTypeOfOperator(), b_parameter_difference);
333 branch_generated = true;
334 }
335 }
336
337 /*
338 else if(type_of_exp == sim::Comm::ParameterTrend){
339 par_trend_pt = (ProcedureExpectedParameterTrendUnit *) (*exp_itr);
340 mpt_pt = _stm.perceived_info.checkExistanceOfPerceivedParameterTrend(par_trend_pt->getInfoName());
341 use_old_info = false;
342 if(mpt_pt != 0 && info_gather_mode == sim::State::OldInfo){//found memorized information
343 observation = _stm.perceived_info.checkWhetherExpectedParameterTrendMatchObservation(par_trend_pt);
344 if(observation == sim::State::Succeed){
345 use_old_info = true;
346 (*exp_itr)->setStateOfExpectation(sim::State::Succeed);
347 b_parameter_trend = new BranchExpectedParameterTrend();
348 b_parameter_trend->copyMentalParameterTrend(*mpt_pt);
349 b_parameter_trend->copyKBExpectedParameterTrendUnit(*par_trend_pt);
350 b_parameter_trend->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
351 b_parameter_trend->setStateOfActivation(sim::State::OldInfo);
352 b_parameter_trend->setTimerAndProbability(par_trend_pt->getRemainingTime(), 1.0);
353 g_sim.Branch_center.addParameterTrend(_operator.getTypeOfOperator(), b_parameter_trend);
354 branch_generated = true;
355 }
356 }
357 if(!use_old_info){
358 b_parameter_trend = new BranchExpectedParameterTrend();
359 b_parameter_trend->copyKBExpectedParameterTrendUnit(*par_trend_pt);
360 b_parameter_trend->setDisplayName(par_trend_pt->getInfoName());
361 b_parameter_trend->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
362 b_parameter_trend->setTimerAndProbability(par_trend_pt->getRemainingTime(), 1.0);
363 g_sim.Branch_center.addParameterTrend(_operator.getTypeOfOperator(), b_parameter_trend);
364 branch_generated = true;
365 }
366 }
367 */
368 else if (type_of_exp == sim::Branch::MentalBelief) {
369 mental_belief_pt = (ExpectedMentalBelief *) exp_itr->get();
370 mental_belief_pt1 = _stm.perceived_info.checkExistanceOfMentalBelief(mental_belief_pt->getInfoName());
371 if (mental_belief_pt1 != 0) {
372 if (mental_belief_pt1->getStateOfActivation() == mental_belief_pt->getExpectedState()) {
374 b_mental_belief = new BranchExpectedMentalBelief();
375 b_mental_belief->copyExpectedMentalBelief(*mental_belief_pt);
377 b_mental_belief->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
378 b_mental_belief->setBothTotalTimeRequiredAndRemainingTime(0.0);
379 b_mental_belief->setProbability(1.0 - _operator.hfe_bbn.getMentalProcedureFailureProbability());
381 b_mental_belief->setTypeOfPauseActivity(_entry);
382 g_sim.Branch_center.addMentalBelief(_operator.getTypeOfOperator(), b_mental_belief);
383 branch_generated = true;
384 } else {
385 (*exp_itr)->setStateOfExpectation(sim::State::Failed);
386 b_mental_belief = new BranchExpectedMentalBelief();
387 b_mental_belief->copyExpectedMentalBelief(*mental_belief_pt);
389 b_mental_belief->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
390 b_mental_belief->setBothTotalTimeRequiredAndRemainingTime(0.0);
391 b_mental_belief->setProbability(1.0 - _operator.hfe_bbn.getMentalProcedureFailureProbability());
393 b_mental_belief->setTypeOfPauseActivity(_entry);
394 g_sim.Branch_center.addMentalBelief(_operator.getTypeOfOperator(), b_mental_belief);
395 branch_generated = true;
396 }
397 } else { // generate error message if mental belief has not been found
398 ofstream fout("err messages.txt", ios::app);
399 cout << "ExpectationORUnit::assessExpectation: mental belief expectation name: "
400 << mental_belief_pt->getInfoName() << " can not be found." << endl;
401 fout << r5pars_.timesno << " ExpectationORUnit::assessExpectation: mental belief expectation name: "
402 << mental_belief_pt->getInfoName() << " can not be found.\n";
403 fout.close();
404 r5pars_.sim_err = true;
405 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::assessExpectation err.");
407 }
408 } else {
409 ofstream fout("err messages.txt", ios::app);
410 cout << "ExpectationORUnit::assessExpectation: expectation type: " << type_of_exp << " can not be recognized."
411 << endl;
412 fout << r5pars_.timesno << " ExpectationORUnit::assessExpectation: expectation type: " << type_of_exp
413 << " can not be recognized.\n";
414 fout.close();
415 r5pars_.sim_err = true;
416 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::assessExpectation err.");
418 }
419 found_exp = true;
420 } else if (exp_state == sim::State::Active) {
421 type_of_exp = (*exp_itr)->getTypeOfExpectation();
422 if (type_of_exp == sim::Comm::AlarmState) {
423 alarm_pt = (ProcedureExpectedAlarmStateUnit *) exp_itr->get();
425 r_state =
427 (*exp_itr)->setStateOfExpectation(r_state);
428 if (r_state != sim::State::Succeed && r_state != sim::State::Failed
429 && ma_pt != 0) {//r_state == sim::None (the information has not been perceived; ask for info again
430 alarm_pt = (ProcedureExpectedAlarmStateUnit *) exp_itr->get();
431 b_alarm_state = new BranchExpectedAlarmState();
432 b_alarm_state->copyKBExpectedAlarmStateUnit(*alarm_pt);
433 b_alarm_state->copyTimer(*alarm_pt);
434 b_alarm_state->copyMentalAlarm(*ma_pt);
435 b_alarm_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
436 // set stochastic time to check expectation
437 time = alarm_pt->calculateRequiredTime();
439 //b_alarm_state->setTimerAndProbability(alarm_pt->getRemainingTime(), 1.0);
440 b_alarm_state->setTypeOfPauseActivity(_entry);
441 g_sim.Branch_center.addAlarmState(_operator.getTypeOfOperator(), b_alarm_state);
442 branch_generated = true;
443 } else if (ma_pt != 0) {
444 alarm_pt = (ProcedureExpectedAlarmStateUnit *) exp_itr->get();
445 b_alarm_state = new BranchExpectedAlarmState();
446 b_alarm_state->copyKBExpectedAlarmStateUnit(*alarm_pt);
447 b_alarm_state->copyTimer(*alarm_pt);
448 b_alarm_state->copyMentalAlarm(*ma_pt);
449 b_alarm_state->setAlarmName(alarm_pt->getInfoName());
450 b_alarm_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
452 b_alarm_state->setStateOfExpectation(r_state);
453 b_alarm_state->setTypeOfPauseActivity(_entry);
454 g_sim.Branch_center.addAlarmState(_operator.getTypeOfOperator(), b_alarm_state);
455 branch_generated = true;
456 } else {
457 alarm_pt = (ProcedureExpectedAlarmStateUnit *) exp_itr->get();
458 b_alarm_state = new BranchExpectedAlarmState();
459 b_alarm_state->copyKBExpectedAlarmStateUnit(*alarm_pt);
460 b_alarm_state->copyTimer(*alarm_pt);
461 b_alarm_state->setAlarmName(alarm_pt->getInfoName());
462 b_alarm_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
464 b_alarm_state->setStateOfExpectation(r_state);
465 b_alarm_state->setTypeOfPauseActivity(_entry);
466 g_sim.Branch_center.addAlarmState(_operator.getTypeOfOperator(), b_alarm_state);
467 branch_generated = true;
468 }
469 } else if (type_of_exp == sim::Comm::ComponentState) {
470 comp_pt = (ProcedureExpectedComponentStateUnit *) exp_itr->get();
472 r_state =
474 (*exp_itr)->setStateOfExpectation(r_state);
475 if (r_state != sim::State::Succeed && r_state != sim::State::Failed
476 && mcs_pt != 0) {//r_state == sim::None (the information has not been perceived; ask for info again
477 comp_pt = (ProcedureExpectedComponentStateUnit *) exp_itr->get();
478 b_component_state = new BranchExpectedComponentState();
479 b_component_state->copyKBExpectedComponentStateUnit(*comp_pt);
480 b_component_state->copyTimer(*comp_pt);
481 b_component_state->copyMentalComponentState(*mcs_pt);
482 b_component_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
483 time = comp_pt->calculateRequiredTime();
484 b_component_state->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
485 //b_component_state->setTimerAndProbability(comp_pt->getRemainingTime(), 1.0);
486 b_component_state->setExpectedState(comp_pt->getExpectedState());
487 b_component_state->setTypeOfPauseActivity(_entry);
488 g_sim.Branch_center.addComponentState(_operator.getTypeOfOperator(), b_component_state);
489 branch_generated = true;
490 } else if (mcs_pt != 0) {
491 comp_pt = (ProcedureExpectedComponentStateUnit *) exp_itr->get();
492 b_component_state = new BranchExpectedComponentState();
493 b_component_state->copyKBExpectedComponentStateUnit(*comp_pt);
494 b_component_state->copyTimer(*comp_pt);
495 b_component_state->copyMentalComponentState(*mcs_pt);
496 b_component_state->setDisplayName(comp_pt->getInfoName());
497 b_component_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
498 b_component_state->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
499 b_component_state->setExpectedState(comp_pt->getExpectedState());
500 b_component_state->setStateOfExpectation(r_state);
501 b_component_state->setTypeOfPauseActivity(_entry);
502 g_sim.Branch_center.addComponentState(_operator.getTypeOfOperator(), b_component_state);
503 branch_generated = true;
504 } else {
505 comp_pt = (ProcedureExpectedComponentStateUnit *) exp_itr->get();
506 b_component_state = new BranchExpectedComponentState();
507 b_component_state->copyKBExpectedComponentStateUnit(*comp_pt);
508 b_component_state->copyTimer(*comp_pt);
509 b_component_state->setDisplayName(comp_pt->getInfoName());
510 b_component_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
511 b_component_state->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
512 b_component_state->setExpectedState(comp_pt->getExpectedState());
513 b_component_state->setStateOfExpectation(r_state);
514 b_component_state->setTypeOfPauseActivity(_entry);
515 g_sim.Branch_center.addComponentState(_operator.getTypeOfOperator(), b_component_state);
516 branch_generated = true;
517 }
518 } else if (type_of_exp == sim::Comm::SupportSystemState) {
519 ss_pt = (ProcedureExpectedSupportSystemStateUnit *) exp_itr->get();
521 r_state =
523 (*exp_itr)->setStateOfExpectation(r_state);
524 if (r_state != sim::State::Succeed && r_state != sim::State::Failed
525 && msss_pt != 0) {//r_state == sim::None (the information has not been perceived; ask for info again
526 ss_pt = (ProcedureExpectedSupportSystemStateUnit *) exp_itr->get();
527 b_support_system_state = new BranchExpectedSupportSystemState();
528 b_support_system_state->copyKBExpectedSupportSystemStateUnit(*ss_pt);
529 b_support_system_state->copyTimer(*ss_pt);
530 b_support_system_state->copyMentalSupportSystemState(*msss_pt);
531 b_support_system_state->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
532 time = ss_pt->calculateRequiredTime();
533 b_support_system_state->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
534 //b_component_state->setTimerAndProbability(comp_pt->getRemainingTime(), 1.0);
535 b_support_system_state->setExpectedState(ss_pt->getExpectedState());
536 b_support_system_state->setTypeOfPauseActivity(_entry);
537 std::cout << "Created support system state: " << b_support_system_state->getDisplayName() << std::endl;
538 g_sim.Branch_center.addSupportSystemState(_operator.getTypeOfOperator(), b_support_system_state);
539 branch_generated = true;
540 } else if (msss_pt != 0) {
541 ss_pt = (ProcedureExpectedSupportSystemStateUnit *) exp_itr->get();
542 b_support_system_state = new BranchExpectedSupportSystemState();
543 b_support_system_state->copyKBExpectedSupportSystemStateUnit(*ss_pt);
544 b_support_system_state->copyTimer(*ss_pt);
545 b_support_system_state->copyMentalSupportSystemState(*msss_pt);
546 b_support_system_state->setDisplayName(ss_pt->getInfoName());
547 b_support_system_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
548 b_support_system_state->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
549 b_support_system_state->setExpectedState(ss_pt->getExpectedState());
550 b_support_system_state->setStateOfExpectation(r_state);
551 b_support_system_state->setTypeOfPauseActivity(_entry);
552 std::cout << "Created support system state: " << b_support_system_state->getDisplayName() << std::endl;
553 g_sim.Branch_center.addSupportSystemState(_operator.getTypeOfOperator(), b_support_system_state);
554 branch_generated = true;
555 } else {
556 ss_pt = (ProcedureExpectedSupportSystemStateUnit *) exp_itr->get();
557 b_support_system_state = new BranchExpectedSupportSystemState();
558 b_support_system_state->copyKBExpectedSupportSystemStateUnit(*ss_pt);
559 b_support_system_state->copyTimer(*ss_pt);
560 b_support_system_state->setDisplayName(ss_pt->getInfoName());
561 b_support_system_state->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
562 b_support_system_state->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
563 b_support_system_state->setExpectedState(ss_pt->getExpectedState());
564 b_support_system_state->setStateOfExpectation(r_state);
565 b_support_system_state->setTypeOfPauseActivity(_entry);
566 std::cout << "Created support system state: " << b_support_system_state->getDisplayName() << std::endl;
567 g_sim.Branch_center.addSupportSystemState(_operator.getTypeOfOperator(), b_support_system_state);
568 branch_generated = true;
569 }
570 } else if (type_of_exp == sim::Comm::ParameterValue || type_of_exp == sim::Comm::ParameterTrend) {
571 par_value_pt = (ProcedureExpectedParameterValueUnit *) exp_itr->get();
573 r_state =
575 (*exp_itr)->setStateOfExpectation(r_state);
576 if (r_state != sim::State::Succeed && r_state != sim::State::Failed
577 && mpv_pt != 0) {//r_state == sim::None (the information has not been perceived; ask for info again
578 par_value_pt = (ProcedureExpectedParameterValueUnit *) exp_itr->get();
579 b_parameter_value = new BranchExpectedParameterValue();
580 b_parameter_value->copyKBExpectedParameterValueUnit(*par_value_pt);
581 b_parameter_value->copyTimer(*par_value_pt);
582 b_parameter_value->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
583 time = par_value_pt->calculateRequiredTime();
584 b_parameter_value->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
585 //b_parameter_value->setTimerAndProbability(par_value_pt->getRemainingTime(), 1.0);
586 b_parameter_value->setTypeOfPauseActivity(_entry);
587 g_sim.Branch_center.addParameterValue(_operator.getTypeOfOperator(), b_parameter_value);
588 branch_generated = true;
589 } else if (mpv_pt != 0) {
590 par_value_pt = (ProcedureExpectedParameterValueUnit *) exp_itr->get();
591 b_parameter_value = new BranchExpectedParameterValue();
592 b_parameter_value->copyKBExpectedParameterValueUnit(*par_value_pt);
593 b_parameter_value->copyTimer(*par_value_pt);
594 b_parameter_value->copyMentalParameterValue(*mpv_pt);
595 b_parameter_value->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
596 b_parameter_value->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
597 b_parameter_value->setStateOfExpectation(r_state);
598 b_parameter_value->setTypeOfPauseActivity(_entry);
599 g_sim.Branch_center.addParameterValue(_operator.getTypeOfOperator(), b_parameter_value);
600 branch_generated = true;
601 } else {
602 par_value_pt = (ProcedureExpectedParameterValueUnit *) exp_itr->get();
603 b_parameter_value = new BranchExpectedParameterValue();
604 b_parameter_value->copyKBExpectedParameterValueUnit(*par_value_pt);
605 b_parameter_value->copyTimer(*par_value_pt);
606 b_parameter_value->setDisplayName(par_value_pt->getInfoName());
607 b_parameter_value->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
608 b_parameter_value->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
609 b_parameter_value->setStateOfExpectation(r_state);
610 b_parameter_value->setTypeOfPauseActivity(_entry);
611 g_sim.Branch_center.addParameterValue(_operator.getTypeOfOperator(), b_parameter_value);
612 branch_generated = true;
613 }
614 } else if (type_of_exp == sim::Comm::ParameterDifference) {
615 par_diff_pt = (ProcedureExpectedParameterDifferenceUnit *) exp_itr->get();
616 mpv_pt1 =
618 mpv_pt2 =
620 r_state =
622 (*exp_itr)->setStateOfExpectation(r_state);
623 if (r_state != sim::State::Succeed
624 && r_state != sim::State::Failed) {//r_state == sim::None (the information has not been perceived; ask for info again
625 par_diff_pt = (ProcedureExpectedParameterDifferenceUnit *) exp_itr->get();
626 b_parameter_difference = new BranchExpectedParameterDifference();
627 b_parameter_difference->copyKBExpectedParameterDifferenceUnit(*par_diff_pt);
628 b_parameter_difference->copyTimer(*par_diff_pt);
629 b_parameter_difference->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
630 time = par_diff_pt->calculateRequiredTime();
631 b_parameter_difference->setTimerAndProbability(time, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
632 //b_parameter_value->setTimerAndProbability(par_value_pt->getRemainingTime(), 1.0);
633 b_parameter_difference->setTypeOfPauseActivity(_entry);
634 g_sim.Branch_center.addParameterDifference(_operator.getTypeOfOperator(), b_parameter_difference);
635 branch_generated = true;
636 } else if (mpv_pt1 != 0 && mpv_pt2 != 0) {
637 par_diff_pt = (ProcedureExpectedParameterDifferenceUnit *) exp_itr->get();
638 b_parameter_difference = new BranchExpectedParameterDifference();
639 b_parameter_difference->copyKBExpectedParameterDifferenceUnit(*par_diff_pt);
640 b_parameter_difference->copyTimer(*par_diff_pt);
641 b_parameter_difference->first_mental_parameter.copyMentalParameterValue(*mpv_pt1);
642 b_parameter_difference->second_mental_parameter.copyMentalParameterValue(*mpv_pt2);
643 b_parameter_difference->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
644 b_parameter_difference->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
645 b_parameter_difference->setStateOfExpectation(r_state);
646 b_parameter_difference->setTypeOfPauseActivity(_entry);
647 g_sim.Branch_center.addParameterDifference(_operator.getTypeOfOperator(), b_parameter_difference);
648 branch_generated = true;
649 } else {
650 par_diff_pt = (ProcedureExpectedParameterDifferenceUnit *) exp_itr->get();
651 b_parameter_difference = new BranchExpectedParameterDifference();
652 b_parameter_difference->copyKBExpectedParameterDifferenceUnit(*par_diff_pt);
653 b_parameter_difference->copyTimer(*par_diff_pt);
654 b_parameter_difference->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
655 b_parameter_difference->setTimerAndProbability(-1.0, 1.0 - _operator.hfe_bbn.getProcedureInterpretationFailureProbability());
656 b_parameter_difference->setStateOfExpectation(r_state);
657 b_parameter_difference->setTypeOfPauseActivity(_entry);
658 g_sim.Branch_center.addParameterDifference(_operator.getTypeOfOperator(), b_parameter_difference);
659 branch_generated = true;
660 }
661 }
662
663
664 /*else if(type_of_exp == sim::Comm::ParameterTrend){
665 par_trend_pt = (ProcedureExpectedParameterTrendUnit *) (*exp_itr);
666 mpt_pt = _stm.perceived_info.checkExistanceOfPerceivedParameterTrend(par_trend_pt->getInfoName());
667 r_state = _stm.perceived_info.checkWhetherExpectedParameterTrendMatchObservation((KBExpectedParameterTrendUnit *) (*exp_itr));
668 (*exp_itr)->setStateOfExpectation(r_state);
669 if (r_state != sim::State::Succeed && r_state != sim::State::Failed && mpt_pt != 0){//r_state == sim::None (the information has not been perceived; ask for info again
670 par_trend_pt = (ProcedureExpectedParameterTrendUnit *) (*exp_itr);
671 b_parameter_trend = new BranchExpectedParameterTrend();
672 b_parameter_trend->copyKBExpectedParameterTrendUnit(*par_trend_pt);
673 b_parameter_trend->setSenderAndReceiver(_operator.getTypeOfOperator(), receiver);
674 b_parameter_trend->setTimerAndProbability(par_trend_pt->getRemainingTime(), 1.0);
675 g_sim.Branch_center.addParameterTrend(_operator.getTypeOfOperator(), b_parameter_trend);
676 branch_generated = true;
677 }
678 else if(mpt_pt != 0){
679 par_trend_pt = (ProcedureExpectedParameterTrendUnit *) (*exp_itr);
680 b_parameter_trend = new BranchExpectedParameterTrend();
681 b_parameter_trend->copyKBExpectedParameterTrendUnit(*par_trend_pt);
682 b_parameter_trend->copyMentalParameterTrend(*mpt_pt);
683 b_parameter_trend->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
684 b_parameter_trend->setTimerAndProbability(-1.0, 1.0);
685 b_parameter_trend->setStateOfExpectation(r_state);
686 g_sim.Branch_center.addParameterTrend(_operator.getTypeOfOperator(), b_parameter_trend);
687 branch_generated = true;
688 }
689 else{
690 par_trend_pt = (ProcedureExpectedParameterTrendUnit *) (*exp_itr);
691 b_parameter_trend = new BranchExpectedParameterTrend();
692 b_parameter_trend->copyKBExpectedParameterTrendUnit(*par_trend_pt);
693 b_parameter_trend->setDisplayName(par_trend_pt->getInfoName());
694 b_parameter_trend->setSenderAndReceiver(_operator.getTypeOfOperator(), _operator.getTypeOfOperator());
695 b_parameter_trend->setTimerAndProbability(-1.0, 1.0);
696 b_parameter_trend->setStateOfExpectation(r_state);
697 g_sim.Branch_center.addParameterTrend(_operator.getTypeOfOperator(), b_parameter_trend);
698 branch_generated = true;
699 }
700 }
701 */
702 else {
703 ofstream fout("err messages.txt", ios::app);
704 cout << "ExpectationORUnit::assessExpectation: expectation type: " << type_of_exp << " can not be recognized1."
705 << endl;
706 fout << r5pars_.timesno << " ExpectationORUnit::assessExpectation: expectation type: " << type_of_exp
707 << " can not be recognized1.\n";
708 fout.close();
709 r5pars_.sim_err = true;
710 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::assessExpectation err.");
712 }
713 found_exp = true;
714 } else if (exp_state == sim::State::Succeed) {
716 found_exp = true;
717 } else {}
718 exp_itr++;
719 n_count++;
720 }
721 if (!found_exp) {
723 }
724 return branch_generated;
725}
727 int obj_type;
728 this->saveStateOfActivationToFile(fout);
729 fout << expectation_OR.size() << '\n';
730 for (auto& e : expectation_OR) {
731 obj_type = e->getTypeOfExpectation();
732 fout << obj_type << ' ';
733 if (obj_type == sim::Comm::AlarmState) {
734 ((ProcedureExpectedAlarmStateUnit *) e.get())->saveProcedureExpectedAlarmStateUnitToFile(fout);
735 } else if (obj_type == sim::Comm::ComponentState) {
736 ((ProcedureExpectedComponentStateUnit *) e.get())->saveProcedureExpectedComponentStateUnitToFile(fout);
737 } else if (obj_type == sim::Comm::SupportSystemState) {
738 ((ProcedureExpectedSupportSystemStateUnit *) e.get())->saveProcedureExpectedSupportSystemStateUnitToFile(fout);
739 } else if (obj_type == sim::Comm::ParameterValue) {
740 ((ProcedureExpectedParameterValueUnit *) e.get())->saveProcedureExpectedParameterValueUnitToFile(fout);
741 } else if (obj_type == sim::Comm::ParameterDifference) {
742 ((ProcedureExpectedParameterDifferenceUnit *) e.get())->saveProcedureExpectedParameterDifferenceUnitToFile(fout);
743 } else if (obj_type == sim::Comm::ParameterTrend) {
744 ((ProcedureExpectedParameterTrendUnit *) e.get())->saveProcedureExpectedParameterTrendUnitToFile(fout);
745 } else if (obj_type == sim::Branch::MentalBelief) {
746 ((ExpectedMentalBelief *) e.get())->saveExpectedMentalBeliefToFile(fout);
747 } else {//parmeter trend and parameter state are not provided currently
748 ofstream fout("err messages.txt", ios::app);
749 cout << "ExpectationORUnit::saveExpectationORUnitToFile: expectation body obj_type:" << obj_type
750 << " cannot be recognized" << endl;
751 fout << r5pars_.timesno << " ExpectationORUnit::saveExpectationORUnitToFile: expectation body obj_type:"
752 << obj_type << " cannot be recognized\n";
753 fout.close();
754 r5pars_.sim_err = true;
755 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::saveExpectationORUnitToFile err.");
757 }
758 }
759}
761 int obj_type, i, n_expectation;
762 unique_ptr<ExpectationElement> exp_pt;
763
765 fin >> n_expectation;//number of OR linked expectations
766
767 for (i = 0; i < n_expectation; i++) {
768 fin >> obj_type;
769 if (obj_type == sim::Comm::AlarmState) {
770 auto p = make_unique<ProcedureExpectedAlarmStateUnit>();
771 p->retrieveProcedureExpectedAlarmStateUnitFromFile(fin);
772 exp_pt = std::move(p);
773 } else if (obj_type == sim::Comm::ComponentState) {
774 auto p = make_unique<ProcedureExpectedComponentStateUnit>();
775 p->retrieveProcedureExpectedComponentStateUnitFromFile(fin);
776 exp_pt = std::move(p);
777 } else if (obj_type == sim::Comm::SupportSystemState) {
778 auto p = make_unique<ProcedureExpectedSupportSystemStateUnit>();
779 p->retrieveProcedureExpectedSupportSystemStateUnitFromFile(fin);
780 exp_pt = std::move(p);
781 } else if (obj_type == sim::Comm::ParameterValue) {
782 auto p = make_unique<ProcedureExpectedParameterValueUnit>();
783 p->retrieveProcedureExpectedParameterValueUnitFromFile(fin);
784 exp_pt = std::move(p);
785 } else if (obj_type == sim::Comm::ParameterDifference) {
786 auto p = make_unique<ProcedureExpectedParameterDifferenceUnit>();
787 p->retrieveProcedureExpectedParameterDifferenceUnitFromFile(fin);
788 exp_pt = std::move(p);
789 } else if (obj_type == sim::Comm::ParameterTrend) {
790 auto p = make_unique<ProcedureExpectedParameterTrendUnit>();
791 p->retrieveProcedureExpectedParameterTrendUnitFromFile(fin);
792 exp_pt = std::move(p);
793 } else if (obj_type == sim::Branch::MentalBelief) {
794 auto p = make_unique<ExpectedMentalBelief>();
795 p->retrieveExpectedMentalBeliefFromFile(fin);
796 exp_pt = std::move(p);
797 } else {
798 ofstream fout("err messages.txt", ios::app);
799 cout << "ExpectationORUnit::retrieveExpectationORUnitFromFile: expectation body obj_type:" << obj_type
800 << " cannot be recognized" << endl;
801 fout << r5pars_.timesno << " ExpectationORUnit::retrieveExpectationORUnitFromFile: expectation body obj_type:"
802 << obj_type << " cannot be recognized\n";
803 fout.close();
804 r5pars_.sim_err = true;
805 g_sim.Branch_center.setTempESMessage("ExpectationORUnit::retrieveExpectationORUnitFromFile err.");
807 }
808 this->expectation_OR.push_back(std::move(exp_pt));
809 }
810}
811
812#include <boost/archive/binary_oarchive.hpp>
813#include <boost/archive/binary_iarchive.hpp>
814#include <stdexcept>
815
816void ExpectationORUnit::state_save(boost::archive::binary_oarchive& ar) const {
817 const int soa = const_cast<ExpectationORUnit*>(this)->getStateOfActivation();
818 ar << soa;
819 const uint32_t n = static_cast<uint32_t>(expectation_OR.size());
820 ar << n;
821 for (const auto& e : expectation_OR)
822 e->state_save(ar);
823}
824void ExpectationORUnit::state_load(boost::archive::binary_iarchive& ar) {
825 int soa = 0;
826 ar >> soa;
828 uint32_t n = 0;
829 ar >> n;
830 if (n != expectation_OR.size())
831 throw std::runtime_error(
832 "expectation state overlay: element count mismatch against the seeded book");
833 for (auto& e : expectation_OR)
834 e->state_load(ar);
835}
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
document e
void setAlarmName(std::string)
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
void addComponentState(int, BranchExpectedComponentState *)
void addParameterValue(int, BranchExpectedParameterValue *)
void addParameterDifference(int, BranchExpectedParameterDifference *)
void addSupportSystemState(int, BranchExpectedSupportSystemState *)
void addMentalBelief(int, BranchExpectedMentalBelief *)
Crew fork registration for a mental belief; same contract as addGoal().
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 setSenderAndReceiver(int, int)
void setTypeOfPauseActivity(int)
std::string getDisplayName()
void setDisplayName(std::string)
void state_load(boost::archive::binary_iarchive &ar)
void state_save(boost::archive::binary_oarchive &ar) const
void add(ExpectationElement *)
bool assessExpectation(Operator &, ShortTermMemory &, int)
void saveExpectationORUnitToFile(std::ofstream &)
std::vector< std::unique_ptr< ExpectationElement > > expectation_OR
void retrieveExpectationORUnitFromFile(std::ifstream &)
void copyExpectationORUnit(ExpectationORUnit &)
void copyExpectedMentalBelief(ExpectedMentalBelief &)
double getProcedureInterpretationFailureProbability()
MentalParameterValue * checkExistanceOfPerceivedParameterValue(std::string)
Definition: InfoChunk.cpp:921
MentalAlarm * checkExistanceOfPerceivedAlarms(std::string)
Definition: InfoChunk.cpp:847
int checkWhetherExpectedParameterValueMatchObservation(KBExpectedParameterValueUnit *)
Definition: InfoChunk.cpp:1105
MentalComponentState * checkExistanceOfPerceivedComponentState(std::string)
Definition: InfoChunk.cpp:895
int checkWhetherExpectedAlarmMatchObservation(KBExpectedAlarmStateUnit *)
Definition: InfoChunk.cpp:1051
int checkWhetherExpectedComponentStateMatchObservation(KBExpectedComponentStateUnit *)
Definition: InfoChunk.cpp:1069
int checkWhetherExpectedSupportSystemStateMatchObservation(KBExpectedSupportSystemStateUnit *)
Definition: InfoChunk.cpp:1087
int checkWhetherExpectedParameterDifferenceMatchObservation(KBExpectedParameterDifferenceUnit *)
Definition: InfoChunk.cpp:1150
MentalSupportSystemState * checkExistanceOfPerceivedSupportSystemState(std::string)
Definition: InfoChunk.cpp:908
ExpectedMentalBelief * checkExistanceOfMentalBelief(std::string)
Definition: InfoChunk.cpp:934
void setInfoName(std::string)
Definition: KBElement.cpp:25
std::string getInfoName()
Definition: KBElement.cpp:26
void copyKBExpectedAlarmStateUnit(KBExpectedAlarmStateUnit &)
void copyKBExpectedComponentStateUnit(KBExpectedComponentStateUnit &)
void copyKBExpectedParameterDifferenceUnit(KBExpectedParameterDifferenceUnit &)
void copyKBExpectedParameterValueUnit(KBExpectedParameterValueUnit &)
void copyKBExpectedSupportSystemStateUnit(KBExpectedSupportSystemStateUnit &)
void copyMentalAlarm(MentalAlarm &)
Definition: MentalAlarm.cpp:34
int getObservedAlarmState()
Definition: MentalAlarm.cpp:33
void copyMentalComponentState(MentalComponentState &)
double getTimeAtWhichThisInfoIsPerceived()
Definition: MentalInfo.cpp:27
void copyMentalParameterValue(MentalParameterValue &)
void copyMentalSupportSystemState(MentalSupportSystemState &)
int getTypeOfOperator()
Definition: Operator.cpp:59
HumanFailureEventsBBN hfe_bbn
Definition: Operator.h:136
void setProbability(double)
Definition: Probability.cpp:26
Timer support_system_update_time
Timer parameter_update_time
Timer component_update_time
InfoChunk perceived_info
void setStateOfActivation(int)
void saveStateOfActivationToFile(std::ofstream &)
void retrieveStateOfActivationFromFile(std::ifstream &)
void copyStateOfActivation(StateOfActivation &)
void setTimerAndProbability(double, double)
void setBothTotalTimeRequiredAndRemainingTime(double)
Definition: Timer.cpp:71
void copyTimer(Timer &)
Definition: Timer.cpp:44
double calculateRequiredTime()
Definition: Timer.cpp:76
struct @0 r5pars_
constexpr int Yes
Definition: SimConstants.h:80
constexpr int MentalBelief
Definition: SimConstants.h:265
constexpr int ParameterDifference
Definition: SimConstants.h:289
constexpr int ParameterTrend
Definition: SimConstants.h:287
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 OAT
Definition: SimConstants.h:144
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 Active
Definition: SimConstants.h:118
constexpr int None
Definition: SimConstants.h:75
BranchRecord Branch_center
Dynamic event tree state.