6#include "../ControlPanel/ControlPanel.h"
7#include "../Global/SimulationContext.h"
45 double t_min, alpha, beta;
49 fin >> str >> t_min >> alpha >> beta;
54 fin >> str >> num_actions;
55 for (i = 0 ; i < num_actions ; i++)
57 auto comp_action_ptr = make_unique<DiagnosisComponentActionUnit>();
58 comp_action_ptr->readDiagnosisComponentActionUnitInfoFromFile(fin);
59 this->
action_list.push_back(std::move(comp_action_ptr));
70 bool branch_generated =
false;
71 bool evaluate_prereqs;
73 bool control_at_limit;
75 bool found_action_prereq =
false;
76 double current_control_value, new_control_value;
77 int highest_priority = 100;
84 while (comp_action_itr != this->
action_list.end() && !branch_generated && !found_action_prereq)
87 if( (*comp_action_itr)->getPriority() < highest_priority) {
90 control_at_limit =
false;
91 control_failed =
false;
94 if (system_control_ptr != 0) {
99 switch ((*comp_action_itr)->getActionType()) {
101 new_control_value = current_control_value + (*comp_action_itr)->getControlInput();
102 if (new_control_value < (*comp_action_itr)->getLowerLimit() ||
103 new_control_value > (*comp_action_itr)->getUpperLimit() ||
104 fabs(new_control_value - current_control_value) < 0.0001 ) {
105 control_at_limit =
true;
110 if (mental_value_ptr != 0 ) {
112 if (new_control_value < (*comp_action_itr)->getLowerLimit() ||
113 new_control_value > (*comp_action_itr)->getUpperLimit() ||
114 fabs(new_control_value - current_control_value) < 0.0001 ) {
115 control_at_limit =
true;
120 new_control_value = (*comp_action_itr)->getControlInput();
121 if (new_control_value < (*comp_action_itr)->getLowerLimit() ||
122 new_control_value > (*comp_action_itr)->getUpperLimit() ||
123 fabs(new_control_value - current_control_value) < 0.0001 ) {
124 control_at_limit =
true;
135 control_failed =
true;
138 if(!control_at_limit && !control_failed) {
140 if ((*comp_action_itr)->action_prerequisites.size() == 0 ) {
145 prereq_state = (*comp_action_itr)->getPrerequisiteState();
148 evaluate_prereqs =
true;
149 found_action_prereq =
true;
152 evaluate_prereqs =
false;
155 if(evaluate_prereqs) {
157 if ((*comp_action_itr)->getPrerequisiteState() ==
sim::None) {
159 str =
"Evaluate Action Prerequisites for diagnosis (";
162 str += (*comp_action_itr)->getInfoName();
170 if (branch_generated) {
171 return branch_generated;
174 highest_priority = (*comp_action_itr)->getPriority();
181 return branch_generated;
188 action_item->resetComponentActionUnit();
201 auto action_unit_ptr = make_unique<DiagnosisComponentActionUnit>();
202 action_unit_ptr->copyDiagnosisComponentActionUnit(*src);
203 this->
action_list.push_back(std::move(action_unit_ptr));
210 int action_prereqs_flag = 0;
213 fout << action_prereqs_flag <<
'\n';
217 fout << num_actions <<
'\n';
220 action_unit->saveDiagnosisComponentActionUnitToFile(fout);
227 int action_prereqs_flag;
230 fin >> action_prereqs_flag;
231 if (action_prereqs_flag == 1) {
232 action_prereqs_flag =
true;
234 action_prereqs_flag =
false;
239 for ( i = 0 ; i < num_actions ; i++)
241 auto action_unit_ptr = make_unique<DiagnosisComponentActionUnit>();
242 action_unit_ptr->retrieveDiagnosisComponentActionUnitFromFile(fin);
243 this->
action_list.push_back(std::move(action_unit_ptr));
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void addRecord(std::string, int)
int getIDOfRecentGeneratedBranch()
void displayInformation(std::string strInformation)
SystemControl * getControlFromMap(std::string)
ControlPanelControl controls
bool getActionPrereqsEvaluated()
void clearDiagnosisActionUnit()
DiagnosisComponentActionUnit * getPriorityActionPtr()
virtual ~DiagnosisActionUnit()
void resetDiagnosisActionUnit()
DiagnosisComponentActionUnit * priority_action_ptr
void saveDiagnosisActionUnitToFile(std::ofstream &)
void setActionPrereqsEvaluated(bool)
void readDiagnosisActionUnitInfoFromFile(std::ifstream &)
std::vector< std::unique_ptr< DiagnosisComponentActionUnit > > action_list
std::string getDiagnosisName()
void setDiagnosisPriority(int)
void retreiveDiagnosisActionUnitFromFile(std::ifstream &)
void copyDiagnosisActionUnit(DiagnosisActionUnit &)
void setDiagnosisName(std::string)
std::string diagnosis_name
bool setPtrToHighPriorityAction(Operator &, ShortTermMemory &)
bool action_prereqs_evaluated
int getDiagnosisPriority()
MentalParameterValue * checkExistanceOfPerceivedParameterValue(std::string)
double getObservedParameterValue()
void setStateOfActivation(int)
void saveStateOfActivationToFile(std::ofstream &)
void retrieveStateOfActivationFromFile(std::ifstream &)
void copyStateOfActivation(StateOfActivation &)
void saveTimerToFile(std::ofstream &)
void retrieveTimerFromFile(std::ifstream &)
void setT_Minimum(double)
void setBeta_Weibull(double)
void setAlpha_Weibull(double)
bool log
Enable/disable rank-specific logging.
constexpr int ParameterControl
constexpr int InductiveDeductive
ControlPanel Indicator
Control room panel state.
CommandControlCenter Command_handler
Command/control dispatch.
AnalysisInfoContainer Aux_info
Analysis records.
BranchRecord Branch_center
Dynamic event tree state.