LocalIFS阶段实验报告

时间:2022-12-25 02:29:16 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


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.wddqw.com/doc/251f4efb32d4b14e852458fb770bf78a65293a90.html