当前位置:文档之家› 人工智能课程设计报告-罗马尼亚度假问题

人工智能课程设计报告-罗马尼亚度假问题

人工智能课程设计报告-罗马尼亚度假问题
人工智能课程设计报告-罗马尼亚度假问题

人工智能课程设计报告-罗马尼亚度假

问题

1

2

3

2020年5月29日

课 程

:人工智能课程设计报告

班 级: 姓 名: 学 号:

指导教师:赵曼

11月

人工智能课程设计报告

课程背景

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,能够设想,未来人工智能带来的科技产品,将会是人类智慧的”容器”。

人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。

人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些一般需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种”复杂工作”的理解是不同的。

人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅

速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐

- 1 -

2020年5月29日

步成为一个独立的分支,无论在理论和实践上都已自成一个系统。

人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。能够说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不但限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不但在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。

题目一:罗马利亚度假问题

一.问题描述

分别用代价一致的宽度优先、有限制的深度优先(预设搜索层次)、贪婪算法

- 2 -

2020年5月29日

和A*算法求解”罗马利亚度假问题”。即找到从初始地点Arad到目的地点Bucharest 的一条路径。

要求:

分别用文件存储地图和启发函数表,用生成节点数比较几种算法在问题求解时的效率,并列表给出结果。

数据如下:

1、地图

2、启发函数值

Arad 366 Mehadia 241 Bucharest 0 Neamt 234 Craiova 160 Oradea 380 Doberta 242 Pitesti 100 Eforie 161 Rimmicu_Vikea 193 Fagaras 176 Sibiu 253 Glurgiu 77 Timisoara 329 Hirsova 151 Urziceni 80 Iasi 226 Vaslui 199 Lugoj 244 Zerind 374

- 3 -

2020年5月29日

3、地图数据表

0 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 140 1000 118 1000 1000 1000 1000 1000 75

1000 0 1000 1000 1000 1000 75 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 70 1000

1000 1000 0 1000 1000 1000 1000 101 1000 1000 211 1000 90 1000 1000 85 1000 1000 1000 1000

1000 1000 1000 0 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 87 1000 1000 1000

1000 1000 1000 1000 0 1000 120 138 1000 146 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 0 1000 1000 1000 1000 1000 151 **** **** 1000 1000 1000 1000 1000 71

1000 75 1000 1000 120 1000 0 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 101 1000 138 **** **** 0 1000 97 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 0 1000 1000 1000 1000 1000 86 1000 1000 1000 1000 1000

- 4 -

2020年5月29日

1000 1000 1000 1000 146 1000 1000 97 1000 0 1000 80 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 211 1000 1000 1000 1000 1000 1000 1000 0 99 1000 1000 1000 1000 1000 1000 1000 1000

140 1000 1000 1000 1000 151 **** **** 1000 80 99 0 1000 1000 1000 1000 1000 1000 1000 1000

1000 1000 90 1000 1000 1000 1000 1000 1000 1000 1000 1000 0 1000 1000 1000 1000 1000 1000 1000

118 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 0 1000 1000 1000 1000 111 1000

1000 1000 1000 1000 1000 1000 1000 1000 86 1000 1000 1000 1000 1000 0 98 1000 1000 1000 1000

1000 1000 85 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 98 0 1000 1000 1000 1000

1000 1000 1000 87 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 0 92 1000 1000

1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 92 0 1000 1000

1000 70 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 111 1000 1000 1000 1000 0 1000

- 5 -

2020年5月29日

75 1000 1000 1000 1000 71 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 0

二.设计分析

1.算法分析

1) 宽度优先搜索算法

广度优先搜索使用队列(queue)来实现

1、把根节点放到队列的末尾。

2、每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。

3、找到所要找的元素时结束程序。

4、如果遍历整个图还没有找到,结束程序。

2)深度优先搜索算法

深度优先搜索用栈(stack)来实现,整个过程能够想象成一个倒立的树形:

1、把根节点压入栈中。

2、每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱。

3、找到所要找的元素时结束程序。

- 6 -

2020年5月29日

4、如果遍历整个树还没有找到,结束程序。

3)贪婪算法

1.建立数学模型来描述问题

⒉把求解的问题分成若干个子问题。

⒊对每一子问题求解,得到子问题的局部最优解。

⒋把子问题的解局部最优解合成原来解问题的一个解。

实现该算法的过程:

从问题的某一初始解出发;

while 能朝给定总目标前进一步

do

求出可行解的一个解元素;

