文档库 最新最全的文档下载
当前位置:文档库 › 昆明理工大学人工智能第二次实验报告

昆明理工大学人工智能第二次实验报告

昆明理工大学人工智能第二次实验报告
昆明理工大学人工智能第二次实验报告

理工大学信息工程与自动化学院学生实验报告

( 2013 — 2014 学年第 1 学期)

课程名称:人工智能开课实验室:信自楼445 2013 年12月 20日

一、上机目的及容

1.上机容

用确定性推理算法求解教材65-66页介绍的八数码难题。

2.上机目的

(1)复习程序设计和数据结构课程的相关知识,实现课程间的平滑过渡;

(2)掌握并实现在小规模状态空间中进行图搜索的方法;

(3)理解并掌握图搜索的技术要点。

二、实验原理及基本技术路线图(方框原理图或程序流程图)

(1)设计并实现程序,求解出正确的解答路径;

(2)对所设计的算法采用大O符号进行时间复杂性和空间复杂性分析;

(3)对一般图搜索的技术要点和技术难点进行评述性分析。

三、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC及VISUAL C++6.0软件

四、实验方法、步骤(或:程序代码或操作过程)

建立工程后建立5个source Files文件分别为

1.AttributeValue.cpp

#include "AttributeValue.h"

#include "base.h"

AttributeValue::AttributeValue(std::string const& instring) : m_value(instring)

{

}

bool AttributeValue::GetType()

{

if (m_value == "P")

{

return true;

}

else if (m_value == "N")

{

return false;

}

else

{

throw DataErrException();

}

}

2.basefun.cpp

#include

float log2 (float x)

{

return 1.0 / log10(2) * log10(x);

}

float calEntropy(float prob)

