人工智能课程设计报告_第1页
人工智能课程设计报告_第2页
人工智能课程设计报告_第3页
人工智能课程设计报告_第4页
人工智能课程设计报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、人工智能课程设计报告 课 程:人工智能能课程设计计报告 班 级: 姓 名: 学 号: 指导教师:赵曼 2015年年11月 - 24 -人工智能课课程设计报报告课程背景 人工智能(AArtifficiaal Inntellligennce),英英文缩写为为AI。它它是研究、开发用于于模拟、延延伸和扩展展人的智能能的理论、方法、技技术及应用用系统的一一门新的技技术科学。 人工智智能是计算算机科学的的一个分支支,它企图图了解智能能的实质,并并生产出一一种新的能能以人类智智能相似的的方式做出出反应的智智能机器,该该领域的研研究包括机机器人、语语言识别、图像识别别、自然语语言处理和和专家系统统等。人工工

2、智能从诞诞生以来,理理论和技术术日益成熟熟,应用领领域也不断断扩大,可可以设想,未未来人工智智能带来的的科技产品品,将会是是人类智慧慧的“容器”。人工智能是是对人的意意识、思维维的信息过过程的模拟拟。人工智智能不是人人的智能,但但能像人那那样思考、也可能超超过人的智智能。人工智能是是一门极富富挑战性的的科学,从从事这项工工作的人必必须懂得计计算机知识识,心理学学和哲学。人工智能能是包括十十分广泛的的科学,它它由不同的的领域组成成,如机器器学习,计计算机视觉觉等等,总总的说来,人人工智能研研究的一个个主要目标标是使机器器能够胜任任一些通常常需要人类类智能才能能完成的复复杂工作。但不同的的时代、不

3、不同的人对对这种“复杂工作作”的理解是是不同的。人工智能是是计算机学学科的一个个分支,二二十世纪七七十年代以以来被称为为世界三大大尖端技术术之一(空空间技术、能源技术术、人工智智能)。也也被认为是是二十一世世纪三大尖尖端技术(基基因工程、纳米科学学、人工智智能)之一一。这是因因为近三十十年来它获获得了迅速速的发展,在在很多学科科领域都获获得了广泛泛应用,并并取得了丰丰硕的成果果,人工智智能已逐步步成为一个个独立的分分支,无论论在理论和和实践上都都已自成一一个系统。人工智能是是研究使计计算机来模模拟人的某某些思维过过程和智能能行为(如如学习、推推理、思考考、规划等等)的学科科,主要包包括计算机机

4、实现智能能的原理、制造类似似于人脑智智能的计算算机,使计计算机能实实现更高层层次的应用用。人工智智能将涉及及到计算机机科学、心心理学、哲哲学和语言言学等学科科。可以说说几乎是自自然科学和和社会科学学的所有学学科,其范范围已远远远超出了计计算机科学学的范畴,人人工智能与与思维科学学的关系是是实践和理理论的关系系,人工智智能是处于于思维科学学的技术应应用层次,是是它的一个个应用分支支。从思维维观点看,人人工智能不不仅限于逻逻辑思维,要要考虑形象象思维、灵灵感思维才才能促进人人工智能的的突破性的的发展,数数学常被认认为是多种种学科的基基础科学,数数学也进入入语言、思思维领域,人人工智能学学科也必须须

5、借用数学学工具,数数学不仅在在标准逻辑辑、模糊数数学等范围围发挥作用用,数学进进入人工智智能学科,它它们将互相相促进而更更快地发展展。题目二:nn皇后问题题一.问题描描述分别用回溯溯法(递归归)、GAA算法和CSP的的最小冲突突法求解nn皇后问题题。即如何能够够在 nn 的国际际象棋棋盘盘上放置nn个皇后,使使得任何一一个皇后都都无法直接接吃掉其他他的皇后?为了达到到此目的,任任两个皇后后都不能处处于同一条条横行、纵纵行或斜线线上。要求:. 输入入n,并用用运行时间间比较几种种算法在相相同规模的的问题时的的求解效率率,并列表表给出结果果。. 比较较同一算法法在n不相相同时的运运行时间,分分析算