由所有解元素组合成问题的一个可行解。

4)A*算法

A*[1] (A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。公式表示为: f(n)=g(n)+h(n),

其中 f(n) 是从初始点经由节点n到目标点的估价函数,

g(n) 是在状态空间中从初始节点到n节点的实际代价,

h(n) 是从n到目标节点最佳路径的估计代价。

保证找到最短路径(最优解的)条件,关键在于估价函数f(n)的选取:

- 7 -

2020年5月29日

估价值h(n)<= n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。而且如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。

如果估价值>实际值,搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。

2.数据结构

1)图结构:

实现存储”罗马尼亚度假问题”的图空间;

抽象图结构的实现:

typedef struct //图节点类型

{

char cityname[20];

int value;

- 8 -

2020年5月29日

int cost;

}Ver;

class Graph //图结构

{

public:

Graph();

~Graph();

Ver V[MaxV];

int edge[MaxV][MaxV];

int numofedges; //注意这个变量的引用位置

//读取地图节点信息

void ReadVertex();

//读取地图边关系信息

void ReadEdge();

//取与第V个节点的第一个邻接点

int GetFirstVertex(int v);

//找到第V1个节点的V2之后的下一个邻接节点

int GetNextVertex(int v1, int v2);

int GetVerValue(int index);//获取V[index] 的ver 的value值

int GetVerCost(int index);//获取V[index] 的ver 的cost 值

- 9 -

2020年5月29日

- 10 -

2020年5月29日

int

GetEdge(int row, int col);//获取edge[row][col] 的值 void SetVerCost(int index,int cost);

};

2)队列结构

宽度优先算法以及A*算法 使用到。 抽象队列结构实现:

class SeqQueue { public : SeqQueue();

~SeqQueue();

void QueueInitiate();

int QueueNotEmpty();

int QueueAppend(int x);

int QueueDelete(int *d);

int QueueOrderAppend(int x, Graph &G);

//A*算法使用

int Queue_A_OrderAppend(int x, Graph &G);

private:

int queue[MaxSize];

int rear;

int front;

int count;

};

3)栈结构

深度优先算法使用;

- 11 -

2020年5月29日

栈结构的抽象类型实现:

class Stack

{

public:

Stack();

~Stack();

bool StackNotFull();

bool StakNotEmpty();

void StackPop(Graph &G);

void StackPush(int x, Graph &G);

void PrintStack(Graph &G);

int GetWeight();

private:

int a[100];

int top1;

int weight;

};

三.算法设计

- 12 -

2020年5月29日

1) 宽度优先搜索算法

//宽度优先算法

void Romania_Trip::BroadFirstSearch(Graph &graph, int v)

{

int u, w; i = 0;

SeqCQuene queue;

visited[v] = 1;//访问节点

count++;

if (v == end)return;

queue.QueueAppend( v);//入队列

while (queue.QueueNotEmpty())//队列非空

{

queue.QueueDelete(&u);//取队列节点

w = graph.GetFirstVertex( u);

while (w != -1) //有子节点的话

{

if (!visited[w])//如果子节点未被访问,则访问子节点

{

Visit(w, u);

visited[w] = 1;

- 13 -

2020年5月29日

count++;

if (w == end)//找到结果

{

Print(graph, b, end, v);

return;

}

queue.QueueAppend(w);//节点压入队列

}

w = graph.GetNextVertex(u, w);

}

}

}

2)深度优先搜索算法

//深度优先算法

bool isOK = false;

int level = 0;

const int Level = 8;//预设的搜索层次

void Romania_Trip::DepthFirstSearch(Graph &graph, int v, Stack &stack)

{

int w; i = 0;

- 14 -

2020年5月29日

if (isOK == true)return;

if (level+1 > Level)return;//大于搜索层次时不再深入

level++;

visited[v] = 1;//访问该节点

count++;

stack.StackPush(v, graph);

if (v == end || stack.GetWeight() >= MaxWeight)

{

w = -1;

if (v == end&&stack.GetWeight() <= MaxWeight)

{

cout << "---深度优先遍历路径为:";

stack.PrintStack(graph);

/*if (MaxWeight>stack.GetWeight())

MaxWeight = stack.GetWeight();*/

cout << "---路径长度为:" << stack.GetWeight() << endl

<< "---访问节点数为:" << count << endl

<<"---搜索层次:"<

isOK = true;

}

- 15 -

2020年5月29日

}

else

{

w = graph.GetFirstVertex(v);//取当前节点的第一个子节点}

while (w != -1)

{

if (!visited[w])

DepthFirstSearch(graph, w, stack);//递归访问

w = graph.GetNextVertex(v, w);//取当前节点的下一个子节点

}

visited[v] = 0;//返回时置该节点为未访问

stack.StackPop( graph);//将该节点弹出栈,并根据graph 中weight 的值更改当前栈值

level--;

}

3)贪婪算法

