疾病诊断小型专家系统人工智能课程设计报告.doc
《疾病诊断小型专家系统人工智能课程设计报告.doc》由会员分享,可在线阅读,更多相关《疾病诊断小型专家系统人工智能课程设计报告.doc(22页珍藏版)》请在三一办公上搜索。
1、疾病诊断小型专家系统 人工智能课程设计报告 智能1001班 傅宝林 0909101217 2013.6.181内容提要 此系统采用专家系统的规则库-推理机技术原理,以医学诊断为背景,旨在作出一个简单的辅助诊断专家系统。系统的框架及界面采用的是Java语言,调用XML里保存的知识库和规则库。此小型的专家系统以肺结核、哮喘、食管癌、骨折等疾病的诊断为例,展示了一个小型专家系统是如何构建的。目录1内容提要22目的和意义43系统的主要内容和功能54设计流程及描述65课程设计体会216参考文献22 2目的和意义 (1)加深理解专家系统的结构及开发过程。(2)初步掌握知识获取的基本方法。(3)掌握产生式规
2、则知识表示方法及其编程实现方法。(4)初步掌握知识库的组建方法。3系统的主要内容和功能 系统主要以问答的形势询问病情症状,操作者只需要回答YES或NO。当一趟询问完成后,系统会基于以上询问得出的事实推理出最终的诊断结果。 功能见以下截图1、2. 图1 问询界面 图2 诊断结果界面 4设计流程及描述1) 需求分析 本设计需要用高级语言编写框架及调用外部的规则库与知识库。方便起见,用java语言编写框架,用XML文件保存。2) 知识获取与知识表示知识获取通过医学临床专业的同学及医学诊断专业书籍,确保专家系统的专家性。知识的表示采用的是xml语言,把事实与规则一条条保存。3) 知识库的组建 知识库分
3、事实库和规则库组建。疾病诊断因为有的病有交叉的症状,所以逻辑上,从症状到诊断的过程是对一颗二叉树的搜索,当问题回答的是YES时,就进行深度优先搜索,当回答NO时,就转到兄弟节点。对于无关的疾病,则回到根节点重新对下一颗子树进行搜索。得到一种疾病的确诊就是result,得到这个叶子节点前遍历过的节点组成了reasons.4) 推理机制选择/编制 采用的是问题引导式推理。在规则库里写的其实不是真正的规则。真正的规则蕴含在问题及前提里。为了不让“专家”问无用的问题,每个问题都是以某个问题的答案为前提的。这样组成了内部的因果关系,所以真正的推理规则只与某一趟提问的最后一个问题的答案得出的事实有关。5)
4、 程序清单package 专家系统_V2;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;impo
5、rt javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.LineBorder;public class MainFrame extends JFrame/* * 主界面类 * param args */public static void main(String args) MainFrame main = new MainFrame();main.myShow();private void myShow() exe = new Exe
6、cution();exe.init();this.setTitle(exe.expert_name+专家系统);this.setSize(380, 250);this.setDefaultCloseOperation(3);this.setResizable(false);this.setLocationRelativeTo(null);this.setLayout(new BorderLayout();JPanel jp_center = new JPanel();jp_center.setBackground(Color.white);jp_center.setPreferredSize(
7、new Dimension(380,250);jp_center.setLayout(null);jl = new JLabel();jl.setText(请回答下列问题:);jl.setFont(new Font(Font.DIALOG,Font.BOLD,25);jl.setForeground(Color.blue);jl.setBounds(10, 10, 200, 30);jta=new JTextArea();JScrollPane js=new JScrollPane(jta);jta.setEditable(false);jta.setBorder(new LineBorder
8、(Color.black);jta.setLineWrap(true);jta.setFont(new Font(Font.DIALOG,Font.BOLD,20);js.setBounds(20, 50, 330, 100);jb1 = new JButton(YES);jb1.setBounds(100, 170, 60, 30);jb1.addActionListener(l);jb2 = new JButton(NO);jb2.setBounds(200, 170, 60, 30);jb2.addActionListener(l);jp_center.add(jl);jp_center
9、.add(js);jp_center.add(jb1);jp_center.add(jb2);this.add(jp_center,BorderLayout.CENTER);problem=this.initProblem();this.setVisible(true);private Problem initProblem()for(int i=0;iexe.problems.size();i+)Problem problem = exe.problems.get(i);if(problem.getPremise()=null|problem.getPremise().isIstrue()i
10、f(problem.getPremise()!=null)problem.getPremise().setIstrue(false);jta.setText(problem.getContext();exe.problems.remove(problem);return problem;jb1.setEnabled(false);jb2.setEnabled(false);return null;private Execution exe;private JButton jb1,jb2;private JTextArea jta ;private JLabel jl;private Probl
11、em problem;private Action l = new Action();class Action implements ActionListenerpublic void actionPerformed(ActionEvent e) if(YES.equals(e.getActionCommand()if(null!=problem.getAnswer_YES()problem.getAnswer_YES().setIstrue(true);else if(NO.equals(e.getActionCommand()System.out.println(aaa);if(null!
12、=problem.getAnswer_NO()System.out.println(aaa);problem.getAnswer_NO().setIstrue(true);exe.allReasoning();problem=initProblem();if(problem=null)ArrayList facts=exe.start();String result=;for(int i=0,n=1;ifacts.size();i+)String des = facts.get(i).getDescribe();if(!null.equals(des)result+=i+1+.+des+n;n
13、+;jl.setText(推理结果如下:);jta.setText(result);jb1.setEnabled(false);jb2.setEnabled(false);return;package 专家系统_V2;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import .URLDecoder;import java.util.ArrayList;import java.util.HashMap;import javax.swing.JOptionPan
14、e;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class Execution public boolean in
15、it()try this.initXML(this.getPath(); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) this.exit(e.getMessage(); catch (IOException e) e.printStackTrace(); catch (NullPointerException e)this.exit(找不到相应的xml文件,请检查xml文件名是否符合规范);return false;private void initXML(String f
16、ile) throws ParserConfigurationException, SAXException, IOExceptionDocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dbf.newDocumentBuilder();Document doc=null;trydoc = builder.parse(new File(file);catch(Exception e)this.exit(e.getMessage();Element root = do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 疾病诊断 小型 专家系统 人工智能 课程设计 报告
链接地址:https://www.31ppt.com/p-2302484.html