游戏人工智能实验报告记录四

合集下载

人工智能实验4三-专家系统方案

人工智能实验4三-专家系统方案

《人工智能导论》实验报告一、实验题目:识别型专家系统设计————识别动物专家系统二、实验目的1、掌握专家系统的基本构成2、掌握用人工智能程序设计语言编制智能程序的方法三、实验容1、所选编程语言:C语言;2.拟订的规则:(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

(15)若某动物是鸟且善飞,则它是海燕。

2、设计思路:用户界面:采用问答形式;知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。

事实库是一个动态链表,一个事实是链表的一个结点。

知识库通过事实号与事实库发生联系。

数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果;推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。

推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。

将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。

人工智能五子棋实验报告

人工智能五子棋实验报告

题目:智能五子棋游戏一、实验目的理解和掌握博弈树的启发式搜索过程和α-β减枝技术,能够用某种程序语言开发一个五子棋博弈游戏。

二、实验要求(1)设计一个15行15列棋盘,要求自行给出估价函数,按极大极小搜索方法,并采用α-β减枝技术。

(2)采用人机对弈方式,对弈双方设置不用颜色的棋子,一方走完后,等待对方走步,对弈过程的每个棋局都在屏幕上显示出来。

当某一方在横、竖或斜方向上先有5个棋子连成一线时,该方为赢。

(3)提交一篇实验论文,以及完整的软件(包括源程序和可可执行程序)和相关文档。

三、实验原理①估价函数的设计:下子后,求在该点的所有8个方向上4格之内的所有的没有阻隔的白子的和加上没有阻隔的黑子的数目之和,和为估价函数的值。

直观来说就是,如果在该点下子后连成同颜色的棋子越多,该点的估价值越大,同时阻挡另一种颜色的棋子越多,估价值也越大。

②判断是否有一方胜出:设计is_win函数,在每一次下子后检查是否是终局(一方胜出或者棋盘下满和局)。

对于棋盘上每一个已经下了棋子的点,检查其4个方向上是否有连续5颗同颜色的棋子,若有,则有一方胜出。

③寻找候选点,用于建立博弈树:对于棋盘上每一个还没有下子的点,测试其附近8个点是否已经下了棋子,若有,把该点加入候选点。

④搜寻最佳着点:根据候选点建立3层的博弈树,再利用估价函数对节点进行比较,得出最佳着点。

四、代码人主要代码public void refreshMax(int n){switch(n){case 1:{ //更新预测棋盘1最大值及其坐标maxValue1=0;number1=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard1[i][j]>maxValue1){maxX1.clear();maxY1.clear();maxX1.add(i);maxY1.add(j);number1=1;}else if(preBoard1[i][j]==maxValue1){maxX1.add(i);maxY1.add(j);number1++;}}}break;}case 2:{ //更新预测棋盘2最大值及其坐标maxValue2=0;number2=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard2[i][j]>maxValue2){maxX2.clear();maxY2.clear();maxX2.add(i);maxY2.add(j);number2=1;}else if(preBoard2[i][j]==maxValue2){maxX2.add(i);maxY2.add(j);number2++;}}}break;}case 3:{ //更新预测棋盘3最大值及其坐标maxValue3=0;number3=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard3[i][j]>maxValue3){maxX3.clear();maxY3.clear();maxX3.add(i);maxY3.add(j);number3=1;}else if(preBoard3[i][j]==maxValue3){maxX3.add(i);maxY3.add(j);number3++;}}}break;}case 4:{ //更新预测棋盘4最大值及其坐标maxValue4=0;number4=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard4[i][j]>maxValue4){maxX4.clear();maxY4.clear();maxX4.add(i);maxY4.add(j);number4=1;}else if(preBoard4[i][j]==maxValue4){maxX4.add(i);maxY4.add(j);number4++;}}}break;}case 5:{ //更新预测棋盘5最大值及其坐标maxValue5=0;number5=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard5[i][j]>maxValue5){maxX5.clear();maxY5.clear();maxX5.add(i);maxY5.add(j);number5=1;}else if(preBoard5[i][j]==maxValue5){maxX5.add(i);maxY5.add(j);number5++;}}}break;}case 6:{ //更新预测棋盘6最大值及其坐标maxValue6=0;number6=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard6[i][j]>maxValue6){maxX6.clear();maxY6.clear();maxX6.add(i);maxY6.add(j);number6=1;}else if(preBoard6[i][j]==maxValue6){maxX6.add(i);maxY6.add(j);number6++;}}}break;}case 7:{ //更新预测棋盘7最大值及其坐标maxValue7=0;number7=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard7[i][j]>maxValue7){maxX7.clear();maxY7.clear();maxX7.add(i);maxY7.add(j);number7=1;}else if(preBoard7[i][j]==maxValue7){maxX7.add(i);maxY7.add(j);number7++;}}}break;}}}AI主要代码public void refreshMax(int n){switch(n){maxValue1=0;number1=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard1[i][j]>maxValue1){maxValue1=preBoard1[i][j];maxX1.clear();maxY1.clear();maxX1.add(i);maxY1.add(j);number1=1;}else if(preBoard1[i][j]==maxValue1){maxX1.add(i);maxY1.add(j);number1++;}}}break;}maxValue2=0;number2=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard2[i][j]>maxValue2){maxValue2=preBoard2[i][j];maxX2.clear();maxY2.clear();maxX2.add(i);maxY2.add(j);number2=1;}else if(preBoard2[i][j]==maxValue2){maxX2.add(i);maxY2.add(j);number2++;}}}break;}maxValue3=0;number3=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard3[i][j]>maxValue3){maxValue3=preBoard3[i][j];maxX3.clear();maxY3.clear();maxX3.add(i);maxY3.add(j);number3=1;}else if(preBoard3[i][j]==maxValue3){maxX3.add(i);maxY3.add(j);number3++;}}}break;}maxValue4=0;number4=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard4[i][j]>maxValue4){maxValue4=preBoard4[i][j];maxX4.clear();maxY4.clear();maxX4.add(i);maxY4.add(j);number4=1;}else if(preBoard4[i][j]==maxValue4){maxX4.add(i);maxY4.add(j);number4++;}}}break;}maxValue5=0;number5=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard5[i][j]>maxValue5){maxValue5=preBoard5[i][j];maxX5.clear();maxY5.clear();maxX5.add(i);maxY5.add(j);number5=1;}else if(preBoard5[i][j]==maxValue5){maxX5.add(i);maxY5.add(j);number5++;}}}break;}maxValue6=0;number6=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard6[i][j]>maxValue6){maxValue6=preBoard6[i][j];maxX6.clear();maxY6.clear();maxX6.add(i);maxY6.add(j);number6=1;}else if(preBoard6[i][j]==maxValue6){maxX6.add(i);maxY6.add(j);number6++;}}}break;}maxValue7=0;number7=0;for(int i=0;i<size;i++){for(int j=0;j<size;j++){if(preBoard7[i][j]>maxValue7){maxValue7=preBoard7[i][j];maxX7.clear();maxY7.clear();maxX7.add(i);maxY7.add(j);number7=1;}else if(preBoard7[i][j]==maxValue7){maxX7.add(i);maxY7.add(j);number7++;}}}break;}}}五、感想通过这个试验,我对估价函数,极大极小搜索方法,α-β减枝技术有了更全面的认识,对它们的运用也更加熟练。

人工智能实验报告内容

人工智能实验报告内容

人工智能实验报告内容人工智能实验报告内容人工智能(Artificial Intelligence, AI)作为一种重要的技术,正在逐渐影响到我们的日常生活和工作。

本次实验旨在学习和探索人工智能的基本技术,并通过实践加深对其原理和应用的理解。

首先,本次实验分为两个部分:人工智能基础技术的学习和人工智能应用的实践。

在人工智能基础技术学习的部分,我们研究了人工智能的核心技术包括机器学习、神经网络、深度学习等。

我们首先学习了机器学习的基本概念和算法,包括监督学习、无监督学习和强化学习等。

我们使用Python编程语言,利用机器学习库进行了实践,例如使用Scikit-learn库实现了线性回归和K-means 聚类算法。

其次,我们学习了神经网络的基本原理和算法,在激活函数、损失函数、优化算法等方面进行了深入研究。

我们利用TensorFlow库搭建了神经网络模型,并使用MNIST数据集进行了手写数字识别的实验。

通过不断调整网络结构和参数,我们逐渐提高了模型的准确率。

最后,我们学习了深度学习的原理和常用的深度学习模型,包括卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)等。

我们使用Keras库搭建了CNN模型,并使用CIFAR-10数据集进行了图像分类实验。

通过优化网络结构和参数,我们的模型在测试集上取得了较高的准确率。

在人工智能应用的实践部分,我们选择了自然语言处理(Natural Language Processing, NLP)为主题,具体研究了文本分类和情感分析两个任务。

我们使用了Python编程语言和NLTK(Natural Language Toolkit)库进行了实践。

首先,我们使用朴素贝叶斯算法实现了文本分类的任务,通过比较不同的特征提取方法,我们找到了最适合该任务的特征提取方法。

其次,我们使用情感词典和机器学习算法实现了情感分析的任务,通过对情感分析模型进行评估和调优,我们提高了模型的准确率和鲁棒性。

人工智能实验报告四

人工智能实验报告四

人工智能实验报告四课程实验报告课程名称:人工智能实验项目名称:实验四:分类算法实验专业班级:姓名:学号:实验时间:2021年6月18日实验四:分类算法实验一、实验目的1.了解有关支持向量机的基本原理2.能够使用支持向量机的代码解决分类与回归问题3. 了解图像分类的基本原理二、实验的硬件、软件平台硬件:计算机软件:操作系统:***** 10应用软件:C+ + ,Java或者Matlab三、实验内容支持向量机算法训练分类器:1.训练数据集:见文档“分类数据集.doc”,前150个数据作为训练数据,其他数据作为测试数据,数据中“ + 1”“-1”分别表示正负样本。

2.使用代码中的C-SVC算法和默认参数来训练“分类数据集doc”中所有的数据(包括训练数据和测试数据),统计分类查准率。

3.在2的基础上使用k-折交叉验证思想来训练分类器并统计分类查准率。

4.使用2中的设置在训练数据的基础上学习分类器,将得到的分类器在测试数据上进行分类预测,统计查准率。

5.在4上尝试不同的C值("-c”参数)来调节分类器的性能并绘制查准率曲线。

6.尝试不同的kernel函数("-t”参数)来调节分类器的性能并绘制查准率曲线,对每种kernel函数尝试调节其参数值并评估查准率。

四. 实验操作采用提供的windows版本的libsvm完成实验。

1.文档“分类数据集.doc”改名为trainall.doc,前150组数据保存为train.doc 后120 组保存为test.doc2.使用代码中的C-SVC算法和默认参数来训练“分类数据集.doc” 中所有的数据(包括训练数据和测试数据),统计分类查准率。

用法:svm-scale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower =- 1, upper = 1,没有对y进行缩放)按实验要求这个函数直接使用缺省值就行了。

人工智能实验报告

人工智能实验报告

人工智能实验报告实验一 在搜索策略实验群实验目的熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A*算法求解N 数码难题,理解求解流程和搜索顺序。

搜索图算法比较广度优先深度优先 A*Open 表 节点G ,节点10节点G ,节点6节点3,节点9,节点G ,节点10,节点8Close 表节点s ,节点1,节点2,节点3,节点4,节点5,节点6,节点7,节点8,节点9 节点s,节点1,节点3,节点7,节点4,节点8,节点2,节点5,节点9节点s ,节点2,节点1,节点5,节点6,节点4估价函数无无)()()(n h n g n f +=搜索节点次序记录 节点s ,节点1,节点2,节点3,节点4,节点5,节点6,节点7,节点8,节点9,节点G 节点s,节点1,节点3,节点7,节点4,节点8,节点2,节点5,节点9,节点G 节点s ,节点2,节点1,节点5,节点6,节点4,节点G观测结果 经过11步搜索得到目标节点经过10步搜索得到目标节点经过7步搜索得到目标节点学生结论宽度优先搜索能保证在搜索树 深度优先搜索要沿路径一条一 A*算法是启发式算法的一中找到一条通向目标节点的最短路径,但由于盲目性大所以当搜索数据比较多的时候该方法较为费时。

条的走到底,如果目标在前几条路径中那么该搜索会较为快捷,在本搜索树中虽然比宽度优先少一步,但是若第一条路径或者某几条路径很深,则该搜索会相当耗时且不能保证成功。

种能通过路径的权值找出代价最为小的一条,所以很具优越性,但是算法本身计算较为复杂,要考虑以前的和将来两方面的代价,进行估算,所以没有前两种方法简单。

实验二:产生式系统实验实验目的熟悉和掌握产生式系统的运行机制,掌握基于规则推理的基本方法。

推理方法□ 正向推理 □ 反向推理建立规则库 建立事实库该动物是哺乳动物 <- 该动物有毛发. 该动物是哺乳动物 <- 该动物有奶.该动物是鸟 <- 该动物有羽毛.该动物是鸟 <- 该动物会飞&会下蛋. 该动物是食肉动物 <- 该动物吃肉.该动物是食肉动物 <- 该动物有犬齿&有爪&眼盯前方. 该动物是有蹄类动物 <- 该动物是哺乳动物&有蹄. 该动物是有蹄类动物 <- 该动物是哺乳动物& 是嚼反刍动物.该动物是金钱豹 <- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点.该动物是虎 <- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有黑色条纹.该动物是长颈鹿 <- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点.该动物是斑马 <- 该动物是有蹄类动物&身上有黑色条纹.该动物是鸵鸟 <- 该动物是鸟&有长脖子&有长腿&不会飞&有黑白二色.该动物是企鹅 <- 该动物是鸟&会游泳&不会飞&有黑白二色.该动物是信天翁 <- 该动物是鸟&善飞.%------动物识别系统事实集: %--该动物是企鹅 会游泳. 不会飞.有黑白二色. %该动物是鸟.%-------- %--该动物是鸟 该动物会飞.会下蛋.%----该动物是金钱豹 <- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点. 该动物有毛发. %是食肉动物. 是黄褐色. 身上有暗斑点. 该动物吃肉.%----该动物是虎 <- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有黑色条纹.该动物是哺乳动物.%是食肉动物. 是黄褐色.身上有黑色条纹.%----该动物是长颈鹿 <- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点. %该动物是有蹄类动物. 有长脖子. 有长腿. 身上有暗斑点.%----该动物是有蹄类动物 <- 该动物是哺乳动物&有蹄. %有蹄.预测结果在相关询问:该动物是哺乳动物? 该动物是鸟? 该动物是食肉动物? 该动物是金钱豹?该动物是鸵鸟?该动物是企鹅?时为真,其余为假。

游戏人工智能实验报告四

游戏人工智能实验报告四

实验四有限状态机实验实验报告一、实验目的通过蚂蚁世界实验掌握游戏中追有限状态机算法二、实验仪器Windows7系统Microsoft Visual Studio2015三、实验原理及过程1)制作菜单设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计不断按下一步,有限状态机就会不断运行,使蚁群产生变化2)添加加速键资源视图中下方选择ID和键值3)新建头文件def.h在AntView.cpp中加入#include "def.h"与本实验有关的数据大都是在这里定义的int flag=0;#define kForage 1#define kGoHome 2#define kThirsty 3#define kDead 4#define kMaxEntities 200class ai_Entity{public:int type;int state;int row;int col;ai_Entity();~ai_Entity() {}void New (int theType,int theState,int theRow,int theCol);void Forage();void GoHome();void Thirsty();void Dead();};ai_Entity entityList[kMaxEntities];#define kRedAnt 1#define kBlackAnt 2int RedHomeRow;int RedHomeCol;int BlackHomeRow;int BlackHomeCol;int RedNum=2;int BlackNum=2;//地图大小,可改变#define kMaxRows 30#define kMaxCols 40#define LENGTH 20int terrain[kMaxRows][kMaxCols];#define kGround 1#define kWater 2#define kBlackHome 3#define kRedHome 4#define kPoison 5#define kFood 6//ai_Entity类中函数的定义ai_Entity::ai_Entity(){type=0;state=0;row=0;col=0;}int Rnd(int min, int max)//不能产生负数{int result;do{result=rand()%max;}while(result<=min);return result;}void ai_Entity::New (int theType,int theState,int theRow,int theCol) {type=theType;row=theRow;col=theCol;state=theState;}void ai_Entity::Forage(){int rowMove;int colMove;int newRow;int newCol;int foodRow;int foodCol;int poisonRow;int poisonCol;rowMove=Rnd(-1,3)-1;colMove=Rnd(-1,3)-1;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if((terrain[newRow][newCol]==kGround)||(terrain[newRow][newCol]==kWater)) {row=newRow;col=newCol;}if(terrain[newRow][newCol]==kFood){row=newRow;col=newCol;terrain[row][col]=kGround;state=kGoHome;do{foodRow=Rnd(-1,kMaxRows);foodCol=Rnd(-1,kMaxCols);}while(terrain[foodRow][foodCol]!=kGround);terrain[foodRow][foodCol]=kFood;}if(terrain[newRow][newCol]==kPoison){row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}}void ai_Entity::GoHome(){int rowMove;int colMove;int newRow;int newCol;int homeRow;int homeCol;int poisonRow;int poisonCol;int i;if(type==kRedAnt){homeRow=RedHomeRow;homeCol=RedHomeCol;}else{homeRow=BlackHomeRow;homeCol=BlackHomeCol;}if(row<homeRow)rowMove=1;else if(row>homeRow)rowMove=-1;elserowMove=0;if(col<homeCol)colMove=1;else if(col>homeCol)colMove=-1;elsecolMove=0;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if(terrain[newRow][newCol]!=kPoison){row=newRow;col=newCol;}else{row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}if((newRow==homeRow)&&(newCol==homeCol)){row=newRow;col=newCol;state=kThirsty;for(i=0;i<kMaxEntities;i++)if(entityList[i].type==0){entityList[i].New(type,kForage,homeRow,homeCol);if(type==kRedAnt)RedNum++;if(type==kBlackAnt)BlackNum++;break;}}}void ai_Entity::Thirsty(){int rowMove;int colMove;int newRow;int newCol;int foodRow;int foodCol;int poisonRow;int poisonCol;rowMove=Rnd(-1,3)-1;colMove=Rnd(-1,3)-1;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if((terrain[newRow][newCol]==kGround)||(terrain[newRow][newCol]==kFood)) {row=newRow;col=newCol;}if(terrain[newRow][newCol]==kWater){row=newRow;col=newCol;terrain[row][col]=kGround;state=kForage;do{foodRow=Rnd(-1,kMaxRows);foodCol=Rnd(-1,kMaxCols);}while(terrain[foodRow][foodCol]!=kGround);terrain[foodRow][foodCol]=kWater;}if(terrain[newRow][newCol]==kPoison){row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}}void ai_Entity::Dead(){if(type==kRedAnt)RedNum--;if(type==kBlackAnt)BlackNum--;type=0;}4)制作对话框添加资源,拖动控件9个静态文本框,7个编辑框右键对话框添加类InputDlg,添加成员变量int m_RedHomeRow;int m_RedHomeCol;int m_BlackHomeRow;int m_BlackHomeCol;int m_food;int m_water;int m_poison;在AntView.cpp中加入#include "InputDlg.h"5)对菜单项添加事件给CAntView类添加一些成员变量没做说明都是添加到CAntView类,没做说明都是COMMAND事件。

人工智能实验报告材料

人工智能实验报告材料

标准文档《人工智能》课外实践报告项目名称:剪枝法五子棋所在班级: 2013级软件工程一班小组成员:李晓宁、白明辉、刘小晶、袁成飞、程小兰、李喜林指导教师:薛笑荣起止时间: 2016-5-10——2016-6-18项目基本信息项目名称五子棋项目简介智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。

这个项目我们实现了当人点击“开始”按钮时,开始下棋,当人的棋子落时,计算机会根据算法进行最佳路径计算,然后落子下棋。

任何一方赢了都会弹出哪方赢了。

然后单击重新开始。

任务分工李晓宁 130904021 白明辉 130904001:负责界面实现和估值函数设计文档整理刘小晶 130904032 袁成飞 130904051:负责极小极大值算法的设计与实现李喜林 130904019 程小兰 130904004:负责αβ剪枝法的设计与实现一、系统分析1.1背景1.1.1 设计背景智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。

能使人们在与电脑进行对弈的过程中学习五子棋,陶冶情操。

并且推进人们对AI的关注和兴趣。

1.1.2可行性分析通过研究,本游戏的可行性有以下三方面作保障(1)技术可行性本游戏采用Windows xp等等系统作为操作平台,使用人工智能进行算法设计,利用剪枝法进行编写,大大减少了内存容量,而且不用使用数据库,便可操作,方便可行,因此在技术上是可行的。

(2)经济可行性开发软件:SublimText(3)操作可行性该游戏运行所需配置低、用户操作界面友好,具有较强的操作可行性。

1.2数据需求五子棋需要设计如下的数据字段和数据表:1.2.1 估值函数:估值函数通常是为了评价棋型的状态,根据实现定义的一个棋局估值表,对双方的棋局形态进行计算,根据得到的估值来判断应该采用的走法。

人工智能实验报告

人工智能实验报告

人工智能实验报告摘要:人工智能(AI)是一种模拟和模仿人类智能的技术,它可以模拟人类的思维和决策过程。

本实验报告旨在介绍人工智能的基本概念、发展历程、应用领域以及实验结果。

实验结果显示,人工智能在各个领域都取得了显著的成果,并且在未来的发展中有着广泛的应用前景。

引言:人工智能是一个非常有趣和有挑战性的领域,吸引了许多研究人员和企业的关注。

人工智能技术可以应用于各种领域,包括医疗、金融、交通、教育等。

本实验报告将通过介绍人工智能的基本概念和应用案例,以及展示实验结果,来展示人工智能的潜力和发展前景。

一、人工智能的基本概念人工智能是一种模拟和模仿人类智能的技术,主要包括以下几个方面:1. 机器学习:机器学习是人工智能的一个重要分支,它通过让机器学习自己的模式和规则来实现智能化。

机器学习的方法包括监督学习和无监督学习。

2. 深度学习:深度学习是机器学习的一个子集,它模拟了人类大脑的神经网络结构,可以处理更复杂的问题并取得更好的结果。

3. 自然语言处理:自然语言处理是指让计算机理解和处理人类语言的能力。

这个领域涉及到语音识别、语义分析、机器翻译等技术。

二、人工智能的发展历程人工智能的发展可以追溯到上世纪50年代,当时研究人员开始探索如何使计算机具备智能。

但是由于当时计算机的处理能力和算法的限制,人工智能的发展进展缓慢。

直到近年来,随着计算机技术和机器学习算法的快速发展,人工智能迎来了一个新的发展阶段。

如今, 人工智能技术在各个领域中得到了广泛的应用。

三、人工智能的应用领域1. 医疗领域:人工智能可以应用于医疗影像分析、疾病诊断和预测等方面。

例如,利用人工智能技术,可以提高病理切片的诊断准确率,帮助医生更好地判断病情。

2. 金融领域:人工智能可以应用于风险管理、投资决策和交易监测等方面。

例如,利用机器学习和数据分析,可以预测股票市场的走势并制定相应的投资策略。

3. 交通领域:人工智能可以应用于交通管理、无人驾驶和交通预测等方面。

人工智能深度学习实验报告

人工智能深度学习实验报告

人工智能深度学习实验报告一、实验背景随着科技的飞速发展,人工智能已经成为当今最热门的研究领域之一。

深度学习作为人工智能的一个重要分支,凭借其强大的学习能力和数据处理能力,在图像识别、语音识别、自然语言处理等多个领域取得了显著的成果。

为了更深入地了解和掌握人工智能深度学习的原理和应用,我们进行了一系列的实验。

二、实验目的本次实验的主要目的是通过实际操作和实践,深入探究人工智能深度学习的工作原理和应用方法,掌握深度学习模型的构建、训练和优化技巧,提高对深度学习算法的理解和应用能力,并通过实验结果验证深度学习在解决实际问题中的有效性和可行性。

三、实验环境在本次实验中,我们使用了以下硬件和软件环境:1、硬件:计算机:配备高性能 CPU 和 GPU 的台式计算机,以加速模型的训练过程。

存储设备:大容量硬盘,用于存储实验数据和模型文件。

2、软件:操作系统:Windows 10 专业版。

深度学习框架:TensorFlow 和 PyTorch。

编程语言:Python 37。

开发工具:Jupyter Notebook 和 PyCharm。

四、实验数据为了进行深度学习实验,我们收集了以下几种类型的数据:1、图像数据:包括 MNIST 手写数字数据集、CIFAR-10 图像分类数据集等。

2、文本数据:如 IMDb 电影评论数据集、20 Newsgroups 文本分类数据集等。

3、音频数据:使用了一些公开的语音识别数据集,如 TIMIT 语音数据集。

五、实验方法1、模型选择卷积神经网络(CNN):适用于图像数据的处理和分类任务。

循环神经网络(RNN):常用于处理序列数据,如文本和音频。

长短时记忆网络(LSTM)和门控循环单元(GRU):改进的RNN 架构,能够更好地处理长序列数据中的长期依赖关系。

2、数据预处理图像数据:进行图像的裁剪、缩放、归一化等操作,以提高模型的训练效率和准确性。

文本数据:进行词干提取、词向量化、去除停用词等处理,将文本转换为可被模型处理的数值形式。

人工智能_实验报告

人工智能_实验报告

人工智能_实验报告在当今科技飞速发展的时代,人工智能(Artificial Intelligence,简称 AI)已经成为了备受瞩目的领域。

为了更深入地了解人工智能的原理和应用,我们进行了一系列的实验。

本次实验的目的是探究人工智能在不同场景下的表现和能力,以及其对人类生活和工作可能产生的影响。

实验过程中,我们使用了多种技术和工具,包括机器学习算法、深度学习框架以及大量的数据样本。

首先,我们对图像识别这一领域进行了研究。

通过收集大量的图像数据,并使用卷积神经网络(Convolutional Neural Network,简称 CNN)进行训练,我们试图让计算机学会识别不同的物体和场景。

在实验中,我们发现,随着训练数据的增加和网络结构的优化,计算机的图像识别准确率得到了显著提高。

然而,在面对一些复杂的图像,如光线昏暗、物体遮挡等情况下,识别效果仍有待提升。

接着,我们转向了自然语言处理(Natural Language Processing,简称 NLP)的实验。

利用循环神经网络(Recurrent Neural Network,简称RNN)和长短时记忆网络(Long ShortTerm Memory,简称 LSTM),我们尝试让计算机理解和生成人类语言。

在文本分类和情感分析任务中,我们取得了一定的成果,但在处理语义模糊和上下文依赖较强的文本时,计算机仍会出现理解偏差。

在实验过程中,我们还遇到了一些挑战和问题。

数据的质量和数量对人工智能模型的性能有着至关重要的影响。

如果数据存在偏差、噪声或不完整,模型可能会学到错误的模式,从而导致预测结果不准确。

此外,模型的训练时间和计算资源需求也是一个不容忽视的问题。

一些复杂的模型需要在高性能的计算机集群上进行长时间的训练,这对于普通的研究团队和个人来说是一个巨大的负担。

为了应对这些问题,我们采取了一系列的措施。

对于数据质量问题,我们进行了严格的数据清洗和预处理工作,去除噪声和异常值,并通过数据增强技术增加数据的多样性。

《人工智能》实验报告

《人工智能》实验报告

《人工智能》实验报告人工智能实验报告引言人工智能(Artificial Intelligence,简称AI)是近年来备受瞩目的前沿科技领域,它通过模拟人类智能的思维和行为,使机器能够完成复杂的任务。

本次实验旨在探索人工智能的应用和局限性,以及对社会和人类生活的影响。

一、人工智能的发展历程人工智能的发展历程可以追溯到上世纪50年代。

当时,科学家们开始研究如何使机器能够模拟人类的思维和行为。

经过几十年的努力,人工智能技术得到了长足的发展,涵盖了机器学习、深度学习、自然语言处理等多个领域。

如今,人工智能已经广泛应用于医疗、金融、交通、娱乐等各个领域。

二、人工智能的应用领域1. 医疗领域人工智能在医疗领域的应用已经取得了显著的成果。

通过分析大量的医学数据,人工智能可以辅助医生进行疾病诊断和治疗方案的制定。

此外,人工智能还可以帮助医疗机构管理和优化资源,提高医疗服务的效率和质量。

2. 金融领域人工智能在金融领域的应用主要体现在风险评估、交易分析和客户服务等方面。

通过分析大量的金融数据,人工智能可以帮助金融机构预测市场趋势、降低风险,并提供个性化的投资建议。

此外,人工智能还可以通过自动化的方式处理客户的投诉和咨询,提升客户满意度。

3. 交通领域人工智能在交通领域的应用主要体现在智能交通管理系统和自动驾驶技术上。

通过实时监测和分析交通流量,人工智能可以优化交通信号控制,减少交通拥堵和事故发生的可能性。

同时,自动驾驶技术可以提高交通安全性和驾驶效率,减少交通事故。

三、人工智能的局限性与挑战1. 数据隐私和安全问题人工智能需要大量的数据进行训练和学习,但随之而来的是数据隐私和安全问题。

个人隐私数据的泄露可能导致个人信息被滥用,甚至引发社会问题。

因此,保护数据隐私和加强数据安全是人工智能发展过程中亟需解决的问题。

2. 伦理和道德问题人工智能的发展也引发了一系列伦理和道德问题。

例如,自动驾驶车辆在遇到无法避免的事故时,应该如何做出选择?人工智能在医疗领域的应用是否会导致医生失业?这些问题需要我们认真思考和解决,以确保人工智能的发展符合人类的价值观和道德规范。

游戏人工智能实验报告

游戏人工智能实验报告

游戏人工智能实验报告
游戏人工智能实验是将机器学习技术应用于游戏开发过程中的一项重要研究领域,旨在使游戏获得更好的人机交互体验和更高的技术效果。

本次游戏人工智能实验的实验目的是通过学习模型来改进游戏开发中的人机交互体验,使游戏更加有趣。

实验内容
本次实验通过实现一个游戏,使用机器学习技术来改善游戏开发中的人机交互体验,使游戏更加有趣。

游戏的功能如下:
1.玩家可以使用鼠标或键盘控制自己的角色,操控它穿梭在地图中并对怪物进行战斗。

2.游戏中的怪物有多种类别,每一种怪物都有不同的攻击行为和防御能力,玩家需要尝试采取有效的战术才能成功击败怪物。

3.使用机器学习技术改进怪物的智能,使怪物更加智能,能够根据特定的策略来制定攻击和防御策略。

4.使用学习模型,让游戏能够自我改进,根据玩家的游戏行为,调整游戏的难度,使玩家能够更快的获得成功,从而提供更好的游戏体验。

实验结果
本次实验结果表明,使用机器学习技术改进游戏开发中的人机交互体验,能够有效提高游戏的有趣性和对玩家的反馈效果,使玩家更加融入游戏,获得更好的游戏体验。

人工智能 实验报告

人工智能 实验报告

人工智能实验报告人工智能实验报告引言:人工智能(Artificial Intelligence,简称AI)是一门研究如何使计算机能够像人类一样思考、学习和解决问题的科学。

随着科技的发展,人工智能已经在各个领域展现出巨大的潜力和应用价值。

本实验报告将介绍我对人工智能的实验研究和探索。

一、人工智能的定义与分类人工智能是指通过计算机技术实现的、模拟人类智能的一种能力。

根据不同的研究方向和应用领域,人工智能可以分为强人工智能和弱人工智能。

强人工智能是指能够完全模拟人类智能的计算机系统,而弱人工智能则是指在特定领域内模拟人类智能的计算机系统。

二、人工智能的应用领域人工智能的应用领域非常广泛,包括但不限于以下几个方面:1. 机器学习机器学习是人工智能的核心技术之一,通过让计算机从大量数据中学习并自动调整算法,实现对未知数据的预测和分析。

机器学习已经在图像识别、语音识别、自然语言处理等领域取得了重大突破。

2. 自动驾驶自动驾驶是人工智能在交通领域的应用之一,通过计算机系统对车辆的感知、决策和控制,实现无人驾驶。

自动驾驶技术的发展将极大地提升交通安全性和效率。

3. 机器人技术机器人技术是人工智能在制造业和服务业中的应用之一,通过模拟人类的感知、思考和行动能力,实现自主操作和协作工作。

机器人技术已经广泛应用于工业生产、医疗护理、农业等领域。

4. 金融科技金融科技是人工智能在金融行业中的应用之一,通过数据分析和算法模型,实现智能风控、智能投资和智能客服等功能。

金融科技的发展将推动金融行业的创新和变革。

三、人工智能的挑战与未来发展尽管人工智能取得了许多成果,但仍然面临着一些挑战和难题。

首先,人工智能的算法和模型需要更加精确和可解释,以提高其可靠性和可信度。

其次,人工智能的伦理和法律问题也需要重视和解决,例如隐私保护、人工智能武器等。

此外,人工智能的发展还受到数据质量和计算能力的限制。

然而,人工智能的未来发展依然充满希望。

人工智能实验报告范文

人工智能实验报告范文

人工智能实验报告范文一、实验名称。

[具体的人工智能实验名称,例如:基于神经网络的图像识别实验]二、实验目的。

咱为啥要做这个实验呢?其实就是想搞清楚人工智能这神奇的玩意儿是咋在特定任务里大显神通的。

比如说这个实验,就是想看看神经网络这个超酷的技术能不能像人眼一样识别图像中的东西。

这就好比训练一个超级智能的小助手,让它一眼就能看出图片里是猫猫还是狗狗,或者是其他啥玩意儿。

这不仅能让我们深入了解人工智能的工作原理,说不定以后还能应用到好多超有趣的地方呢,像智能安防系统,一眼就能发现监控画面里的可疑人物或者物体;或者是在医疗影像识别里,帮助医生更快更准地发现病症。

三、实验环境。

1. 硬件环境。

咱用的电脑就像是这个实验的战场,配置还挺重要的呢。

我的这台电脑处理器是[具体型号],就像是大脑的核心部分,负责处理各种复杂的计算。

内存有[X]GB,这就好比是大脑的短期记忆空间,越大就能同时处理越多的数据。

显卡是[显卡型号],这可是在图像识别实验里的得力助手,就像专门负责图像相关计算的小专家。

2. 软件环境。

编程用的是Python,这可是人工智能领域的明星语言,简单又强大。

就像一把万能钥匙,可以打开很多人工智能算法的大门。

用到的深度学习框架是TensorFlow,这就像是一个装满各种工具和模型的大工具箱,里面有好多现成的函数和类,能让我们轻松搭建神经网络,就像搭积木一样简单又有趣。

四、实验原理。

神经网络这个概念听起来就很科幻,但其实理解起来也不是那么难啦。

想象一下,我们的大脑是由无数个神经元组成的,每个神经元都能接收和传递信息。

神经网络也是类似的,它由好多人工神经元组成,这些神经元分层排列,就像一个超级复杂的信息传递网络。

在图像识别里,我们把图像的数据输入到这个网络里,第一层的神经元会对图像的一些简单特征进行提取,比如说图像的边缘、颜色的深浅等。

然后这些特征会被传递到下一层神经元,下一层神经元再对这些特征进行组合和进一步处理,就像搭金字塔一样,一层一层地构建出对图像更高级、更复杂的理解,最后在输出层得出图像到底是什么东西的结论。

人工智能实验报告

人工智能实验报告

人工智能实验报告一、实验背景随着科技的迅猛发展,人工智能(AI)已经成为当今世界最具影响力的技术之一。

它在各个领域的应用不断拓展,从医疗保健到金融服务,从交通运输到娱乐产业,都能看到人工智能的身影。

为了更深入地了解人工智能的工作原理和性能表现,我们进行了一系列的实验。

二、实验目的本次实验的主要目的是探究人工智能在不同任务中的能力和局限性,评估其对数据的处理和分析能力,以及观察其在复杂环境中的学习和适应能力。

三、实验设备与环境我们使用了高性能的计算机服务器,配备了先进的图形处理单元(GPU),以加速模型的训练和运算。

实验所使用的软件包括主流的深度学习框架,如 TensorFlow 和 PyTorch 等。

实验环境为一个安静、稳定的实验室,确保实验过程不受外界干扰。

四、实验内容1、图像识别任务我们选取了大规模的图像数据集,如 ImageNet ,让人工智能模型学习识别不同的物体类别。

通过调整模型的架构和参数,观察其在图像分类任务中的准确率和召回率的变化。

2、自然语言处理任务利用大规模的文本数据集,如维基百科和新闻文章,训练人工智能模型进行文本分类、情感分析和机器翻译等任务。

比较不同模型在处理自然语言时的表现和效果。

3、强化学习任务通过构建虚拟环境,让人工智能模型通过与环境的交互和试错来学习最优的行为策略。

例如,在游戏场景中,让模型学习如何取得最高分或最优的游戏结果。

五、实验步骤1、数据准备首先,对收集到的图像和文本数据进行清洗和预处理,包括去除噪声、转换数据格式、标记数据类别等。

2、模型选择与构建根据实验任务的特点,选择合适的人工智能模型架构,如卷积神经网络(CNN)用于图像识别,循环神经网络(RNN)或长短时记忆网络(LSTM)用于自然语言处理。

3、模型训练使用准备好的数据对模型进行训练,调整训练参数,如学习率、迭代次数、批量大小等,以获得最佳的训练效果。

4、模型评估使用测试数据集对训练好的模型进行评估,计算各种性能指标,如准确率、召回率、F1 值等,以衡量模型的性能。

人工智能深度学习实验报告

人工智能深度学习实验报告

人工智能深度学习实验报告一、实验背景随着科技的迅猛发展,人工智能(AI)已经成为当今世界最具创新性和影响力的领域之一。

深度学习作为人工智能的一个重要分支,凭借其强大的学习能力和数据处理能力,在图像识别、语音处理、自然语言处理等众多领域取得了显著的成果。

本次实验旨在深入探索人工智能深度学习的原理和应用,通过实践操作和数据分析,进一步理解其工作机制和性能表现。

二、实验目的1、熟悉深度学习的基本概念和常用模型,如多层感知机(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。

2、掌握使用 Python 编程语言和相关深度学习框架(如 TensorFlow、PyTorch 等)进行模型训练和优化的方法。

3、通过实验数据,分析不同模型在不同任务中的性能差异,探索影响模型性能的关键因素。

4、培养解决实际问题的能力,能够运用深度学习技术解决简单的图像分类、文本分类等任务。

三、实验环境1、操作系统:Windows 102、编程语言:Python 383、深度学习框架:TensorFlow 244、开发工具:Jupyter Notebook四、实验数据1、图像分类数据集:CIFAR-10 数据集,包含 10 个不同类别的60000 张彩色图像,其中 50000 张用于训练,10000 张用于测试。

2、文本分类数据集:IMDB 电影评论数据集,包含 25000 条高度极性的电影评论,其中 12500 条用于训练,12500 条用于测试。

五、实验步骤1、数据预处理对于图像数据,进行图像归一化、数据增强(如随机旋转、裁剪、翻转等)操作,以增加数据的多样性和减少过拟合的风险。

对于文本数据,进行词向量化(如使用 Word2Vec、GloVe 等)、数据清洗(如去除特殊字符、停用词等)操作,将文本转换为可被模型处理的数值向量。

2、模型构建构建多层感知机(MLP)模型,包含输入层、隐藏层和输出层,使用 ReLU 激活函数和 Softmax 输出层进行分类任务。

人工智能实验报告四

人工智能实验报告四

人工智能实验报告四在当今科技飞速发展的时代,人工智能已经成为了引领创新和变革的重要力量。

本次实验旨在深入探究人工智能在特定领域的应用和表现,以期为未来的研究和实践提供有价值的参考。

实验的背景是随着数据量的爆炸式增长和计算能力的大幅提升,人工智能技术在图像识别、自然语言处理、智能推荐等领域取得了显著的成果。

然而,其在某些复杂场景下的性能和可靠性仍有待进一步提高。

实验的目标主要有两个:一是评估某个人工智能模型在处理特定任务时的准确性和效率;二是分析该模型在不同参数设置下的表现差异,寻找最优的配置方案。

为了实现上述目标,我们首先进行了充分的实验准备工作。

收集了大量相关的数据集,并对其进行了预处理,包括数据清洗、标注和划分。

同时,确定了实验所需的硬件和软件环境,确保实验的顺利进行。

在实验过程中,我们采用了多种技术手段和方法。

例如,运用了深度学习中的卷积神经网络(CNN)来处理图像数据,利用循环神经网络(RNN)及其变体长短时记忆网络(LSTM)来处理序列数据。

此外,还尝试了不同的优化算法,如随机梯度下降(SGD)、Adagrad、Adadelta 等,以提高模型的训练速度和收敛效果。

通过一系列的实验,我们得到了丰富的实验结果。

在准确性方面,模型在某些任务上的表现达到了较高的水平,但在一些复杂和模糊的情况下仍存在一定的误判。

效率方面,不同的模型结构和参数设置对训练时间和推理速度产生了明显的影响。

进一步分析实验结果发现,数据的质量和数量对模型的性能起着至关重要的作用。

高质量、大规模的数据能够显著提升模型的泛化能力和准确性。

同时,模型的超参数调整也是一个关键环节,合适的学习率、层数、节点数等参数能够有效提高模型的性能。

然而,实验中也遇到了一些问题和挑战。

例如,模型的过拟合现象时有发生,导致在新数据上的表现不佳。

此外,计算资源的限制也在一定程度上影响了实验的规模和效率。

针对这些问题,我们提出了相应的改进措施和建议。

人工智能实验报告

人工智能实验报告

《人工智能》课外实践报告项目名称:剪枝法五子棋所在班级: 2013级软件工程一班小组成员:李晓宁、白明辉、刘小晶、袁成飞、程小兰、李喜林指导教师:薛笑荣起止时间: 2016-5-10——2016-6-18项目基本信息项目名称五子棋项目简介智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。

这个项目我们实现了当人点击“开始”按钮时,开始下棋,当人的棋子落时,计算机会根据算法进行最佳路径计算,然后落子下棋。

任何一方赢了都会弹出哪方赢了。

然后单击重新开始。

任务分工李晓宁 130904021 白明辉 130904001:负责界面实现和估值函数设计文档整理刘小晶 130904032 袁成飞 130904051:负责极小极大值算法的设计与实现李喜林 130904019 程小兰 130904004:负责αβ剪枝法的设计与实现一、系统分析1.1背景1.1.1 设计背景智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。

能使人们在与电脑进行对弈的过程中学习五子棋,陶冶情操。

并且推进人们对AI的关注和兴趣。

1.1.2可行性分析通过研究,本游戏的可行性有以下三方面作保障(1)技术可行性本游戏采用Windows xp等等系统作为操作平台,使用人工智能进行算法设计,利用剪枝法进行编写,大大减少了内存容量,而且不用使用数据库,便可操作,方便可行,因此在技术上是可行的。

(2)经济可行性开发软件:SublimText(3)操作可行性该游戏运行所需配置低、用户操作界面友好,具有较强的操作可行性。

1.2数据需求五子棋需要设计如下的数据字段和数据表:1.2.1 估值函数:估值函数通常是为了评价棋型的状态,根据实现定义的一个棋局估值表,对双方的棋局形态进行计算,根据得到的估值来判断应该采用的走法。

游戏智能实验总结

游戏智能实验总结

游戏智能课程报告游戏智能这门课中,我想从作业及实验所做的出发分几部分来简要叙述一下我的收获及感想:1,什么是AI及感触课程开始时,我们了解了什么是AI,人工智能(Artificial Intelligence) ,英文缩写为AI。

它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)。

还有游戏中为什么要使用AI,这样可以增加游戏的可玩性与趣味性,实现人机互动。

在生活中,看到一个关于AI很有意思的观点,因为和人工只能有关,所以写进来,是人工智能在未来的发展中必将会走向人类对立面的争论,举得例子很有意思,叫做盒子按钮模式,对于一个人工智能机器,假设在它旁边安有一个红色的大按钮,电脑程序设计为解决问题,每解决一个问题,就会有人按下按钮表示奖励,如果它完成一项任务就按盒子上的按钮以示奖励,我们设定它需要这种奖励反馈,刚开始机器在我们提供问题后尽可能快的解决问题,但经过一段时间,它开始思索解决问题是否为获得奖励最有效率的方式,为什么不能一直按按钮,当它开始这样思索,也就走到了人的对立面。

人工智能能够帮助我们的同时,也不能忽视它所带来的威胁。

2,追逐与闪躲,及基本追逐与视线追逐实验课中,我们学习了基本追逐与视线追逐,要实现追逐和闪躲,就要有追和逃得决策判断,其中还会有障碍物的出现。

要实现追与逃,就要计算出相对位置及其速度信息,因此我们了解了几种基本追逐算法和几种基本闪躲算法,通过比较猎物和追逐者的x,y坐标来递增追击者的坐标,从而使追击者更接近猎物,相反,要实现闪躲,只需颠倒一下判断逻辑就可以实现。

我们做了视线追逐与直线追逐的实验,实验过程中由于砖块法难度较大,因此我们组用OPENGL中用过的Bresenham划线算法来实现了程序。

3,保持一定偏移的追逐——offset pursuit这个实验是分组完成的,生活中有相关的例子,比如飞机列阵飞行就是保持了一定偏移的追逐,需要飞机保持与领头飞机的相对距离,这样就要预测出领头飞机下一步的位置与速度,偏移是对领头飞机空间而言的,要换算成在世界空间中的偏移,然后预测后面飞机下一步的位置与速度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

游戏人工智能实验报告记录四————————————————————————————————作者:————————————————————————————————日期:实验四有限状态机实验实验报告一、实验目的通过蚂蚁世界实验掌握游戏中追有限状态机算法二、实验仪器Windows7系统Microsoft Visual Studio2015三、实验原理及过程1)制作菜单设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计不断按下一步,有限状态机就会不断运行,使蚁群产生变化2)添加加速键资源视图中下方选择ID和键值3)新建头文件def.h在AntView.cpp中加入#include"def.h"与本实验有关的数据大都是在这里定义的int flag=0;#define kForage 1#define kGoHome 2#define kThirsty 3#define kDead 4#define kMaxEntities 200class ai_Entity{public:int type;int state;int row;int col;ai_Entity();~ai_Entity() {}void New (int theType,int theState,int theRow,int theCol);void Forage();void GoHome();void Thirsty();void Dead();ai_Entity entityList[kMaxEntities];#define kRedAnt 1#define kBlackAnt 2int RedHomeRow;int RedHomeCol;int BlackHomeRow;int BlackHomeCol;int RedNum=2;int BlackNum=2;//地图大小,可改变#define kMaxRows 30#define kMaxCols 40#define LENGTH 20int terrain[kMaxRows][kMaxCols];#define kGround 1#define kWater 2#define kBlackHome 3#define kRedHome 4#define kPoison 5#define kFood 6//ai_Entity类中函数的定义ai_Entity::ai_Entity(){type=0;state=0;row=0;col=0;}int Rnd(int min, int max)//不能产生负数{int result;do{result=rand()%max;}while(result<=min);return result;}void ai_Entity::New (int theType,int theState,int theRow,int theCol){type=theType;row=theRow;col=theCol;state=theState;}void ai_Entity::Forage(){int rowMove;int colMove;int newRow;int newCol;int foodRow;int foodCol;int poisonRow;int poisonCol;rowMove=Rnd(-1,3)-1;colMove=Rnd(-1,3)-1;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if((terrain[newRow][newCol]==kGround)||(terrain[newRow][newCol]==kWater)) {row=newRow;col=newCol;}if(terrain[newRow][newCol]==kFood){row=newRow;col=newCol;terrain[row][col]=kGround;state=kGoHome;do{foodRow=Rnd(-1,kMaxRows);foodCol=Rnd(-1,kMaxCols);}while(terrain[foodRow][foodCol]!=kGround);terrain[foodRow][foodCol]=kFood;}if(terrain[newRow][newCol]==kPoison){row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}}void ai_Entity::GoHome(){int rowMove;int colMove;int newRow;int newCol;int homeRow;int homeCol;int poisonRow;int poisonCol;int i;if(type==kRedAnt){homeRow=RedHomeRow;homeCol=RedHomeCol;}else{homeRow=BlackHomeRow;homeCol=BlackHomeCol;}else if(row>homeRow)rowMove=-1;elserowMove=0;if(col<homeCol)colMove=1;else if(col>homeCol)colMove=-1;elsecolMove=0;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if(terrain[newRow][newCol]!=kPoison){row=newRow;col=newCol;}else{row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}if((newRow==homeRow)&&(newCol==homeCol)) {state=kThirsty;for(i=0;i<kMaxEntities;i++)if(entityList[i].type==0){entityList[i].New(type,kForage,homeRow,homeCol);if(type==kRedAnt)RedNum++;if(type==kBlackAnt)BlackNum++;break;}}}void ai_Entity::Thirsty(){int rowMove;int colMove;int newRow;int newCol;int foodRow;int foodCol;int poisonRow;int poisonCol;rowMove=Rnd(-1,3)-1;colMove=Rnd(-1,3)-1;newRow=row+rowMove;newCol=col+colMove;if(newRow<0)return;if(newCol<0)return;if(newRow>=kMaxRows)return;if(newCol>=kMaxCols)return;if((terrain[newRow][newCol]==kGround)||(terrain[newRow][newCol]==kFood)) {row=newRow;col=newCol;}if(terrain[newRow][newCol]==kWater){row=newRow;col=newCol;terrain[row][col]=kGround;state=kForage;do{foodRow=Rnd(-1,kMaxRows);foodCol=Rnd(-1,kMaxCols);}while(terrain[foodRow][foodCol]!=kGround);terrain[foodRow][foodCol]=kWater;}if(terrain[newRow][newCol]==kPoison){row=newRow;col=newCol;terrain[row][col]=kGround;state=kDead;do{poisonRow=Rnd(-1,kMaxRows);poisonCol=Rnd(-1,kMaxCols);}while(terrain[poisonRow][poisonCol]!=kGround);terrain[poisonRow][poisonCol]=kPoison;}}void ai_Entity::Dead(){if(type==kRedAnt)RedNum--;if(type==kBlackAnt)BlackNum--;type=0;}4)制作对话框添加资源,拖动控件9个静态文本框,7个编辑框右键对话框添加类InputDlg,添加成员变量int m_RedHomeRow;int m_RedHomeCol;int m_BlackHomeRow;int m_BlackHomeCol;int m_food;int m_water;int m_poison;在AntView.cpp中加入#include"InputDlg.h"5)对菜单项添加事件给CAntView类添加一些成员变量没做说明都是添加到CAntView类,没做说明都是COMMAND事件。

相关文档
最新文档