七律长征课后题答案:一种焊接工艺专家系统的开发

来源:百度文库 编辑:中财网 时间:2024/04/29 15:37:40
文章作者: 文章期数:
姚河清 朱 玲 刘 波 李春燕
(河海大学 机电工程学院 江苏 常州 213012)
摘要:用Visual C++ 6.0作为开发工具,利用MFC DAO封装的CDaoTableDef、CDaoRecordset、CDaoQueryDef、CDaoDatabase等几个类、结合SQL数据库语言和Access数据库,完成了一种焊接工艺专家系统的开发。较好解决了知识库的浏览、添加、删除、修改等问题, 便于专家系统的完善与扩充,并以实例介绍了相关知识库的操作方法。本文有效的解决了焊接工艺专家系统开发的一个关键问题——知识库的规范管理。经测试表明,该系统设计完备,条理清楚,能较好的满足实际需要。
关键词:焊接工艺专家系统 ;Visual C++ ;事实库;规则库
Exploitation of Welding Procedure Expert System
Yao Heqing Zhu Ling Liu Bo Li Chunyan
(College of Mechanical & Electrical , Hohai University , Changzhou 210032 , China)
Abstract:A kind of welding procedure expert system has been finished ,using Visual C++6.0 as the developing method ,utilizing SQL、Access and the classes such as CDaoTableDef、CDaoRecordset、CDaoQueryDef、CDaoDatabase which are encapsulated in MFC DAO.The manipulation including browse、addition、deletion、correction of the knowledge base has been introduced to the expansion of the expert system .The relevant knowledge base operation of welding procedure expert system has been exampled with an instance. One of the most important problems — management of knowledge base has been solved in this paper.Testing results show that the expert system can meet the actual demands because the design and the arrangement are good.
Key words: welding procedure Expert system;Visual C++ ;fact base;rule base
引 言
专家系统是人工智能的一个分支,它可以利用大量专业知识以解决只有专家才能解决的问题。在焊接领域,由于焊接过程中焊接质量及焊接生产效率的影响因素较多,焊接工作条件与焊接过程工艺参数的关系难以量化,工艺参数的制定在很大程度上依赖于少数有经验的焊接专家,这些都影响到生产的效率和生产成本。将专家系统应用到焊接领域,充分利用专家积累的经验知识,模拟人的逻辑思维进行推理来解决实际问题,可大大降低对专家的依赖,减少人为失误,对提高生产效率、保证焊接质量十分有利。
专家系统自Feigenbaum E A研制的DENDRAL系统问世以来[1],发展迅速。欧共体设立的EuroWeld在1989年~1992年间开发了内容广泛的10余个焊接专家系统,国内的各大专院校也开发了近20余种专家系统。这些专家系统在解释机制、知识获取机制和不确定推理技术等方面都有较大的改进,但他们都沿袭了传统的专家系统的结构并采用专家系统开发工具开发,存在推理技术单调、自学习能力差、系统输入输出接口、图形处理能力以及与其它系统的交互能力较弱的缺点[2]。鉴于以上各点,本文采用Visual C++ 6.0为开发工具,结合ACCESS数据库和SQL语言,开发了本焊接工艺专家系统。本系统操作简单、可视化强、推理清晰、具有自学习能力,有利于知识库的维护和扩展。
1 系统总体功能的设计
本系统的设计目标是:开发出一套维护操作简单、具有自学习能力、可视化强、功能完善的焊接工艺专家系统。根据设计目标要求,设计了如图1所示的系统结构。本焊接工艺专家系统采用模块设计,各功能模块彼此独立,可以单独运行。主要包括焊接工艺设计模块、焊材用量及成本核算模块、知识库管理模块、通讯模块和帮助模块。
图1 焊接工艺专家系统结构示意图
焊接工艺设计模块主要完成焊接规范参数的获得。当用户给出焊接母材的相关信息,如:母材类型、母材牌号、母材厚度,选取焊接质量以后,系统出现提示窗口,提示用户选择焊接方法、背面保护措施、焊丝类型、接头类型、工艺措施、焊丝牌号。根据这些相关的前提条件,系统做出推理,得到焊丝直径、坡口类型、焊接规范参数等工艺参数。系统的自学习部分也包括在其中,当碰到新的焊接参数无法进行推理时,则弹出对话框,把已满足的条件作为前提,不满足的条件作为新的参数,引导用户完成新规则的添加。
焊材用量及成本估算模块主要完成焊接单条焊缝所需成本的估算。将工艺设计模块推理得出的焊接规范参数(焊接电流、焊接电压、焊接速度等)作为估算的起始条件,结合相关的系数(如:焊机效率、焊材利用率、损失系数、药皮重量系数等)计算出焊接单条焊缝所需成本。
知识库管理模块主要完成推理所需知识的添加、修改、删除等操作。用户可以输入操作密码登陆到该模块,对知识库操作。该模块是本文论述的重点。
通讯模块主要完成该专家系统和焊接自动控制系统之间的数据传输。通过串行口将数据传给自动焊接控制器,控制相关设备执行由专家系统给出的焊接参数。
帮助模块主要完成本焊接专家系统的使用指导,用户可以通过查看帮助,进一步了解本系统的使用方法。
2 开发工具的选择
专家系统的开发环境可以采用传统的人工智能专用语言(如Lisp、Prolog等),但由于这些语言在时空开销、运行效率、移植性、过程性、实现方便性等方面受到局限,很多情况下难以满足实际应用的需要。而采用面向对象技术的C++语言,由于其计算和字符处理能力更强,可移植性好,程序代码优化,开发效率高,更接近人的思维活动,已发展成为主流的程序设计语言,被广泛应用于系统程序设计及系统软件开发等方面[3]。在本文设计的焊接工艺专家系统中,采用Visual C++6.0作为开发工具。利用MFC DAO封装的几个类,如:CDaoTableDef、CDaoRecordset、CDaoQueryDef、CDaoDatabase[4]、结合SQL数据库语言和Access数据库,开发出该焊接工艺专家系统。
3 知识库管理模块功能及操作方法介绍
3.1 字典数据库
字典数据库中存放的是规则中的基本定义和说明,也就是我们通常所说的事实。在添加规则之前必须完成字典数据库中事实的添加。事实库中的基本事实采用一阶名词方法来表示。表示基本事实的事实号、关系字、名词和数据依次对应与数据库中数据表的各个字段。
(a)(b)图2 事实库操作界面(a)事实库编辑操作窗口(b)字典数据库显示窗口
如:添加一条事实,母材厚度为2.1~3.3cm。在字典数据库中点击添加按钮,则在出现的事实库编辑对话框(a)中,输入与名词,关系字,最大值,最小值相对应的值,点击确定按钮,即完成了一条事实的添加,自动添加事实号为HD46,如图2(b)所示。通过上下移动滚动条,可以查看字典数据库中的所有事实。在(b)图中可以看见,用户已经完成了所举事实的添加。
3.2 规则数据库
规则数据库可以实现规则的添加、删除、修改和浏览功能。本焊接工艺专家系统的规则采用产生式规则表示法,其基本形式为:
IF(触发事实1)……(触发事实n)THEN(结论事实1)……(结论事实n)。
如:如果焊接厚度在5.6~8.5mm之间,采用垫板,平焊位置焊接,则采用的焊接电流为180~250A。可表示为:
,&ISA[POSITION,{flat}]>,,。其中,RULE1,即规则号是规则在规则库中的序号[5][6]。
为了提高本焊接工艺专家系统的搜索效率,系统利用了分解技术,按照接头形式把焊接工艺实例分成三大区间,分别对应为:规则库1-对接接头、规则库2-角接接头、规则库3-T型接头。在不同的规则库中点击添加按钮所添加的规则将会被添加到规则库对应的数据库表中。
如:向系统规则库2中添加规则,用以完成低碳钢CO2焊、角接接头、母材厚度为2.1~3.3cm的工艺设计。如图3所示:其中,子条件和结论中的事实号及对应解释,都是先前在字典数据库中添加的事实。
用户必须先选择母材类型,焊接方法,接头形式,以确定该规则添加进哪一个规则库中。然后,输入子条件和结论的个数。子条件和结论都由名词、事实号及对应解释组合框组成。名词和事实号及对应解释组合框中事先插入了在事实编辑框中编辑的事实供用户选择。在事实编辑框中添加的事实,会根据名词的不同,关联出现在事实号及对应解释组合框中。即在事实号及对应解释组合框中的事实是对应于该名词的事实库中的所有事实。在(a)图
(a)
(b)图3 规则库操作界面(a)创建规则操作窗口;(b)规则库浏览窗口中显示的就是3、1所述操作所添加的事实。在规则库浏览窗口中,通过点击上一条、下一条、第一条、最后一条按钮,用户可以浏览不同规则库中的规则。如(b)图所示的就是刚刚添加的一条规则。
规则的条件和结论分别放在规则前件和规则后件数据库表中,通过同一个规则名相联系。用户点击确定子条件和确定结论按钮,所添加的子条件和结论会用同一个规则名添加到相应的规则前件、后件数据库表中。若子条件的个数超过1,在添加子条件的时候点击确定子条件按钮,系统会提示:“你设定的子条件还没有输入完毕,请继续!”同样,若结论的个数超过1,添加的结论未达到输入的结论个数时,系统同样会提示,直到添加完成为止。这样,用户可以在系统的提示下完成子条件和结论的添加。
下面给出点击“确定子条件”按钮时的运行程序:
void CCreatRuleDlg::OnBUTTONziCondition() //按下了确定子条件按钮
{
//--完成数据编码----------------------------------------------------------------------------
int t=m_preFactID.Find(‘*‘);
int tt=m_preFactID.GetLength();
CString factID=m_preFactID.Left(t);
CString explain=m_preFactID.Right(tt-t-1);
//--加入相应规则库--------------------------------------------------------------------------
if(m_intertype=="角接接头")
{
if(IsntGetRuleName)//取得规则号
{
char m_str2[5]="";
m_strrulenumber="R";
numofrule=m_weldprocess.getrulenumber(1)+1;
m_weldprocess.setrulenumber(numofrule,1);
itoa(numofrule,m_str2,10);
m_strrulenumber+=m_str2;//规则数自动叠加
IsntGetRuleName=FALSE;
}
if(!m_preset.IsOpen())//加入,打开规则前件数据库
m_preset.Open();
m_preset.AddNew();//添加一条记录
m_preset.m_RuleName=m_strrulenumber;//规则名
m_preset.m_Fact_ID=factID; //事实号
m_preset.m_explain=explain;//解释
m_preset.m_active=0; //标示使用情况
m_preset.Update();//更新保存记录集
m_preset.Close();//关闭记录集
}
numofcondition++;//输入的子条件数加1
IsHaveConditionIn=TRUE;
if((numofcondition==m_conditionnumber)&&(m_conditionnumber!=0))//设定的子条件数和输入的子条件数的个数相等
{
MessageBox("你预定的所有子条件已经成功加入数据库!","提示");
IsAllConditionIn=TRUE;
}
else
MessageBox("你设定的子条件还没有输入完毕,请继续!","提示");
}
程序运行完毕,即完成了添加事实到规则前件数据库中的操作。
4 解释推理模块
解释推理模块是焊接工艺设计中的重要组成部分。按推理的方向可把推理分为正向推理、反向推理和混合推理。本系统采用正向推理,根据焊接母材的类型、牌号、厚度,结合相应的焊接方法、焊接位置、背面保护措施、焊丝类型、接头类型、焊丝牌号等,分层次按步推理。推理机一边对照工作存储条件和规则的条件部分,一边作推理,也说是说向数据库进行存取动作。用户只需通过选择菜单选项与用户接口打交道。无须了解工作系统原理。
5 结 论
(1)利用Visual C++6.0中封装的类,对系统进行开发,并以对象的方式调用。结合简单实用的ACCESS数据库、通过MFC DAO访问数据库,以及SQL语言作为开发工具,完成了焊接工艺专家系统的开发。
(2)针对焊接工艺专家系统中的关键问题——知识库的管理,引入一阶名词表示法和产生式规则,成功的建立了知识库的管理模块。通过实际的操作可以看到事实库、规则库的添加、删除、修改等基本操作界面非常友好、直观,用户只需按照提示,即可完成相关操作。
(3)对规则库的规则按接头形式的不同进行细分,便于知识库的管理。加上本系统具有的较强的自学习能力,有利于新材料、新结构出现以后的系统维护和知识的扩展、更新。
本专家系统针对工程机械及相关行业的金属结构焊接应用,实现了一般焊接工艺的专家系统设计,在湖南“三一重工”、“山河智能”等大中型工程机械企业试用,得到了较好的工作效果。
参考文献
[1] Bruce G B, Edward H S.Rule-bases expert systems :The MYCIN experiments of the Stanford heuristic programming project[R]. Addison-Wesley ,New York,1985.
[2] 吕 波,姚伟力 等. 压力容器焊接专家系统设计与实现 . 焊接学报, 第23卷 第2期, 2002-04
[3] 程慧霞 等. 用C++ 建造专家系统 .电子工业出版社,1996 1~8.
[4] 求是科技编著. Visual C++ 6.0数据库开发技术与工程实践 . 人民邮电出版社: 100~125
[5] 王运东. 熔化焊机器人焊接工艺专家系统的开发. 河海大学硕士学位论文: 9~16
[6] 石运伟 等. 焊接工艺在线规划专家系统 . 机器人, 第20卷, 第1期, 1998-01
( 《现代焊接》2005年NO.5,插图略)