//贪婪算法

void Romania_Trip::Greedy_Algorithms(Graph &graph, int v)

{

- 16 -

2020年5月29日

int u, w;

SeqCQuene queue;//队列存储图节点在图中的索引值,优先队列,value小的在队头

visited[v] = 1;

if (v == end){ return; }

queue.QueueOrderAppend( v, graph);//图节点按优先顺序入队列

count++; //访问节点数+1

while (queue.QueueNotEmpty())//宽度优先,循环

{

queue.QueueDelete( &u);//删除队列头元素并返回删除的数值

//cout << "u= " << u << " ";

w = graph.GetFirstVertex(u);

while (w != -1)

{

if (!visited[w])

{

Visit(w, u);//访问w节点,将way b 的指向更新

if (w == end)

{

- 17 -

2020年5月29日

人工智能课程设计报告--动物识别系统

计算机科学与技术学院 《人工智能》课程设计报告设计题目:动物识别系统 设计人员:学号: 学号: 学号: 学号: 学号: 学号: 指导教师: 2015年7月

目录 目录 (1) 摘要 (2) Abstract (2) 一、专家系统基本知识 (3) 1.1专家系统实际应用 (3) 1.2专家系统的开发 (3) 二、设计基本思路 (4) 2.1知识库 (4) ....................................................................................................... 错误!未定义书签。 2.1.2 知识库建立 (4) 2.1.3 知识库获取 (5) 2.2 数据库 (6) ....................................................................................................... 错误!未定义书签。 ....................................................................................................... 错误!未定义书签。 三、推理机构 (7) 3.1推理机介绍 (7) 3.1.1 推理机作用原理 (7) ....................................................................................................... 错误!未定义书签。 3.2 正向推理 (7) 3.2.1 正向推理基本思想 (7) 3.2.2 正向推理示意图 (8) 3.2.3 正向推理机所要具有功能 (8) 3.3反向推理 (8) ....................................................................................................... 错误!未定义书签。 3.3.2 反向推理示意图 (8) ....................................................................................................... 错误!未定义书签。 四、实例系统实现 (9)

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

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

————————————————————————————————作者:————————————————————————————————日期:

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 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 200 class 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();

人工智能实验报告大全

人工智能实验报告大 全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034 目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5)

课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题

四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) { printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置 } void Monkey_Move_Box(char x, char y) { printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置 } void Monkey_On_Box() { printf("Step %d:monkey爬上箱子\n", ++i); } void Monkey_Get_Banana() { printf("Step %d:monkey摘到香蕉\n", ++i); } void main() { unsigned char Monkey, Box, Banana; printf("********智能1501班**********\n"); printf("********06153034************\n"); printf("********刘少鹏**************\n"); printf("请用a b c来表示猴子箱子香蕉的位置\n"); printf("Monkey\tbox\tbanana\n"); scanf("%c", &Monkey); getchar(); printf("\t"); scanf("%c", &Box); getchar(); printf("\t\t"); scanf("%c", &Banana); getchar(); printf("\n操作步骤如下\n"); if (Monkey != Box) { Monkey_Go_Box(Monkey, Box); } if (Box != Banana)

人工智能课程设计报告-罗马尼亚度假问题

人工智能课程设计报告-罗马尼亚度假 问题 1

2

3 2020年5月29日 课 程 :人工智能课程设计报告 班 级: 姓 名: 学 号: 指导教师:赵曼 11月

人工智能课程设计报告 课程背景 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,能够设想,未来人工智能带来的科技产品,将会是人类智慧的”容器”。 人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些一般需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种”复杂工作”的理解是不同的。 人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅 速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐 - 1 - 2020年5月29日

《人工智能导论》课程研究总结

《人工智能导论》课程研究总结题目:BP神经网络的非线性函数拟合 班级: 姓名: 学号: 年月日

本次作业我负责程序的编写,过程如下 Matlab软件中包含Matlab神经网络工具箱。它是以人工神经网络理论为基础,用Matlab语言构造出了该理论所涉及的公式运算、矩阵操作和方程求解等大部分子程序以用于神经网络的设计和训练。用户只需根据自己的需要调用相关的子程序,即可以完成包括网络结构设计、权值初始化、网络训练及结果输出等在内的一系列工作,免除编写复杂庞大程序的困扰。目前,Matlab神经网络工具包包括的网络有感知器、线性网络、BP神经网络、径向基网络、自组织网络和回归网络等。BP神经网络主要用到newff、sim和train3个神经网络函数,各函数解释如下。 1、newff:BP神经网络参数设置函数 函数功能:构建一个BP神经网络。 函数形式:net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) P:输入数据矩阵。 T:输出数据矩阵。 S:隐含层结点数。 TF:结点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数pureline,正切S型传递函数tansig,对数S型传递函数logsig。 BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt的BP算法训练函数trainlm。 BLF:网络学习函数,包括BP学习规格learngd,带动量项的BP学习规则learngdm。 PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse。 IPF:输入处理函数。 OPF:输出处理函数。 DDF:验证数据划分函数。 一般在使用过程中设置前面6个参数,后面4个参数采用系统默认参数。 2、train:BP神经网络训练函数 函数功能:用训练数据训练BP神经网络。 函数形式:[net,tr] = train(NET,X,T,Pi,Ai) NET:待训练网络。

游戏人工智能实验报告四

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 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 200 class 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 2

人工智能课程设计报告-n皇后问题解读

人工智能课程设计报告 课班姓学程:人工智能课程设计报告级 : 名: 号: 指导教师:赵曼 2015年11月

人工智能课程设计报告 人工智能课程设计报告 课程背景 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。 人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。 人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。 人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。

三子棋c代码

三子棋问题 一目的 运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计提高学生综合运用所学知识来解决实际问题及进行科学实验或技术设计的初步能力。 二需求分析 1、该程序主要为设计简单的三子棋游戏; 2、三子棋问题即在3 * 3的二维数组上下棋,只要有棋子在行、列或对角线连成一线即取得胜利。 3、可实现玩家与电脑对弈。 三概要设计 1、主函数模块 int main() { do{ 开始新的对弈; }while(玩家选择停止游戏); return 0; } 2、调用函数模块 ①int chess(); /*函数功能:开始对弈 函数参数:无 函数返回值:return 0*/ { 初始化棋局; 选择玩家或电脑先行; do{ //开始下棋 输出当前棋局; if(该玩家走棋) { do{

玩家输出走棋位置; 检查走棋位置的合法性; }while(玩家输入合法的位置); } else if(电脑走棋) { 调用函数使电脑走棋 } 判断是否有一方胜出; }while(有一方胜出或平局); printf("最终棋局:\n"); 输出最终棋局; if(平局) 输出平局; } ②int check(char *chess,char sign); /*函数功能:使用了指针,判断位置可行则走棋,不可行则返回值为1 函数参数:使用指针传递棋局,以及欲走棋的位置 函数返回值:0代表可以走棋,1代表不可走棋 */ { 判断走棋位置是否合法; 不合法则返回1; 否则返回0; } ③int judge(char *chess); /*函数功能:判断是否有胜出 函数参数:当前棋局 函数返回值:0代表未有胜出,1代表玩家胜出,2代表电脑胜出*/ { for(行检查) { if(某行三子连线) { if(连线棋子为‘O’) 玩家胜出; else 电脑胜出; } } for(列检查)//思想同上 if(对角三字连线检查)//思想同上

人工智能实验报告大全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034

目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5) 课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题 四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) {

《人工智能导论》课程研究总结

《人工智能导论》课程研究总结 题目:BP神经网络的非线性函数拟合 班级: 姓名: 学号: 年月日 本次作业我负责程序的编写,过程如下 Matlab软件中包含Matlab神经网络工具箱。它是以人工神经网络理论为基础,用Matlab语言构造出了该理论所涉及的公式运算、矩阵操作和方程求解等大部分子程序以用于神经网络的设计和训练。用户只需根据自己的需要调用相关的子程序,即可以完成包括网络结构设计、权值初始化、网络训练及结果输出等在内的一系列工作,免除编写复杂庞大程序的困扰。目前,Matlab神经网络工具包包括的网络有感知器、线性网络、BP神经网络、径向基网络、自组织网络和回归网络等。BP神经网络主要用到newff、sim和train3个神经网络函数,各函数解释如下。 1、newff:BP神经网络参数设置函数 函数功能:构建一个BP神经网络。 函数形式:net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) P:输入数据矩阵。 T:输出数据矩阵。 S:隐含层结点数。 TF:结点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数pureline,正切S型传递函数tansig,对数S型传递函数logsig。 BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt的BP算法训练函数trainlm。 BLF:网络学习函数,包括BP学习规格learngd,带动量项的BP学习规则learngdm。 PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse。IPF:输入处理函数。 OPF:输出处理函数。 DDF:验证数据划分函数。 一般在使用过程中设置前面6个参数,后面4个参数采用系统默认参数。 2、train:BP神经网络训练函数 函数功能:用训练数据训练BP神经网络。 函数形式:[net,tr] = train(NET,X,T,Pi,Ai) NET:待训练网络。 X:输入数据。 T:输出数据。 Pi:初始化输入层条件。 Ai:初始化输出层条件。 net:训练好的网络。 tr:训练过程记录。

