人工智能课程设计报告

合集下载

人工智能课程设计报告总结

人工智能课程设计报告总结

人工智能课程设计报告总结人工智能(Artificial Intelligence,简称AI)是计算机科学领域的一个重要分支,旨在使机器能够模拟和模仿人类智能。

本课程旨在介绍人工智能的基本概念、技术和应用,并培养学生的人工智能思维和解决问题的能力。

在本课程中,我们首先介绍了人工智能的历史和发展背景。

通过回顾人工智能的起源和演变过程,我们可以更好地理解人工智能的发展脉络和未来趋势。

接着,我们详细讨论了人工智能的核心概念和技术,包括机器学习、深度学习、自然语言处理等。

通过学习这些基本概念和技术,学生可以了解到人工智能是如何实现智能化的。

在课程的实践环节中,学生们参与了各种人工智能项目的设计与实施。

通过实际动手操作,学生们深入了解了人工智能技术在实际应用中的效果和局限性。

他们通过编写代码、调试算法、收集和分析数据等方式,逐步掌握了人工智能的实际应用技巧。

除了技术知识的学习,本课程还注重培养学生的创新思维和团队合作能力。

在课程设计中,我们设置了一系列的小组项目,要求学生们合作完成。

通过项目的合作与交流,学生们不仅学会了如何有效地与他人合作,还培养了解决问题的能力和创新思维。

本课程还强调了人工智能的伦理和社会影响。

在课程中,我们探讨了人工智能在社会中的应用和影响,让学生们意识到人工智能所带来的挑战和机遇。

我们鼓励学生们思考人工智能技术的道德和社会责任,并提出了一系列相关讨论和案例分析。

通过本课程的学习,学生们不仅掌握了人工智能的基本概念和技术,还培养了解决问题的能力和创新思维。

他们学会了如何应用人工智能技术解决实际问题,并了解了人工智能的伦理和社会影响。

这些知识和能力将为他们未来的学习和工作提供坚实的基础。

本课程是一门全面而深入的人工智能课程,旨在培养学生的人工智能思维和解决问题的能力。

通过理论学习、实践操作和团队合作,学生们全面了解了人工智能的基本概念、技术和应用。

本课程不仅注重学术知识的传授,还注重培养学生的创新思维和团队合作能力。

人工智能 课程设计报告 课设报告

人工智能 课程设计报告 课设报告

学生实验报告实验课名称:人工智能实验项目名称:基于回溯推理的小型专家系统题目:一个关于植物分类的小型专家系统专业名称:计算机科学与技术班级:24020704学号:2402070427学生姓名:杨孟拓教师姓名:慕晨2010 年10 月27 日一、实验名称:一个关于植物分类的小型专家系统二、实验目的与要求:1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含15条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告7、报告中要有推理树三、实验内容:本次实验将做一个关于植物分类的小型专家系统,在植物分类系统中,要区分各种植物,可以对每种植物构造一条识别规则,其中规则右部为识别出的植物名,左部为该植物的特征。

本次实验设计了一个简单的不通用推理机。

推理机给出的推理结果是“苹果”。

系统结构:知识库,推理机,动态数据库,人机界面,解释模块,知识库管理模块。

专家系统结构图四、程序设计思想本次实验采用的推理方法为正向推理,正向推理是从已知事实出发,通过规则库求的结论。

这种推理方式是正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。

正向推理的推理基础是逻辑演绎的推理链。

从一组事实出发,使用一组规则,来证明目标的成立。

正向推理的步骤步1 将初始事实置入动态数据库;步 2 用动态数据库中的事实,匹配目标条件,若目标条件满足,则推理成功,结束。

步3 用规则库中各规则的前件匹配动态数据库中的事实,将匹配成功的规则组成冲突集;步4 若冲突集为空,则运行失败,退出。

步5 对冲突集做冲突消解,对选择执行的各规则,将其结论加入动态数据库,或执行其动作,转步2。

