猴子摘香蕉實(shí)驗(yàn)報告(含代碼)_第1頁
猴子摘香蕉實(shí)驗(yàn)報告(含代碼)_第2頁
猴子摘香蕉實(shí)驗(yàn)報告(含代碼)_第3頁
猴子摘香蕉實(shí)驗(yàn)報告(含代碼)_第4頁
猴子摘香蕉實(shí)驗(yàn)報告(含代碼)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、華中科技大學(xué)人工智能與模式識別 實(shí)驗(yàn)報告 院 系: 電子與信息工程系 班 級: 姓 名: 同 組 人: 指導(dǎo)老師: 電 話: 郵 箱: 日 期: 2013年12月24日 1、 實(shí)驗(yàn)內(nèi)容利用一階謂詞邏輯求解猴子摘香蕉問題:房內(nèi)有一個猴子,一個箱子,天花板上掛了一串香蕉,其位置如圖所示,猴子為了拿到香蕉,它必須把箱子搬到香蕉下面,然后再爬到箱子上。請定義必要的謂詞,列出問題的初始化狀態(tài)(即下圖所示狀態(tài)),目標(biāo)狀態(tài)(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。(附加:從初始狀態(tài)到目標(biāo)狀態(tài)的謂詞演算過程。)2、 實(shí)驗(yàn)平臺vc6.03、 實(shí)驗(yàn)分析1. 定義描述環(huán)境狀態(tài)的謂詞。at(x,w):x在t處,

2、個體域:xmonkey,wa,b,c,box;hold(x,t):x手中拿著t,個體域:tbox,banana;empty(x):x手中是空的;on(t,y):t在y處,個體域:yb,c,ceiling;clear(y):y上是空的;box(u):u是箱子,個體域:ubox;banana(v):v是香蕉,個體域:vbanana;2. 使用謂詞、連結(jié)詞、量詞來表示環(huán)境狀態(tài)。問題的初始狀態(tài)可表示為:so:at(monkey,a)empty(monkey)on(box,c)on(banana,ceiling)clear(b)box(box)banana(banana)要達(dá)到的目標(biāo)狀態(tài)為:sg:at(

3、monkey,box)hold(monkey,banana)on(box,b)clear(ceiling)clear(c)box(box)banana(banana)3. 從初始狀態(tài)到目標(biāo)狀態(tài)的轉(zhuǎn)化, 猴子需要完成一系列操作, 定義操作類謂詞表示其動作。walk(m,n):猴子從m走到n處,個體域:m,na,b,c;carry(s,r):猴子在r處拿到s,個體域:rc,ceiling,sbox,banana;climb(u,b):猴子在b處爬上u;這3個操作也可分別用條件和動作來表示。條件直接用謂詞公式表示,是為完成相應(yīng)操作所必須具備的條件;當(dāng)條件中的事實(shí)使其均為真時,則可激活操作規(guī)則,于是可

4、執(zhí)行該規(guī)則中的動作部分。動作通過前后狀態(tài)的變化表示,即通過從動作前刪除或增加謂詞公式來描述動作后的狀態(tài)。walk(m,n):猴子從m走到n處條件:at(monkey,m)動作:carry(s,r):猴子在r處拿到s條件:at(monkey,r)empty(monkey)on(s,r)box(box)banana(banana)動作:climb(u,b):猴子在b處爬上u條件:at(monkey,b)hold(monkey,u)clear(b)box(box)banana(banana)動作:4. 按照行動計劃, 一步步進(jìn)行狀態(tài)替換, 直至目標(biāo)狀態(tài)。at(monkey,a)empty(monke

5、y)on(box,c)on(banana,ceiling)clear(b)box(box)banana(banana)at(monkey,c)empty(monkey)on(box,c)on(banana,ceiling)clear(b)box(box)banana(banana)at(monkey,c)hold(monkey,box)on(banana,ceiling)clear(b)clear(c)box(box)banana(banana)at(monkey,b)hold(monkey,box)on(banana,ceiling)clear(b)clear(c)box(box)banan

6、a(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)(目標(biāo)得解)猴子行動的規(guī)則序列是:walk(a,c)carry(c,box)walk(c,b)climb(box,b)carry(banana,ceiling)在上述過程中,我們應(yīng)該注意,當(dāng)猴子執(zhí)行某一個操作之前,需要檢查當(dāng)前狀態(tài)是否可使所要

7、求的條件得到滿足,即證明當(dāng)前狀態(tài)是否蘊(yùn)涵操作所要求的狀態(tài)的過程。在行動過程中, 檢查條件的滿足性后才進(jìn)行變量的代換。代入新條件后的新狀態(tài)如果是目標(biāo)狀態(tài),則問題解決;否則看是否滿足下面的操作,如果不滿足或即使?jié)M足卻又回到了原來的狀態(tài),那么代入無效。4、 源代碼#include struct stateint 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

