1408090213闫伟明(人工智能实验3)
人工智能导论实验报告
人工智能导论实验报告
一、实验要求
实验要求是使用Python实现一个简单的人工智能(AI)程序,包括
使用数据挖掘,机器学习,自然语言处理,语音识别,计算机视觉等技术,通过提供用户输入的信息,实现基于信息的自动响应和推理。
二、实验步骤
1. 数据采集:编写爬虫程序或者使用预先定义的数据集(如movielens)从互联网收集数据;
2. 数据预处理:使用numpy对数据进行标准化处理,以便机器学习
程序能够有效地解析数据;
3. 模型构建:使用scikit-learn或者tensorflow等工具,构建机
器学习模型,从已经采集到的数据中学习规律;
4.模型训练:使用构建完成的模型,开始训练,通过反复调整参数,
使得模型在训练集上的效果达到最优;
5.模型评估:使用构建完成的模型,对测试集进行预测,并与实际结
果进行比较,从而评估模型的效果;
6. 部署:使用flask或者django等web框架,将模型部署为网络应用,从而实现模型的实时响应;
三、实验结果
实验结果表明,使用数据挖掘,机器学习,自然语言处理,语音识别,计算机视觉等技术,可以得到很高的模型预测精度,模型的准确性可以明
显提高。
2024.03全国青少年机器人技术等级考试理论实操试卷(三级)
青少年软件编程(C语言)等级考试试卷(三级)分数:100 题数:5一、编程题(共5题,共100分)1.我家的门牌号我家的门牌号我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。
数据保证有唯一解。
时间限制:1000内存限制:65536输入一个正整数n。
n < 100000。
输出一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入样例输出试题编号:20240323-3-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:#include<iostream>using namespace std;int main(){int a;cin>>a;for(int i=1;i<100000;i++){for(int j=1;j<=i;j++){if((i+1)*i/2-j*2==a){cout<<j<<' '<<i;return 0;}}}}考生得分:20是否评分:已评分评价描述:2.最接近的分数分母不超过N 且小于A/B 的最大最简分数是多少?时间限制:10000内存限制:65536输入三个正整数N,A,B,相邻两个数之间用单个空格隔开。
1 <= A < B < N <= 1000。
输出两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。
样例输入样例输出试题编号:20240323-3-02试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:(此题已作答)考生得分:0是否评分:已评分评价描述:3.菲波那契数列菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
给出一个正整数a,要求菲波那契数列中第a个数对10000取模的结果是多少。
杭州电子科技大学学报2010年总目次
( 第二期目次 )
一个改进的混沌系统及其 LabV I E W 实现 …………………………………………………………………………………………………… 吴琴琴 一种连续混沌的分析及量化实现方法 ……………………………………………………………………………………………………… 张坦通 TSK 模糊逻辑系统混合学习算法的进一步研究 …………………………………………………………………………………………… 赵 星 平面变压器在汽车氙气灯镇流器中的应用…………………………………………………………………………………………………… 姚建斌 基于 DSP 控制斩波内反馈串级调速系统研究 ……………………………………………………………………………………………… 张海峰 GS M 和 GPS 频段的单极子可重构天线的设计 …………………………………………………………………………………… 梁婵君 项铁铭 一种动态 CTCSS 系统的设计与实现 ……………………………………………………………………………………………… 苏 杰 李金新 基于信道识别的 W PM 解调性能改善研究 ………………………………………………………………………………………… 申传朋 唐向宏 基于消减 PAPR 的小波包调制结构的研究 …………………………………………………………………………… 余志卫 唐向宏 申传朋 基于 EPF 滤波的三维单站无源定位算法 …………………………………………………………………………………………………… 许天园 裁剪优化的 Any ti m e算法 ……………………………………………………………………………………………………………… 孙俊 戴国骏 基于多相似度的条件密度手势识别跟踪算法……………………………………………………………………………………… 王丰年 戴国骏 视觉导航机器人三维场景重建研究……………………………………………………………………………………… 李海峰 傅 侃 周文晖 一种自动确定类个数的谱聚类算法……………………………………………………………………………………………… 孙昌思核 孔万增 发布订阅系统中 C arzan iga匹配算法优化 ………………………………………………………………………………………… 张 颖 高申勇 基于 N- G ram 的文本去重方法研究 ………………………………………………………………………………………………………… 王小华 利用多线程及改进 SSDA 算法加快拼接速度 ………………………………………………………………………………………………… 谢永胜 具有区间时变时滞线性系统新的稳定性准则…………………………………………………………………………………………………………… P t /T i O 2 纳米管的制备及其电化学性能研究 …………………………………………………………………………… 殷好勇 汪 玲 聂秋林 3- cac tus上的连通 p- m edian 问题 ……………………………………………………………………………………………… 陈光亭 辛 双 三维无线传感器网络的中继器放置问题…………………………………………………………………………………………… 崔素辉 陈光亭 交替步长的全变分图像恢复算法……………………………………………………………………………………………………………… 张智丰 推广的 Kanto rovich 算子的逼近 ……………………………………………………………………………………………………………… 李其龙 关于加权的 B ernste i n - M arkov 型不等式 …………………………………………………………………………………………………… 逯文鸣 含右删失数据的随机效应模型的统计分析……………………………………………………………………………………………………………… 王光义 王光义 郭裕顺 高明煜 范 毅 官伯然 胡建萍 余志卫 李双霞 刘顺兰 张怀相 周文晖 曾 虹 戴国骏 曾 虹 卢小康 余正生 张忻欣 徐铸德 崔素辉 李茹雪 宋畑静 胡晓敏 赵 易 金晶亮 ( 1) ( 5) ( 9) ( 13) ( 16) ( 20) ( 24) ( 28) ( 32) ( 37) ( 41) ( 45) ( 49) ( 53) ( 57) ( 61) ( 65) ( 69) ( 73) ( 77) ( 81) ( 85) ( 89) ( 92) ( 95)
苏州大学《人工智能》实验指导书
《人工智能》实验指导书专业年级姓名学号指导老师实验室使用日期苏州大学计算机科学与技术学院统一印制二零零二年八月实验一启发式搜索一、实验目的:熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A 算法求解九宫问题,理解求解流程和搜索顺序。
二、实验方法:1.先熟悉启发式搜索算法;2.用C、C++或JA V A 语言编程实现实验内容。
三、实验背景知识:1.估价函数在对问题的状态空间进行搜索时,为提高搜索效率需要和被解问题的解有关的大量控制性知识作为搜索的辅助性策略。
这些控制信息反映在估价函数中。
估价函数的任务就是估计待搜索节点的重要程度,给这些节点排定次序。
估价函数可以是任意一种函数,如有的定义它是节点x处于最佳路径的概率上,或是x节点和目标节点之间的距离等等。
在此,我们把估价函数f(n)定义为从初始节点经过n节点到达目标节点的最小代价路径的代价估计值,它的一般形式是:f(n) = g(n) + h(n)其中g(n)是从初始节点到节点n的实际代价,g(n)可以根据生成的搜索树实际计算出来;h(n)是从n到目标节点的最佳路径的代价估计,h(n)主要体现了搜索的启发信息。
2. 启发式搜索过程的特性(1)可采纳性当一个搜索算法在最短路径存在的时候能保证能找到它,我们就称该算法是可采纳的。
所有A*算法都是可采纳的。
(2)单调性一个启发函数h是单调的,如果a)对所有的状态n i和n j,其中n j是n i的子孙,h(n i )- h(n j )≤cost(n i,n j ),其中cost(n i,n j )是从n i到n j 实际代价。
b)目标状态的启发函数值为0,即h(Goal)=0.具有单调性的启发式搜索算法在对状态进行扩展时能保证所有被扩展的状态的f值是单调递增(不减)。
(3)信息性比较两个启发策略h1和h2,如果对搜索空间中的任何一个状态n 都有h1(n) ≤h2(n),就说h2比h1具有更多的信息性。
基于遗传算法和ELM神经网络的目标威胁估计
doi:10.3969/j.issn.1003-3106.2023.07.028引用格式:陈路路,张建民,白洁,等.基于遗传算法和ELM神经网络的目标威胁估计[J].无线电工程,2023,53(7):1719-1724.[CHENLulu,ZHANGJianmin,BAIJie,etal.TargetThreatAssessmentBasedonGeneticAlgorithmandELMNeuralNetwork[J].RadioEngineering,2023,53(7):1719-1724.]基于遗传算法和ELM神经网络的目标威胁估计陈路路1,2,张建民1,2,白 洁1,2,艾 伟1,2,杜 楚1,2,张岐坦1,2,周 云3(1.中国电子科技集团公司第五十四研究所,河北石家庄050081;2.河北省智能化信息感知与处理重点实验室,河北石家庄050081;3.陆装驻石家庄地区第一军代室,河北石家庄050081)摘 要:目标威胁程度是指挥员进行态势评估和指挥决策的重要依据。
为准确估计目标威胁情况,提出了基于遗传算法和极限学习机(GeneticAlgorithmandExtremeLearningMachine,GA ELM)的目标威胁评估方法。
采用遗传算法优化ELM神经网络的输入权重和隐含层阈值,优化后的ELM神经网络能够克服传统ELM网络不稳定的缺点,具有更好的目标威胁估计性能。
实验结果表明,基于GA ELM的目标威胁估计误差明显小于传统ELM方法,且输出的威胁结果更加稳定。
关键词:态势评估;极限学习机;遗传算法;目标威胁估计中图分类号:TP391.9文献标志码:A开放科学(资源服务)标识码(OSID):文章编号:1003-3106(2023)07-1719-06TargetThreatAssessmentBasedonGeneticAlgorithmandELMNeuralNetworkCHENLulu1,2,ZHANGJianmin1,2,BAIJie1,2,AIWei1,2,DUChu1,2,ZHANGQitan1,2,ZHOUYun3(1.The54thresearchinstituteofCETC,Shijiazhuang050081,China;2.HebeiKeyLaboratoryofIntelligentInformationPerceptionandProcessing,Shijiazhuang050081,China;3.The1stMilitaryRepresentativeOfficeStationedinShijiazhuangRegion,PLAArmyEquipmentDepartment,Shijiazhuang050081,China)Abstract:Targetthreatlevelisanimportantbasisforcommanderstoconductsituationassessmentandcommanddecisionmaking.Inordertoaccuratelyestimatethetargetthreat,atargetthreatassessmentmethodbasedonGeneticAlgorithmandExtremeLearningMachine(GA ELM)isproposed.ThismethodusesgeneticalgorithmtooptimizetheinputweightsandhiddenlayerthresholdsofELMneuralnetwork.TheoptimizedELMneuralnetworkcanovercometheinstabilityoftraditionalELMnetworkandhasbettertargetthreatassessmentperformance.TheexperimentalresultsshowthatthetargetthreatassessmenterrorusingGA ELMissignificantlylessthanthatofthetraditionalELMmethod,andtheoutputthreatresultismorestable.Keywords:situationassessment;LEM;geneticalgorithm;targetthreatassessment收稿日期:2023-01-20基金项目:河北省智能化信息感知与处理重点实验室发展基金项目(SXX22138X002)FoundationItem:SupportedbytheDevelopmentFundProjectofHebeiKeyLaboratoryofIntelligentInformationPerceptionandProcessing(SXX22138X002)0 引言目标威胁估计作为战场信息融合分析过程中的一项关键研究内容,能够根据所获取目标的多种特征信息以定量形式计算出敌方目标对我方目标的威胁程度,是指挥员进行态势评估和指挥决策的重要参考。
机器人实践教学体系综合探索与实践
机器人实践教学体系综合探索与实践张伟民;杨宇航;靳家豪;聂富宇;王洋【期刊名称】《中国电化教育》【年(卷),期】2022()7【摘要】伴随人工智能技术的快速发展,机器人领域的发展出现了新的机遇,机器人相关课程教学将更加注重和强调学生的创新思维和实践能力。
通过分析现有的机器人方向的专业课程教学体系,指出了存在的问题。
随后根据机器人课程教学需要具备综合性、创新性、实践性的特点,尝试引入了项目教学法,阐明了项目教学法在提高学生的综合应用能力和实践创新思维等方面的作用。
在项目教学法的基础上,根据具体教学实践情况,设计了机器人实践课程教学体系,在引导学生设计并搭建一套相对完整的机器人系统的过程中,逐步加深学生对机器人技术和专业知识的理解和认知,培养学生的工程实践能力和创新思维。
数年的教学实践证明,该文所提出的机器人实践课程体系可有效提升教学质量和学生的实践创新能力,取得了良好的效果。
【总页数】5页(P115-119)【作者】张伟民;杨宇航;靳家豪;聂富宇;王洋【作者单位】北京理工大学智能机器人研究所;北京理工大学智能机器人高精尖中心【正文语种】中文【中图分类】G434【相关文献】1.综合性大学自动化专业机器人实践教学体系探索2.建设高水平本科教学管理体系的探索与实践--综合性大学中学院教学管理体系改革的探索与实践3.浅谈《高职综合英语》课程实践教学体系构建——湖北省高校省级教学改革研究项目《高职综合英语》课程实践教学体系成果介绍4.浅谈《高职综合英语》课程实践教学体系构建——湖北省高校省级教学改革研究项目《高职综合英语》课程实践教学体系成果介绍5.改革传统实践教学体制,建立新的实践教学体系——对农学类专科“三年三段三改”实践教学体系的探索因版权原因,仅展示原文概要,查看原文内容请购买。
人工智能实验指导书+作业展示
《人工智能技术导论》实验指导书西北工业大学计算机学院目录一实验纲要 (1)二上机要求 (2)三实验内容 (3)实验一图搜索与问题求解 (3)实验1.1 启发式搜索 (3)实验1.2 A*算法搜索 (9)实验1.3 其他应用问题 (12)实验二产生式系统推理 (14)实验三TSP问题的遗传算法实现 (20)四实验报告模板 (27)人工智能实验一实验报告 (27)人工智能实验二实验报告 (28)人工智能实验三实验报告 (29)附件1 TSP问题的遗传算法程序模板 (30)附件2 学生作业作品展示 (35)一实验纲要一实验教学的目的、任务与要求将人工智能基础理论应用于实际问题的解决当中,加深学生对所学知识的理解,提高学生的实际动手能力。
二实验项目内容1图搜索策略实验用启发式搜索方法/A*算法求解重排九宫问题/八数码问题。
2产生式系统的推理以动物识别系统为例,实现基于产生式规则的推理系统。
3 TSP问题的遗传算法实现以N个结点的TSP问题为例,用遗传算法加以求解。
三参考教材人工智能技术导论-第3版,廉师友编著,西安电子科技大学出版社,2007。
四使用主要仪器设备说明在Windows2000/XP上,选用Java/C/C++/Matlab等语言进行实现。
五实验考核实验为12学时,分4次课完成。
每个实验题目在课堂上分别按百分制给出。
其中包括课堂纪律、程序运行结果、课堂回答问题及实验报告成绩等。
实验课总成绩为3个实验题目的平均成绩。
实验课要求学生提前预习,上课时需向辅导老师提交预习报告,报告格式和内容不作过多要求,只需简要说明自己本次实验的大体思想。
预习报告形式不限,电子版或手写版均可。
1 考核方法由各班辅导老师当堂检查源程序和运行结果,并提问相关问题,课堂上给出成绩并记录。
每个题目完成后把源代码和实验报告提交,由辅导老师检查实验报告并给出报告成绩。
2 评分标准每个实验题目根据以下标准进行考核:1)考勤分20分。
基于多源域迁移学习的无监督行人重识别方法
基金项目:河北大学大学生创新创业训练计划基金资助项目(2020199)郭佳骜刘在田闫子龙苗乔伟河北大学网络安全与计算机学院近年来,人们对社会公共安全问题的关注度不断提高。
视频监控系统的普及成为创建“平安城市”,提高人民社会安全感的有效保障。
当下,解决从监控图像与视频中寻找已知人物的行人重识别(Personre-identification )问题被迅速提上日程,在人工智能领域,神经网络与深度学习算法的应用成为解决此复杂问题的重要途经。
在深度学习领域,神经网络训练需要大量被标注的数据集样本,而在大数据快速发展的今天,在短时间内进行大量的数据标注工作来实现监督学习是不现实的。
无监督迁移学习是指将数据标注这种庞大而复杂的工程,通过程序交由计算机处理,处理方式可以通过迁移已有模型进行训练。
因此,提高无监督学习的成效成为当下亟待解决的关键问题。
目前在无监督研究领域,多数研究成果是基于迁移学习模块,小部分研究涉及最新的注意力模块的应用,而在多源域方面,目前的研究鲜有涉及。
本文通过结合“多源域”与“迁移学习”,研究行人重识别问题,通过对注意力模块的进一步研究,将模块进行结合并论述多源域无监督算法的可行性与应用情况。
研究背景当下,社会公共安全问题逐渐被人们重视,视频监控系统大量普及,实时监控着人们在公共场所的行为,并作为安防安保建设工程的核心内容。
传统监控体系下的人工排查方式会耗费大量人力物力,在大型监控网络中存在明显的劣势。
因此结合计算机视觉技术进行智能视频监控、跟踪和检索成为刑事侦查中亟待解决的重要课题。
行人重识别是利用计算机视觉技术判断图像,或者视频序列中是否存在特定行人的技术,属于在复杂视频环境下的图像处理和分析范畴。
由于不同设备之间的差异,会造成图像分辨率的差异与视觉模糊的效果,且行人会在监控视频中兼具刚性和柔性两重特性,外观易受穿着、姿态和光照等环境因素影响,使行人重识别成为计算机视觉领域中兼具研究价值与挑战性的热门课题。
基于互联网的机器人远程实验系统
求大压缩比,因为对于采用 PSTN 或I SDN 方式上 网的情况来说,网络提供的带宽往往非常窄(28 .8 kbS PSTN ,33 .6 kbpS PSTN ,p !64 kbpS I SDN 等) 且往往波动较大。视频压缩编码器的选择直接影响
视频传输的质量。由编码器输出的压缩后的图像数
据加上数据包头封装成包即可发送出去。在这里我
图8 为服务器端机器人臂手集成系统。图9 所 示为用户利用人机交互设备进行抓杯倒水的实验, 用户控制机器人抓住桌面上的杯子,然后将水倒入 另一个杯中,在用户操作过程中还可以与实验室操 作人员有语音的交流。图10 为抓杯倒水的虚拟仿 真规划。图11 所示为用户通过普通界面来进行编 程或直接控制机器人关节运动。ห้องสมุดไป่ตู้
RDTP 协议将图像帧序列组成连续的数据流, 以适当的分组,并且加上时间戳(Ti me sta mp ),发送 到客户方,供客户方播放。我们设计的基点放在普
通的PsTN 上网方式上,数据的传输错误一般只出 现在网路状况拥挤上。客户端只需把错误的数据包
— 67 —
高技术通讯 2003. 8
丢掉即可,不需重发。 服务器方数据的获取是通过 CCD 摄像头获得
机器人工作现场的图像,经由视频捕捉卡,将 PAL 或 NTSC 制式的图像转化成24 位的帧彩色位图图 像,然后对图像进行色度、亮度的调节,以及尺寸的 放缩,将图 像 送 入 视 频 编 码 解 码 器,对 图 像 进 行 压 缩。在这一环节,必须对运动图像进行合适的压缩。 为了适应网络有限的带宽,视频图像的压缩必须要
模糊PI_控制器与干扰观测器相结合的空间柔性机械臂的转动控制策略
第 54 卷第 12 期2023 年 12 月中南大学学报(自然科学版)Journal of Central South University (Science and Technology)V ol.54 No.12Dec. 2023模糊PI 控制器与干扰观测器相结合的空间柔性机械臂的转动控制策略上官朝伟1,李小彭1, 2,李泉1,尹猛3(1. 东北大学 机械工程与自动化学院,辽宁 沈阳,110819;2. 宁夏理工学院 机械工程学院,宁夏 石嘴山,753000;3. 中国科学院 深圳先进技术研究院,广东 深圳,518055)摘要:为了减少外部干扰对空间柔性机械臂的系统误差,提高系统的控制精度,提出了一种模糊PI 控制器与干扰观测器相结合的转动控制策略。
首先,采用假设模态法和拉格朗日方法,建立了含有干扰力矩的空间柔性机械臂的初始动力学模型;其次,提出了分别忽略二维变形和忽略非线性项的2种简化动力学模型,并通过仿真分析对比2种简化模型的建模精度;第三,基于极点配置方法和模糊规则设计了模糊PI 控制器,并基于系统的名义模型设计了干扰观测器;最后,通过仿真分析和地面物理样机实验验证了该方法的有效性。
研究结果表明:忽略非线性项的简化模型与初始模型具有相似的建模精度,极大地降低了计算难度,能够代替初始模型进行控制系统的设计;模糊PI 控制器与干扰观测器相结合的转动控制策略能够实时调整控制器参数,观测并补偿干扰力矩引起的系统误差,有效提高系统的控制精度。
关键词:空间柔性机械臂;转动控制策略;简化动力学模型;模糊PI 控制器中图分类号:TH113.1;TP13 文献标志码:A 开放科学(资源服务)标识码(OSID)文章编号:1672-7207(2023)12-4687-12Rotation control strategy for a space-flexible robotic armcombining fuzzy PI controller and disturbance observerSHANGGUAN Chaowei 1, LI Xiaopeng 1, 2, LI Quan 1, YIN Meng 3(1. School of Mechanical Engineering & Automation, Northeastern University, Shenyang 110819, China;2. School of Mechanical Engineering, Ningxia Institute of Science and Technology, Shizuishan 753000, China;3. Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences, Shenzhen 518055, China)Abstract: In order to reduce the systematic error of space-flexible robotic arms(SFRA) by external disturbancesand to improve the control accuracy of the system, a rotation control strategy combining fuzzy PI controller and收稿日期: 2023 −01 −15; 修回日期: 2023 −04 −10基金项目(Foundation item):辽宁省应用基础研究计划项目(2023JH2/101300159);宁夏回族自治区自然科学基金资助项目(2023AACO3371) (Project(2023JH2/101300159) supported by the Applied Basic Research Program of Liaoning Province; Project(2023AACO3371) supported by Natural Science Foundation of Ningxia Hui Autonomous Region)通信作者:李小彭,博士,教授,从事机械振动与动力学研究;E-mail :***********DOI: 10.11817/j.issn.1672-7207.2023.12.008引用格式: 上官朝伟, 李小彭, 李泉, 等. 模糊PI 控制器与干扰观测器相结合的空间柔性机械臂的转动控制策略[J]. 中南大学学报(自然科学版), 2023, 54(12): 4687−4698.Citation: SHANGGUAN Chaowei, LI Xiaopeng, LI Quan, et al. Rotation control strategy for a space-flexible robotic arm combining fuzzy PI controller and disturbance observer[J]. Journal of Central South University(Science and Technology), 2023, 54(12): 4687−4698.第 54 卷中南大学学报(自然科学版)disturbance observer was proposed. Firstly, the initial dynamics model of the SFRA containing disturbance torque was established by using the assumed mode method and the Lagrange principle. Secondly, two simplified dynamics models that ignore two-dimensional deformation and ignore non-linear terms were proposed, respectively, and the modeling accuracy of the two simplified models was compared by simulation analysis. Thirdly, a fuzzy PI controller was designed based on the pole placement method and introducing fuzzy rules, and a disturbance observer was designed based on the nominal model of the system. Finally, the effectiveness of the rotation control strategy was verified by simulation analysis and ground physical prototype experiment. The results show that the simplified model ignoring the nonlinear terms has similar modeling accuracy compared with the initial model, which greatly reduces the computational difficulty and can replace the initial model for the design of the control system. The rotational control strategy can adjust the controller parameters in real time, observe and compensate for the system error caused by the disturbance torque, and improve the control accuracy of the system effectively.Key words: space-flexible robotic arms; rotation control strategy; simplified dynamics model; fuzzy PI controller随着机器人技术与航空航天技术的发展,空间柔性机械臂被广泛应用于太空探索作业任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能上机实验报告学号:1408090213姓名:闫伟明所在系:信息学院班级:惠普测试142班实验名称:知识表示方法及应用实验日期2016年12月3日实验指导教师李辉实验机房A401------------------------------------------------------------------------------------------------------ 1.实验目的:(1)在掌握状态空间搜索策略的基础上,理解知识表示的方法。
(2)能够应用知识表示方法,解决实际问题。
2.实验内容:(1) M-C问题描述有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假定野人与牧师都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出小船来回次数最少的最佳方案。
(2) 基本要求:1.输入:牧师人数(即野人人数):n;小船一次最多载人量:c。
2.输出:若问题无解,则显示Failed,否则,显示Successed输出一组最佳方案。
用三元组(X1, X2, X3)表示渡河过程中的状态。
并用箭头连接相邻状态以表示迁移过程:初始状态->中间状态->目标状态。
3.例:当输入n=2,c=2时,输出:221->110->211->010->021->0004.其中:X1表示起始岸上的牧师人数;X2表示起始岸上的野人人数;X3表示小船现在位置(1表示起始岸,0表示目的岸)。
5.要求:写出算法的设计思想和源程序,并以图形用户界面实现人机交互,进行输入和输出结果,如:Please input n: 2 Please input c: 2Successed or Failed?: SuccessedOptimal Procedure: 221->110->211->010->021->000 3.算法设计package cn.xiaoyangege.mvc.yerenguohe;//CrossRiverQuestion.javaimport java.util.ArrayList;import java.util.List;import java.util.Scanner;public class CrossRiverQuestion {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = 0;int c = 0;String ns = null;String cs = null;boolean flag;do {flag = false;System.out.print("Please input n:");ns = scanner.nextLine();System.out.print("Please input c:");cs = scanner.nextLine();try {n = Integer.parseInt(ns);c = Integer.parseInt(cs);} catch (NumberFormatException e) {System.out.println("输入不合法。
");flag = true;continue;}if (!flag && (n < 0 || c < 0)) {System.out.println("输入不合法。
");flag = true;}} while (flag);scanner.close();CrossRiverQuestion q = new CrossRiverQuestion(n, c);q.solveQuestion();}private int peoNum;private int savageNum;private List<Node> resultList = new ArrayList<Node>();public List<Node> solveQuestion() {Node n = new Node(peoNum, savageNum, 0, 0, 0, new ArrayList<Integer>(),0, 0);boolean dfsResult = dfs(n);System.out.print("Succeed or Failed?: ");if (dfsResult) {System.out.println("Succeed.");System.out.print("Optimal Procedure: ");resultList.add(0, n);for (Node node : resultList) {System.out.print(node.getLeftPeo() + "" +node.getLeftSavage()+ "" + (1 - node.getCURR_STATE()) + "-->");}System.out.println("End");return resultList;} else {System.out.println("Failed.");}return null;}public CrossRiverQuestion(int peoNum, int savageNum) { super();this.peoNum = peoNum;this.savageNum = savageNum;}private boolean dfs(Node n) {if (n.hasVisited()) {return false;}n.addCheckSum();if (n.getLeftPeo() == 0 && n.getLeftSavage() == 0) {return true;}if (n.getLeftPeo() < 0 || n.getRightPeo() < 0 || n.getLeftSavage() < 0|| n.getRightSavage() < 0) {return false;}if (n.getLeftPeo() < n.getLeftSavage() && n.getLeftPeo() > 0) { return false;}if (n.getRightPeo() < n.getRightSavage() && n.getRightPeo() > 0) { return false;}if (n.getCURR_STATE() == n.getStateBoatLeft()) {Node n1 = new Node(n.getLeftPeo() - 1, n.getLeftSavage() - 1,n.getRightPeo() + 1, n.getRightSavage() + 1,n.getStateBoatRight(), n.getNodesCheckSum(), 1, 1);if (dfs(n1)) {resultList.add(0, n1);return true;}Node n4 = new Node(n.getLeftPeo() - 2, n.getLeftSavage(),n.getRightPeo() + 2, n.getRightSavage(),n.getStateBoatRight(), n.getNodesCheckSum(), 2, 0);if (dfs(n4)) {resultList.add(0, n4);return true;}Node n5 = new Node(n.getLeftPeo(), n.getLeftSavage() - 2,n.getRightPeo(), n.getRightSavage() + 2,n.getStateBoatRight(), n.getNodesCheckSum(), 0, 2);if (dfs(n5)) {resultList.add(0, n5);return true;}} else {Node n6 = new Node(n.getLeftPeo(), n.getLeftSavage() + 1,n.getRightPeo(), n.getRightSavage() - 1,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 1);if (dfs(n6)) {resultList.add(0, n6);return true;}Node n7 = new Node(n.getLeftPeo() + 1, n.getLeftSavage(),n.getRightPeo() - 1, n.getRightSavage(),n.getStateBoatLeft(), n.getNodesCheckSum(), 1, 0);if (dfs(n7)) {resultList.add(0, n7);return true;}Node n1 = new Node(n.getLeftPeo() + 1, n.getLeftSavage() + 1,n.getRightPeo() - 1, n.getRightSavage() - 1,n.getStateBoatLeft(), n.getNodesCheckSum(), 1, 1);if (dfs(n1)) {resultList.add(0, n1);return true;}Node n4 = new Node(n.getLeftPeo() + 2, n.getLeftSavage(),n.getRightPeo() - 2, n.getRightSavage(),n.getStateBoatLeft(), n.getNodesCheckSum(), 2, 0);if (dfs(n4)) {resultList.add(0, n4);return true;}Node n5 = new Node(n.getLeftPeo(), n.getLeftSavage() + 2,n.getRightPeo(), n.getRightSavage() - 2,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 2);if (dfs(n5)) {resultList.add(0, n5);return true;}}return false;}public List<Node> getResultList() {return resultList;}}class Node {private List<Integer> nodesCheckSum= new ArrayList<Integer>();private int leftPeo;private int rightPeo;private int leftSavage;private int rightSavage;private int CURR_STATE= 0;private int onBoatPeoNum= 0;private int onBoatSavageNum= 0;private final int STATE_BOAT_LEFT= 0;private final int STATE_BOAT_RIGHT= 1;public Node(int leftPeo, int leftSavage, int rightPeo, int rightSavage, int state, List<Integer> checkSumList, int onBoatPeoNum,int onBoatSavageNum) {CURR_STATE = state;this.leftPeo = leftPeo;this.leftSavage = leftSavage;this.rightPeo = rightPeo;this.rightSavage = rightSavage;nodesCheckSum.addAll(checkSumList);this.onBoatPeoNum = onBoatPeoNum;this.onBoatSavageNum = onBoatSavageNum;}public int getLeftPeo() {return leftPeo;}public void setLeftPeo(int leftPeo) {this.leftPeo = leftPeo;}public int getRightPeo() {return rightPeo;}public void setRightPeo(int rightPeo) {this.rightPeo = rightPeo;}public int getLeftSavage() {return leftSavage;}public void setLeftSavage(int leftSavage) {this.leftSavage = leftSavage;}public int getRightSavage() {return rightSavage;}public void setRightSavage(int rightSavage) {this.rightSavage = rightSavage;}@Overridepublic String toString() {return leftPeo+ ","+ leftSavage+ ","+ rightPeo+ ","+ rightSavage + "," + CURR_STATE;}public int getCURR_STATE() {return CURR_STATE;}public void setCURR_STATE(int cURR_STATE) {CURR_STATE = cURR_STATE;}public int getStateBoatLeft() {return STATE_BOAT_LEFT;}public int getStateBoatRight() {return STATE_BOAT_RIGHT;}public int calcCheckSum() {return1* getCURR_STATE() + 10* getLeftPeo() + 100* getLeftSavage()+ 1000 * getRightPeo() + 10000 * getRightSavage();}public void addCheckSum() {int checkSum = calcCheckSum();nodesCheckSum.add(checkSum);}public boolean hasVisited() {int sum = calcCheckSum();for (Integer checkSum : nodesCheckSum) {if (checkSum == sum) {return true;}}return false;}public List<Integer> getNodesCheckSum() {return nodesCheckSum;}public int getOnBoatPeoNum() {return onBoatPeoNum;}public void setOnBoatPeoNum(int onBoatPeoNum) {this.onBoatPeoNum = onBoatPeoNum;}public int getOnBoatSavageNum() {return onBoatSavageNum;}public void setOnBoatSavageNum(int onBoatSavageNum) { this.onBoatSavageNum = onBoatSavageNum;}}4.程序调试(实验数据记录——根据程序要求输入几组不同数据,记录程序运行结果,并分析结果,分析程序运行中出现的主要错误。