




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、華中科技大學(xué)人工智能與模式識別 實驗報告 院 系: 電子與信息工程系 班 級: 姓 名: 同 組 人: 指導(dǎo)老師: 電 話: 郵 箱: 日 期: 2013年12月24日 1、 實驗內(nèi)容利用一階謂詞邏輯求解猴子摘香蕉問題:房內(nèi)有一個猴子,一個箱子,天花板上掛了一串香蕉,其位置如圖所示,猴子為了拿到香蕉,它必須把箱子搬到香蕉下面,然后再爬到箱子上。請定義必要的謂詞,列出問題的初始化狀態(tài)(即下圖所示狀態(tài)),目標狀態(tài)(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。(附加:從初始狀態(tài)到目標狀態(tài)的謂詞演算過程。)2、 實驗平臺vc6.03、 實驗分析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)要達到的目標狀態(tài)為:sg:at(
3、monkey,box)hold(monkey,banana)on(box,b)clear(ceiling)clear(c)box(box)banana(banana)3. 從初始狀態(tài)到目標狀態(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)操作所必須具備的條件;當條件中的事實使其均為真時,則可激活操作規(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. 按照行動計劃, 一步步進行狀態(tài)替換, 直至目標狀態(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)(目標得解)猴子行動的規(guī)則序列是:walk(a,c)carry(c,box)walk(c,b)climb(box,b)carry(banana,ceiling)在上述過程中,我們應(yīng)該注意,當猴子執(zhí)行某一個操作之前,需要檢查當前狀態(tài)是否可使所要
7、求的條件得到滿足,即證明當前狀態(tài)是否蘊涵操作所要求的狀態(tài)的過程。在行動過程中, 檢查條件的滿足性后才進行變量的代換。代入新條件后的新狀態(tài)如果是目標狀態(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人事代理服務(wù)合同主要條款
- 大數(shù)據(jù)分析項目服務(wù)采購合同
- 智能家電產(chǎn)品研發(fā)與生產(chǎn)合同
- 半包裝修項目合同書
- 戰(zhàn)略咨詢服務(wù)合同協(xié)議書
- 仔豬買賣合同及注意事項
- 26《好的故事》教學(xué)設(shè)計-2024-2025學(xué)年語文六年級上冊統(tǒng)編版
- 沈陽理工大學(xué)《醫(yī)學(xué)倫理學(xué)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西服裝工程學(xué)院《建筑生態(tài)環(huán)境》2023-2024學(xué)年第二學(xué)期期末試卷
- 中學(xué)聯(lián)盟浙江省平陽縣昆陽鎮(zhèn)第二中學(xué)歷史與社會七年級上(人教版)第2單元第1課第2子目《海洋對人類的影響》教學(xué)設(shè)計
- 小學(xué)生分享ppt課件-景區(qū)介紹《牛首山》
- 小學(xué)生主題班會 弘揚航天精神 課件 (27張PPT)
- 石膏幾何體結(jié)構(gòu)素描教案
- 一、二年級小學(xué)民族團結(jié)教案
- 新生兒早期基本保健課件
- 采礦學(xué)課程設(shè)計硯北煤礦新井設(shè)計全套圖紙
- 大型儲罐計算書
- 檢體診斷-頭頸部檢查(診斷學(xué)課件)
- 煤礦提升機作業(yè)理論考試參考題庫(200題)
- 侯馬北車輛段2023年運用機考復(fù)習(xí)題-曲沃作業(yè)場
- 手術(shù)室停電和突然停電應(yīng)急預(yù)案PPT演示課件
評論
0/150
提交評論