8、monbox; /*-1: monkey on the box;1: monkey the box;*/;struct state states 150;char* routesave150; /*function monkeygoto,it makes the monkey goto the other place*/void monkeygoto(int b,int i) int a;a=b;if (a=-1)routesavei=monkey go to a;statesi+1=statesi;statesi+1.monkey=-1;else if(a=0)routesavei=monk

9、ey go to b;statesi+1=statesi;statesi+1.monkey=0;else if(a=1)routesavei=monkey go to c;statesi+1=statesi;statesi+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

10、i=monkey move box to a;statesi+1=statesi;statesi+1.monkey=-1;statesi+1.box=-1;else if(b=0)routesavei = monkey move box to b;statesi+1=statesi;statesi+1.monkey=0;statesi+1.box=0;else if(b=1)routesavei = monkey move box to c;statesi+1=statesi;statesi+1.monkey=1;statesi+1.box=1;elseprintf(parameter is

11、wrong);/*end function movebox*/ /*function climbonto,the monkey climb onto the box*/void climbonto(int i)routesavei=monkey climb onto the box;statesi+1=statesi;statesi+1.monbox=1;/*function climbdown,monkey climb down from the box*/void climbdown(int i) routesavei=monkey climb down from the box;stat

12、esi+1=statesi;statesi+1.monbox=-1;/*function reach,if the monkey,box,and banana are at the same place,the monkey reach banana*/void reach(int i) routesavei=monkey reach the banana;/*output the solution to the problem*/void showsolution(int i) int c; printf (%s n, result to problem:); for(c=0; c=150)

13、 printf(%s n, steplength reached 150,have problem ); return; for (c=0; ci; c+) /*if the current state is same to previous,retrospect*/ if(statesc.monkey=statesi.monkey&statesc.box=statesi.box&statesc.banana=statesi.banana&statesc.monbox=statesi.monbox) return; if(statesi.monbox=1&statesi.monkey=0&st

14、atesi.banana=0&statesi.box=0) showsolution(i);printf(press any key to continue n);getchar();/*to save screen for user,press any key to continue*/return; j=i+1; if(statesi.monkey=0) if(statesi.box=0)if(statesi.monbox=-1)climbonto(i);reach(i+1);nextstep(j);/*monkeygoto(-1,i);nextstep(j);monkeygoto(0,i

15、);nextstep(j);movebox(-1,i);nextstep(j);movebox(0,i);nextstep(j);*/elsereach(i+1);nextstep(j);/*climbdown(i);nextstep(j);*/ else if(statesi.box=1)/*monkeygoto(-1,i);nextstep(j);*/monkeygoto(1,i);nextstep(j);movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);else /*box=-1*/monkeygoto(-1,i);

16、nextstep(j);movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j); /*end if*/if(statesi.monkey=-1) if(statesi.box=-1)if(statesi.monbox=-1) movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);elseclimbdown(i);nextstep(j);movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);els

17、e if(statesi.box=0) monkeygoto(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);elsemonkeygoto(1,i);nextstep(j);movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);/*end if*/if(statesi.monkey=1) if (statesi.box=1)if(statesi.monbox=-1) movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j);elseclimbdown(i);nextstep(j);movebox(0,i);nextstep(j);climbonto(i);reach(i+1);nextstep(j); else if(statesi.box=-1) monkeygoto(-1,i);nextstep(j);movebox(0,i);nextstep(j); move

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論