6#include "../Scheduler/CommandControlCenter.h"
7#include "../Scheduler/AnalysisInfoContainer.h"
8#include "../Crew/OperatorDM.h"
9#include <boost/serialization/export.hpp>
10#include "../Global/SimulationContext.h"
11#include <boost/archive/binary_oarchive.hpp>
12#include <boost/archive/binary_iarchive.hpp>
33 double b_probability = 1.0;
34 for (
auto &
e :
goal) { b_probability *=
e->getProbability(); }
35 for (
auto &
e :
strategy) { b_probability *=
e->getProbability(); }
36 for (
auto &
e :
subgoal) { b_probability *=
e->getProbability(); }
37 for (
auto &
e :
diagnosis) { b_probability *=
e->getProbability(); }
39 for (
auto &
e :
action_pack) { b_probability *=
e->getProbability(); }
40 for (
auto &
e :
action) { b_probability *=
e->getProbability(); }
41 for (
auto &
e :
alarm_state) { b_probability *=
e->getProbability(); }
70 double ODM_action_time_multiplier, OAT_action_time_multiplier, OCT_action_time_multiplier, action_time_multiplier;
85 for (
auto &
e :
goal) {
86 sender =
e->getSender();
87 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
88 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
89 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
90 else { action_time_multiplier = 1.0; }
91 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
95 sender =
e->getSender();
96 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
97 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
98 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
99 else { action_time_multiplier = 1.0; }
100 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
104 sender =
e->getSender();
105 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
106 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
107 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
108 else { action_time_multiplier = 1.0; }
109 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
113 sender =
e->getSender();
114 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
115 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
116 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
117 else { action_time_multiplier = 1.0; }
118 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
122 sender =
e->getSender();
123 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
124 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
125 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
126 else { action_time_multiplier = 1.0; }
127 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
131 sender =
e->getSender();
132 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
133 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
134 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
135 else { action_time_multiplier = 1.0; }
136 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
141 sender =
e->getSender();
142 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
143 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
144 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
145 else { action_time_multiplier = 1.0; }
146 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
151 sender =
e->getSender();
152 receiver =
e->getIntendedReceiver();
153 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
154 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
155 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
156 else { action_time_multiplier = 1.0; }
159 time =
e->getActionTime();
160 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
162 e->setBothTotalTimeRequiredAndRemainingTime(
165 e->setBothTotalTimeRequiredAndRemainingTime(
170 e->setBothTotalTimeRequiredAndRemainingTime(
171 (
e->getTotalTimeRequired()) * action_time_multiplier);
177 sender =
e->getSender();
178 receiver =
e->getIntendedReceiver();
179 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
180 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
181 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
182 else { action_time_multiplier = 1.0; }
184 e->setBothTotalTimeRequiredAndRemainingTime(
187 e->setBothTotalTimeRequiredAndRemainingTime(
189 }
else if (sender == receiver) {
190 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
194 time =
e->calculateMeanRequiredTime();
195 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
200 sender =
e->getSender();
201 receiver =
e->getIntendedReceiver();
202 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
203 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
204 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
205 else { action_time_multiplier = 1.0; }
207 e->setBothTotalTimeRequiredAndRemainingTime(
210 e->setBothTotalTimeRequiredAndRemainingTime(
212 }
else if (sender == receiver) {
213 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
217 time =
e->calculateMeanRequiredTime();
218 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
223 sender =
e->getSender();
224 receiver =
e->getIntendedReceiver();
225 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
226 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
227 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
228 else { action_time_multiplier = 1.0; }
230 e->setBothTotalTimeRequiredAndRemainingTime(
233 e->setBothTotalTimeRequiredAndRemainingTime(
235 }
else if (sender == receiver) {
236 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
240 time =
e->calculateMeanRequiredTime();
241 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
246 sender =
e->getSender();
247 receiver =
e->getIntendedReceiver();
248 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
249 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
250 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
251 else { action_time_multiplier = 1.0; }
253 e->setBothTotalTimeRequiredAndRemainingTime(
256 e->setBothTotalTimeRequiredAndRemainingTime(
258 }
else if (sender == receiver) {
259 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
261 time =
e->calculateMeanRequiredTime();
262 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
267 sender =
e->getSender();
268 receiver =
e->getIntendedReceiver();
269 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
270 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
271 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
272 else { action_time_multiplier = 1.0; }
274 e->setBothTotalTimeRequiredAndRemainingTime(
277 e->setBothTotalTimeRequiredAndRemainingTime(
279 }
else if (sender == receiver) {
280 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
284 time =
e->calculateMeanRequiredTime();
285 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
290 sender =
e->getSender();
291 receiver =
e->getIntendedReceiver();
292 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
293 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
294 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
295 else { action_time_multiplier = 1.0; }
297 e->setBothTotalTimeRequiredAndRemainingTime(
300 e->setBothTotalTimeRequiredAndRemainingTime(
302 }
else if (sender == receiver) {
303 e->setBothTotalTimeRequiredAndRemainingTime(0.0);
305 time =
e->calculateMeanRequiredTime();
306 e->setBothTotalTimeRequiredAndRemainingTime(time * action_time_multiplier);
311 sender =
e->getSender();
312 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
313 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
314 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
315 else { action_time_multiplier = 1.0; }
316 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
320 sender =
e->getSender();
321 if (sender ==
sim::Operator::ODM) { action_time_multiplier = ODM_action_time_multiplier; }
322 else if (sender ==
sim::Operator::OAT) { action_time_multiplier = OAT_action_time_multiplier; }
323 else if (sender ==
sim::Operator::OCT) { action_time_multiplier = OCT_action_time_multiplier; }
324 else { action_time_multiplier = 1.0; }
325 e->setBothTotalTimeRequiredAndRemainingTime(
e->getRemainingTime() * action_time_multiplier);
329 e->setBothTotalTimeRequiredAndRemainingTime(-1.0);
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
One alternative of a BranchCluster, i.e. one PE node of the DET.
virtual ~BranchProbability()
void calculateProbability()
Sets the conditional probability to the product of the probabilities of every content item this alter...
void setIDOfThisBranch(int)
double unconditional_branch_probability
void copyBranchProbability(BranchProbability &)
Copies the IDs, probabilities, child type, state of activation and content of another alternative....
double getUnconditionalBranchProbability()
int ID_of_the_child_branch_cluster
void saveBranchProbabilityToFile(std::ofstream &)
Writes the IDs, unconditional probability and child type, then the Probability, CommunicationPlace an...
BranchProbability()
Constructs an alternative with all IDs -999, unconditional probability -1.0 and child type sim::None.
void setUnconditionalBranchProbability(double)
void retrieveBranchProbabilityFromFile(std::ifstream &)
Reads the layout written by saveBranchProbabilityToFile.
int getIDOfTheChildBranchCluster()
int ID_of_the_associated_branch_cluster
void setTypeOfChild(int)
Sets the kind of node that follows this alternative: sim::Branch::Branch (a child cluster) or sim::Br...
void calUnconditionalBranchProbability(double)
Sets the unconditional probability to x times the conditional probability.
void setIDOfTheChildBranchCluster(int)
Sets the ID of the node that follows this alternative: the child cluster ID, or the end state ID when...
std::vector< int > child_IDs
void setIDOfTheAssociatedBranchCluster(int)
int getIDOfTheAssociatedBranchCluster()
void sendBranchInfoToCommandCenter(int)
Hands the content of this alternative to the command center (g_sim.Command_handler)....
void saveInfoToFile(std::ostream &)
Writes the content of this alternative in the PE node text form (CommunicationPlace::saveInfoToFileAs...
std::vector< std::shared_ptr< BranchSubGoal > > subgoal
std::vector< std::shared_ptr< BranchExpectedParameterTrend > > parameter_trend
std::vector< std::shared_ptr< BranchInfoGatherMode > > info_gather_mode
std::vector< std::shared_ptr< BranchProcedureStep > > instinctive_response_procedure
std::vector< std::shared_ptr< BranchGoal > > goal
std::vector< std::shared_ptr< BranchActionPack > > action_pack
std::vector< std::shared_ptr< BranchExpectedSupportSystemState > > support_system_state
std::vector< std::shared_ptr< BranchExpectedParameterDifference > > parameter_difference
std::vector< std::shared_ptr< BranchDiagnosis > > diagnosis
std::vector< std::shared_ptr< BranchExpectedMentalBelief > > mental_belief
std::vector< std::shared_ptr< BranchExpectedParameterValue > > parameter_value
std::vector< std::shared_ptr< BranchScannedParameter > > scanned_parameter
std::vector< std::shared_ptr< BranchExpectedComponentState > > component_state
std::vector< std::shared_ptr< BranchStrategy > > strategy
std::vector< std::shared_ptr< BranchProcedureStep > > procedure_step
std::vector< std::shared_ptr< BranchExpectedAlarmState > > alarm_state
std::vector< std::shared_ptr< BranchAction > > action
std::vector< std::shared_ptr< BranchActionObjective > > action_objective
void addNewAlarm(const std::shared_ptr< BranchSystemAlarmState > &, int)
void addSubGoal(const std::shared_ptr< BranchSubGoal > &, int)
void addExpectedParameterTrend(const std::shared_ptr< BranchExpectedParameterTrend > &, int)
void addDiagnosis(const std::shared_ptr< BranchDiagnosis > &, int)
void addActionObjective(const std::shared_ptr< BranchActionObjective > &, int)
void addExpectedParameterValue(const std::shared_ptr< BranchExpectedParameterValue > &, int)
void addActionPack(const std::shared_ptr< BranchActionPack > &, int)
void addExpectedComponentState(const std::shared_ptr< BranchExpectedComponentState > &, int)
void addExpectedSupportSystemState(const std::shared_ptr< BranchExpectedSupportSystemState > &, int)
void addSSReliability(const std::shared_ptr< BranchSupportSystemAction > &, int)
void addHWReliability(const std::shared_ptr< BranchSystemAction > &, int)
void addAction(const std::shared_ptr< BranchAction > &, int)
void addExpectedAlarmState(const std::shared_ptr< BranchExpectedAlarmState > &, int)
void addMentalBelief(const std::shared_ptr< BranchExpectedMentalBelief > &, int)
void addExpectedParameterDifference(const std::shared_ptr< BranchExpectedParameterDifference > &, int)
void addStrategy(const std::shared_ptr< BranchStrategy > &, int)
void addInstinctiveResponseProcedure(const std::shared_ptr< BranchProcedureStep > &, int)
void addScannedParameter(const std::shared_ptr< BranchScannedParameter > &, int)
void addInfoGatherMode(const std::shared_ptr< BranchInfoGatherMode > &, int)
void addProcedureStep(const std::shared_ptr< BranchProcedureStep > &, int)
void addGoal(const std::shared_ptr< BranchGoal > &, int)
std::vector< std::shared_ptr< BranchSystemAction > > HW_reliability
void clearCommunicationPlaceAll()
std::vector< std::shared_ptr< BranchSystemAlarmState > > new_alarm
void retrieveCommunicationPlaceFromFile(std::ifstream &)
std::vector< std::shared_ptr< BranchSupportSystemAction > > SS_reliability
void saveInfoToFileAsBranchForADSV1(std::ostream &)
void copyCommunicationPlace(CommunicationPlace &)
void saveCommunicationPlaceToFile(std::ofstream &)
double getNominalCommunicationTime()
void copyProbability(Probability &)
void setProbability(double)
void saveProbabilityToFile(std::ofstream &)
void retrieveProbabilityFromFile(std::ifstream &)
double getODMActionTimeMultiplier()
double getOATActionTimeMultiplier()
double getOCTActionTimeMultiplier()
void saveStateOfActivationToFile(std::ofstream &)
void retrieveStateOfActivationFromFile(std::ifstream &)
void copyStateOfActivation(StateOfActivation &)
Scheduler SScheduler
Simulation scheduling, parses CLI options.
OperatorAT Action_Taker
Crew action execution model.
OperatorDM Decision_Maker
Crew decision-making model.
CommandControlCenter Command_handler
Command/control dispatch.