昆明理工大学人工智能第二次实验报告.docx
- 文档编号:28220721
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:12
- 大小:62.87KB
昆明理工大学人工智能第二次实验报告.docx
《昆明理工大学人工智能第二次实验报告.docx》由会员分享,可在线阅读,更多相关《昆明理工大学人工智能第二次实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
昆明理工大学人工智能第二次实验报告
理工大学信息工程与自动化学院学生实验报告
(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:
:
vector
:
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: : vector //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: : list std: : vector processQ.push_back(initDataset); while(processQ.size()>0) { std: : vector 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: : vector boolisPositive() { returnm_type; } intgetNAttributes() { returnm_attributes.size(); } AttributeValueconst&getAttribute(intindex) { returnm_attributes[index]; } voiddisplay(); private: std: : vector 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 voiddisplay(); private: std: : vector std: : vector }; 五、实验过程原始记录(测试数据、图表、计算等) 实验运行截图 六、实验结果、分析和结论(误差分析与数据处理、成果总结等。 其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获) 这次事件让我的编程能力有了很大的提高,查阅资料等能力也有很大的提升。 让我对人工智能技术有了进一步的认识。 在解决问题和算法设计上的能力也极提高。 这次作业我收集相关材料阅读并消化,在实际应用中,我发现人工智能是一门很有意思的学科,对本门课程产生了兴趣。 在以后的学习中,我会认真学好这门课程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 昆明 理工大学 人工智能 第二次 实验 报告