正向推理的流程图五、程序实现过程初始事实:它的果肉为乳黄色它的果实里无石细胞它的果实为梨果它的果实无毛它的花托呈杯形它种子的胚有两个子叶规则:R1:if它种子的胚有两个子叶∨它的叶脉为网状then它是双子叶植物R2:if它种子的胚只有一个子叶 then它是单子叶植物R3:if它的果肉为白色 then 它是梨R4:if它的叶脉平行 then 它是单子叶植物R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物R6:if它的花托呈圆柱形∧它的花瓣有5枚then它是蔷薇科植物R7:if它是双子叶植物∧它的花托呈圆柱形then它是蔷薇科植物R8:if它是蔷薇科植物∧它的果实为核果then它是李亚科植物R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物R10:if它是李亚科植物∧它的果实有毛then它是桃R11:if它是李亚科植物∧它的果实无毛then 它是李R12:if它的果实为扁圆形∧它的果实外有纵沟then它是桃R13:if它是苹果亚科植物∧它的果实里无石细胞then它是苹果R14:if它是苹果亚科植物∧它的果实里有石细胞then它是梨R15:if它的果肉为乳黄色∧它的果肉质脆then它是苹果推理过程:初始事实写入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶}第一次循环用动态数据库的事实匹配目标条件,目标条件不成立用规则库中的规则逐一与数据库匹配R1:if它种子的胚有两个子叶∨它的叶脉为网the它是双子叶植物“双子叶胚”匹配成功,加入冲突集R2:if它种子的胚只有一个子叶 then它是单子叶植物匹配失败,该条规则放弃R3:if它的果肉为白色 then 它是梨匹配失败,该条规则放弃R4:if它的叶脉平行 then 它是单子叶植物匹配无结果,该条规则加入待测试规则集R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物“双子叶植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R6:if它的花托呈圆柱形∧它的花瓣有5枚then它是蔷薇科植物匹配失败,该条规则放弃R7:if它是双子叶植物∧它的花托呈圆柱形then它是蔷薇科植物匹配失败,该条规则放弃R8:if它是蔷薇科植物∧它的果实为核果then它是李亚科植物“果实为核果”匹配失败,该条规则放弃R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物“蔷薇科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R10:if它是李亚科植物∧它的果实有毛then它是桃“果实有毛”匹配失败,该条规则放弃R11:if它是李亚科植物∧它的果实无毛then 它是李“李亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R12:if它的果实为扁圆形∧它的果实外有纵沟then它是桃“果实为扁圆形”和“果实外有从纵沟”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R13:if它是苹果亚科植物∧它的果实里无石细胞then它是苹果“苹果亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R14:if它是苹果亚科植物∧它的果实里有石细胞then它是梨“果实有石细胞”匹配失败,该条规则放弃R15:if它的果肉为乳黄色∧它的果肉质脆then它是苹果“果肉质脆”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集冲突消解冲突集{R1}无冲突,则将后件加入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶}第二次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4,R5,R9,R11,R12,R13,R15}{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶}R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物匹配成功,加入冲突集R4、R9、R11、R12、R13、R15 :匹配无结果,新待测试规则集{ R4、R9、R11、R12、R13、R15}冲突消解冲突集{R5}无冲突,则将后件加入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科}第三次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4,R9,R11,R12,R13,R15}{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科}R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物匹配成功,加入冲突集R4、R11、R12、R13、R15 :匹配无结果,新待测试规则集{R4、R11、R12、R13、R15}冲突消解冲突集{R9}无冲突,则将后件加入动态数据库{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科}第四次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4、R11、R12、R13、R15}{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科}R13:if 它是苹果亚科植物∧它的果实里无石细胞then 它是苹果 匹配成功,加入冲突集R4、R11、R12、R15:匹配无结果,新待测试规则集{ R4、R11、R12、R15} 冲突消解冲突集{R13}无冲突,则将后件加入动态数据库{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科, 苹果} 第五次循环动态数据库的事实没有变化,推理结束,即结束循环结果为苹果推理树图六、程序显示结果七、体会与总结通过这次实验,使我更加深了对产生式系统的推理方式(正向推理)的理解。

高级人工智能课程设计

高级人工智能课程设计

高级人工智能课程设计一、课程目标知识目标:1. 让学生理解高级人工智能的基本概念、理论和技术,掌握人工智能的发展历程及未来趋势。

