精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
华 中 科 技 大 学
《人工智能与模式专心---专注---专业
BANANA(banana)
AT(monkey,b)˄HOLD(monkey,box)˄ON(banana,ceiling)˄CLEAR(b)˄CLEAR(c)˄BOX(box)˄
BANANA(banana)
AT(monkey,box)˄EMPTY(monkey)˄ON(box,b)˄ON(banana,ceiling)˄CLEAR(c)˄BOX(box)˄
BANANA(banana)
AT(monkey,box)˄HOLD(monkey,banana)˄ON(box,b)˄CLEAR(ceiling)˄CLEAR(c)˄BOX(box)˄
BANANA(banana)(目标得解)
猴子行动的规则序列是:WALK(a,c)→CARRY(c,box)→WALK(c,b)→CLIMB(box,b)→
CARRY(banana,ceiling)
在上述过程中,我们应该注意,当猴子执行某一个操作之前,需要检查当前状态是否可使所要求的条件得到满足,即证明当前状态是否蕴涵操作所要求的状态的过程。在行动过程中, 检查条件的满足性后才进行变量的代换。代入新条件后的新状态如果是目标状态,则问题解决;否则看是否满足下面的操作,如果不满足或即使满足却又回到了原来的状态,那么代入无效。
源代码
#include <>
struct State
{
int monkey; /*-1:Monkey at A;0: Monkey at B;1:Monkey at C;*/
int box; /*-1:box at A;0:box at B;1:box at C;*/
int banana; /*Banana at B,Banana=0*/
int monbox; /*-1: monkey on the box;1: monkey the box;*/
};
struct State States [150];
char* routesave[150];
/*function monkeygoto,it makes the monkey goto the other place*/
void monkeygoto(int b,int i)
{
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
int a;
a=b;
if (a==-1)
{
routesave[i]="Monkey go to A";
States[i+1]=States[i];
States[i+1].monkey=-1;
}
else if(a==0)
{
routesave[i]="Monkey go to B";
States[i+1]=States[i];
States[i+1].monkey=0;
}
else if(a==1)
{
routesave[i]="Monkey go to C";
States[i+1]=States[i];
States[i+1].monkey=1;
}
else
{
printf("parameter is wrong");
}
}
/*end function monkeyygoto*/
/*function movebox,the monkey move the box to the other place*/
void movebox(int a,int i)
{
int B;
B=a;
if(B==-1)
{
routesave[i]="monkey move box to A";
States[i+1]=States[i];
States[i+1].monkey=-1;
States[i+1].box=-1;
}
else if(B==0)
{
routesave[i] = "monkey move box to B";
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注
猴子摘香蕉实验报告(共11页) 来自淘豆网m.daumloan.com转载请标明出处.