【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《LocalIFS阶段实验报告》,欢迎阅读!
LocalIFS阶段实验报告
实验目的:
让局部择优搜索在vc++6.0中实验,增强对局部择优搜索的理解应用能力 实验概括:
这次实验室在深度优先搜索的基础上加以改进实现的,主要是增加了PayPrice()这个计算节点代价函数,以实现对扩展后的节点进行比较再扩展;以及对主函数的搜索情况也做出了相应的调整; 实验内容及步骤:
intPayPrice(SNode *S) f(n)=d(n)+s(n); d(n)代表节点的深度,s(n)代表节点中每个数与其最终位置的距离;
for(i=0; i<2; i++) {
for(j=0; j<2; j++) {
if(S->data[i][j]==1) {
if(i==0 && j==0) pay=pay+0;
else if(i==1 && j==1) pay=pay+2; else
pay=pay+1; break; } }
if(j<=1)
break; }
用for循环对四宫格中的数进行查找,与目标位置进行比较,累加其代价pay值
主要是在主函数搜索时在每次生成新节点后在对其进行代价计算 int pay[2]={-1,-1};
DevelopSNode(Sn,So,c,n);
if( !CheckExist(Q,Sn) & !CheckExist(St,Sn) ) {
Sn->deep=tempdeep;
pay[n-1]=PayPrice(Sn);
if(pay[0]0) {
destack(Q,S); Sn->parent=So;
Enstack(Q,Sn); Enstack(Q,S); } else {
Sn->parent=So; Enstack(Q,Sn); } }
将每个节点的代价用pay[2]函数存储,然后进行比较,如果后生成的兄弟节点pay[0]比pay[1]代价小,则先进行一次出栈,然后对新生成节点入栈,在对出栈节点入栈,实现代价小的节点在open表栈顶;
实验结果:
这次实验仅有close表的搜寻路径,尚未把so->sg的最终路径计算写入
实验总结:
加强了对局部择优搜索的理解应用能力,并且编程的实验能力也有了一定的经验积累;
本文来源:https://www.wddqxz.cn/251f4efb32d4b14e852458fb770bf78a65293a90.html