2. 使学生掌握机器学习、自然语言处理、计算机视觉等核心领域的基本原理和应用方法。

3. 帮助学生了解我国在人工智能领域的发展现状及政策导向。

技能目标:1. 培养学生运用编程语言(如Python)实现简单的人工智能算法,解决实际问题。

2. 提高学生运用人工智能技术进行数据分析、处理和创新思维的能力。

3. 培养学生团队协作、沟通表达及解决问题的能力。

情感态度价值观目标:1. 激发学生对人工智能的兴趣,培养其探索精神和创新意识。

2. 培养学生具备正确的科技伦理观,认识到人工智能在社会发展中的积极作用及其潜在风险。

3. 增强学生的国家意识,认识到我国在人工智能领域的发展优势和潜力。

本课程针对高中年级学生,结合学科特点,以理论联系实际,注重培养学生的实践能力和创新精神。

在教学过程中,关注学生的个体差异,因材施教,使学生在掌握基本知识技能的同时,形成积极的情感态度和价值观。

通过分解课程目标为具体的学习成果,为教学设计和评估提供明确依据。

二、教学内容1. 人工智能基本概念与发展历程:包括人工智能的定义、分类、发展历程及未来趋势,参考课本相关章节,梳理人工智能的发展脉络。

2. 机器学习与深度学习:介绍机器学习的基本原理、算法及应用,重点讲解深度学习技术,如神经网络、卷积神经网络等,结合课本实例进行分析。

3. 自然语言处理:讲解自然语言处理的基本任务、技术框架,以及常见应用,如情感分析、机器翻译等,结合教材案例进行讲解。

4. 计算机视觉:介绍计算机视觉的基本概念、技术方法,以及应用领域,如目标检测、图像识别等,结合课本内容进行实践操作。

5. 人工智能应用与伦理:分析人工智能在各个领域的应用案例,探讨其对社会、经济的影响,以及伦理问题,如隐私保护、算法偏见等,结合教材进行讨论。

教学内容安排与进度:第一周:人工智能基本概念与发展历程第二周:机器学习与深度学习第三周:自然语言处理第四周:计算机视觉第五周:人工智能应用与伦理本教学内容紧密结合课程目标,注重科学性和系统性,以教材为依据,循序渐进地安排教学内容和进度,旨在帮助学生全面掌握高级人工智能知识,提高实践应用能力。

高职人工智能课程设计

高职人工智能课程设计

高职人工智能课程设计一、课程目标知识目标:1. 让学生理解人工智能的基础概念,掌握人工智能的发展历程和主要技术领域;2. 培养学生掌握机器学习、深度学习的基本原理和常用算法;3. 使学生了解人工智能在各个行业中的应用和未来发展前景。

技能目标:1. 培养学生运用编程语言(如Python)实现简单的人工智能应用案例;2. 提高学生运用人工智能技术解决实际问题的能力;3. 培养学生团队协作、沟通表达和创新能力。

情感态度价值观目标:1. 培养学生对人工智能技术的兴趣,激发学习热情;2. 增强学生对我国人工智能领域发展的自豪感,培养社会责任感和使命感;3. 引导学生树立正确的科技观,关注人工智能伦理问题,遵循道德规范。

课程性质:本课程为高职人工智能课程,以理论与实践相结合的方式进行教学。

学生特点:高职学生具有一定的理论基础,动手能力强,对新技术感兴趣,但可能对复杂理论知识接受程度有限。

教学要求:结合学生特点,注重实践操作,以实际案例为主线,引导学生掌握人工智能基础知识和技能,培养实际应用能力。

在教学过程中,注重启发式教学,鼓励学生思考、提问和探索,提高学生的自主学习能力。

同时,关注学生情感态度价值观的培养,使其成为具有社会责任感和职业道德的人工智能技术人才。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供明确依据。