人工智能实验报告

实验报告 1.对CLIPS和其运行及推理机制进行介绍 CLIPS是一个基于前向推理语言,用标准C语言编写。它具有高移植性、高扩展性、 强大的知识表达能力和编程方式以及低成本等特点。 CLIPS由两部分组成:知识库、推理机。它的基本语法是: (defmodule< module-n ame >[< comme nt >]) CLIPS的基本结构: (1).知识库由事实库(初始事实+初始对象实例)和规则库组成。 事实库: 表示已知的数据或信息,用deftemplat,deffact定义初始事实表FACTLIS,由关系名、后跟 零个或多个槽以及它们的相关值组成,其格式如下: 模板: (deftemplate [] *) :: = | 事实: (deffacts [] *) 当CLIPS系统启动推理时,会把所有用deffact定义的事实自动添加到工作存储器中。常用命令如下:asser:把事实添加到事实库(工作存储器)中retract:删除指定事实 modify :修改自定义模板事实的槽值duplicate :复制事实 clear:删除所有事实 规则库 表示系统推理的有关知识,用defrule命令来定义,由规则头、后跟零个或多个条件元素以 及行为列表组成,其格式如下: (defrule [] * ; =>

人工智能深度优先算法课程设计报告

人工智能课程报告 题目: 深 度 优 先 算 法 班级:XXXXXXXXXXX 学号:XXXXXXXXXXX 姓名:XXXXXXXXXXX

【摘要】结合生活中解决搜索问题所常用的思考方法与解题方法,从深度优先探讨了提高程序效率的适用技巧。 【关键词】1搜索顺序;2搜索对象;3搜索优化; 一、深度优先搜索的优化技巧 我们在做事情的时候,经常遇到这类问题——给出约束条件,求一种满足约束条件的方案,这类问题我们叫它“约束满足”问题。对于约束满足问题,我们通常可以从搜索的顺序和搜索的对象入手,进而提高程序的效率。 二、搜索的顺序及对象: 在解决约束满足问题的时候,问题给出的约束条件越强,对于搜索就越有利。之所以深度优先搜索的效率在很大程度上优于穷举,就是因为它在搜索过程中很好的利用了题目中的约束条件进行优化,达到提高程序效率的目的。 显然,在同样的一棵搜索树中,越在接近根接点的位置利用约束条件优化效果就越好。如何在搜索中最大化的利用题目的约束条件为我们提供剪枝的依据,是提高深度优先搜索效率的一个很重要的地方。而不同的搜索顺序和搜索对象就直接影响到我们对于题目约束条件的运用。 三、搜索特点 1.由于深度搜索过程中有保留已扩展节点,则不致于重复构造不必要的子树系统。 2.深度优先搜索并不是以最快的方式搜索到解,因为若目标节点在第i层的某处,必须等到该节点左边所有子树系统搜索完毕之后,才会访问到该节点,因此,搜索效率还取决于目标节点在解答树中的位置。

3.由于要存储所有已被扩展节点,所以需要的内存空间往往比较大。 4.深度优先搜索所求得的是仅仅是目前第一条从起点至目标节点的树枝路径,而不是所有通向目标节点的树枝节点的路径中最短的路径。 5.适用范围:适用于求解一条从初始节点至目标节点的可能路径的试题。若要存储所有解答路径,可以再建立其它空间,用来存储每个已求得的解。若要求得最优解,必须记下达到目前目标的路径和相应的路程值,并与前面已记录的值进行比较,保留其中最优解,等全部搜索完成后,把保留的最优解输出。 四、算法数据结构描述 深度优先搜索时,最关键的是结点扩展(OPEN)表的生成,它是一个栈,用于存放目前搜索到待扩展的结点,当结点到达深度界限或结点不能再扩展时,栈顶结点出栈,放入CLOSE表(存放已扩展节点),继续生成新的结点入栈OPEN 表,直到搜索到目标结点或OPEN栈空为止。 具体算法如下: ①把起始结点S放到非扩展结点OPEN表中(后进先出的堆栈),如果此结点为一目标结点,则得到一个解。 ②如果OPEN为一空表,则搜索失败退出。 ③取OPEN表最前面(栈顶)的结点,并把它放入CLOSED的扩展结点表中,并冠以顺序编号n。 ④如果结点n的深度等于最大深度,则转向2。 ⑤否则,扩展结点n,产生其全部子结点,把它们放入OPEN表的前头(入栈),并配上指向n的返回指针;如果没有后裔,则转向2。 ⑥如果后继结点中有任一个为目标结点,则求得一个解,成功退出;否则,转向2。

智能科学与技术专业培养方案及教学计划10级

信息科学与工程学院 智能科学与技术专业本科培养方案 一、培养目标 培养具备良好的科学素质,系统地掌握智能科学与技术的基本理论、基本知识和基本技能与方法,在智能科学与工程领域具有较强的知识获取能力、知识工程能力和创新创业能力的宽口径复合型高质量以及具有计算机、自动化、电子等交叉学科基础的人才,能在企业、事业、科研部门、教育单位和行政部门等单位从事智能系统、智能信息处理、智能行为决策等方面的科学研究、开发设计、工程应用、决策管理和教学等工作。 二、培养要求 本专业学生主要学习智能科学技术及相关信息科学技术的基础理论和专业知识。学生接受从事科学研究、工程技术开发、教学、管理及应用等方面所需要的基本训练,具备从事智能系统、智能信息处理、智能行为决策等方面研究、开发、应用及管理的综合能力。 毕业生应获得以下几个方面的知识和能力: 1、具有较扎实的自然科学基础,较好的人文社会科学基础和外语能力。 2、系统掌握本专业领域必需的科学技术基础理论知识,主要包括电路理论、模拟电子技术、数字电子技术、自动控制理论、微机原理与接口技术、离散数学、数据结构、脑与认知科学基础、人工智能、智能控制、机器人学导论、计算机仿真技术、数据库技术、网络工程等。 3、较好地掌握智能系统、智能信息处理等方面的专业知识,具有本专业领域1~2个方向的专业知识和技能,了解本专业学科的前沿和发展趋势,获得较好的工程实践训练,具有熟练的计算机应用能力。 4、具有本专业的科学研究、科技开发和组织决策管理能力,具有较强的工作适应能力。 5、能将智能技术与计算机技术、信息处理、控制技术有机结合应用于工程实践,具有创新意识和一定的创新能力。 三、主干学科 控制科学与控制工程、电气工程、计算机科学与技术 四、主要课程和特色课程 本专业主干课程主要包括:电路理论、模拟电子技术、数字电子技术、自动控制理论、微机原理与接口技术、离散数学、数据结构、脑与认知科学基础、人工智能、智能控制、机器人学导论、计算机仿真技术、Web程序设计、语音信号处理、决策支持技术、运筹学、虚拟现实与智能游戏、智能优化算法及其应用、生物特征识别等。

人工智能遗传算法实验报告

人工智能实验报告 学号: 姓名: 实验名称:遗传算法 实验日期:2016.1.5

【实验名称】遗传算法 【实验目的】 掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。 【实验原理】 遗传算法( Genetic Algorithm )是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化, 如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来 越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学 的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 遗传算法程度流程图为:

【实验名称】遗传算法 【实验目的】 掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。 【实验原理】 遗传算法( Genetic Algorithm )是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化, 如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来 越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学 的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 遗传算法程度流程图为:

人工智能课程报告封面

物理与电子工程学院 《人工智能》 课程设计报告 课题名称 专业 班级 学生姓名 学号 指导教师崔明月 成绩 2014年6月18日

题目 摘要: 关键词: 1.引言 正文 结论 参考文献:(文献10篇以上,参考下面的文献列写格式) [1]徐国华,谭民.移动机器人的发展现状及其趋势[J]. 机器人技术与应用, 2001(3):7~14. [2]H.F Durrant Whyte. Where am I? A tutorial on mobile vehicle localization. Industrial Robot, 1994, 21(2):11~16. [3]彭文刚,彭宝林,柳胜.移动机器人导航系统的研究现状与发展趋势[J]. 机电信 息, 2009(36):69~70. [4]高峰, 黄玉美, 林义忠等.自主移动机器人的模糊导航[J]. 西安理工大学 报,2005,21(4):337~341. 一、报告内容: 就下面的一方面或几方面的内容写一篇报告综述,包括目的、意义,基本概念、定义,主要的控制方法以及结果分析等,最后给出小节及自己的学习心得,要有图表,严禁抄袭,如若发现本课程按零分计! 1.模糊控制系统设计 2.神经网络控制系统 3.遗传算法在系统辨识、控制中的应用 4.模糊控制综述 5.神经网络控制综述 注:题目自拟,也可以自选题目。

二、格式与字体要求: 正文开头的每段开头空2个字符,正文小四号字,22磅行距。大小标题加黑,标题后空一行,一级标题三号字,二级标题四号字,三级标题小四号字(不按格式要求做扣分处理)。 封面见前面示例,单面打印。

人工智能课程设计(五子棋)解读

《人工智能导论》课程报告 课题名称:五子棋 姓名: X X 学号:114304xxxx 课题负责人名(学号): X X114304xxxx 同组成员名单(学号、角色): x x1143041325 XXX1143041036 指导教师:张建州 评阅成绩: 评阅意见: 提交报告时间:2014年 1 月 9 日

五子棋 计算机科学与技术专业 学生XXX 指导老师张建州 [摘要]人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。 同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。 关键词:五子棋进步思考

目录 《人工智能导论》课程报告 0 1 引言 (3) 1.1五子棋简介 (3) 1.2 五子棋游戏的发展与现状 (3) 2 研究问题描述 (4) 2.1 问题定义 (4) 2.2 可行性研究 (4) 2.3 需求分析 (5) 2.4 总体设计 (5) 2.5 详细设计 (6) 2.6编码和单元测试 (6) 3 人工智能技术 (6) 4 算法设计 (7) 4.1α-β剪枝算法 (7) 4.2极大极小树 (7) 4.3深度优先搜索(DFS) (8) 4.4静态估值函数 (9) 5 软件设计和实现 (9) 5.1 数据结构定义 (9) 5.2 程序流程图 (17) 6 性能测试 (18) 6.1 程序执行结果 (18) 7 总结 (21) 参考文献 (21)

人工智能结课报告

结课报告 课程名称:人工智能 学院:信息工程与自动化学院 专业:物联网工程 年级:2013级 学号:201310107125 学生姓名:王子龙 指导教师:吴霖 日期:2014年12月28日 教务处制

智能家居 摘要 智能家居是在互联网影响之下物联化的体现。智能家居通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能,甚至为各种能源费用节约资金。 智能家居的概念起源很早,但一直未有具体的建筑案例出现,直到1984年美国联合科技公司(United Technologies Building System)将建筑设备信息化、整合化概念应用于美国康涅狄格州(Connecticut)哈特佛市(Hartford)的CityPlaceBuilding时,才出现了首栋的“智能型建筑”,从此揭开了全世界争相建造智能家居派的序幕。 应用价值 随着物联网技术的日益发展,依照物联网技术发展的新兴产业智能家居以住宅为平台,通过物联网、云计算、无线通讯等新技术,将照明、门窗、家电、安防等家居设施集,从而构建高效的住宅设施家庭日程事务的管理系统,并为用户营造安全、健康、舒适的家居生活环境。家居与人们的生活息息相关,所以比传统家居更具优势的智能家居也为人所称道,走进千家万户也是势在必行。 难点 1、用户搞不懂智能家居的概念 2、“智能家居产品太贵了” 3、安全隐患 收获 近年来智能家居行业发展迅速,所以对于行业标准的制定非常重要,1979年,美国的斯坦福研究所提出了将家电及电气设备的控制线集成在一起的家庭总线(HOMEBUS), 并成立了相应的研究会进行研究,1983年美国电子工业协会组织专门机构开始制定家庭电气设计标准,并于1988年编制了第一个适用于家庭住宅的电气设计标准,即:《家庭自动化系统与通讯标准》,也有称之为家庭总线系统标准(HBS,Home Bus System)。在其制定的设计规范与标准中,智能住宅的电气设计要求必须满足以下三个条件,即: 1.具有家庭总线系统; 2.通过家庭总线系统提供各种服务功能; 3.能和住宅以外的外部世界相连接。 物联传感技术是全球第一个利用物联网来控制灯饰及电子电器产品(我们通称为zigbee产品),并将其作为智能家居主流产品走向了商业化。ZigBee最初预计的应用领域主要包括消费电子、能源管理、卫生保健、家庭自动化、建筑自动化和工业自动化。这种技术低功耗、

人工智能实验报告

人工智能课程项目报告 姓名: 班级:二班

一、实验背景 在新的时代背景下,人工智能这一重要的计算机学科分支,焕发出了他强大的生命力。不仅仅为了完成课程设计,作为计算机专业的学生, 了解他,学习他我认为都是很有必要的。 二、实验目的 识别手写字体0~9 三、实验原理 用K-最近邻算法对数据进行分类。逻辑回归算法(仅分类0和1)四、实验内容 使用knn算法: 1.创建一个1024列矩阵载入训练集每一行存一个训练集 2. 把测试集中的一个文件转化为一个1024列的矩阵。 3.使用knnClassify()进行测试 4.依据k的值,得出结果 使用逻辑回归: 1.创建一个1024列矩阵载入训练集每一行存一个训练集 2. 把测试集中的一个文件转化为一个1024列的矩阵。 3. 使用上式求参数。步长0.07,迭代10次 4.使用参数以及逻辑回归函数对测试数据处理,根据结果判断测试数 据类型。 五、实验结果与分析 5.1 实验环境与工具 Window7旗舰版+ python2.7.10 + numpy(库)+ notepad++(编辑)

Python这一语言的发展是非常迅速的,既然他支持在window下运行就不必去搞虚拟机。 5.2 实验数据集与参数设置 Knn算法: 训练数据1934个,测试数据有946个。

数据包括数字0-9的手写体。每个数字大约有200个样本。 每个样本保持在一个txt文件中。手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下图所 示 建立一个kNN.py脚本文件,文件里面包含三个函数,一个用来生成将每个样本的txt文件转换为对应的一个向量:img2vector(filename):,一个用 来加载整个数据库loadDataSet():,最后就是实现测试。

人工智能实习报告(--)

人工智能 课 程 设 计 报 告 姓名: 班级:191092 学号:2009100 指导老师: 2011年10月

序言 经过近一周的奋战,我终于初步实现了我的“四子棋”游戏。起初,我选择这个游戏是因为它很独特、少有人做,而且我想当然的认为四子比五子少一子,实现起来应该相对简单,但是面对一个个头疼的错误,遭受一次又一次失败的打击,我才发现自己想错了,四子棋人机对战比五子棋更让人纠结。 暑期我和班上两名同学xxx,xx一起完成过五子棋和黑白棋的编程。当时,五子棋我们是参照别人的模板完成的,黑白棋是在透彻研究过五子棋的基础上不断讨论、优化算法最终完成的。现在,他们一个继续做五子棋一个做黑白棋,将其完善作为人工智能的课程设计课题。我只得另陌新路,关注起了四子棋。 界面的搭建以及二人对战的实现只用了我两个晚上的时间,当然我的界面构建的相对简单。二人对战实现关键一步就是输赢判断函数judge()的编写。人机对战整整折腾了自己四五天的时间,我本来对于博弈过程中alpha—beta剪枝算法很理解的,但是具体要自己编程实现时我觉得自己只了解到其皮毛。所以,我不断看五子棋程序、单步跟踪、寻问同学,终于算是把其递归和剪枝过程搞得明明白白。 花了两天完成了alpha—beta剪枝算法我本以为核心都解决了,却不知更让人头疼的是评估函数的确定还有统计当前棋局状况的函数Calculate()的编写。难题终究是可以被客服的,我花了整整一天写完了我的Calculate()函数。 直至10月27日上午我依然没有让机器足够智能,或者说它目前很呆板。我一直在找原因,自己的模块设计算法思路都是对的,请教过同学她也觉得设计思路没有错。现在,我整体的想了一下,觉得应该是我的静态评估函数设计的不够合理,或者说目前的设计方法对于五子棋很合理但是对于规则不同的四子棋就可能存在缺陷。既然目前时间不允许没能实现足够智能,那就只能把这粗略的程序提交。我一定会继续完善、改进算法,重新设计评估函数,争取让机器达到理想的“智能”。

人工智能实验报告材料

标准文档 《人工智能》课外实践报告 项目名称:剪枝法五子棋 所在班级: 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 估值函数:

相关主题
文本预览
相关文档 最新文档