{

float sum=0;

if (prob == 0 || prob == 1)

{

return 0;

}

sum -= prob * log2(prob);

sum -= (1 - prob) * log2 ( 1 - prob );

return sum;

3.DataPoint.cpp

#include

#include "DataPoint.h"

DataPoint::DataPoint(std::vector const& attributes, bool type) : m_type(type)

{

for (int i=0; i

{

m_attributes.push_back( attributes[i] );

}

}

void DataPoint::display()

{

for (int i=0; i

{

std::cout << "\t" << m_attributes[i].getValue();

}

if (true == m_type)

{

std::cout << "\tP";

}

else

{

std::cout << "\tN";

}

std::cout << std::endl;

}

4.DataSet.cpp

5.main.cpp

#include

#include

#include

#include

#include

#include

#include "AttributeValue.h"

#include "DataPoint.h"

#include "DataSet.h"

DataPoint processLine(std::string const& sLine)

{

std::istringstream isLine(sLine, std::istringstream::in);

std::vector attributes;

// TODO: need to handle beginning and ending empty spaces.

while( isLine.good() )

{

std::string rawfield;

isLine >> rawfield;

attributes.push_back( AttributeValue( rawfield ) );

}

AttributeValue v = attributes.back();

attributes.pop_back();

bool type = v.GetType();

return DataPoint(attributes, type);

}

void main()

{

std::ifstream ifs("in.txt", std::ifstream::in);

DataSet initDataset;

while( ifs.good() )

{

// TODO: need to handle empty lines.

std::string sLine;

std::getline(ifs, sLine);

initDataset.addDataPoint( processLine(sLine) );

}

std::list processQ;

std::vector finishedDataSet;

processQ.push_back(initDataset);

while ( processQ.size() > 0 )

{

std::vector splittedDataSets;

DataSet dataset = processQ.front();

dataset.splitDataSet(splittedDataSets);

processQ.pop_front();

for (int i=0; i

{

float prob = splittedDataSets[i].getPositiveProb();

if (prob == 0.0 || prob == 1.0)

{

finishedDataSet.push_back(splittedDataSets[i]);

}

else

{

processQ.push_back(splittedDataSets[i]);

}

}

}

std::cout << "The dicision tree is:" << std::endl;

for (int i = 0; i < finishedDataSet.size(); ++i)

{

finishedDataSet[i].display();

}

}

建立4个Header Files文件

1.AttributeValue.h

#ifndef ATTRIBUTE_VALUE_H_

#define ATTRIBUTE_VALUE_H_

#include

class AttributeValue

{

public:

AttributeValue(std::string const& instring);

bool GetType();

std::string const& getValue() const

{

return m_value;

}

private:

std::string m_value;

};

struct AttributeValueCmp

{

bool operator() (AttributeValue const& lhs, AttributeValue const& rhs) const {

return lhs.getValue() < rhs.getValue();

}

};

#endif

2.base.h

class DataErrException : public std::exception

{

};

float calEntropy(float prob);

3.DatePoint.h

#ifndef DATA_POINT_H_

#define DATA_POINT_H_

#include

#include "AttributeValue.h"

class DataPoint

{

public:

DataPoint(std::vector const& attributes, bool type);

bool isPositive()

{

return m_type;

}

int getNAttributes()

{

return m_attributes.size();

}

AttributeValue const& getAttribute(int index)

{

return m_attributes[index];

}

void display();

private:

std::vector m_attributes;

bool m_type;

};

#endif

4.DateSet.h

#include

#include

#include "DataPoint.h"

class SplitAttributeValue

{

public:

SplitAttributeValue(AttributeValue v, int id)

: m_v(v)

, m_attributeIndex(id)

{

}

int getAttributeIndex()

{

return m_attributeIndex;

}

void display();

private:

int m_attributeIndex;

AttributeValue m_v;

};

class DataSet

{

public:

void addDataPoint(DataPoint const& datapoint);

float getPositiveProb();

void splitDataSet(std::vector& splittedSets);

void display();

private:

std::vector m_splitAttributes;

std::vector m_data;

};

五、实验过程原始记录( 测试数据、图表、计算等)

实验运行截图

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)

这次事件让我的编程能力有了很大的提高,查阅资料等能力也有很大的提升。让我对人工智能技术有了进一步的认识。在解决问题和算法设计上的能力也极提高。这次作业我收集相关材料阅读并消化,在实际应用中,我发现人工智能是一门很有意思的学科,对本门课程产生了兴趣。在以后的学习中,我会认真学好这门课程。

人工智能实验报告大全

人工智能实验报告大 全

人工智能课内实验报告 (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)

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

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

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

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

昆明理工大学电机学实验报告..

昆明理工大学实验报告 实验课程名称: 电机学实验 开课实验室: 电机实验室 2013年7月5日 年级、专业、班 电自11级 3 班 学号 201110901141 姓名 刘盼 成绩 实验项目名称 电机综合实验 指导教师 教 师 评 语 教师签名 2013年 7 月 5 日 实验一、变压器综合实验 三相变压器并联运行 一、 实验目的 1.学习三相变压器投入并联运行的方法。 2.测试三相变压器并联运行条件不满足时的空载电流。 3.研究三相变压器并联运行时负载的分配规律。 二、 实验原理 理想的并联运行的变压器应满足以下条件: 1、空载时,各变压器的相应的次级电压必须相等而且同相位。为满足此条件,并联个变压器应有相同电压变比:即k1=k2=k3…kn 且属于相同的连接组,不同连接组别的变压器不能并联运行。 2、在有负载时,各变压器的所分担的负载电流英语他们的容量成正比。为满足此条件,保证各个变压器所分担的负载电流与其容量成正比例,各变压器应该有相同的短路电压标幺值。 3、各变压器的负载电流都应同相位。为满足此条件,要求各变压器短路电阻与短路电抗的比值相等。即要求阻抗电压降的有功分量和无功分量分别相等,即各个变压器应该有相同的短路电压有功分量和无功分量。 4.变压器并联运行时的负载分配 。当变压器并联运行时,通常短路电压标幺值随着容量的不同而不相同,大容量的变压器有较大的短路电压。各个并联运行的变压器实际分担负载的计算公式: 由此可见,各个变压器的负载分配与该变压器的额定容量成正比,与短路电压成反比。如果各个变压器的短路电压相同,则变压器的负载分配只与额定容量成正比。

三、实验线路 图A-1 实验线路 四、实验结果及分析 1、测试两台三相变压器满足理想条件并联运行时的空载电流实验参数: 图A-2 实验参数设置Ⅰ

人工智能实验报告

《人工智能》课外实践报告 项目名称:剪枝法五子棋 所在班级: 2013级软件工程一班 小组成员:李晓宁、白明辉、刘小晶、袁成飞、程小兰、李喜林 指导教师:薛笑荣 起止时间: 2016-5-10——2016-6-18

项目基本信息 一、系统分析 1.1背景

1.1.1 设计背景 智力小游戏作为人们日常休闲娱乐的工具已经深入人们的生活,五子棋更成为了智力游戏的经典,它是基于AI的αβ剪枝法和极小极大值算法实现的人工智能游戏,让人们能和计算机进行对弈。能使人们在与电脑进行对弈的过程中学习五子棋,陶冶情操。并且推进人们对AI的关注和兴趣。 1.1.2可行性分析 通过研究,本游戏的可行性有以下三方面作保障 (1)技术可行性 本游戏采用Windows xp等等系统作为操作平台,使用人工智能进行算法设计,利用剪枝法进行编写,大大减少了内存容量,而且不用使用数据库,便可操作,方便可行,因此在技术上是可行的。 (2)经济可行性 开发软件:SublimText (3)操作可行性 该游戏运行所需配置低、用户操作界面友好,具有较强的操作可行性。 1.2数据需求 五子棋需要设计如下的数据字段和数据表: 1.2.1 估值函数:

估值函数通常是为了评价棋型的状态,根据实现定义的一个棋局估值表,对双方的棋局形态进行计算,根据得到的估值来判断应该采用的走法。棋局估值表是根据当前的棋局形势,定义一个分值来反映其优势程度,来对整个棋局形势进行评价。本程序采用的估值如下: 状态眠二假活三眠三活二冲四假活三活三活四连五 分值 2 4 5 8 12 15 40 90 200 一般来说,我们采用的是15×15的棋盘,棋盘的每一条线称为一路,包括行、列和斜线,4个方向,其中行列有30路,两条对角线共有58路,整个棋盘的路数为88路。考虑到五子棋必须要五子相连才可以获胜,这样对于斜线,可以减少8路,即有效的棋盘路数为72路。对于每一路来说,第i路的估分为E(i)=Ec(i)-Ep(i),其中Ec(i)为计算机的i路估分,Ep(i)为玩家的i路估分。棋局整个形势的估值情况通过对各路估分的累加进行判断,即估值函数: 72 F(n)= Σ E(i) i=1 1.2.2 极小极大值算法: 极大极小搜索算法就是在博弈树在寻找最优解的一个过程,这主要是一个对各个子结点进行比较取舍的过程,定义一个估值函数F(n)来分别计算各个终结点的分值,通过双方的分值来对棋局形势进行分析判断。以甲乙两人下棋为例,甲为max,乙为min。当甲走棋时,自然在博弈树中寻找最大点的走法,轮到乙时,则寻找最小点的走法,如此反复,这就是一个极大极小搜索过程,以此来寻找对机器的最佳走法。

昆明理工大学进程管理实验报告

昆明理工大学信息工程与自动化学院学生实验报告 (2010 —2011 学年第二学期) 课程名称:操作系统开课实验室:年月日 目录 一、实验目的 (1) 二、实验原理及基本技术路线图 (1) 1. 进程的状态转换图 (2) 2. 各原语的功能说明 (2) 3.多级反馈队列调度算法的描述 (3) 4. 程序功能结构图 (4) 5. 流程图 (4) 6. 数据结构定义 (5) 7. 主要变量的说明 (6) 8. 函数的说明 (6) 四、实验方法、步骤 (6) 五、实验过程原始记录 (18) 六、实验结果、分析和结论 (21) 一、实验目的 通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。 二、实验原理及基本技术路线图(方框原理图) 用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用

多级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。 1.进程的状态转换图: 2.各原语的功能说明: -进程创建原语:进程创建是调用创建原语来实现。创建原语扫描系统的PCB链表,在找到一定PCB 链表之后,填入调用者提供的有关参数(这些参数包括:进程名、进程优先级P0、进程正文段起始地址d0、资源清单R0等),最后形成代表进程的PCB结构。 -进程撤销(终止): 撤消原语首先检查PCB进程链或进程家族,寻找所要撤消的进程是否存在。如果找到了所要撤消的进程的PCB结构,则撤消原语释放该进程所占有的资源之后,把对应的PCB结构从进程链或进程家族中摘下并返回给PCB空队列。如果被撤消的进程有自己的子进程,则撤消原语先撤消其子进程的PCB结构并释放子进程所占用的资源之后,再撤消当前进程的PCB结构和释放其资源。

游戏人工智能实验报告四

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

(完整word版)哈工大人工智能导论实验报告

人工智能导论实验报告 学院:计算机科学与技术学院 专业:计算机科学与技术 2016.12.20

目录 人工智能导论实验报告 (1) 一、简介(对该实验背景,方法以及目的的理解) (3) 1. 实验背景 (3) 2. 实验方法 (3) 3. 实验目的 (3) 二、方法(对每个问题的分析及解决问题的方法) (4) Q1: Depth First Search (4) Q2: Breadth First Search (4) Q3: Uniform Cost Search (5) Q4: A* Search (6) Q5: Corners Problem: Representation (6) Q6: Corners Problem: Heuristic (6) Q7: Eating All The Dots: Heuristic (7) Q8: Suboptimal Search (7) 三、实验结果(解决每个问题的结果) (7) Q1: Depth First Search (7) Q2: Breadth First Search (9) Q3: Uniform Cost Search (10) Q4: A* Search (12) Q5: Corners Problem: Representation (13) Q6: Corners Problem: Heuristic (14) Q7: Eating All The Dots: Heuristic (14) Q8: Suboptimal Search (15) 自动评分 (15) 四、总结及讨论(对该实验的总结以及任何该实验的启发) (15)

昆明理工大学进程管理实验报告

理工大学信息工程与自动化学院学生实验报告 ( 2010—2011学年第二学期) 课程名称:操作系统开课实验室:年月日 目录 一、实验目的1 二、实验原理及基本技术路线图1 1.进程的状态转换图2 2.各原语的功能说明2 3.多级反馈队列调度算法的描述3 4.程序功能结构图4 5.流程图4 6.数据结构定义5 7.主要变量的说明6 8.函数的说明6 四、实验方法、步骤6 五、实验过程原始记录18 六、实验结果、分析和结论21 一、实验目的 通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。 二、实验原理及基本技术路线图(方框原理图) 用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用多

级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。 1.进程的状态转换图: 2.各原语的功能说明: -进程创建原语:进程创建是调用创建原语来实现。创建原语扫描系统的PCB链表,在找到一定PCB 链表之后,填入调用者提供的有关参数(这些参数包括:进程名、进程优先级P0、进程正文段起始地址d0、资源清单R0等),最后形成代表进程的PCB结构。 -进程撤销(终止): 撤消原语首先检查PCB进程链或进程家族,寻找所要撤消的进程是否存在。如果找到了所要撤消的进程的PCB结构,则撤消原语释放该进程所占有的资源之后,把对应的PCB结构从进程链或进程家族中摘下并返回给PCB空队列。如果被撤消的进程有自己的子进程,则撤消原语先撤消其子进程的PCB结构并释放子进程所占用的资源之后,再撤消当前进程的PCB结构和释放其资源。 -阻塞原语:当发生引起阻塞的事件时,该原语被该进程自己调用来阻塞自己。阻塞

人工智能实验报告

计算机科学与技术1341901301 敏 实验一:知识表示方法 一、实验目的 状态空间表示法是人工智能领域最基本的知识表示方法之一,也是进一步学习状态空间搜索策略的基础,本实验通过牧师与野人渡河的问题,强化学生对知识表示的了解和应用,为人工智能后续环节的课程奠定基础。 二、问题描述 有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假定野人与牧师都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出小船来回次数最少的最佳方案。 三、基本要求 输入:牧师人数(即野人人数):n;小船一次最多载人量:c。 输出:若问题无解,则显示Failed,否则,显示Successed输出一组最佳方案。用三元组(X1, X2, X3)表示渡河过程中的状态。并用箭头连接相邻状态以表示迁移过程:初始状态->中间状态->目标状态。 例:当输入n=2,c=2时,输出:221->110->211->010->021->000 其中:X1表示起始岸上的牧师人数;X2表示起始岸上的野人人数;X3表示小船现在位置(1表示起始岸,0表示目的岸)。 要求:写出算法的设计思想和源程序,并以图形用户界面实现人机交互,进行输入和输出结果,如: Please input n: 2 Please input c: 2 Successed or Failed?: Successed Optimal Procedure: 221->110->211->010->021->000 四、算法描述 (1)算法基本思想的文字描述;

人工智能实验报告大全

人工智能课内实验报告 (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) {

人工智能导论1-4章作业

《人工智能导论》作业(1-4章) 1.人工智能有哪几个主要的学派?各学派的基本理论框架和主要研究方向有何不同?2.用谓词逻辑方法表述下面问题积木世界的问题。 (定义谓词、描述状态、定义操作、给出操作序列) 3.请给出下列描述的语义网络表示: 1)11月5日,NBA常规赛火箭主场对阵小牛,火箭107-76大胜小牛。 2)张老师从9月至12月给自动化专业学生教授《自动控制原理》。李老师从10至12月 给计算机专业学生教授《操作系统原理》。 3)树和草都是植物;树和草都有根和叶;水草是草,生活在水中;果树是树,会结果; 苹果树是果树,结苹果。 4.请用相应谓词公式描述下列语句: 1)有的人喜欢足球、有的人喜欢篮球;有的人既喜欢足球又喜欢篮球。 2)喜欢编程的同学都喜欢计算机。 3)不是每个自控系的学生都喜欢编程。 4)有一个裁缝,他给所有不自己做衣服的人做衣服。 5)如果星期六不下雨,汤姆就会去爬山。 5.什么是谓词公式的解释?对于公式?x ?y (P(x)→Q(f(x),y)) D={1,2,3} 分别给出使公式为真和假的一种解释。 6.什么是合一?求出下面公式的最一般合一: P(f(y), y, x) P(x, f(a),z)。 7.把下面谓词公式化为子句集 ?x ?y (P(x,y)∨Q(x,y))→R(x,y)) ?x (P(x) →?y(P(y)∧R(x,y))

?x (P(x)∧?y(P(y) →R(x,y))) 8.证明下面各题中,G是否是F的逻辑结论? F1: ?x (P(x) →?y(Q(y)→L(x,y))) F2: ?x (P(x)∧?y(R(y) →L(x,y))) G: ?x (R(x) →~Q(x)) F1: ?z (~B(z)→?y(D(z,y)∧C(y))) F2: ?x (E(x)∧A(x)∧?y (D(x,y) →E(y))) F3: ?y(E(y) →~B(y)) G: ?z (E(z) ∧C(z)) 9.已知:John, Mike, Sam是高山俱乐部成员。 高山俱乐部成员都是滑雪运动员或登山运动员(也可以都是)。 登山运动员不喜欢雨。 滑雪运动员都喜欢雪。 凡是Mike喜欢的,John就不喜欢。 凡是Mike 不喜欢的,John就喜欢。 Mike喜欢雨和雪。 问:高山俱乐部是否有一个成员,他是登山运动员,但不是滑雪运动员?如果有,他是谁?10.为什么说归结式是其亲本子句的逻辑结论? 11.何为完备的归结策略?有哪些归结策略是完备的? 12.何谓搜索?有哪些常用的搜索方法?盲目搜索与启发式搜索的根本区别是什么?13.用状态空间法表示问题时,什么是问题的解?什么是最优解?在图搜索算法中,OPEN 表和CLOSED表的作用是什么?f(x)有何不同含义? 14.宽度优先搜索和深度优先搜索有何不同?在何种情况下,宽度优先搜索优于深度优先搜索,何种情况反之? 15.什么是启发式搜索,g(x)与h(x)各有什么作用?A*算法的限制条件是什么?

人工智能实验报告

实验报告 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 [] * ; =>

昆明理工大学数据库实验报告

《数据库原理》上机实验报告 专业:自动化、测控 学号: 姓名: 班级: 指导老师:杨彪 昆明理工大学信息工程与自动化学院 2014年12月

一、实验目的与要求: ●熟练使用SQL定义子语言、操纵子语言命令语句 ●掌握关系模型上的完整性约束机制 ●掌握一定的数据库管理技术 ●能完成简单的数据库应用开发 二、实验内容及学时安排(总学时:8) (一)数据定义子语言实验(2学时) 实验1:利用SQL语句创建Employee数据库 程序:create database employee 结果: 实验2:利用SQL语句在Employee数据库中创建人员表person、月薪表salary 及部门表dept。 要求:按表1、表达、表3中的字段说明创建 表1 person表结构 字段名数据类型字段长度允许空否字段说明 P_no Char 6 Not Null 工号,主键 P_name Varchar 10 Not Null 姓名 Sex Char 2 Not Null 性别 Birthdate Datetime 8 Null 出生日期 Prof Varchar 10 Null 职称 Deptno Char 4 Not Null 部门代码,外键(参照dept表) 表2 salary表结构 字段名数据类型字段长度允许空否字段说明 P_no Char 6 Not Null 工号,主键,外键(参照person表)Base Dec 5 Null 基本工资 Bonus Dec 5 Null 奖金,要求>50 Fact Dec 5 Null 实发工资=基本工资+奖金Month Int 2 Not Null 月份 表3 dept表结构 字段名数据类型字段长度允许空否字段说明 Deptno Char 4 Not Null 部门代码,主键,

人工智能导论实验

人工智能导论 实验报告 姓名:蔡鹏 学号:1130310726 实验一

一、实验内容 有如下序列,试把所有黑色格移到所有白色格的右边,黄色格代表空格,黑色格和白色格可以和距离不超过三的空格交换。 二、实验代码 #include #include #include #define N 10 #define inf 9999 int g=999; void tree_gener(struct node *fn,struct node *root); struct node { char seq[7]; int f,g,n; struct node *sn[N]; }; struct stack { int num; struct node *n[50]; }; void Enstack(struct node *sn,struct stack *S) { S->n[S->num]=sn; S->num++; } struct node *Destack(struct stack *S) { S->num--; return S->n[S->num]; } void find_min_f(struct node *root) { int i; struct node *n,*min; struct stack S; S.num=0; min=root;

Enstack(root,&S); while(S.num!=0) { n=Destack(&S); if(n->f < min->f) { min=n; } for(i=0;in;i++) { Enstack(n->sn[i],&S); } } tree_gener(min,root); if(g>min->g) { printf("seq:%c %c %c %c %c %c %c | g:%d \n",min->seq[0],min->seq[1],min->seq[2],min->seq[3],min->seq[4],min->seq[5],min->seq[6],min->g); } g=min->g; } void swap(struct node *sn,struct node *fn,int n,int m) { int i; for(i=0;i<7;i++) { sn->seq[i]=fn->seq[i]; } sn->seq[n]=fn->seq[m]; sn->seq[m]=fn->seq[n]; } int calcu_h(char seq[]) { int m=0,n=0,i; for(i=0;i<7;i++) { if(seq[i]=='B') { m++; } if(seq[i]=='W')

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

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

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

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

昆明理工大学机电系统设计模块PLC实验报告

三、验证型实验 1、电动机Y/△降压起动控制 (1)工作原理 按下启动按钮SB1,KM1、KM3、时间继电器通电并自保,电动机接成Y 型起动,2s后,时间继电器动作,使KM3断电,KM2通电吸合,电动机接成△型运行。按下停止按扭SB1,电动机停止运行。 图1电动机Y/△减压起动控制主电路 (2)I/O分配 输入元件分配地址输出元件分配地址 停止按钮SB1 I0.0KM1 Q0.0 启动按钮SB2 I0.1 KM2 Q0.1 过载保护FR I0.2 KM3Q0.2 (3)梯形图

图2梯形图程序 (3)程序说明 按下启动按钮SB2,触点I0.1闭合内部辅助线圈M0.0通电 常开触点M0.0闭合,形成自锁 常开触点M0.0闭合,线圈Q0.0通电 常开触点M0.0闭合,线圈Q0.2通电,定时器T38通电开始计时 常闭触点Q0.2断开,形成互锁

2s后,T38断开,Q0.2断电;T38闭合,Q0.1通电并自锁(4)语句表 图3语句表程序 (5)仿真结果 图4 状态表

图5工程图 2、用PLC构成交通灯控制系统 (1)控制要求 如图所示,起动后,南北红灯亮并维持25s。在南北红灯亮的同时,东西绿灯也亮,1s后,东西车灯即甲亮。到20s时,东西绿灯闪亮,3s后熄灭,在东西绿灯熄灭后东西黄灯亮,同时甲灭。黄灯亮2s后灭东西红灯亮。与此同时,南北红灯灭,南北绿灯亮。1s后,南北车灯即乙亮。南北绿灯亮了25s后闪亮,3s 后熄灭,同时乙灭,黄灯亮2s后熄灭,南北红灯亮,东西绿灯亮,循环。

图6 十字路口交通灯 (2)I/O分配 输入元件分配地址输出元件分配地址启动按钮I0.0 南北红灯Q0.0 南北黄灯Q0.1 南北绿灯Q0.2 东西红灯Q0.3 东西黄灯Q0.4 东西绿灯Q0.5 南北车灯Q0.6 东西车灯Q0.7(3)程序设计 起动I0.0 东西绿灯Q0.5 东西车灯甲Q0.7 东西黄灯Q0.4 东西红灯Q0.3 南北绿灯Q0.2 南北车灯乙Q0.6 南北黄灯Q0.1 南北红灯Q0.0 图7十字路口交通信号灯的时序图

人工智能实验报告

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

一、实验背景 在新的时代背景下,人工智能这一重要的计算机学科分支,焕发出了他强大的生命力。不仅仅为了完成课程设计,作为计算机专业的学生, 了解他,学习他我认为都是很有必要的。 二、实验目的 识别手写字体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():,最后就是实现测试。

昆明理工大学计算机实验报告

昆明理工大学《程序设计语言(Java)》课程实验报告 学院名称:材料科学与工程专业年级: 学生姓名:学号: 联系电话:Email: 实验项目名称:Java基础实验指导教师王樱子 实验目的: 1. 掌握Java程序的编辑、编译、调试和运行方法,熟悉常见编程工具的使用; 2. 掌握if语句,switch语句,for语句,while语句和do…while语句的用法; 3. 掌握一维数组和二维数组的使用方法。 实验内容: 1. 编译两种运行方式:just-in-time编译器,简称JIT编译器。多线程,动态执行,丰富的API文档和类库。 采用UltraEdit为编程工具,对教材例1-1的程序进行编辑、编译和运行。熟悉JDK API 文档的使用方法。 2. if语句,是单重选择,最多只有两个分支。if关键字之后的逻辑表达式必须得到一个逻辑值,不能象其他语言那样以数值来代替。因为Java不提供数值与逻辑值之间的转换。else子句属于逻辑上离它最近的if语句。 switch语句含义与嵌套的if语句是类似的,格式更加简捷。表达式的计算结果必须是int型或字符型,即是int型赋值相容的。当用byte、short或char类型时,要进行提升。switch语句不允许使用浮点型或long型表达式。c1、c2、…、ck是int型或字符型常量。default子句是可选的,并且,最后一个break语句完全可以不写。switch语句和if语句可以互相代替。当主程序执行时,如果第一个命令行参数的首字符分别是数字、小写字母及大写字母时,系统会显示这个首字符。如果输入的是非数字或字母,则显示不是数字或字母。 三种循环语句:for语句、while语句和do语句 for语句的语义是:先执行初始语句,判断逻辑表达式的值,当逻辑表达式为真时,执行循环体语句,执行迭代语句,然后再去判别逻辑表达式的值。直到逻辑表达式的值为假时,循环结束。 while循环 for语句中常常用循环控制变量显式控制循环的执行次数。当程序中不能明确地指明循环的执行次数时,可以仅用逻辑表达式来决定循环的执行与否。这样的循环可用while语句来实现

人工智能实验报告材料

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

人工智能实验报告

《一人工智能方向实习一》 实习报告 专业:计算机科学与技术 班级:12419013 学号: 姓名: 江苏科技大学计算机学院 2016年3月

实验一数据聚类分析 一、实验目的 编程实现数据聚类的算法。 二、实验内容 k-means聚类算法。 三、实验原理方法和手段 k-means算法接受参数k ;然后将事先输入的 n个数据对象划分为 k个聚类以便使得 所获得的聚类满足:同一聚类中的对象相似度较高 四、实验条件 Matlab2014b 五、实验步骤 (1)初始化k个聚类中心。 (2)计算数据集各数据到中心的距离,选取到中心距离最短的为该数据所属类别。 (3)计算(2)分类后,k个类别的中心(即求聚类平均距离) (4)继续执行(2)(3)直到k个聚类中心不再变化(或者数据集所属类别不再变化) 六、实验代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % mai n.m % k-mea ns algorithm % @author matcloud %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear; close all ; load fisheriris ; X = [meas(:,3) meas(:,4)]; figure; plot(X(:,1),X(:,2), 'ko' ,'MarkerSize' ,4); title( 'fisheriris dataset' , 'FontSize' ,18, 'Color' , 'red'); [idx,ctrs] = kmea ns(X,3); figure; subplot(1,2,1); plot(X(idx==1,1),X(idx==1,2), 'ro' , 'MarkerSize' ,4); hold on;

SystemView实验报告(全)

昆明理工大学(SystemView)实验报告 实验名称:SystemView 实验时间:20013 年 9 月 8日 专业:11电信指导教师:文斯 姓名:张鉴 学号:2210 成绩:教师签名:文斯 第一章SystemView的安装与操作 一实验目的 1、! 2、了解和熟悉Systemview 软件的基本使用; 3、初步学习Systemview软件的图符库,能够构建简单系统。 二实验内容 1、熟悉软件的工作界面; 2、初步了解Systemview软件的图符库,并设定系统定时窗口; 3、设计一些简单系统,观察信号频谱与输出信号波形。 三实验过程及结果 1.1试用频率分别为f1=200HZ、f2=2000HZ的两个正弦信号源,合成一调制信号 y(t)=5sin(2πf1t)*cos(2πf2t),观察其频谱与输出信号波形。注意根据信号的频率选择适当的系统采样数率。 画图过程: (1)设置系统定时,单击按钮,设置采样率20000Hz,采样点数512; (2)定义两个幅度分别为1V,5V,频率分别为200Hz,2000Hz的正弦和余弦信号源; ( (3)拖出乘法器及接收图符; (4)连线; (5)运行并分析单击按钮和。

仿真电路图: 波形图如下: 频谱图如下: 结果分析: 频率为200HZ 的信号与频率为2000HZ的信号f2相乘,相当于在频域内卷积,卷积结果为两个频率想加减,实现频谱的搬移,形成1800HZ和2200HZ的信号,因信号最高频率为2000HZ所以采用5000HZ的采样数率。 \

将一正弦信号与高斯噪声相加后观察输出波形及其频谱。由小到大改变高斯噪声的功率,重新观察输出波形及其频谱。 画图过程: (1)设置系统定时,单击按钮,设置采样率100Hz,采样点数128; (2)定义一个幅度为1V,频率为100Hz正弦信号源和一个高斯噪声; (3)拖出加法器及接收图符; (4)连线; (5)运行并分析单击按钮和; (6)在分析窗口下单击进入频谱分析窗口,再单击点OK分析频谱。 仿真电路图: 《 波形图如下: 频谱图如下:

相关文档