西电人工智能大作业_第1页
西电人工智能大作业_第2页
西电人工智能大作业_第3页
西电人工智能大作业_第4页
西电人工智能大作业_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能及其应用大作业邹旭苗王 欣 八数码难题一、 实验名称八数码难题的启发式搜索二、 实验目的八数码问题:在33的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。要求:1.熟悉人工智能系统中的问题求解过程;2.熟悉状态空间的启发式搜索算法的应用;3.熟悉对八数码问题的建模、求解及编程语言的应用。三、 实验设备及软件环境1. 实验编程工具:VC+ 6.02. 实验环境:Windows7 64位四、 实验方法:启发式搜索1.算法描述1. 将S放入open表,计算估价函数f(s)2. 判断open表是否为空,若为空则搜索失败,否则,将open表中的第一个元素加入close表并对其进行扩展(每次扩展后加入open表中的元素按照代价的大小从小到大排序,找到代价最小的节点进行扩展)注:代价的计算公式f(n)=d(n)+w(n).其中f(n)为总代价,d(n)为节点的度,w(n)用来计算节点中错放棋子的个数。判断i是否为目标节点,是则成功,否则拓展i,计算后续节点f(j),利用f(j)对open表重新排序2.算法流程图:3.程序源代码:# include# include# include# includetypedef struct node int i,cost,degree,exp,father;int a33;struct node *bef,*late;struct node *son;treenode;int flag=0,count=1,num=0,i=0;void set(treenode *s);void cpynode(treenode *s1,treenode *s2);void add1(treenode *s,treenode *open);void adjust1(treenode *close);void jscost(treenode *s);void tiaozheng(treenode *open);void sortopen(treenode *open);int test(treenode *s1,treenode *s2);void position(treenode *s,treenode *open,treenode *close,treenode *s1);void printstr(treenode *open);int search(treenode *s1,treenode *s2);void input(treenode *s);int cmpnode(treenode *s1,treenode *s2);void print(treenode *s);void add(treenode *s,treenode *close);void xuhao(treenode *s);void extend(treenode *r1,treenode *s,treenode *s1,treenode *open,treenode *close);void main() treenode *s0,*s1,*s;treenode *open,*close,*opend,*closed;open=(treenode*)malloc(sizeof(treenode);close=(treenode*)malloc(sizeof(treenode); open-late=NULL;close-late=NULL;opend=open;closed=close;s0=(treenode*)malloc(sizeof(treenode);set (s0);s1=(treenode*)malloc(sizeof(treenode);set(s1);printf(请输入八数码的初始状态:(以空格为分隔)n);input (s0);printf(请输入八数码的目标状态 :(以空格为分隔)n);input(s1);xuhao(s0);add (s0,opend);while(open-late!=NULL & flag=0)s=(treenode*)malloc(sizeof(treenode); cpynode(s,open-late);open=open-late;add(s,close);if(test(s,s1)=0)flag=1;elseposition(s,open,close,s1);sortopen(open);if(open-late!=NULL) printf(搜索过程如下:n ); adjust1(close);printstr(close);printf(n%d 步,%d 个节点n,num,count);else printf(查找错误 ! n); void set(treenode *s) s-i=i;s-father=0;s-degree=0;s-bef=NULL;s-son=NULL;s-late=NULL; ;void input(treenode *s) int j,k;for(j=0;j3;j+)for(k=0;kajk); ;int cmpnode(treenode *s1,treenode *s2)int j,k;for(j=0;j3;j+)for(k=0;kajk!=s2-ajk)return 0; ;return 1; int test(treenode *s1,treenode *s2) int j,k,n=0;for(j=0;j3;j+)for(k=0;kajk!=s2-ajk)n+; ;s1-exp=n;return n; ;void xuhao(treenode *s) i+;s-i=i; void cpynode(treenode *s1,treenode *s2) int j,k;for(j=0;j3;j+)for(k=0;kajk=s2-ajk;s1-bef=s2-bef;s1-cost=s2-cost;s1-exp=s2-exp;s1-degree=s2-degree;s1-i=s2-i;s1-father=s2-father; ;void print(treenode *s) int j,k;for(j=0;j3;j+) for(k=0;kajk); if(j=1) printf( n=%2d d=%2d f=%2d,s-i,s-degree,s-father);printf(n); printf(n); void position(treenode *s,treenode *open,treenode *close,treenode *s1) int m,n,t,k;treenode *r1;for(m=0;m3;m+) for(n=0;namn;if(k=0)break; ;if(k=0) break; if(m+1am+1n; r1-am+1n = r1-amn; r1-amn=t;extend(r1,s,s1,open,close); ;if(m-1=0&flag=0)r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1-am-1n; r1-am-1n=r1-amn; r1-amn=t;extend(r1,s,s1,open,close);if(n-1=0 & flag=0) r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1-amn-1; r1-amn-1=r1-amn; r1-amn=t;extend(r1,s,s1,open,close); ;if(n+1amn+1; r1-amn+1=r1-amn; r1-amn=t;extend(r1,s,s1,open,close); void printstr(treenode *s) treenode *t;t=s-late;while(t!=NULL) num+;print(t);t=t-son; ; void extend(treenode *r1,treenode *s,treenode *s1,treenode *open,treenode *close) r1-father=s-i;r1-degree=s-degree+1;if(test(r1,s1)!=0) jscost(r1);if(search(r1,close)=1 & search(r1,open)=1) xuhao(r1);add1(r1,open);r1-bef=s;count+; else free(r1); else xuhao(r1);jscost(r1);count+;add(r1,close);r1-bef=s;flag=1; int search(treenode *s1,treenode *close) treenode *r,*t;r=s1;t=close-late;while(t!=NULL) if(r-exp=t-exp) if(cmpnode(r,t)=1)return 0; ;t=t-late; ; return 1; void add(treenode *s,treenode *close) treenode *r,*t;t=s;r=close;while(r-late!=NULL)r=r-late;r-late=t;t-late=NULL; void add1(treenode *s,treenode *open)treenode *t;t=open;s-late=t-late;t-late=s; void adjust1(treenode *close) treenode *s,*t;s=close;s-late-bef=NULL;while(s-late!=NULL)s=s-late;s-son=NULL;while(s-bef!=NULL)t=s-bef;t-son=s;s=s-bef; ; void jscost(treenode *s) s-cost=(s-exp)+s-degree; void sortopen(treenode *open) treenode *t,*s,*r;int k;r=(treenode*)malloc(sizeof(treenode);t=open-late;while(t!=NULL & t-late!=NULL) s=t-late;k=t-cost;while(s!=NULL) if(k s-cost) k=s-cost;cpynode(r,t);cpynode(t,s);cpynode(s,r); s=s-late; t=t-late; ; 五、 实验结果:1.程序截图2.搜索过程请输入八数码的初始状态:(以空格为分隔)283104765请输入八数码的目标状态:(以空格为分隔)123804765搜索过程如下: 283104n=1d=0f=0765203184n=3d=1f=1765023184n=8d=2f=3765123084n=10d=3f=8765123804n=12d=4f=107655步,12个节点Pressanykeytocontinue 六、 实验分析:在进行搜索的过程中,同时记录了扩展新节点的个数。启发式搜索仅扩展12个新节点。可见,在本实验中启发式搜索更优,效率更高。而在求解最短路径的问题上盲目搜索能更高效一点。在实际的应用中应根据具体情况灵活选择不同的策略,提高程序执行效率启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。七、 结论此次实验用启发式搜索方法求解问题的使用,让我们明白了具体问题具体分析,更明白了算法的重要,好的算法能够极大的提高程序的运行效率。同时,通过此次实践,也对课本知识有了更深刻的认识和体会,真正将课本知识融于实践中是对我们的最大考验。这次试验让我更加深入了解了什么是人工智能,让我了解了人工智能的作用以及含义和人工智能的使用范围以及对于我们未来生活得作用的广大。用机器语言解决实际问题的,提高了动手能力。使用动态神经网络预测太阳能和风能数据架构的微电网 文摘- 鼓励使用可再生能源由于快速减少传统不可再生能源。然而,寻找新的安装网站发电和传输变得越来越困难。在电力系统需要更大的灵活性导致了发电的一个新概念微电网。微电网的定义是一个集成的动力输送系统组成的相互联系的加载,存储设施和分布式发电主要由可再生能源。介绍了微电网整体的动态模型在MATLAB仿真软件模拟和动态神经网络的适用性为太阳能和风力发电预测数据架构。总的来说,三种架构被提出,即集中时间延迟神经网络,分布式时间延迟神经网络和非线性自回归神经网络。实验结果表明,提出的网络实现一个可接受的预测的准确性。比较而言,预测的准确性最高达到分布式时间延迟神经网络。 关键词-分布式能源资源、分布式发电、动态神经网络,MATLAB,微电网仿真软件 一、介绍 分布式发电(DG)是一种新兴的趋势在本地发电配电电压水平通过使用天然气等可再生能源,沼气,风力发电,太阳能光伏电池,燃料电池,结合热力和电力(CHP)系统,micro-turbines,斯特林发动机和将它们集成到工具分销网络1。使用的能源是称为分布式能源资源(各级)或微型电源2。通常对产品进行模块化单位广为分布的小容量。这些通常是位于靠近加载3。各级微型电网是小规模的供应网络组成的可再生能源发电在配电电压集成在一起。确保灵活性操作作为一个聚合体系和维护指定的电能质量和能量输出是由电力电子接口(PEIs)和控制内置微型电源2。在过去的几年中,许多研究尝试了微电网建模和预测可再生发电数据。在4中,混合动力系统可以作为独立的系统或电网连接系统通过使用光伏系统结合高速微型涡轮进行了研究。在5,MATLAB仿真软件模型加州理工可持续电力电子资源(超级)系统设计。在6、光伏电池、微型涡轮风力涡轮机块建模和组合起来形成一个微型电网。这样一个系统的瞬态和稳态行为变化的输入进行了研究。在7,适用性提前24小时太阳能发电的人工神经网络预测20 kW的光伏系统适合一个可靠的微电网能量管理进行了研究。在8,提出了一种模型提前24小时预报的风速和风力发电机的输出功率使用人工神经网络(ANN)的反向传播算法。9,递归神经网络(RNN)提出了风速预测并与前馈神经网络(FNN)。其他一些模型用于短期预测是径向基函数、支持向量机、模糊模型和ARMA模型10。 六、结论 微电网在MATLAB仿真软件模拟模型及其动态行为进行了研究。动态神经网络结构被用于风速预测和太阳能电池板电压预测。分布式时间延迟神经网络给出了最好的预测的准确性对风能和太阳能系统由于动态反向传播。在风电系统中,所获得的最高精确度是99.84%单层有25个神经元在太阳系,所获得的最高精确度是99.97%单层有10个神经元。微电网模型模拟可以用来探索微型电网的各种操作模式,即坐落和电网连接。模型可以提供不同类型的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论