二、教学内容1. 人工智能基础概念:包括人工智能的定义、发展历程、主要技术领域等;教材章节:第一章 人工智能概述2. 机器学习与深度学习原理:介绍机器学习、深度学习的基本原理及常用算法;教材章节:第二章 机器学习与深度学习3. 编程语言基础:学习Python编程语言,为后续实现人工智能应用案例打下基础;教材章节:第三章 编程语言基础4. 人工智能应用案例:分析并实践人工智能在图像识别、自然语言处理等领域的应用;教材章节:第四章 人工智能应用案例5. 人工智能技术伦理与道德:探讨人工智能技术在实际应用中可能出现的伦理问题,引导学生树立正确的价值观;教材章节:第五章 人工智能伦理与道德6. 人工智能行业发展趋势:介绍我国人工智能领域的发展现状及未来趋势,激发学生关注行业发展;教材章节:第六章 人工智能行业发展趋势教学内容安排与进度:1. 人工智能基础概念(2课时)2. 机器学习与深度学习原理(4课时)3. 编程语言基础(4课时)4. 人工智能应用案例(6课时)5. 人工智能技术伦理与道德(2课时)6. 人工智能行业发展趋势(2课时)教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,以实际应用为导向,引导学生掌握人工智能核心知识和技能。

用ai做课程设计报告

用ai做课程设计报告

用ai做课程设计报告一、课程目标知识目标:1. 让学生理解人工智能(AI)的基本概念,掌握其在教育领域的应用。

2. 使学生了解课程设计的基本流程,结合AI技术进行创新课程设计。

3. 帮助学生掌握课程目标、教学内容、教学方法等方面的知识。

技能目标:1. 培养学生运用AI技术进行课程设计的能力,提高解决问题的实践能力。

2. 培养学生的团队协作能力,学会与他人共同探讨、分析并优化课程设计。

3. 培养学生的创新思维,能够结合AI技术提出独特的课程设计方案。

情感态度价值观目标:1. 培养学生对AI技术的兴趣和好奇心,激发学习动力。

2. 培养学生尊重知识产权,养成良好的学术道德观念。

3. 增强学生的自信心,培养勇于尝试、不断进取的精神。

课程性质:本课程为实践性课程,结合AI技术进行课程设计,旨在提高学生的创新能力和实践能力。

学生特点:学生具备一定的信息技术基础,对AI技术有一定了解,具有较强的学习能力和实践欲望。

教学要求:教师需结合学生实际情况,采用任务驱动、案例教学等方法,引导学生主动参与课程设计,实现课程目标的具体分解和达成。

在教学过程中,注重培养学生的团队协作能力和创新思维,提高学生对AI技术在教育领域的认识和应用。

通过课程评估,确保学生达到预定的学习成果。

二、教学内容1. 人工智能(AI)基本概念与原理- AI的定义、发展历程、应用领域- 机器学习、深度学习的基本原理2. 课程设计基本理论- 课程目标、教学内容、教学方法- 课程设计流程与评价标准3. AI技术在课程设计中的应用- 案例分析:国内外AI教育应用案例- 教学策略:如何将AI技术融入课程设计4. 实践操作与团队协作- 利用AI工具进行课程设计实践- 团队协作、讨论、优化课程设计方案5. 创新思维与课程设计- 激发创新思维的方法与技巧- 结合AI技术进行创新课程设计实践教学内容安排与进度:第一周:人工智能基本概念与原理第二周:课程设计基本理论第三周:AI技术在课程设计中的应用第四周:实践操作与团队协作第五周:创新思维与课程设计教材章节及内容:第一章:人工智能概述第二章:课程设计基本理论第三章:AI技术在课程设计中的应用第四章:实践操作与团队协作第五章:创新思维与课程设计教学内容确保与课程目标紧密结合,注重科学性和系统性,使学生在掌握基本理论的基础上,能够运用AI技术进行创新课程设计。

人工智能课程设计

人工智能课程设计

人工智能 课程设计一、课程目标知识目标:1. 让学生理解人工智能的基本概念、发展历程及在生活中的应用。

2. 掌握人工智能的核心技术,如机器学习、自然语言处理等。

3. 了解人工智能伦理和道德规范,认识到科技发展对社会的影响。

技能目标:1. 培养学生运用人工智能技术解决实际问题的能力。

2. 提高学生编程、数据分析等实践操作技能。

