人工智能
课程设计中期报告
题目:一字棋游戏 班级:计算机技术 2014级 成员:樊祥锰(2014704101)
段绍鹏(2014704100) 范程斌(2014704102)
指导老师:张 云
目录
第一章 项目建议书
1.1 立项目的 1.2 立项动机 1.3 项目实现方案 1.4 项目测试及验证方案 1.5 项目安排 1.6 参考文献
第二章 前期工作总结
第一章 项目建议书
1.1立项目的
学习和了解人工智能知识,并对极大极小搜索与α-β剪枝算法的学习和分析。把所学算法应用于一字棋游戏的设计中,让机器附有人的思路,实现人与机器的对决。
1.2立项动机
1.学习和了解人工智能。 2.学习极大极小搜索分析法。
3.学习α-β剪枝算法并在项目中对它进行实现。 4.用人工智能算法解决现实问题。
1.3项目实现方案
一字棋项目实现完全按照软件开发的一般步骤,并对它现实的需求分析进行了客观的设计,对一字棋游戏规则进行具体的描述。在代码设计阶段,又对输赢判断算法进行了设计与分析,本项目是基于windows平台,开发软件采用VC++ 6.0 ,采用MFC可视化界面,运用α-β剪枝算法实现机器的智能化对决。
1.4项目测试及验证方案
采用软件工程测试方法,对关键函数代码的测试与调试,对测试用例进行极端设置,观察估值函数是否符合自己设计的要求。运行项目并截图观察结果。
1.5项目安排 (1)时间进度:
第一周:小组成员收集资料,对人工智能知识的学习。
第二周:对极大极小搜索分析法、α-β剪枝算法的学习与研究。 第三周:学习C++编程知识、软件工程知识。
第四周:学习软件开发过程,并对一字棋项目进行需求分析与设计,画出流程图。
第五周:对一字棋界面的设计,并编写代码。 第六周:对人工智能算法的设计并编写代码。 第七周:对算法的设计并进行项目的测试。 第八周:写设计报告。 (2)分工安排
1.由段绍鹏、樊祥锰进行需求分析。 2.大家合作对一字棋AI问题进行分析。 3.由段绍鹏、范程斌进行代码编写。
4.由樊祥锰、范程斌进行软件测试及问题修改。 5.由范程斌进行撰写报告。
1.6参考文献
1、蔡自兴、徐光佑。人工智能及其应用。清华大学出版社,1997
2、蔡瑞英、李长河。人工智能。武汉理工大学出版社,2003
第二章 前期工作总结
在任务的初期,我们选定好人工智能的一种可行算法,然后确定好小组分工,每个人负责各自的任务,负责收集和学习人工智能相关的书籍和C++编程方面的知识。对于传统的一字棋游戏,主要采用的算法有:估值函数、搜索算法和胜负判断等。由于极大极小分析算法,每走一步棋都要调用估值函数,要遍历整个棋盘。所以自身有它的不足,这样会增加系统开销和时间开销,所以本项目在极大极小算法的基础上与α-β剪枝算法相结合,减少了博弈树结点的搜索范围。在前期工作中,主要学习了极大极小分析算法和α-β剪枝算法,了解算法的思想和设计思路,并学习了可视化的MFC编程知识,对按钮、编辑框等控件进行了学习。在第四周,主要对一字棋游戏进行了需求分析与设计,在需求分析阶段,主要是根据传统一字棋游戏的不足,提出α-β剪枝搜索算法,并介绍我们的基本思路和对算法技术原理的分析,画出算法的流程图和整个系统的实现功能图。在主界面设计阶段,当时考虑的不是很全面,只是简单的添加了基本的功能,先实现整个框架结构的生成,但是在棋盘设计阶段遇到了很多问题,一是控件响应问题,鼠标可响应的界面范围。二是环境设备的编程问题,后来经过MFC书籍的学习,解决了问题。三是棋盘大小问题,考虑到博弈树的异常庞大,选择设计3*3 的棋盘,并分析设计了数组存放8种胜算的布局。在算法代码的编辑阶段,也出现过编译不通过的问题,主要是指针的使用问题,少写头文件问题,控制结构问题等,但是通过大家的努力和收集资料,最终还是调试好了。