ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:43.44KB ,
资源ID:11428096      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11428096.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人工智能课程设计资料.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人工智能课程设计资料.docx

1、人工智能课程设计资料人工智能课程设计精品文档人工智能 技术报告简介本课程设计是基于 alpha-beta剪枝算法的五子棋的博弈游戏,具有悔棋, 可选择禁手,支持人机对战,人人对战等功能。整个设计基于 Java语言开发,界面美观大方。alpha-beta剪枝技术的基本思想或算法是,边生成博弈树边计算评估各节点 的倒推值,并且根据评估出的倒推值范围,及时停止扩展那些已无必要再扩展 的子节点,即相当于剪去了博弈树上的一些分枝,从而节约了机器开销,提高 了搜索效率。具体的剪枝方法如下:(1) 对于一个与节点 MIN ,若能估计出其倒推值的上确界 ,并且这个 值 不大于 MIN 的父节点 (一定是或节点

2、 )的估计倒推值的下确界 ,即 ,则就 不必再扩展该 MIN 节点的其余子节点了 (因为这些节点的估值对 MIN 父节点的 倒推值已无任何影响 了 )。这一过程称为 剪枝。(2) 对于一个或节点 MAX ,若能估计出其倒推值的下确界 ,并且这个 值不小于 MAX 的父节点 (一定是与节点 )的估计倒推值的上确界 ,即 ,则 就不必再扩展该 MAX 节点的其余子节点了 (因为这些节点的估值对 MAX 父节 点的倒推值已无任何影响 了) 。这一过程称为 剪枝。1、 数据结构定义本文定义 15*15 的五子棋棋盘,实现算法,在算法中采用的数据结构包 括:int isChessOn描述当前棋盘, 0表

3、示黑子, 1表示白字, 2表示无子; int pre 记录棋点的 x, y 坐标。由于本课程设计是基于 Java语言开发的,在 Java中只能用类表示并实现所 定义的数据结构。所以下面将用类来描述相应的数据结构及算法:public class ChessPanelprivate ImageIcon map; / 棋盘背景位图private ImageIcon blackchess; /黑子位图private ImageIcon whitechess ; /白子位图public int isChessOn ; /棋局protected boolean win = false; / 是否已经分出胜

4、负protected int win_bw ; / 胜利棋色protected int deep = 3, weight = 7; / 搜索的深度以及广度public int drawn_num = 110; / 和棋步数int chess_num = 0; / 总落子数目public int pre = new int drawn_num + 12; / 记录下棋点的 x,y 坐标 最多 (drawn_num + 1) 个public int sbw = 0; / 玩家棋色黑色 0,白色 1public int bw = 0; / 当前应该下的棋色 0:黑色 ( 默认 ), 1:白色prot

5、ected int x_max = 15, x_min = 0; / 边界值 ,用于速度优化收集于网络,如有侵权请联系管理员删除精品文档protected int y_max = 15, y_min = 0; / 边界值 ,用于速度优化protected boolean able_flag = true; / 是否选择禁手标志 0:无禁手 1: 有禁手 (默认privateint h;/棋子长privateint w;/棋子宽privateint insx;/插入棋子的位置privateint insy;privatePoint mousePoint ;/鼠标当前位置privateint wi

6、ner ;/获胜方private boolean humanhuman =false ;/ 是否是人人对弈privateint plast=0;/走了几步了,publicint BLACK_ONE ;/0表黑子publicint WHITE_ONE ;/1表白子publicint NONE_ONE ;/2表无子public intN;/棋盘边长/ 搜索当前搜索状态极大值 /alpha 祖先节点得到的当前最小最大值,用于 alpha 剪枝/beta 祖先节点得到的当前最大最小值,用于 beta 剪枝。/step 还要搜索的步数/return 当前搜索子树极大值protected int find

7、Max( int alpha, int beta, int step) int max = alpha;if (step = 0) return evaluate();int rt = getBests(1 - sbw);for (int i = 0; i max)max = t;/beta 剪枝if (max = beta)return max;return max;/ 搜索当前搜索状态极小值 /alpha 祖先节点得到的当前最小最大值,用于 alpha 剪枝/beta 祖先节点得到的当前最大最小值,用于 beta 剪枝/step 还要搜索的步数收集于网络,如有侵权请联系管理员删除精品文档/

8、return 当前搜索子树极小值。protected int findMin( int alpha, int beta, int step) int min = beta;if (step = 0) return evaluate();int rt = getBests( sbw);for (int i = 0; i rt. length; i+) int x = rti0;int y = rti1;int type = getType(x, y, sbw);/玩家成 5if (type = 1)return -100 * ( getMark(1) + step*1000 );/ 预存当前边界

9、值int temp1= x_min ,temp2= x_max ,temp3= y_min ,temp4= y_max ; isChessOnxy = sbw;resetMaxMin(x,y);int t = findMax( alpha, min, step - 1 ); isChessOnxy = 2;/ 还原预设边界值x_min =temp1; x_max =temp2;y_min =temp3;y_max =temp4; if (t min) min = t;/alpha 剪枝 if (min = alpha) return min;return min;/ 选取局部最优的几个落子点作

10、为下一次扩展的节点 /bwf 棋色 0:黑棋 1 :白棋/return 选出来的节点坐标 private int getBests( int bwf) int i_min=( x_min =0 ? x_min :x_min -1);int j_min=( y_min =0 ? y_min :y_min -1);int i_max=( x_max =15 ? x_max :x_max +1);int j_max=( y_max =15 ? y_max :y_max +1);int n = 0;int type_1,type_2;int rt = new int (i_max-i_min) * (

11、j_max-j_min)3;for ( int i = i_min; i i_max; i+)for (int j = j_min; j n? n: weight ; int bests = new int size3; System.arraycopy (rt, 0, bests, 0, size); return bests;3、 程序执行结果初始界面收集于网络,如有侵权请联系管理员删除精品文档人机博弈收集于网络,如有侵权请联系管理员删除精品文档收集于网络,如有侵权请联系管理员删除精品文档人人博弈收集于网络,如有侵权请联系管理员删除精品文档禁手选择收集于网络,如有侵权请联系管理员删除精品文档4、 个人总结、看法本程序是使用 Alpha-Beta 搜索的算法完成的一个简单的五子棋博弈游戏。虽然 Alpha-Beta 已经尽力做到细致、全面,但由于 Alpha-Beta 搜索存在博弈树算法中普遍 存在的一个缺点一随着搜索层数的增加,算法的效率大大下降。所以该搜索的效率还 是不怎么理想,五子棋程序的“智力”也不高。因此可以在上述程序的基础上,针对 五子棋本身的特点和规律对 Alpha-Beta 搜索算法进行优化与修正,比如用启发式搜 索。收集于网络,如有侵权请联系管理员删除

copyright@ 2008-2022 冰豆网网站版权所有

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