3. 培养学生团队协作、沟通表达的能力。

情感态度价值观目标:1. 激发学生对人工智能的兴趣和好奇心,培养其探索精神。

2. 引导学生树立正确的科技观,认识到人工智能对社会发展的积极作用。

3. 培养学生的道德素养,使其在应用人工智能时遵循伦理规范。

本课程针对的学生特点是具有一定的信息素养和逻辑思维能力,对新鲜事物充满好奇心。

课程性质为理论与实践相结合,注重培养学生的实际操作能力和创新精神。

在教学要求方面,注重启发式教学,引导学生主动探究,关注学生的个体差异,提高教学效果。

1. 知识层面:掌握人工智能的基本概念、技术和应用,了解伦理道德规范。

2. 技能层面:具备编程、数据分析等实践操作能力,能够解决实际问题。

3. 情感态度价值观层面:对人工智能产生浓厚兴趣,树立正确的科技观,遵循伦理规范。

二、教学内容1. 人工智能基本概念与历史- 人工智能的定义、分类及发展历程- 课本章节:第一章 人工智能概述2. 人工智能核心技术- 机器学习、深度学习、神经网络等基本原理- 自然语言处理、计算机视觉等应用技术- 课本章节:第二章至第四章 人工智能核心技术3. 人工智能应用与案例分析- 人工智能在医疗、教育、交通等领域的应用案例- 分析人工智能技术如何解决实际问题- 课本章节:第五章 人工智能应用案例4. 人工智能伦理与道德规范- 人工智能伦理原则、道德规范及法律法规- 课本章节:第六章 人工智能伦理与道德5. 实践操作与项目制作- 编程实践、数据分析等技能训练- 团队协作完成人工智能项目制作- 课本章节:第七章 实践操作与项目制作教学内容安排和进度:第一周:人工智能基本概念与历史第二周:人工智能核心技术(1)第三周:人工智能核心技术(2)第四周:人工智能应用与案例分析第五周:人工智能伦理与道德规范第六周:实践操作与项目制作(1)第七周:实践操作与项目制作(2)第八周:总结与展示教学内容确保科学性和系统性,注重理论与实践相结合,引导学生主动参与,培养实际操作能力和团队协作精神。

人工智能课程设计浙大

人工智能课程设计浙大

课程设计浙大一、教学目标本课程旨在让学生了解的基本概念、技术和应用,培养学生的创新思维和实际操作能力。

具体目标如下:1.知识目标:学生能够理解的基本原理、方法和关键技术,包括机器学习、深度学习、自然语言处理等。

2.技能目标:学生能够运用Python等编程语言进行简单的程序设计,掌握实验方法和技巧。

3.情感态度价值观目标:学生能够正确认识的发展和应用,积极面对带来的挑战,培养良好的科学精神和创新意识。

二、教学内容本课程的教学内容主要包括的基本概念、关键技术及其应用。

具体安排如下:1.概述:的定义、发展历程、应用领域和未来趋势。

2.机器学习:监督学习、无监督学习、强化学习等基本概念和方法。

3.深度学习:神经网络、卷积神经网络、循环神经网络等基本概念和方法。

4.自然语言处理:分词、词性标注、命名实体识别、情感分析等基本概念和方法。

5.应用:图像识别、语音识别、智能驾驶等典型应用案例分析。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本概念、原理和方法,引导学生掌握的核心知识。

2.案例分析法:分析典型应用案例,让学生了解在实际中的应用和挑战。

3.实验法:让学生动手编写程序,进行实验,提高学生的实际操作能力。

4.讨论法:学生分组讨论,培养学生的团队协作能力和创新思维。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

具体如下:1.教材:《:一种现代的方法》等国内外优秀教材。

2.参考书:相关领域的学术论文、技术报告和案例分析。

3.多媒体资料:教学PPT、视频讲座、在线课程等。

4.实验设备:计算机、编程环境、实验器材等。

五、教学评估为了全面、客观地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和理解能力。

2.作业:布置课后练习和项目任务,评估学生的知识掌握和实际操作能力。

3.考试:设置期中考试和期末考试,以检验学生对本课程知识的全面理解和掌握。

