10#include "../Crew/OperatorDM.h"
11#include "../Global/SimulationContext.h"
37 float high_score, score;
40 update_time =
e->GetLastUpdateTime();
41 if (update_time == 0) {
46 score = (
r5pars_.timesno - update_time) /
e->m_desired_monitor_interval;
47 if (unit_pt == NULL) {
50 }
else if (score > high_score) {
56 if (high_score > 1.0) {
71 double time_consumption;
74 int operator_branch_num = 0;
83 if (operator_branch_num > 0) {
101 prompt =
"Send request to read: ";
110 prompt =
"Send request to read: ";
120 prompt =
"Send request to read: ";
138 prompt =
"Send request to read: ";
152 prompt =
"Send request to read: ";
171 string directory, str, str1, str_ID, file_name;
182 file_name +=
"KB_ODM_Routine_Monitor_List.txt";
186 file_name +=
"KB_OAT_Routine_Monitor_List.txt";
189 fin.open(file_name.c_str(), ios::in);
190 if (!fin.is_open()) {
191 err_mes =
"could not open file: " + file_name;
197 if (str.compare(
"Time_Cost_For_Reading_A_Parameter:") != 0) {
198 err_mes =
"Time_Cost_For_Reading_A_Parameter is missing in Routine_Monitor_List txt file";
205 if (str.compare(
"Time_Cost_For_Reading_A_Component_State:") != 0) {
206 err_mes =
"Time_Cost_For_Reading_A_Component_State is missing in Routine_Monitor_List txt file";
213 if (str.compare(
"Time_Cost_For_Reading_A_Support_System_State:") != 0) {
214 err_mes =
"Time_Cost_For_Reading_A_Support_System_State is missing in Routine_Monitor_List txt file";
221 if (str.compare(
"Time_Cost_For_Reading_A_Alarm:") != 0) {
222 err_mes =
"Time_Cost_For_Reading_A_Alarm is missing in Routine_Monitor_List txt file";
228 fin >> str >> n_Unit;
230 if (str.compare(
"Number_of_Monitor_Item") != 0) {
231 err_mes =
"Number_of_Monitor_Item is missing in Routine_Monitor_List txt file";
237 for (i = 0; i < n_Unit; i++) {
240 ID_name =
"Routine_Monitor_" + conv.str();
241 auto M_owned = std::make_unique<RoutineMonitorUnit>();
242 M_pt = M_owned.get();
243 M_pt->
m_ID = ID_name;
258 cout <<
r5pars_.timesno <<
" " << str <<
" in RoutineMonitor.cpp" <<
'\n';
259 ofstream fout(
"err messages.txt", ios::app);
260 fout <<
r5pars_.timesno <<
" " << str <<
'\n';
267 cout <<
"Time: " <<
r5pars_.timesno <<
":\n" << str <<
'\n';
270 ofstream fout(
"RMI.txt", ios::app);
271 fout <<
"\n" <<
"Time: " <<
r5pars_.timesno <<
":\n" << str <<
'\n';
287 auto monitor_owned = std::make_unique<RoutineMonitorUnit>();
288 monitor_pt = monitor_owned.get();
301 e->BuildConnectionsForThisRoutineMonitorUnit(_pt);
306 float highest_score, score;
316 update_time =
e->GetLastUpdateTime();
317 score = (
r5pars_.timesno - update_time) /
e->m_desired_monitor_interval;
318 if (score > highest_score) {
319 highest_score = score;
324 return highest_score;
Diagnostic reasoning engine — knowledge representation, mental model, and inference.
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void ReadAlarmIndication(double)
std::string m_alarm_indicator_name
std::string Control_Value_Indicator_ID
void ReadComponentStateIndication(double)
std::string Component_State_Indicator_ID
void ReadParameterRate(double)
std::string m_parameter_indicator_ID
std::string m_parameter_rate_indicator_ID
void ReadParameterValue(double)
void ReadSupportSystemStateIndication(double)
std::string Support_System_State_Indicator_ID
std::unique_ptr< ReasonMachine > m_RM
void WaitOneStepThereIsOneOrMoreOperatorBranches()
void AddConsumptedDeltaT(double)
void WriteAuxInfo(std::string str)
float m_routine_monitor_interval_multiplier
void ReadRoutineMonitorUnitInfoFromInputFile(std::ifstream &)
void CopyRMUinfoFromAnother(RoutineMonitorUnit *)
void PrintMessage(std::string)
void ErrorMessage(std::string)
int m_routine_monitor_Token
float GetTheLongestIntervalRatio()
void BuildConnectionsForRoutineMonitor(void *)
void ReadRoutineMonitorInforFromInputFile()
RoutineMonitorUnit * m_workon_unit_pt
virtual ~RoutineMonitor()
std::vector< std::unique_ptr< RoutineMonitorUnit > > m_monitor_list
bool m_read_value_or_rate
void CopyRoutineMonitorInfoFromAnother(RoutineMonitor *)
float GetaMonitorUnit11()
void WorkOnASelectedUnit12()
std::string getOATDirectory()
std::string getODMDirectory()
Scheduler SScheduler
Simulation scheduling, parses CLI options.
OperatorAT Action_Taker
Crew action execution model.
OperatorDM Decision_Maker
Crew decision-making model.
BranchRecord Branch_center
Dynamic event tree state.