22#include <boost/serialization/export.hpp>
31#include "../Branch/BranchExpectedParameterValue.h"
32#include "../Branch/BranchExpectedComponentState.h"
33#include "../Branch/BranchExpectedAlarmState.h"
34#include "../ReasonMachine/ReasonMachine.h"
35#include "../ReasonMachine/RMSerialization.h"
38#include <boost/serialization/access.hpp>
39#include <boost/serialization/base_object.hpp>
40#include <boost/archive/text_oarchive.hpp>
41#include <boost/archive/text_iarchive.hpp>
42#include <boost/archive/binary_oarchive.hpp>
43#include <boost/archive/binary_iarchive.hpp>
44#include <boost/serialization/unique_ptr.hpp>
55 std::unique_ptr<ReasonMachine>
m_RM;
140 template<
class Archive>
141 void serialize(Archive & ar,
const unsigned int version)
169 if constexpr (std::is_same_v<Archive, boost::archive::binary_oarchive>) {
171 }
else if constexpr (std::is_same_v<Archive, boost::archive::binary_iarchive>) {
180 if constexpr (std::is_same_v<Archive, boost::archive::binary_oarchive>) {
182 }
else if constexpr (std::is_same_v<Archive, boost::archive::binary_iarchive>) {
197 if constexpr (std::is_same_v<Archive, boost::archive::binary_oarchive>) {
198 static const bool op_prof = getenv(
"ADSIDAC_OPERATOR_PROFILE") !=
nullptr;
200 auto blob_bytes = [](
const auto& obj) {
201 std::ostringstream oss(std::ios::binary);
202 boost::archive::binary_oarchive oa(oss);
204 return oss.str().size();
206 std::ostringstream kb_oss(std::ios::binary);
209 if (
m_RM !=
nullptr) {
210 std::ostringstream rm_oss(std::ios::binary);
211 boost::archive::binary_oarchive rm_oa(rm_oss);
213 rm_bytes = rm_oss.str().size();
216 "[OP-PROF] op=%d memory=%zu kb_state=%zu scanned=%zu diag=%zu safety=%zu "
217 "events=%zu maneuver=%zu hfe=%zu rm=%zu\n",
226 bool has_rm = (
m_RM !=
nullptr);
230 if constexpr (Archive::is_saving::value) {
231 std::ostringstream rm_oss(std::ios::binary);
232 boost::archive::binary_oarchive rm_oa(rm_oss);
234 rm_data = rm_oss.str();
237 if constexpr (Archive::is_loading::value) {
238 m_RM = std::make_unique<ReasonMachine>();
239 std::istringstream rm_iss(rm_data, std::ios::binary);
240 boost::archive::binary_iarchive rm_ia(rm_iss);
243 }
else if constexpr (Archive::is_loading::value) {
Knowledge Base — long-term knowledge about plant systems, components, and procedures.
void state_save(boost::archive::binary_oarchive &ar) const
void state_load(boost::archive::binary_iarchive &ar)
void state_load(boost::archive::binary_iarchive &ar)
void state_save(boost::archive::binary_oarchive &ar) const
int getMentalProcedurePriorityThreshold()
void setInfoGatherModeBranchGenerated(bool)
bool getSkipInstinctiveResponseStep()
void setProcedureUseProbability(double)
double use_of_old_info_probability
void setSkipProcedureStep(bool)
int generateInfoGatherModeBranch()
void updateEvidenceForAllPSFs()
void retrieveOperatorFromFile(std::ifstream &)
std::unique_ptr< ReasonMachine > m_RM
void interruptLowPriorityMentalProcedures()
void serialize(Archive &ar, const unsigned int version)
bool getBlockTroubleshooting()
bool getSkipProcedureStep()
void setPauseActivity(bool)
void setAbnormalSignalThreshold(double)
bool getInfoGatherModeBranchGenerated()
void checkAndExecuteManeuverAction()
void setTypeOfOperator(int)
void copyOperatorFromRestartInfo(Operator &)
double nominal_communication_time
int mental_procedure_priority_threshold
void quantificationFilter()
double getSkipActionThreshold()
void clearOperatorFromRestartNodeInfoMultiProcessors()
void clearOperatorFinal()
void clearOperatorForRestart()
DiagnosisActionModule event_actions
bool new_branch_generated
void setSkipActionThreshold(double)
bool checkAndActivateHWKB()
bool block_troubleshooting
bool skip_instinctive_response_step
bool abnormal_signal_perceived
double procedure_use_probability
TimeConstrainedModule time_constrained_load
void copyOperatorFromRestartInfoMultiProcessor(Operator &)
void setScanQueueLimit(int)
double getUseOfOldInfoProbabiility()
double getNominalCommunicationTime()
double getTroubleshootingProbability()
double troubleshooting_probability
void ActiveFetchAlarmStateInfo(std::string, int)
ManeuverAction maneuver_action
double abnormal_signal_threshold
double getProcedureUseProbability()
void ActiveFetchSupportSystemStateInfo(std::string, int)
double action_time_multiplier
double getSkipNonResponseThreshold()
double skip_action_threshold
void setBlockProcedureUse(bool)
void setTroubleshootingProbability(double)
void interruptAllMentalProcedures()
void setMentalProcedurePriorityThreshold(int)
bool performAMentalProcedure(int, std::string, std::string)
bool getBlockProcedureUse()
void setActionTimeMultiplier(double)
double threshold_value_for_HWKB_confidence
void copyOperatorToRestartInfo(Operator &)
void checkAndResetProcedureStep(BranchProcedureStep *)
void PrintMessage(std::string)
bool performReasoningStrategy()
void ActiveFetchParameterValueInfo(std::string, int)
void seedKnowledgeBaseFromMaster()
double skip_non_response_threshold
bool getNewBranchGenerated()
double getActionTimeMultiplier()
void setUseOfOldInfoProbability(double)
void setAbnormalSignalPerceived(bool)
void setNominalCommunicationTime(double)
void setPauseMentalProcedure(bool)
InformationLoadModule information_load
void clearOperatorFromRestartInfo()
double getAbnormalSignalThreshold()
friend class boost::serialization::access
bool pause_mental_procedure
HumanFailureEventsBBN hfe_bbn
bool getAbnormalSignalPerceived()
void checkCompletenessOfSystemDecomposition(int)
void setNewBranchGenerated(bool)
EventSymptomMatrix diagnosis_matrix
KBScannedParameters scanned_indicators
void ActiveFetchComponentStateInfo(std::string, int)
bool getPauseMentalProcedure()
double checkItemRelevanceToCurrentDiagnosis(std::string)
double getThresholdValueForHWKBConfidence()
void setBlockTroubleshooting(bool)
void initiationForSimulation()
void setSkipNonResponseThreshold(double)
void setSkipInstinctiveResponseStep(bool)
void saveOperatorToFile(std::ofstream &)
bool info_gather_mode_branch_generated
void seedDiagnosisMatrixFromMaster()
void setThresholdValueForHWKBConfidence(double)