人工智能课程设计报告

人工智能课程设计报告
第 2 页 共 11 页 学 生:李伟 指导老师:赵曼
《人工智能》程序设计报告
题目: 五子棋
//预测棋盘局势,判断输赢
3、算法设计与实现 3.1 算法的伪代码
3.1.1αβ剪枝算法选择优化函数:
long alphabeta(long alpha,long beta,int d,bool m) //αβ剪枝算法算出该将棋子放在哪个位置 { 深度为 2 if depth<=0 Then 调用评估函数,将结果赋给 current , Return current 值。 for 对整个棋盘循环搜索, If grid[i][j]==0,棋盘上面的个点无子, 则 break。 if 棋盘已满,没有地方可以再移动, Then 调用评估函数,将结果赋给 current , return current 值。 else: 循环搜索棋盘空间,生成当前所有合理的走法 If(对于一个 MAX 结点) 对每一个走法 执行:putchess(set_color,i,j); current=alphabeta(a,b,d-1,!m); (我们已经发现了最好的移动方法、 、 、 、 、 ) 撤销走法: If(current >alpha) then alpha=score;(cut off alpha) If (alpha>= beta) then return alpha If(d==depth) return alpha (这是最好的移动方法) else (对于一个 MIN 结点) 对每一个走法 执行:putchess(set_color,i,j); current=alphabeta(a,b,d-1,!m); (我们已经发现了最好的移动方法、 、 、 、 、 ) 撤销走法: If(current <beta) then beta=current;(cut off beta) If (alpha>= beta) then return beta If(d==depth) return beta (这是最好的移动方法) }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

疾病诊断小型专家系统——人工智能课程设计报告智能1001班傅宝林09091012172013.6.181内容提要此系统采用专家系统的规则库-推理机技术原理,以医学诊断为背景,旨在作出一个简单的辅助诊断专家系统。

系统的框架及界面采用的是Java语言,调用XML里保存的知识库和规则库。

此小型的专家系统以肺结核、哮喘、食管癌、骨折等疾病的诊断为例,展示了一个小型专家系统是如何构建的。

目录1内容提要 (2)2目的和意义 (4)3系统的主要内容和功能 (5)4设计流程及描述 (6)5课程设计体会 (21)6参考文献 (22)2目的和意义(1)加深理解专家系统的结构及开发过程。

(2)初步掌握知识获取的基本方法。

(3)掌握产生式规则知识表示方法及其编程实现方法。

(4)初步掌握知识库的组建方法。

3系统的主要内容和功能系统主要以问答的形势询问病情症状,操作者只需要回答YES或NO。

当一趟询问完成后,系统会基于以上询问得出的事实推理出最终的诊断结果。

功能见以下截图1、2.图1 问询界面图2 诊断结果界面4设计流程及描述1)需求分析本设计需要用高级语言编写框架及调用外部的规则库与知识库。

方便起见,用java语言编写框架,用XML文件保存。

2)知识获取与知识表示知识获取通过医学临床专业的同学及医学诊断专业书籍,确保专家系统的专家性。

知识的表示采用的是xml语言,把事实与规则一条条保存。

3)知识库的组建知识库分事实库和规则库组建。

疾病诊断因为有的病有交叉的症状,所以逻辑上,从症状到诊断的过程是对一颗二叉树的搜索,当问题回答的是YES时,就进行深度优先搜索,当回答NO时,就转到兄弟节点。

对于无关的疾病,则回到根节点重新对下一颗子树进行搜索。

