基于专家系统的通信网全链路故障智能判读
2018-08-23李斌成马宇飞李培儒
李斌成,马宇飞,李培儒
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
0 引言
卫星通信网与地面有线网络相连接组成了卫星链路与有线链路混合的综合通信网络,综合通信网两个地球站数据终端的端到端全链路包含了地面链路环节和卫通链路环节,全链路告警故障在故障层次、环节等方面的综合判读一直都比较困难。卫星通信网络管理中已实现了对卫星地球站独立的系统设备状态及链路状态的实时监视,达到对设备及链路状态的单独监视。随着卫星通信网络的不断发展,卫星链路调度更加频繁,卫通网管理越来越复杂,对卫通网运行管理提出了更高的要求。尤其在通信网全链路告警故障自动判读方面提出智能化、自动化、综合化等要求,原来对系统设备、网络局限于独立设备的单个故障参数、独立链路的单个故障参数的管理控制已不能满足应用对卫通网自动化、综合化管控的要求。
为提高通信网全链路告警故障智能化、自动化判读水平,结合人工智能技术发展和CLIPS专家系统工具,通过构建卫通领域专家知识结构,设计基于CLIPS的通信网全链路告警故障自动判读专家系统,实现通信网全链路告警故障自动判读。
1 传统通信链路监视的局限
1.1 局限性及分析
通信网告警管理实现了对设备、卫星链路、地面有线链路等的独立告警管理,但存在综合化、自动化不足的局限,通信网全链路告警故障无法自动化判读。传统通信网链路告警故障判读的不足主要表现在以下方面:
① 范围不全,仅卫星通信段,未含地面段;
② 层次单一,仅监视Eb/N0,没有关联链路的故障自动判读;
③ 自动化不足,发生链路中断故障时,通常通过人工去判读;
④ 综合化不足,发生链路中断故障时,通常仅检查调制解调器接收Eb/N0性能,当中断时一般认为是发送功率不足引起,不会综合考虑链路多环节多种因素(收发支路设备故障、载波频谱异常、地面链路设备、连线故障等)。
传统通信链路告警故障的判读局限,是告警监视过程和通信链路告警的相互独立造成的,系统设计时没有仔细分析通信链路告警故障与链路背后关联的设备、频谱、地面链路环节等因素相关联,同时系统实现上也没有应用智能化手段,造成通信链路的告警故障判读无法实现自动、智能综合判读。同时由于多种调制解调设备解调门限不同,不同站上下行支路的链路组成性能也不同,也使传统管理方法很难实现对全链路故障的综合判读。
1.2 解决思路
为了解决通信网全链路告警故障管理自动化不足、综合化不足等局限,一种方法是通过故障建模并将其判读逻辑固化在软件中;另一种方法是引入人工智能技术,利用专家系统的智能化推理进行告警故障的自动判读。
第一种方法虽然一定程度上也可实现故障自动判读,但判读逻辑是固化的,扩展不便。第二种方法借助人工智能技术实现故障智能化判读,并可通过完善专家知识库改进判读效果。为提高通信网全链路告警故障判读智能化水平,设计了基于CLIPS专家系统的通信网全链路故障自动判读系统。
2 专家系统技术概述
2.1 专家系统组成原理
作为人工智能一个重要分支的专家系统(Expert System,ES)[1],一般认为专家系统就是应用于某一专门领域,由知识工程师通过知识获取手段,将领域专家解决特定领域的知识,采用某种知识表示方法编辑或自动生成某种特定表示形式存放在知识库中;然后用户通过人机接口输入信息、数据或命令,运用推理机构控制知识库及整个系统,能像专家一样解决困难的和复杂的实际问题的计算机(软件)系统[2-3]。专家系统结构如图1所示。
图1 专家系统结构
一个完整的专家系统由4个部分组成:知识库、推理机、知识获取部分和解释接口。其中知识库用来存放相关领域专家提供的专门知识;推理机的功能是根据一定的推理策略从知识库中选取有关知识,对用户提供的数据进行推理,直到得到相应的结论为止;知识获取过程可以看作是一类专业知识到知识库之间的转移过程;人机接口则完成输入输出的人性化[4]。
2.2 CLIPS专家系统工具
CLIPS是“C语言集成产生式系统(C Language Integrated Prodution System)”的简称。它是由NASA用C语言设计的用于开发基于规则的专家系统的专用工具[5-6]。CLIPS是一个通用的专家系统工具,有很强兼容性,可安装在任何 C 编译器上[7]。CLIPS平台的基本结构如图2所示。
图2 CLIPS平台的基本结构
CLIPS是用来开发基于规则的专家系统,主要包括以下4个基本组成部分:知识库(规则库)包含所有的规则,存储人类专家的知识和经验;事实表存储推理使用的事实集合;推理机将知识库中的规则前件和事实表进行匹配,并授予规则优先级,输出最高优先级规则的后件即结论;议程(agenda)存储知识库规则与事实表匹配成功的规则即已激活的规则。图2是最简单的 CLIPS 结构,一般还包括用户界面、解释机和知识获取机。
CLIPS基于事实驱动的正向链推理(从事实到结论的推理),即将事实表里的事实与知识库中每一条规则的前件部分进行匹配,匹配成功的多条规则放入议程表中,并授予每条规则优先级,执行结果就是输出议程表中优先级高的规则的后件。
2.3 CLIPS嵌入技术
现在使用CLIPS进行开发一般都是将 CLIPS嵌入到其他高级语言中实现,其中CLIPS与CC++语言的混合编程是最易于实现的,也是最可靠的[3]。CLIPS嵌入技术主要有2种:直接嵌入法和动态链接库(DLL)嵌入法[8-9]。
2.3.1 动态链接库嵌入
动态链接库的嵌入方式需要在网上下载相应的工具也可以自己编译,这些工具包括动态库文件clip.dll以及包装类CCLIPSWrap和说明文档。使用动态链接库嵌入法的开发流程如下:
① 初始化CLIPS动态库CLIPSInit();
② 清空CLIPS工作区CLIPSClear();
③ 加载规则文件CLIPSLoad();
④ 复位知识库CLIPSReset();
⑤ 加载事实表CLIPSLoadFacts();
⑥ 运行CLIPS推理CLIPSRun();
⑦ 退出CLIPS释放内存CLIPSExit()。
使用动态链接库嵌入法的代码和CLIPS源码耦合度低,对用户的要求相对较低,用户不用了解CLIPS相关内容,只需知道动态库提供的接口函数。
2.3.2 直接嵌入
直接嵌入法就是将CLIPS源码(除了main.c文件外)嵌入到开发的项目中,这种方法是最简单直接的。以直接嵌入方式开发项目时必须在工程文件中添加支持 CLIPS 的头文件 clips.h。直接嵌入法的开发流程如下:
① 将源码加入工程;
② 加入头文件声明;
③ 声明自定义函数;
④ 编写自定义函数;
⑤ 启动CLIPS。
直接嵌入法使工程代码与CLIPS源码的耦合度较高,不便于以后的维护和修改,同时对开发用户的要求高,需要用户对CLIPS有相当深入的理解。
上述2种 CLIPS嵌入方法各有千秋,本文采用动态链接库嵌入的方式来开发项目,将CLIPS内核嵌入到C++主程序中以快速实现仿真环境,专注于CLIPS工具的领域应用。
3 专家系统在告警判读中的应用
通过获取通信网全链路领域知识,并用CLIPS形式化表示知识结构,应用CLIPS工具对通信网全链路告警故障进行自动判读。
3.1 全链路故障判读知识获取
3.1.1 全链路故障分析
卫通网全链路指从源站主机到目的站主机的端到端链路,全链路含义不仅包括源站卫星调制解调设备到目的站卫星调制解调设备间的卫星通信链路,也包括源、目的站站内从数据终端到卫星调制解调设备的有线通信链路。通信网全链路是通信网拓扑的基本组成单位,网内全部链路的状态一起组成了通信网全网网络拓扑态势。
通信网全链路故障态势表现为源站主机到目的站主机的端到端链路中断或链路性能的降低,包括了地面有线链路的中断和卫星通信链路中断等环节,主要故障现象有“解调失锁”、“Eb/N0过低异常”和“地面链路中断”等。
造成卫通链路解调失锁有射频或中频设备故障(功放、低噪声放大器、变频器和调制解调器等)、调制发开关关闭、卫通链路载波消失或被干扰等原因。造成解调器Eb/N0过低的原因有发端信号发送功率过低、载波频谱被干扰等。地面有线链路中断的原因大致有路由器、交换机、主机等设备故障和设备间连线故障等几种。
3.1.2 故障树模型
通过综合分析、梳理形成图3所示的故障树模型。判定依据及和处置方法如表1所示。
图3 通信网全链路故障树模型
表1 故障判定依据及处理措施
序号故障类型故障现象处理措施1功放故障功放故障告警检修功放2变频器故障变频器故障告警检修变频器3低噪故障低噪故障告警检修低噪4调制解调故障调制解调器故障告警检修调制解调器5调制关闭解调失锁 and调制发开关关闭打开调制发开关6载波消失解调失锁 and频谱消失告警检查发站发支路连线7载波干扰(解调失锁or Eb/N0过低) and频谱干扰告警检查定位干扰源8发功率低Eb/N0过低 and调制发电平低于目标电平排除天气、日凌等因素,调整发端功率9主机故障Eb/N0正常 and主机交换机间链路中断 and 交换路由间链路正常检查主机及连线10交换机故障Eb/N0正常 and主机交换机间链路中断 and 交换路由间链路中断检查交换机及连线11路由器故障Eb/N0正常 and主机交换机间链路正常 and交换机路由间链路中断检查路由器及连线12路由广域端口连线故障Eb/N0正常 and 主机交换机间链路正常 and交换路由间链路正常检修路由器广域端口与调制解调器连线
3.1.3 故障判定树模型
故障树对系统可能的故障原因进行了分析,而判定引起故障具体原因则需要依据判定树进行。判定树又叫决策树,由结点和分枝组成[10,15]。结点分为根结点、判定结点和叶结点,其中判定结点代表一个具体的问题或判定,叶结点代表判定结果或答案。判定推理过程实际就是判定树的遍历过程,从根节点开始,直到搜索到问题的正确答案,找到相应的叶结点结束[11,16]。 本系统判定树模型如图4所示。
图4 通信网全链路故障判定树模型
3.2 知识库构建
3.2.1 知识表示
专家系统的优势就是通过处理专家提供的知识来解决现实问题。因而开发一个专家系统首先就是把专家的知识表示成推理机所能识别的形式。目前较常用的知识表示方法有 Petri 网、谓词逻辑、语义网络、产生式规则、框架等[12]。在CLIPS中知识的表达方式有产生式规则和框架两种[13]:
① 产生式规则
产生式规则即IF…THEN…的表达形式,如果IF部分满足则执行THEN之后的动作。
② 框架
框架(frame)是描述事物属性的一种数据结构。框架的知识表示形式是一种相互嵌套的结构,基本结构如下:
(<框架名> (<槽名 1> (<侧面名 1> (<值 1> …)…)…)
(<槽名 2> (<侧面名 2> (<值 2> …)…)…)
……)
框架结构具有模块化的特点,知识可扩充性强,适合表示复杂、层次明显的知识。
通信网全链路告警故障判读具有复杂性、多样性和层次性,评估知识是因果关系的产生式规则形式。通信网全链路告警故障现象事实、故障判读规则的前件事实和后件结论事实由框架事实来表示,即系统采用“框架+产生式规则”表示法来表示知识。在 CLIPS 中通过自定义模板deftemplate定义事实模板,通过自定义模板defrule定义推理规则,构建领域专家知识库。
规则构成了逻辑推理的主要依据,例如:
① Rule1:
功放故障告警
=>
功放故障
② Rule2:
变频器故障告警
=>
变频器故障
…
③ Rule9:
Eb/N0正常 and主机到交换机链路中断 and 交换机到路由器链路正常
=>
主机故障或主机连线故障
…
一般先定义模板,再定义事实结构,然后建立规则并引用事实进行推理。具体过程如下。
首先自定义3个模板结构分别用于创建故障现象、判读结果和处置措施3种事实。
(deftemplate fail-facts(slot phenomena))
(deftemplate eval-result(slot result) )
(deftemplate deal-means(slot means))
然后根据故障判定依据及处置措施编写规则文件。在CLIPS中规则通过defrule命令建立,其一般格式为:“(defrule
通信网全链路故障判读规则定义如下:
(defrule rule-1
(fail-facts(phenomena PA_Fault_Alert))
=>
(assert(eval-result(result PA_Fault))
(deal_means(means Inspect-PA)))
(defrule rule-2
(fail-facts(phenomenaConvertor_Fault_Alert))
=>
(assert(eval-result(result Convertor_Fault))
(deal_means(means Inspect-Convertor)))
……
(defrule rule-9
(and (fail-facts(phenomenaEbNo_Normal))
(fail-facts(phenomena HS2SW_Halt))
(fail-facts(phenomena SW2ROU_Normal)))
=>
(assert(eval-result(result HOST_Fault))
(deal_means(means Inspect-HostAndCable)))
……
上述规则文本保存在*.clp规则文件中,通过CLIPS工具的CLIPSLoad(
3.3 推理流程
专家系统中使用推理技术和控制策略进行推理[14]。本系统采用正向推理方法,将通信网全链路故障判读系统和链路各环节状态(现象)监视参数事实联系起来,由已知的链路故障现象推断出故障对象、原因及相应处置措施。
CLIPS专家系统工具内置强大的推理机,自动完成模式匹配、冲突消解、规则激活及执行。对用户而言只需根据以下流程依次完成:初始化、规则文件加载、故障事实输入、运行启动以及退出等简单操作。如果推理不成功没有得到确定的故障判定结果,说明知识库不完备,缺少相应的知识,需要对知识库进行完善。具体推理流程如图5所示。
图5 推理流程
3.4 CLIPS嵌入编程应用
实用的专家系统,除了要有较完备的知识库和灵活强大的推理功能外,还应具备强大的数据处理能力和友好的人机交互界面,而CLIPS的优势仅限于知识库构建和逻辑推理,因此需要和高级语言配合使用[11]。本文选择C++作为主体语言,采用动态链接库嵌入的方式将CLIPS专家系统工具集成在系统中,C++主体程序主要代码如下:
#include“clips.h”
CCLIPSWrap* theCLIPS;
theCLIPS=new CCLIPSWrap;//新建对象
theCLIPS->CLIPSInit();//初始化
theCLIPS->CLIPSLoad(
theCLIPS->CLIPSReset();//复位
theCLIPS->CLIPSAssert(
theCLIPS->CLIPSRun();//运行
theCLIPS->CLIPSExit();//退出
4 仿真实验结果与分析
通过对包含卫星网在内的通信网全链路建模,设计实现了基于CLIPS的通信全链路告警故障自动判读系统及仿真实验平台。如图6所示,平台由地面网络状态仿真软件、卫星站状态仿真软件、频谱监视仿真软件、基于CLIPS的告警故障自动判读系统等组成。
图6 仿真实验平台组成
仿真实验平台中地面网络状态仿真软件用于仿真地面链路部分(路由器、交换机、主机等)的状态,卫星站状态仿真软件用于仿真卫通地球站工作状态(即卫星通信链路部分),频谱监视仿真软件用于仿真频谱监视系统对卫星转发器载波频谱状态的监视。状态及频谱采集模块采集以上各仿真系统产生的链路和设备告警状态、卫星载波频谱等仿真数据,并转换为CLIPS自定义事实输入到CLIPS工具环境。在通信全链路出现故障时,系统依据构建的专家知识规则库对输入故障现象事实进行推理分析,实时自动判读出故障对象、原因及应采取的处置措施,通过人机界面通知管理人员。
通过全链路各部分仿真软件,仿真通信网全链路多种不同原因引起的故障情况,以验证基于CLIPS的全链路故障自动判读系统的判读效果。仿真的故障现象包括:
① 仿真地面链路设备的故障(路由器、交换机、主机);
② 仿真卫星地球站设备故障(功放、变频器、调制解调器等);
③ 仿真卫星载波频谱异常(载波频谱消失、频谱干扰);
④ 仿真Eb/N0低于解调门限阈值现象。
实验结果表明基于CLIPS的通信网全链路告警故障自动判读系统对于故障机理清楚、诊断规则明确的故障具有判读定位快、效率高的特点,而对于故障机理模糊、诊断知识缺乏的故障则判读困难。当多个故障同时出现时诊断准确性也会受到影响,故障自动判读专家系统的准确程度依赖专家知识的完善性,因此需要不断分析系统故障机理,改进领域专家知识库。
5 结束语
系统针对通信网全链路告警故障自动判读难题,为提高故障判读的的智能化自动化水平,对CLIPS专家系统工具在通信网全链路告警故障自动判读方面的应用进行了研究。通过分析建立了通信网全链路告警故障模型,利用CLIPS的deftemplate和defrule定义事实模板和规则,构建了知识库,实现了领域知识在CLIPS专家系统中的表示,设计实现了基于CLIPS的通信网全链路告警故障自动判读系统及其仿真验证平台。仿真结果表明,系统能够根据发生的多种故障现象智能、自动、准确地判读出故障对象、原因及应采取的处置措施,从而实现了通信网全链路告警故障智能自动判读的目的。