6、法的的时间复杂杂性,并列列表给出结结果。如八皇后问问题的一个个解二.设计分分析1.算法分分析 1) 回溯法(递递归)回溯法解题题的一般步步骤编辑(1)针对对所给问题题,定义问问题的解空空间;(2)确定定易于搜索索的解空间间结构;(3)以深深度优先方方式搜索解解空间,并并在搜索过过程中用剪剪枝函数避避免无效搜搜索。引入一个整整型一维数数组coll来存存放最终结结果,cooli就表示在在棋盘第ii列、cooli行有一个个皇后,为为了使程序序再找完了了全部解后后回到最初初位置,设设定coll0的的初值为00,即当回回溯到第00列时,说说明以求得得全部解,结结束程序运运行。为了了方便算法法的实现,引引

7、入三个整整型数组来来表示当前前列在三个个方向上的的状态 :a aai=0表示第第i行上还还没有皇后后;b bbi=0表示第第i列反斜斜线/上没没有皇后;c cci=0表示第第i列正斜斜线上没没有皇后。棋盘中同一一反斜线/上的方格格的行号与与列号相同同;同一正正斜线上上的方格的的行号与列列号之差均均相同,这这就是判断断斜线的依依据。初始时,所所有行和斜斜线上都没没有皇后,从从第1列的的第1行配配置第一个个皇后开始始,在第mm列,coolm行放置了了一个合理理的皇后,准准备考察第第m+1列列时,在数数组a,b和c中为第mm列,coolm行的位置置设定有皇皇后的标志志;当从第第m列回溯溯到m-11列

8、时,并并准备调整整第m-11列的皇后后配置时,清清除在数组组a,b和和c对对应位置的的值都为11来确定。 2)遗遗传算法遗传算法的的基本运算算过程如下下:a)初始化化:设置进进化代数计计数器t=0,设置置最大进化化代数T,随随机生成MM个个体作作为初始群群体P(00)。b)个体评评价:计算算群体P(t)中各各个个体的的适应度。遗传算法遗传算法c)选择运运算:将选选择算子作作用于群体体。选择的的目的是把把优化的个个体直接遗遗传到下一一代或通过过配对交叉叉产生新的的个体再遗遗传到下一一代。选择择操作是建建立在群体体中个体的的适应度评评估基础上上的。d)交叉运运算:将交交叉算子作作用于群体体。遗传算

9、算法中起核核心作用的的就是交叉叉算子。e)变异运运算:将变变异算子作作用于群体体。即是对对群体中的的个体串的的某些基因因座上的基基因值作变变动。群体P(tt)经过选选择、交叉叉、变异运运算之后得得到下一代代群体P(t+1)。f)终止条条件判断:若t=TT,则以进进化过程中中所得到的的具有最大大适应度个个体作为最最优解输出出,终止计计算。3)cspp最小冲突突法(1)初始始化N个皇皇后的一个个放置,允允许有冲突突(2)考虑虑某一行的的某个皇后后,她可能能与x个皇皇后冲突,然然后看看将将这个皇后后移动到这这一行的哪哪个空位能能使得与其其冲突的皇皇后个数最最少,就移移动到那里里。(也可可以考虑列列,

10、是等价价的)(3)不断断执行(22),直到到没有冲突突为止2.数据结结构使用数组结结构存储相相关数据一维数组:二维数组:3.算法设设计1)/回回溯搜索 void Funcctionn1:DDFS(iint t,booll isShhowTiime)if (t = n)/说明已经经排了n行行了(从00开始的),即即排列结束束了forr (intt i = 0; in; i+)reeci = bboarddi;if (! iisShoowTimme )PPrinttChesssBoaard();/输输出棋局couunt+;retturn;for (intt i = 0; in; i+)/有有冲突i

11、f (verri = 11|ruui - t + nn = 1|rdii + tt = 1) conttinuee;/没没有冲突verri = 1;rui - t + nn = 1;rdi + t = 1;boaardtt = i;DFSS(t + 11, issShowwTimee);/深深搜递归/后后退处理rdi + t = 0;rui - t + nn = 0;verri = 0;retuurn;2)遗传算算法void CGAQQueenn:PrrintCChesssBoarrd(boool PrinntCheessBooard)booll DissplayyAllAAnsurres=P