得到一种疾病的确诊就是result,得到这个叶子节点前遍历过的节点组成了reasons.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.swing.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 myShow() {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);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(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.addActionListener(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;i<exe.problems.size();i++){Problem problem = exe.problems.get(i);if(problem.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 JButton 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(true);}}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<Fact> facts=exe.start();String result="";for(int i=0,n=1;i<facts.size();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;import .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;import 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 (NullPointerException 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=null;try{doc = builder.parse(new File(file));}catch(Exception e){this.exit(e.getMessage());}Element root = doc.getDocumentElement(); // 获取根元素expert_name=root.getAttribute("name"); //取得名字//获取事实factNodeList allfacts = root.getElementsByTagName("facts");NodeList onefacts = ((Element)allfacts.item(0)).getElementsByTagName("fact");for(int i=0;i<onefacts.getLength();i++){Element onefact = (Element)onefacts.item(i);Fact fact = new Fact();try{fact.setName(onefact.getElementsByTagName("name").item(0).getFirstChild().getNodeValu e());fact.setDescribe(onefact.getElementsByTagName("describe").item(0).getFirstChild().getNod eValue());}catch(NullPointerException e){this.exit("fact中缺少相应标签");}facts.put(fact.getName(), fact);}//获取推理reasoningNodeList allreasonings = root.getElementsByTagName("reasonings");NodeList onereasonings = ((Element)allreasonings.item(0)).getElementsByTagName("reasoning");for(int i=0;i<onereasonings.getLength();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;j<reasons.getLength();j++){String name=reasons.item(j).getFirstChild().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;j<results.getLength();j++){String name=results.item(j).getFirstChild().getNodeValue();if(facts.get(name)!=null){reasoning.getResult().add(facts.get(name));}else{this.exit("result标签内容不正确,没有对应事实");}}reasonings.add(reasoning);}//获取问题problemNodeList allproblems = root.getElementsByTagName("problems");NodeList oneproblems = ((Element)allproblems.item(0)).getElementsByTagName("problem");for(int i=0;i<oneproblems.getLength();i++){Element oneproblem = (Element)oneproblems.item(i);Problem problem = new Problem();problem.setContext(oneproblem.getElementsByTagName("context").item(0).getFirstChild(). getNodeValue());try{problem.setPremise(facts.get(oneproblem.getElementsByTagName("premise").item(0).g etFirstChild().getNodeValue()));}catch(Exception e){}try{problem.setAnswer_YES(facts.get(oneproblem.getElementsByTagName("answer_YES") .item(0).getFirstChild().getNodeValue()));}catch(Exception e){}try{problem.setAnswer_NO(facts.get(oneproblem.getElementsByTagName("answer_NO").it em(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 ArrayList<Fact> start(){// this.allReasoning();ArrayList<Fact> reallyFacts = new ArrayList<Fact>();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(){String myPath=null;try {myPath=URLDecoder.decode(Execution.class.getProtectionDomain().getCodeSource().getL ocation().getFile(), "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}String path=myPath.substring(1,stIndexOf("/")+1)+"XML/配置文件.xml";return path;}public HashMap<String,Fact> facts = new HashMap<String,Fact> ();public ArrayList<Reasoning> reasonings = new ArrayList<Reasoning>();public ArrayList<Problem> problems = new ArrayList<Problem>();public String expert_name;}package 专家系统_V2;/*** 存放事实的类* @author liguanyi**/public class Fact {private String name; //名字private boolean istrue=false; //是否成立private String describe; //事实相应表述public String getName() {return name;}public void setName(String name) { = name;}public boolean isIstrue() {return istrue;}public void setIstrue(boolean istrue) {this.istrue = istrue;}public String getDescribe() {return describe;}public void setDescribe(String describe) {this.describe = describe;}}package 专家系统_V2;import java.util.ArrayList;//表示推理public class Reasoning {private ArrayList<Fact> reason = new ArrayList<Fact>(); //前提事实private ArrayList<Fact> result = new ArrayList<Fact>(); //结果事实public ArrayList<Fact> getReason() {return reason;}public void setReason(ArrayList<Fact> reason) {this.reason = reason;}public ArrayList<Fact> getResult() {return result;}public void setResult(ArrayList<Fact> result) {this.result = result;}public boolean startReasoning(){if(reason.size()==0){return false;}for(Fact fact:reason){if(!fact.isIstrue()){return false;}}for(Fact fact:reason){fact.setIstrue(false);}for(Fact fact:result){fact.setIstrue(true);}return true;}}package 专家系统_V2;public class Problem {private Fact premise;private String context;private Fact answer_YES; //结果private Fact answer_NO; //结果public Fact getPremise() {return premise;}public void setPremise(Fact premise) {this.premise = premise;}public String getContext() {return context;}public void setContext(String context) {this.context = context;}public Fact getAnswer_YES() {return answer_YES;}public void setAnswer_YES(Fact answerYES) {answer_YES = answerYES;}public Fact getAnswer_NO() {return answer_NO;}public void setAnswer_NO(Fact answerNO) {answer_NO = answerNO;}}以下是XML文件(保存事实库和规则库)中部分内容<all name="疾病诊断"><facts><fact><name>fact1</name><describe>咳嗽</describe></fact><fact><name>fact2</name><describe>胸痛</describe></fact><fact><name>fact3</name><describe>盗汗</describe></fact><fact><name>fact4</name><describe>食欲不振</describe></fact><fact><name>fact5</name><describe>消瘦</describe></fact><fact><name>fact6</name><describe>午后低热</describe></fact><fact><name>fact7</name><describe>肺结核</describe></fact><fact><name>fact9</name><describe>呼吸困难</describe></fact><fact><name>fact10</name><describe>胸腔积液</describe></fact><fact><name>fact11</name><describe>伴有哮鸣音的呼吸困难</describe> </fact><fact><name>fact12</name><describe>发作性胸闷咳嗽</describe></fact><fact><name>fact13</name><describe>哮喘</describe></fact><fact><name>fact14</name><describe>不盗汗</describe> </fact><fact><name>fact15</name><describe>不咳嗽</describe></fact><fact><name>fact16</name><describe>没有伴有哮鸣音的呼吸困难</describe> </fact><fact><name>fact17</name><describe>上腹痛</describe></fact><fact><name>fact18</name><describe>节律性、周期性疼痛</describe></fact><fact><name>fact19</name><describe>灼疼</describe></fact><fact><name>fact20</name><describe>钝痛</describe></fact><fact><name>fact21</name><describe>消化性溃疡</describe></fact><fact><name>fact22</name><describe>上腹不痛</describe></fact><fact><name>fact23</name><describe>胸骨后不适</describe></fact><fact><name>fact24</name><describe>灼烧感</describe></facts><reasonings><reasoning><reason>fact6</reason><result>fact7</result></reasoning><reasoning><reason>fact9</reason><result>fact10</result></reasoning><reasoning><reason>fact12</reason><result>fact13</result></reasoning><reasoning><reason>fact20</reason><result>fact21</result></reasoning><reasoning><reason>fact27</reason><result>fact28</result></reasoning><reasoning><reason>fact32</reason><result>fact33</result></reasoning><reasoning><reason>fact43</reason><result>fact44</result></reasoning><reasoning><reason>fact47</reason><result>fact48</result></reasoning></reasonings><problems><problem><context>是否咳嗽?</context><answer_YES>fact1</answer_YES><answer_NO>fact15</answer_NO> </problem><problem><premise>fact1</premise><context>是否胸痛?</context><answer_YES>fact2</answer_YES></problem><problem><premise>fact2</premise><context>是否盗汗?</context><answer_YES>fact3</answer_YES><answer_NO>fact14</answer_NO></problem><problem><premise>fact14</premise><context>是否呼吸困难?</context><answer_YES>fact9</answer_YES></problem><problem><premise>fact3</premise><context>食欲不振?</context><answer_YES>fact4</answer_YES></problem><problem><premise>fact4</premise><context>消瘦?</context><answer_YES>fact5</answer_YES></problem><problem><premise>fact5</premise><context>午后低热?</context><answer_YES>fact6</answer_YES></problem><problem><context>伴有哮鸣音的呼吸困难?</context><answer_YES>fact11</answer_YES></problem><problem><premise>fact11</premise><context>是否有发作性胸闷咳嗽?</context><answer_YES>fact12</answer_YES></problem><problem><premise>fact14</premise><context>呼吸困难?</context><answer_YES>fact9</answer_YES>6)程序测试与调试遇到两个问题:1问多余的问题,通过给某些问题加前提解决了这个问题;2把一些得出的中间事实作为最终推理结果列了出来,解决方案:修改规则库,把实际蕴含在问题过程中的推理省掉,只保留最后的条件与结果。

相关文档
最新文档