(matlab+gui+access)无损检测 推理机 专家系统

(matlab+gui+access)无损检测 推理机 专家系统

故障诊断的老师留了个作业,要求结合数据库用matlab做个基于案例的推理机。用到的主要就是如题目所示的matlab+Gui+access
然后自选的主题是无损检测方法。
在此过程中,学到了很多,和大家分享一下。

%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%

1、推理机

首先先介绍一下推理机的定义,和我们这个推理机的大致结构。
推理机,即通过已有案例对之后相似的条件推理它由相同的决定。就好比说现有案例下查到某种纤维结构复合材料的内部孔隙的检测用的是超声检测,然后有很多很多这样的例子就可以综合推断完全一样情况也用超声检测。
推理机的定义可以查询关键词CBR方法,即基于案例的推理。这是推理机的基础。

本文所述的推理机,就是对无损检测案例的选择,如图所示,可以通过填写一系列被检物品的信息,来对无损检测方法进行查找,此推理机涉及的无损检测方法有8个,包括涡流、渗漏、磁粉、超声、射线、渗透、红外、声阻。
在这里插入图片描述
从结构来说分为三个部分。首先是access数据库提供自己编写好的案例,和无损检测在航空维修领域的应用总结,构建了两个表格。可以简单理解为,表1是一个一个案例,一条就是一个案例;表二是常识,就是满足某种无损检测方法的必须条件。
然后是matlab实现推理机的推理功能和对表格的操作功能。因为是作业嘛,老师要求能对案例进行添加删除啥的,因此用matlab做了个连接access进行添删改查的小程序,下面也会对逻辑进行细说的。还有的就是和gui一起结合的推理部分。
最后一部分就是上图那个GUI,相当于对接用户的一个前台,你输入数据,程序也把结果反馈在上面,就很清晰高级。
下面就按着三部分细说一下推理机是如何一步步制作的。

2、access数据库

首先在access数据库中建立两张表,叫表一和表二。
表一是从各类论文资料一条一条整理出的案例,每一项都是填满的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200828210142968.png#pic_center在这里插入图片描述
然后表二是根据无损检测基本知识和每种不同无损检测方法的优缺点及适用性,结合无损检测在航空维修领域的应用总结得到表二的案例内容,具体如图所示。
在这里插入图片描述
构建完数据库的案例基础就可以开始搞程序了。
完整版的数据库和程序连着作业报告都会打成压缩包放在下载区。事实上,个人觉得文中截图的部分基本已经够用了。

3、matlab+access做成的添删改小程序

首先是那个添删改小程序。其最终实现思路如图。

在这里插入图片描述

具体的程序设计是这样的,首先让matlab和access连接。这部分的原理看的是下面这个网页,也就不多赘述了。就是写几行固定套路嘛
https://blog.csdn.net/liyanzhong/article/details/78549222?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158882350519195265905913%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57662%2522%257D&request_id=158882350519195265905913&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1
因为access里面有两个表,所以要选择是对哪个表进行操作。程序如下。
在这里插入图片描述
然后为了多次操作而不退出,设置了个大循环,如上面那个图里面的逻辑,只要不主动退出,就会反复问你要做啥操作。
然后为了更好的看表,我加了获取案例库行数的环节。这样输出的效果也会很好。比如

在这里插入图片描述
上图就是命令行输出的样子一个例子。效果很清晰。

功能1是添加程序,思路很简单就是一句SQL而已。前n行案例就会输出在命令行。

在这里插入图片描述
功能2是往access里添加,要麻烦一点,麻烦在于表里有15个参数orz。
在这里插入图片描述
然后功能3是删除案例。
在这里插入图片描述
功能4是修改案例,也是罗列所有参数。
在这里插入图片描述

最后是关闭数据库结束程序。
在这里插入图片描述
完整版程序会放在下载资源区。
但事实上基本能截图的就都截图了。

不是不想放程序,主要是csdn写博客放程序不能直接复制粘贴,好像很麻烦,我就直接截图了。
学习精神为要。

4、matlab+GUI

最后是推理机的主体部分,也就是matlab+gui的部分。
其中GUI的简易入门,是看下面这个网址这个作者的系列有(1)(2)(3)(4),按他的一些方法进行的gui画图构建,主要就还是靠设置和拖动,
https://blog.csdn.net/qq_35166974/article/details/87600622?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

然后我们默认你已经会制作gui后,做成的界面如图。

在这里插入图片描述
别忘了再每个下拉选项中进行设置,就好比缺陷类型有18种,在下拉选项中选择查看回调之后,就要相应输入进行对应的文字。如下几张图。下拉选项只对应1234,具体的看上面那个gui系列,那个还挺好玩的。

在这里插入图片描述
在这里插入图片描述
然后在每个填写选项的下拉框的回调都依次设置好数值后,在输出的那个文本框里,查看回调,开始写关键的推理机程序。
其主要思路和结构如图。
在这里插入图片描述

然后gui设计的环节就是结束了,现在就是在回调里进行程序编写。
要注意的是,把gui中输进来的信息放到一个数组里变成一条数据,这样便于之后的匹配和算相似度。一条数据就是一条案例嘛。
具体的代码实现如下,先是检查是否填全部分,一开始是默认置0的。
在这里插入图片描述
然后把表一和表二的内容倒进matlab成为元胞数组。
这一步后来我仔细思考了一下,其实可以不用都倒进来的。用到哪倒到哪也可的。
在这里插入图片描述
在这里插入图片描述
倒进来后,先把使用者在gui中输入进去的一条数据和表一进行匹配。计算相似度j。然后将表一案例库中相似度最高的案例的结论记录。
在这里插入图片描述
用表2相似结论的案例和输入案例的那一条进行匹配看是不是完全符合。理论上是必须完全符合才行,因为表2相当于是充要条件必须满足。然后思路就如上面的流程图。程序实现如下面代码。

在这里插入图片描述
如果满足,就开心的输出即可。
在这里插入图片描述
如果不满足,就把表1中当前结论的案例全部隐藏,相当于从别的结论下继续计算相似度第二高的案例。因为有循环嘛,所以隐藏后还是之前的流程就自动算相似度第二高的了。
但如果全都不满足,就当前结论全都不满足。表1直接被隐藏空了,也设置一个显示的结论,此情况不适用。
一般情况下,只有在表1案例库案例较少的情况时才会发生。表1的案例足够多就不会弹出。也可能是输入信息矛盾,比如你输入此零件又是金属件又是复合材料,也会不满足情况的。

在这里插入图片描述
然后主体程序就完成了。我还做了一些小彩蛋。比如一键清空填写,其实就是回到最初的样子同时把数据置0。还有就是在能生成结论的情况下,弹出新的gui按钮,把新的输入进去的案例加入到数据库。这几个小功能都很简单。
在这里插入图片描述
至此推理机就完成了。完整的程序+gui+access数据库会放到下载里面。

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值