12、PrinttChesssBoaard;/是否否输出所有有棋盘结果果int g = 0, num = 0;InittialPPopullatioon();whille (gg = 0 & numm Iteeratiion)numm+;g = 0;forr (intt k = 0; k Poopulaationn ; kk+)thhis-FilllAreaa(k);thhis-CCostMMatriixk = tthis-CosstFunnc(k);thiis-PPopullatioonSorrt();if (thiis-CCostMMatriix0 = 0)/已经完成成计算g = 1;if (D

13、issplayyAllAAnsurres)PrrintTTheBeestAnnsuree();/*for (i = 0; i = CheessBooradLLenghht - 1; ii+)ccout row: i col: CChrommosommeMattrixi00 enddl;coout GGenerrateCCrosssOverrMatrrix();thiis-MMatinng();thiis-AApplyyMutaationn();coutt 实际迭迭代: nnum 次次 endll;if (DispplayAAllAnnsurees)couut 最佳佳答案为: PPrinttTh

14、eBBestAAnsurre();3)CSPP最小冲突突算法/用最小小冲突算法法调整第rrow行的的皇后的位位置(初始始化时每行行都有一个个皇后,调调整后仍然然在第roow行)/调整过过后cheeck一下下看看是否否已经没有有冲突,如如果没有冲冲突(达到到终止状态态),返回回trueebool CSP_Queeens:Adjuust_rrow(iint row)int cur_col = Rrow;int optiimal_col = cuur_cool;/最佳列号号,设置为为当前列,然然后更新/计算算总冲突数数int min_confflictt = ccolooptimmal_ccol +

15、 pddiagGetPP(roww, opptimaal_cool) - 1+ ccdiaggGettC(roow, ooptimmal_ccol) - 11;/对对角线冲突突数为当前前对角线皇皇后数减一一,三次重重叠了/逐个个检查第rrow行的的每个位置置,看看是是否存在冲冲突数更小小的位置for (intt i = 0; i N; ii+) if (i = cuur_cool) ccontiinue;intt connflicct = coli + pdiiagGGetP(row, i) + cddiagGetCC(roww, i);if (connflicct min_confflict

16、t) miin_coonfliict = connflicct;opptimaal_cool = i;/如果果最佳列位位置改变,则则皇后移向向新的最小小冲突位置置,要更新新col,pdiaag,cddiag,if (optiimal_col != ccur_ccol) collcurr_coll-;pdiiagGGetP(row, cuur_cool);cdiiagGGetC(row, cur_col)-;collopttimall_coll+;pdiiagGGetP(row, optiimal_col)+;cdiiagGGetC(row, optiimal_col)+;Rrrow = opp

17、timaal_cool;if (collcurr_coll = 1 & coolopptimaal_cool = 1& pdiiagGGetP(row, optiimal_col) = 1 & cddiagGetCC(roww, opptimaal_cool) = 11) reeturnn Quaalifyy();/quaalifyy相对更耗耗时,所以以只在满足足上面基本本条件后才才检查/否则则当前点就就是最佳点点,一切都都保持不变变retuurn falsse;/如果果都没变的的话,肯定定不满足终终止条件,否否则上一次次就应该返返回truue并终止止了/检查冲冲突bool CSP_Queee

18、ns:Quallify()for (intt i = 0; i N; ii+)if (collRii != 1 |pddiagGetPP(i, Ri) != 1 |cddiagGetCC(i, Ri) != 1) reeturnn falsse;retuurn truee;/最终用用户调用函函数,nuumOfQQueenns为输入入皇后数,PPrinttChesssBoaard判断断是否输出出棋盘表示示int CCSP_QQueenns:CCSPAllgoriithmss(boool PrinntCheessBoord)srannd(uunsiggned)timee(NULLL);Initt(

19、);if (Quallify() /运气气很好,初初始化后就就满足终止止条件if (PriintChhessBBord)Prinnt_reesultt();retturn 0;booll endd = ffalsee;whille (!end) forr (intt i = 0; i 1000)时,前前两者都不不能再解决决,此时,CCSP最小小冲突法的的效率最高高,且与nn值没有必必然的联系系。总结 通通过此次课课程实习不不仅大大加加深了我对对几种经典典搜索算法法的理解,而而且帮助我我很好的复复习了队列列、堆栈、图、文件件读写这几几部分的内内容,使我我对几种基基本的数据据结构类型型的运用更更加

20、熟练。在解决这这些问题的的过程中我我不但很好好的巩固了了数据结构构的相关知知识,而且且提高了编编程及程序序调试能力力,增强了了自己编程程的信心。 总之之,在这次次课程实习习过程中我我是实实在在在学到了了一些课堂堂上学不到到的东西,同同时也提高高了实践能能力。同时时在这个过过程中也暴暴露了自己己的不少问问题,在今今后的学习习过程成也也会更加有有针对性。最后还要要感谢老师师的悉心指指导,解答答我编程过过程中的疑疑问、指出出我程序中中的不足,及及提出可行行的解决方方法,让我我的程序的的功能更加加完善。CSP算法法源代码:/CSPPAlgoorithhms.hh#praggma onceeclasss

21、 CSP_Queeenspubliic:/构造造函数,nnumOffQueeens为输输入皇后数数,CSP_Queeens(iint nnumOffQueeens);CSPP_Queeens();privaate:/roowi表示当前前摆放方式式下第i行行的皇后数数,int *roww;/cooli表示当前前摆放方式式下第i列列的皇后冲冲突数int *coll;int N; /放置NN个皇后在在N*N棋棋盘上/从左左上到右下下的对角线线上roww-coll值是相同同的,但是是这个值有有可能是负负值,最小小为-(NN-1),/所以以可以做个个偏移,统统一加上NN-1,这这样这个值值就在00,2*

22、NN-2范范围内,将将这个值作作为该对角角线的编号号/pddiagi表示示当前摆放放方式下编编号为i的的对角线上上的皇后数数int *pdiiag;/priincippal ddiagoonal,主对角线线,左上到到右下(表表示和主对对角线平行行的2N-1条对角角线)/从右右上到左下下的对角线线row+col的的值相同,取取值范围为为0, 2 * N - 2,22*N-11条,作为为对角线编编号/cddiagi表示示编号为ii的对角线线上的皇后后数int *cdiiag;/couunterr diaagonaal,副对对角线/R用来存存储皇后放放置位置,RRroww = col表表示(roow

23、,cool)处,即“第rrow行第第col列列”有个皇皇后int *R;publiic:int swapp(intt &a, intt &b);/给定定二维矩阵阵的一个点点坐标,返返回其对应应的左上到到右下的对对角线编号号int GetPP(intt roww, innt cool);/给定定二维矩阵阵的一个点点坐标,返返回其对应应的右上到到左下的对对角线编号号int GetCC(intt roww, innt cool);/返回回begiin, bbeginn + 11, , end - 1 这endd - bbeginn个数中的的随机的一一个int My_rrand(int bbeginn

24、, innt ennd);/左闭右右开beegin, endd)/原地地shufffle算算法,算法法导论中的的randdomizze inn plaace算法法voidd Ranndomiize(iint aa, int bbeginn, innt ennd);/ 左闭闭右开/初初始化皇后后的摆放,同同时初始化化row,col,pdiaag,cddiag数数组voidd Iniit();/用最最小冲突算算法调整第第row行行的皇后的的位置(初初始化时每每行都有一一个皇后,调调整后仍然然在第roow行)/调整整过后chheck一一下看看是是否已经没没有冲突,如如果没有冲冲突(达到到终止状态态)

25、,返回回trueebooll Adjjust_row(int rrow);booll Quaalifyy();voidd Priint_rresullt();/最终终用户调用用函数 PPrinttChesssBoaard判断断是否输出出棋盘表示示int CSPAAlgorrithmms(boool PPrinttChesssBorrd);/CSPPAlgoorithhms.ccpp#inclludeCSPAAlgorrithmms.h#incllude #incllude #incllude #inclludeusingg nameespacce sttd;CSP_QQueenns:CCSP_

26、QQueenns(innt numOOfQueeens)srannd(uunsiggned)timee(NULLL);N = numOOfQueeens;row = neew intNN;col = neew intNN;pdiaag=neew int22 * NN;cdiaag=neew int22 * NN;R=neew intNN;CSP_QQueenns:CSP_Queeens()if (NULLL != row)deleeterow;if (NULLL != col)deleetecol;if (NULLL != pdiaag)deeleteepddiag;if (NULLL !=

27、cdiaag)deeleteecddiag;if (NULLL != R)deeleteeR;int CCSP_QQueenns:sswap(int &a, intt &b)int t = a; a = b; b = tt;retuurn 00;/int CCSP_QQueenns:GGetP(int row, int col)retuurn row - coll + NN - 11;int CCSP_QQueenns:GGetC(int row, int col)retuurn row + coll;/返回bbeginn, beegin + 1, , eend - 1 这这end - bee

28、gin个个数中的随随机的一个个int CCSP_QQueenns:MMy_raand(iint begiin, intt end)/左闭闭右开bbeginn, ennd)retuurn rrand() % (endd - beegin) + bbeginn;/原地sshufffle算法法,算法导导论中的rrandoomizee in placce算法void CSP_Queeens:Randdomizze(innt a, int begiin, intt end)/ 左左闭右开for (intt i = beggin; i = endd - 22; i+)intt x = My_randd(i

29、, end);swaap(ai, ax);/初始化化皇后的摆摆放,同时时初始化rrow,ccol,ppdiagg,cdiiag数组组void CSP_Queeens:Initt()for (intt i = 0; i N; ii+)/首先先全部安放放在主对角角线上Rii = i;/下面面随机抽取取调换两行行皇后位置置Randdomizze(R, 0, N);/初始化化N个皇后后对应的RR数组为00N-11的一个排排列,/此时时 即没有有任意皇后后同列,也也没有任何何皇后同行行for (intt i = 0; i N; ii+)rowwi = 1;/每行行恰好一个个皇后colli = 0;for

30、 (intt i = 0; i 2 * N - 1; ii+)pdiiagii = 0;cdiiagii = 0;/初始始化当前棋棋局的皇后后所在位置置的各个冲冲突数for (intt i = 0; i N; ii+)collRii+;pdiiagGGetP(i, RRi)+;cdiiagGGetC(i, RRi)+;/用最小小冲突算法法调整第rrow行的的皇后的位位置(初始始化时每行行都有一个个皇后,调调整后仍然然在第roow行)/调整过过后cheeck一下下看看是否否已经没有有冲突,如如果没有冲冲突(达到到终止状态态),返回回trueebool CSP_Queeens:Adjuust_rr

31、ow(iint row)int cur_col = Rrow;int optiimal_col = cuur_cool;/最佳列号号,设置为为当前列,然然后更新int min_confflictt = ccolooptimmal_ccol + pddiagGetPP(roww, opptimaal_cool) - 1+ ccdiaggGettC(roow, ooptimmal_ccol) - 11;/对对角线冲突突数为当前前对角线皇皇后数减一一for (intt i = 0; i N; ii+) /逐逐个检查第第row行行的每个位位置if (i = cuur_cool) coontinnue;

32、intt connflicct = coli + pdiiagGGetP(row, i) + cddiagGetCC(roww, i);if (connflicct min_confflictt) miin_coonfliict = connflicct;opptimaal_cool = i;if (optiimal_col != ccur_ccol) /要要更新cool,pddiag,cdiaagcollcurr_coll-;pdiiagGGetP(row, cur_col)-;cdiiagGGetC(row, cur_col)-;collopttimall_coll+;pdiiagGGet

33、P(row, optiimal_col)+;cdiiagGGetC(row, optiimal_col)+;Rrrow = opptimaal_cool;if (collcurr_coll = 1 & coolopptimaal_cool = 1& pdiiagGGetP(row, optiimal_col) = 1 & cddiagGetCC(roww, opptimaal_cool) = 11) reeturnn Quaalifyy();/quaalifyy相对更耗耗时,所以以只在满足足上面基本本条件后才才检查/当前前点就是最最佳点,一一切都保持持不变retuurn falsse;/如果果都没变的的话,肯定定不满足终终止条件,否

温馨提示

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

评论

0/150

提交评论