欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    疾病诊断小型专家系统人工智能课程设计报告.docx

    • 资源ID:24606399       资源大小:50.45KB        全文页数:27页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    疾病诊断小型专家系统人工智能课程设计报告.docx

    1、疾病诊断小型专家系统人工智能课程设计报告疾病诊断小型专家系统 人工智能课程设计报告 智能1001班 傅宝林 0909101217 2013.6.181内容提要 此系统采用专家系统的规则库-推理机技术原理,以医学诊断为背景,旨在作出一个简单的辅助诊断专家系统。系统的框架及界面采用的是Java语言,调用XML里保存的知识库和规则库。此小型的专家系统以肺结核、哮喘、食管癌、骨折等疾病的诊断为例,展示了一个小型专家系统是如何构建的。1内容提要22目的和意义43系统的主要内容和功能54设计流程及描述65课程设计体会216参考文献22 2目的和意义 (1)加深理解专家系统的结构及开发过程。(2)初步掌握知

    2、识获取的基本方法。(3)掌握产生式规则知识表示方法及其编程实现方法。(4)初步掌握知识库的组建方法。3系统的主要内容和功能 系统主要以问答的形势询问病情症状,操作者只需要回答YES或NO。当一趟询问完成后,系统会基于以上询问得出的事实推理出最终的诊断结果。 功能见以下截图1、2. 图1 问询界面 图2 诊断结果界面 4设计流程及描述1)需求分析 本设计需要用高级语言编写框架及调用外部的规则库与知识库。方便起见,用java语言编写框架,用XML文件保存。2)知识获取与知识表示知识获取通过医学临床专业的同学及医学诊断专业书籍,确保专家系统的专家性。知识的表示采用的是xml语言,把事实与规则一条条保

    3、存。3)知识库的组建 知识库分事实库和规则库组建。疾病诊断因为有的病有交叉的症状,所以逻辑上,从症状到诊断的过程是对一颗二叉树的搜索,当问题回答的是YES时,就进行深度优先搜索,当回答NO时,就转到兄弟节点。对于无关的疾病,则回到根节点重新对下一颗子树进行搜索。得到一种疾病的确诊就是result,得到这个叶子节点前遍历过的节点组成了reasons.4)推理机制选择/编制 采用的是问题引导式推理。在规则库里写的其实不是真正的规则。真正的规则蕴含在问题及前提里。为了不让“专家”问无用的问题,每个问题都是以某个问题的答案为前提的。这样组成了内部的因果关系,所以真正的推理规则只与某一趟提问的最后一个问

    4、题的答案得出的事实有关。5)程序清单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.swin

    5、g.JLabel;import 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 mySho

    6、w() exe = new Execution(); 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);

    7、jp_center.setPreferredSize(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

    8、(false); jta.setBorder(new LineBorder(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.ad

    9、dActionListener(l); jp_center.add(jl); jp_center.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(p

    10、roblem.getPremise()=null|problem.getPremise().isIstrue() if(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 JBu

    11、tton jb1,jb2; private JTextArea jta ; private JLabel jl; private Problem problem; private Action l = new Action(); class Action implements ActionListener public void actionPerformed(ActionEvent e) if(YES.equals(e.getActionCommand() if(null!=problem.getAnswer_YES() problem.getAnswer_YES().setIstrue(t

    12、rue); else if(NO.equals(e.getActionCommand() System.out.println(aaa); if(null!=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(

    13、);i+) String des = facts.get(i).getDescribe(); if(!null.equals(des) result+=i+1+.+des+n; n+; 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;impo

    14、rt .URLDecoder;import java.util.ArrayList;import java.util.HashMap;import javax.swing.JOptionPane;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;impo

    15、rt org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class Execution public boolean init() try this.initXML(this.getPath(); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) this.exit(e.getMessage(); catch (IOException e) e.printStackTrace(); catch (NullPoi

    16、nterException e) this.exit(找不到相应的xml文件,请检查xml文件名是否符合规范); return false; private void initXML(String file) throws ParserConfigurationException, SAXException, IOException DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc=

    17、null; try doc = builder.parse(new File(file); catch(Exception e) this.exit(e.getMessage(); Element root = doc.getDocumentElement(); / 获取根元素 expert_name=root.getAttribute(name); /取得名字 /获取事实fact NodeList allfacts = root.getElementsByTagName(facts); NodeList onefacts = (Element)allfacts.item(0).getElem

    18、entsByTagName(fact); for(int i=0;ionefacts.getLength();i+) Element onefact = (Element)onefacts.item(i); Fact fact = new Fact(); try fact.setName(onefact.getElementsByTagName(name).item(0).getFirstChild().getNodeValue(); fact.setDescribe(onefact.getElementsByTagName(describe).item(0).getFirstChild().

    19、getNodeValue(); catch(NullPointerException e) this.exit(fact中缺少相应标签); facts.put(fact.getName(), fact); /获取推理reasoning NodeList allreasonings = root.getElementsByTagName(reasonings); NodeList onereasonings = (Element)allreasonings.item(0).getElementsByTagName(reasoning); for(int i=0;ionereasonings.ge

    20、tLength();i+) Element onereasoning = (Element)onereasonings.item(i); Reasoning reasoning = new Reasoning(); NodeList reasons = onereasoning.getElementsByTagName(reason); if(reasons.getLength()=0) this.exit(reasoning中不可以缺少reason标签); for(int j=0;jreasons.getLength();j+) String name=reasons.item(j).get

    21、FirstChild().getNodeValue(); if(facts.get(name)!=null) reasoning.getReason().add(facts.get(name); else this.exit(reason标签内容不正确,没有对应事实); NodeList results = onereasoning.getElementsByTagName(result); if(results.getLength()=0) this.exit(reasoning中不可以缺少result标签); for(int j=0;jresults.getLength();j+) Str

    22、ing name=results.item(j).getFirstChild().getNodeValue(); if(facts.get(name)!=null) reasoning.getResult().add(facts.get(name); else this.exit(result标签内容不正确,没有对应事实); reasonings.add(reasoning); /获取问题problem NodeList allproblems = root.getElementsByTagName(problems); NodeList oneproblems = (Element)allp

    23、roblems.item(0).getElementsByTagName(problem); for(int i=0;ioneproblems.getLength();i+) Element oneproblem = (Element)oneproblems.item(i); Problem problem = new Problem(); problem.setContext(oneproblem.getElementsByTagName(context).item(0).getFirstChild().getNodeValue(); tryproblem.setPremise(facts.

    24、get(oneproblem.getElementsByTagName(premise).item(0).getFirstChild().getNodeValue(); catch(Exception e) tryproblem.setAnswer_YES(facts.get(oneproblem.getElementsByTagName(answer_YES).item(0).getFirstChild().getNodeValue(); catch(Exception e) tryproblem.setAnswer_NO(facts.get(oneproblem.getElementsBy

    25、TagName(answer_NO).item(0).getFirstChild().getNodeValue(); catch(Exception e) problems.add(problem); public void allReasoning() boolean proceed=true; while(proceed) proceed=false; for(Reasoning reasoning:reasonings) reasoning.startReasoning(); if(reasoning.startReasoning() proceed=true; public Array

    26、List start()/ this.allReasoning(); ArrayList reallyFacts = new ArrayList(); for(Fact fact:facts.values() if(fact.isIstrue() reallyFacts.add(fact); return reallyFacts; private void exit(String passage) JOptionPane.showMessageDialog(null, passage); System.exit(0); /查找当前路径 private String getPath() Stri

    27、ng myPath=null; try myPath=URLDecoder.decode(Execution.class.getProtectionDomain().getCodeSource().getLocation().getFile(), UTF-8); catch (UnsupportedEncodingException e) e.printStackTrace(); String path=myPath.substring(1,myPath.lastIndexOf(/)+1)+XML/配置文件.xml; return path; public HashMap facts = new HashMap (); public ArrayList reasonings = new ArrayList(); public ArrayList problems = new ArrayList(); public String expert_name; package 专家系统_V2;/* * 存放事实的类 * author liguanyi * */public class Fact private String name; /名字 private boolean istrue=f


    注意事项

    本文(疾病诊断小型专家系统人工智能课程设计报告.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开