版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工业互联网预测性维护—专家系统2023年10月专家系统介绍将专家的知识和经验以规则的形式表示,然后利用推理机制对这些规则进行推理和推断,从而模拟专家的决策过程。专家系统通常由知识库、推理引擎和用户接口等组成。专家系统介绍在专家系统中,知识库存储了专家的领域知识和经验,以规则、事实、关系等形式表示。推理引擎则负责根据知识库中的规则和推理机制进行推理和推断,以回答用户的问题或解决特定的问题。用户接口用于与用户进行交互,接收用户的输入并提供系统的输出结果。MYCIN是由美国斯坦福大学研制的用于细菌感染患者诊断和治疗的专家系统。MYCIN知识库有二百多条规则,可识别51种病菌,正确处理23种抗生素。MYCIN系统的设计目标有三个:①在临床上提出有用的建议;②在需要时针对决策进行说明解释;③从行业专家处直接获取行业知识。专家系统与预测性维护专家系统旨在模拟专家的决策过程并提供专业知识和建议。它利用专家的领域知识和经验,通过规则、推理和推断等方法来解决特定领域的问题。在维护领域,专家系统可以用于故障诊断、故障排除、维护计划制定等方面,根据已有的知识和规则来提供维护决策的支持。预测性维护是一种维护策略,旨在通过监测和分析设备或系统的状态和性能数据,预测可能的故障或损坏,并采取相应的维护措施,以在故障发生之前进行维护和修复。预测性维护利用数据分析、统计建模、机器学习等技术,基于历史数据和模型来预测设备或系统未来的状态变化和故障概率。专家系统和预测性维护可以结合使用,以提供更准确和有效的维护决策。专家系统可以集成预测性维护的模型和算法,利用预测结果和领域专家的知识来制定维护计划和策略。例如,专家系统可以根据设备的预测故障概率和重要性,结合专家知识和规则,为每个设备制定相应的维护计划,以最大程度地提高设备的可靠性和生命周期效益。专家系统实现——知识库知识库建设:rules=[{'condition':{'input':'vibration','operator':'>','value':0.5},'action':'进行设备维修'},{'condition':{'input':'temperature','operator':'>','value':80},'action':'降低设备负载'},{'condition':{'input':'pressure','operator':'<','value':30},'action':'增加设备润滑'},#可以添加更多的规则]在上述示例中,规则库包含了三个规则。每个规则都有一个条件和一个动作。第一条规则的条件是振动(vibration)大于0.5,如果条件满足,则执行动作"进行设备维修"。第二条规则的条件是温度(temperature)大于80,如果条件满足,则执行动作"降低设备负载"。第三条规则的条件是压力(pressure)小于30,如果条件满足,则执行动作"增加设备润滑"。专家系统实现——匹配知识库规则#规则匹配和推理defexpert_system(input_data,rule_set):forruleinrule_set:condition=rule['condition']ifcondition['operator']=='>':ifinput_data[condition['input']]>condition['value']:returnrule['action']elifcondition['operator']=='<':ifinput_data[condition['input']]<condition['value']:returnrule['action']elifcondition['operator']=='==':ifinput_data[condition['input']]==condition['value']:returnrule['action']return'无匹配规则’在Python中,可以使用关键字def来定义一个函数。函数定义的一般语法如下:def函数名(参数1,参数2,...):#函数体,执行相应的操作
#可以包含多行代码
#可以使用参数进行计算和处理
return返回值示例:defsum_numbers(a,b):result=a+breturnresult在上述示例中,我们定义了一个名为sum_numbers的函数,它接受两个参数a和b,并返回它们的和。函数体中的代码计算了a和b的和,并将结果存储在result变量中,然后使用return语句返回了结果。定义函数后,我们可以通过函数名和参数来调用函数,并使用返回的结果进行后续操作。#调用函数,并将返回值赋给变量result=sum_numbers(3,4)#打印函数的返回结果print(result)#输出:7专家系统实现——完整代码#定义规则库
rules=[{'condition':{'input':'vibration','operator':'>','value':0.5},
'action':'进行设备维修’
},{'condition':{'input':'temperature','operator':'>','value':80},
'action':'降低设备负载'
},{'condition':{'input':'pressure','operator':'<','value':30},'action':'增加设备润滑'
},#可以添加更多的规则
]#规则匹配和推理defexpert_system(input_data,rule_set):forruleinrule_set:condition=rule['condition']ifcondition['operator']=='>':ifinput_data[condition['input']]>condition['value']:returnrule['action']elifcondition['operator']=='<':ifinput_data[condition['input']]<condition['value']:returnrule['action']elifcondition['operator']=='==':ifinput_data[condition['input']]==condition['value']:returnrule['action']return'无匹配规则'#用户输入user_input={'vibration':0.6,'temperature':85,'pressure':25}
#运行专家系统result=expert_system(user_input,rules)print('建议:',result)专家系统实现——代码解读#定义规则库
rules=[{'condition':{'input':'vibration','operator':'>','value':0.5},
'action':'进行设备维修’
},{'condition':{'input':'temperature','operator':'>','value':80},
'action':'降低设备负载'
},{'condition':{'input':'pressure','operator':'<','value':30},'action':'增加设备润滑'
},#可以添加更多的规则
]专家系统实现——代码解读在进行工业互联网预测性维护时,专家系统的规则通常是比较复杂的。因为设备的故障的原因比较复杂,表现形式也多种多样,我们往往需要用多种指标共同作用来判断设备是否真正存在故障。因此,我们需要通过经验积累,提炼出可以有效预测故障的规则,形成知识库。知识库更新:设备状态分为“运行正常”和“运行异常”。当设备状态为“运行正常”时,无需执行操作建议,返回“无操作建议”。当设备状态为“运行异常”时,需要进一步判定,当温度大于80°时,需要降低设备负载;当压力大于30时,需要增加设备润滑只有当振动大>0.5、温度>80和压力>30同时出现时,才进行设备检修。专家系统实现——代码更新规则代码:importnumpyasnp#Definetheexpertsystem'sknowledgebaseknowledge_base={"running_normal":{"recommendation":"无操作建议"},"running_abnormal":{"recommendation":"设备维护"},"vibration_greater_than_0.5":{"recommendation":"增加设备润滑"},"temperature_greater_than_80":{"recommendation":"降低设备负载"},"pressure_greater_than_30":{"recommendation":"设备维护"}}#Definetheexpertsystem'sinferenceenginedefinfer(input_values):#Extracttheinputvaluesvibration=input_values["vibration"]temperature=input_values["temperature"]pressure=input_values["pressure"]#Determinetherunningstateifvibration>0.5andtemperature>80andpressure>30:running_state="running_abnormal"elifvibration>0.5andtemperature<=80andpressure<=30:running_state="vibration_greater_than_0.5"elifvibration<=0.5andtemperature>80andpressure<=30:running_state="temperature_greater_than_80"else:running_state="running_normal"#Determinetherecommendationrecommendation=knowledge_base[running_state]["recommendation"]returnrecommendationinput_values={'vibration':float(input("请输入振动值:")),'temperature':float(input("请输入温度值:")),'pressure':float(input("请输入压力值:"))}recommendation=infer(input_values)print(recommendation)算法模型的分类这只是一种常见的分类方式,实际上还有其他类型的算法模型,如聚类算法、降维算法、推荐算法等。此外,有些算法模型可以同时用于分类和回归任务,如神经网络模型。算法的选择取决于具体的问题和数据特征。回归算法与预测一元线性回归多项式回归
因此,我们可以用回归算法进行预测:step1:建立模型step2:将数据分为训练集,测试集step3:用训练集对模型进行训练Step4:用测试集验证模型效果Step5:对新数据进行预测预测算法介绍在工业维护场景中,可以使用多种算法来进行预测和故障检测。机器学习算法:①逻辑回归(LogisticRegression):用于二分类问题,可以预测设备是否会发生故障。②决策树(DecisionTrees):可以用于故障原因分析和设备维护决策。③随机森林(RandomForest):基于多个决策树的集成算法,可以用于故障检测和设备维护优化。④支持向量机(SupportVectorMachines):用于分类和回归问题,可以用于预测设备状态和故障概率。⑤神经网络(NeuralNetworks):可以用于复杂的预测和故障检测任务,如循环神经网络(RNN)和卷积神经网络(CNN)。预测算法介绍2.时间序列分析算法:①自回归移动平均模型(ARIMA):用于对时间序列数据进行建模和预测,适用于设备故障时间序列数据分析。②季节性分解(SeasonalDecompositionofTimeSeries,STL):用于分解时间序列数据的趋势、季节性和残差成分,帮助发现异常和故障模式。③长短期记忆网络(LongShort-TermMemory,LSTM):一种适用于时间序列数据的循环神经网络,可以用于预测设备故障和异常检测。预测算法介绍3.异常检测算法:离群点检测(OutlierDetection):用于识别与正常设备行为不符的异常观测值。高斯混合模型(GaussianMixtureModels,GMM):用于建模设备数据分布,发现异常行为。孤立森林(IsolationForest):一种快速的异常检测算法,适用于大规模数据集。预测算法介绍——神经网络简介神经网络是一种人工智能方法,用于教计算机以受人脑启发的方式处理数据。这是一种机器学习过程,称为深度学习,它使用类似于人脑的分层结构中的互连节点或神经元。它可以创建自适应系统,计算机使用该系统来从错误中进行学习并不断改进。因此,人工神经网络可以尝试解决复杂的问题,例如更准确地总结文档或人脸识别。预测算法介绍——神经网络神经网络是一种人工智能方法,用于教计算机以受人脑启发的方式处理数据。这是一种机器学习过程,称为深度学习,它使用类似于人脑的分层结构中的互连节点或神经元。它可以创建自适应系统,计算机使用该系统来从错误中进行学习并不断改进。因此,人工神经网络可以尝试解决复杂的问题,例如更准确地总结文档或人脸识别。isna函数NaN即NotANumber,在Python中通常用来表示空值,或者除0错误。NaN的判断常用isna函数,isna函数是pandas库中的一个函数,因此其用法为:pandas.isna(obj)obj:要检查是否为空或缺少值的对象。isna函数使用示例isna().sum()在数组中,isna().sum()用来统计某个数组的NaN数量在Dataframe中,isna().sum()用来统计每一列的NaN数量对上一页的示例使用sum():空值的处理在用python处理数据时,我们通常会遇到数据不完整的情况,比如有空值的时候,我们想要删除控制所在的行或列,或者是我们给空值设置为某一个值。这时候就可以用dropna和fillna两个函数来实现空值的处理。空值的处理-dropna()dropna(axis,how,thresh,subset,inplace)规则代码:importnumpyasnp#Definetheexpertsystem'sknowledgebaseknowledge_base={"running_normal":{"recommendation":"无操作建议"},"running_abnormal":{"recommendation":"设备维护"},"vibration_greater_than_0.5":{"recommendation":"增加设备润滑"},"temperature_greater_than_80":{"recommendation":"降低设备负载"},"pressure_greater_than_30":{"recommendation":"设备维护"}}#Definetheexpertsystem'sinferenceenginedefinfer(input_values):#Extracttheinputvaluesvibration=input_values["vibration"]temperature=input_values["temperature"]pressure=input_values["pressure"]#Determinetherunningstateifvibration>0.5andtemperature>80andpressure>30:running_state="running_abnormal"elifvibration>0.5andtemperature<=80andpressure<=30:running_state="vibration_greater_than_0.5"elifvibration<=0.5andtemperature>80andpressure<=30:running_state="temperature_greater_than_80"else:running_state="running_normal"#Determinetherecommendationrecommendation=knowledge_base[running_state]["recommendation"]returnrecommendationinput_values={'vibration':float(input("请输入振动值:")),'temperature':float(input("请输入温度值:")),'pressure':float(input("请输入压力值:"))}recommendation=infer(input_values)print(recommendation)空值的处理-dropna()示例importnumpyasnpimportpandasaspddataSet=pd.DataFrame(np.arange(12).reshape(4,3),index=[0,1,2,3],columns=['a','b','c'])dataSet.iloc[1,[1]]=np.nandataSet.iloc[2,[1,2]]=np.nanprint(dataSet)空值的处理-dropna()示例空值的处理-dropna()示例调用函数dataSet.dropna(axis=1),其他参数默认,删除空值nan所在的列。空值的处理-dropna()示例调用函数dataSet.dropna(axis=1,how='all'),我们会删除整列都是空值的=列,但是我们的数据中,没有一列都为空值nan的列,所以,结果还是原数据的结果,没有改变。空值的处理-dropna()示例调用函数dataSet.dropna(axis=1,thresh=3),意思是我每一列的非空的值的数量只要大于等于3我就保留,否则删除这一列。因为原数据中,b这一列的非空值的数量为2,并不大于3,所以要删除b这一列。空值的处理-dropna()示例调用函数dataSet.dropna(axis=1,subset=[1]),如果axis=0,表示如果指定行x中有空值,则删除所在的列;如果axis=1,表示如果指定列x有空值,则删除空值所在的行。空值的处理-dropna()示例调用函数dataSet.dropna(inplace=True),参数为True时,表明是在原数据上操作的,没有原数据的副本,上面调用的那些函数的参数inplace都是默认值False,在调用上面那些函数之后,可以打印输出一下dataSet这个原数据,他并没用改变。如果inplace=True的话,则原数据也改变了。空值的处理-fillna()fillna(axis,mthod,limit,inplace)空值的处理-fillna()示例继续使用前面的例子。调用函数dataSet.fillna(100),如果不指定任何参数的时候,可以用一个数值来代替数据中的所有空值nan。如下如所示空值的处理-fillna()示例通过字典来将指定的地方的空值改为我们想要设置的值。空值的处理-fillna()示例调用method参数进行前值填充或后值填充,在没有声明axis情况下,axis默认为0空值的处理-fillna()示例后值填充示例如下。这里的method等于bfill,这里没有声明axis,则axis默认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 声波定位仪器产品供应链分析
- 箭筒套体育器材项目营销计划书
- 便携式婴儿摇床产业链招商引资的调研报告
- 书籍装订行业市场调研分析报告
- 放大设备摄影产品供应链分析
- 画框挂杆项目运营指导方案
- 坚果钳产业链招商引资的调研报告
- 化妆粉产品供应链分析
- 咖啡杯产业链招商引资的调研报告
- 玩具滑板车市场分析及投资价值研究报告
- 品管圈QCC成果汇报提高母乳喂养成功率课件
- 沪科版八年级数学(上)期中考试基础知识总结
- 碳青霉烯肠杆菌预防与控制标准(WST826-2023)考核试题及答案
- 《声音》(单元作业设计)科学教科版四年级上册
- 学校保安服务质量评价表
- 小学科学实验室仪器设备增补说明
- GB/T 10000-2023中国成年人人体尺寸
- 资格评审表(招投标专用)
- 英语颜色词语与心理情绪研究性学习展示
- 致青年教师读后感教师读书心得 读致青年教师读书交流(三篇)
- VMware SRM方案介绍专业知识
评论
0/150
提交评论