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

上传人:b****8 文档编号:28220721 上传时间:2023-07-09 格式:DOCX 页数:12 大小:62.87KB
下载 相关 举报
昆明理工大学人工智能第二次实验报告.docx_第1页
第1页 / 共12页
昆明理工大学人工智能第二次实验报告.docx_第2页
第2页 / 共12页
昆明理工大学人工智能第二次实验报告.docx_第3页
第3页 / 共12页
昆明理工大学人工智能第二次实验报告.docx_第4页
第4页 / 共12页
昆明理工大学人工智能第二次实验报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《昆明理工大学人工智能第二次实验报告.docx》由会员分享,可在线阅读,更多相关《昆明理工大学人工智能第二次实验报告.docx(12页珍藏版)》请在冰豆网上搜索。

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

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

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

(2013—2014学年第1学期)

课程名称:

人工智能开课实验室:

信自楼4452013年12月20日

年级、专业、班

计科113

学号

4

周国映

成绩

教师评语

该同学是否了解实验原理:

A.了解□B.基本了解□C.不了解□

该同学的实验能力:

A.强□B.中等□C.差□

该同学的实验是否达到要求:

A.达到□B.基本达到□C.未达到□

实验报告是否规:

A.规□B.基本规□C.不规□

实验过程是否详细记录:

A.详细□B.一般□C.没有□

教师签名:

年月日

实验项目名称

天气决策树

指导教师

英莉

一、上机目的及容

1.上机容

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

2.上机目的

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

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

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

 

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

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

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

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

 

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

1台PC及VISUALC++6.0软件

四、实验方法、步骤(或:

程序代码或操作过程)

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

1.AttributeValue.cpp

#include"AttributeValue.h"

#include"base.h"

AttributeValue:

:

AttributeValue(std:

:

stringconst&instring)

:

m_value(instring)

{

}

boolAttributeValue:

:

GetType()

{

if(m_value=="P")

{

returntrue;

}

elseif(m_value=="N")

{

returnfalse;

}

else

{

throwDataErrException();

}

}

2.basefun.cpp

#include

floatlog2(floatx)

{

return1.0/log10

(2)*log10(x);

}

floatcalEntropy(floatprob)

{

floatsum=0;

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

{

return0;

}

sum-=prob*log2(prob);

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

returnsum;

}

3.DataPoint.cpp

#include

#include"DataPoint.h"

 

DataPoint:

:

DataPoint(std:

:

vectorconst&attributes,booltype)

:

m_type(type)

{

for(inti=0;i

{

m_attributes.push_back(attributes[i]);

}

}

voidDataPoint:

:

display()

{

for(inti=0;i

{

std:

:

cout<<"\t"<

}

if(true==m_type)

{

std:

:

cout<<"\tP";

}

else

{

std:

:

cout<<"\tN";

}

std:

:

cout<

:

endl;

}

4.DataSet.cpp

5.main.cpp

#include

#include

#include

#include

#include

#include

#include"AttributeValue.h"

#include"DataPoint.h"

#include"DataSet.h"

DataPointprocessLine(std:

:

stringconst&sLine)

{

std:

:

istringstreamisLine(sLine,std:

:

istringstream:

:

in);

std:

:

vectorattributes;

//TODO:

needtohandlebeginningandendingemptyspaces.

while(isLine.good())

{

std:

:

stringrawfield;

isLine>>rawfield;

attributes.push_back(AttributeValue(rawfield));

}

AttributeValuev=attributes.back();

attributes.pop_back();

booltype=v.GetType();

returnDataPoint(attributes,type);

}

voidmain()

{

std:

:

ifstreamifs("in.txt",std:

:

ifstream:

:

in);

DataSetinitDataset;

while(ifs.good())

{

//TODO:

needtohandleemptylines.

std:

:

stringsLine;

std:

:

getline(ifs,sLine);

initDataset.addDataPoint(processLine(sLine));

}

std:

:

listprocessQ;

std:

:

vectorfinishedDataSet;

processQ.push_back(initDataset);

while(processQ.size()>0)

{

std:

:

vectorsplittedDataSets;

DataSetdataset=processQ.front();

dataset.splitDataSet(splittedDataSets);

processQ.pop_front();

for(inti=0;i

{

floatprob=splittedDataSets[i].getPositiveProb();

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

{

finishedDataSet.push_back(splittedDataSets[i]);

}

else

{

processQ.push_back(splittedDataSets[i]);

}

}

}

std:

:

cout<<"Thedicisiontreeis:

"<

:

endl;

for(inti=0;i

{

finishedDataSet[i].display();

}

}

建立4个HeaderFiles文件

1.AttributeValue.h

#ifndefATTRIBUTE_VALUE_H_

#defineATTRIBUTE_VALUE_H_

#include

classAttributeValue

{

public:

AttributeValue(std:

:

stringconst&instring);

boolGetType();

std:

:

stringconst&getValue()const

{

returnm_value;

}

private:

std:

:

stringm_value;

};

structAttributeValueCmp

{

booloperator()(AttributeValueconst&lhs,AttributeValueconst&rhs)const

{

returnlhs.getValue()

}

};

#endif

2.base.h

classDataErrException:

publicstd:

:

exception

{

};

floatcalEntropy(floatprob);

3.DatePoint.h

#ifndefDATA_POINT_H_

#defineDATA_POINT_H_

#include

#include"AttributeValue.h"

classDataPoint

{

public:

DataPoint(std:

:

vectorconst&attributes,booltype);

boolisPositive()

{

returnm_type;

}

intgetNAttributes()

{

returnm_attributes.size();

}

AttributeValueconst&getAttribute(intindex)

{

returnm_attributes[index];

}

voiddisplay();

private:

std:

:

vectorm_attributes;

boolm_type;

};

#endif

4.DateSet.h

#include

#include

#include"DataPoint.h"

classSplitAttributeValue

{

public:

SplitAttributeValue(AttributeValuev,intid)

:

m_v(v)

m_attributeIndex(id)

{

}

intgetAttributeIndex()

{

returnm_attributeIndex;

}

voiddisplay();

private:

intm_attributeIndex;

AttributeValuem_v;

};

classDataSet

{

public:

voidaddDataPoint(DataPointconst&datapoint);

floatgetPositiveProb();

voidsplitDataSet(std:

:

vector&splittedSets);

voiddisplay();

private:

std:

:

vectorm_splitAttributes;

std:

:

vectorm_data;

};

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

实验运行截图

 

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。

其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)

这次事件让我的编程能力有了很大的提高,查阅资料等能力也有很大的提升。

让我对人工智能技术有了进一步的认识。

在解决问题和算法设计上的能力也极提高。

这次作业我收集相关材料阅读并消化,在实际应用中,我发现人工智能是一门很有意思的学科,对本门课程产生了兴趣。

在以后的学习中,我会认真学好这门课程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

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

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