西電人工智能大作業(yè)_第1頁(yè)
西電人工智能大作業(yè)_第2頁(yè)
西電人工智能大作業(yè)_第3頁(yè)
西電人工智能大作業(yè)_第4頁(yè)
西電人工智能大作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、02115093鄒旭苗 02115095王欣人工智能及其應(yīng)用大作業(yè)鄒旭苗02115093王 欣02115095 八數(shù)碼難題一、 實(shí)驗(yàn)名稱八數(shù)碼難題的啟發(fā)式搜索二、 實(shí)驗(yàn)?zāi)康陌藬?shù)碼問(wèn)題:在3×3的方格棋盤(pán)上,擺放著1到8這八個(gè)數(shù)碼,有1個(gè)方格是空的,其初始狀態(tài)如圖1所示,要求對(duì)空格執(zhí)行空格左移、空格右移、空格上移和空格下移這四個(gè)操作使得棋盤(pán)從初始狀態(tài)到目標(biāo)狀態(tài)。要求:1.熟悉人工智能系統(tǒng)中的問(wèn)題求解過(guò)程;2.熟悉狀態(tài)空間的啟發(fā)式搜索算法的應(yīng)用;3.熟悉對(duì)八數(shù)碼問(wèn)題的建模、求解及編程語(yǔ)言的應(yīng)用。三、 實(shí)驗(yàn)設(shè)備及軟件環(huán)境1. 實(shí)驗(yàn)編程工具:VC+ 6.02. 實(shí)驗(yàn)環(huán)境:Windows7 6

2、4位四、 實(shí)驗(yàn)方法:?jiǎn)l(fā)式搜索1.算法描述1. 將S放入open表,計(jì)算估價(jià)函數(shù)f(s)2. 判斷open表是否為空,若為空則搜索失敗,否則,將open表中的第一個(gè)元素加入close表并對(duì)其進(jìn)行擴(kuò)展(每次擴(kuò)展后加入open表中的元素按照代價(jià)的大小從小到大排序,找到代價(jià)最小的節(jié)點(diǎn)進(jìn)行擴(kuò)展)注:代價(jià)的計(jì)算公式f(n)=d(n)+w(n).其中f(n)為總代價(jià),d(n)為節(jié)點(diǎn)的度,w(n)用來(lái)計(jì)算節(jié)點(diǎn)中錯(cuò)放棋子的個(gè)數(shù)。判斷i是否為目標(biāo)節(jié)點(diǎn),是則成功,否則拓展i,計(jì)算后續(xù)節(jié)點(diǎn)f(j),利用f(j)對(duì)open表重新排序2.算法流程圖:3.程序源代碼:# include<stdio.h># i

3、nclude<string.h># include<malloc.h># include<stdlib.h>typedef struct node int i,cost,degree,exp,father;int a33;struct node *bef,*late;struct node *son;treenode;int flag=0,count=1,num=0,i=0;void set(treenode *s);void cpynode(treenode *s1,treenode *s2);void add1(treenode *s,treenode

4、*open);void adjust1(treenode *close);void jscost(treenode *s);void tiaozheng(treenode *open);void sortopen(treenode *open);int test(treenode *s1,treenode *s2);void position(treenode *s,treenode *open,treenode *close,treenode *s1);void printstr(treenode *open);int search(treenode *s1,treenode *s2);vo

5、id input(treenode *s);int cmpnode(treenode *s1,treenode *s2);void print(treenode *s);void add(treenode *s,treenode *close);void xuhao(treenode *s);void extend(treenode *r1,treenode *s,treenode *s1,treenode *open,treenode *close);void main() treenode *s0,*s1,*s;treenode *open,*close,*opend,*closed;op

6、en=(treenode*)malloc(sizeof(treenode);close=(treenode*)malloc(sizeof(treenode); open->late=NULL;close->late=NULL;opend=open;closed=close;s0=(treenode*)malloc(sizeof(treenode);set (s0);s1=(treenode*)malloc(sizeof(treenode);set(s1);printf("請(qǐng)輸入八數(shù)碼的初始狀態(tài):(以空格為分隔)n");input (s0);printf(&quo

7、t;請(qǐng)輸入八數(shù)碼的目標(biāo)狀態(tài) :(以空格為分隔)n");input(s1);xuhao(s0);add (s0,opend);while(open->late!=NULL && flag=0)s=(treenode*)malloc(sizeof(treenode); cpynode(s,open->late);open=open->late;add(s,close);if(test(s,s1)=0)flag=1;elseposition(s,open,close,s1);sortopen(open);if(open->late!=NULL) pr

8、intf("搜索過(guò)程如下:n "); adjust1(close);printstr(close);printf("n%d 步,%d 個(gè)節(jié)點(diǎn)n",num,count);else printf("查找錯(cuò)誤 ! n"); void set(treenode *s) s->i=i;s->father=0;s->degree=0;s->bef=NULL;s->son=NULL;s->late=NULL; ;void input(treenode *s) int j,k;for(j=0;j<3;j+)f

9、or(k=0;k<3;k+)scanf("%d",&s->ajk); ;int cmpnode(treenode *s1,treenode *s2)int j,k;for(j=0;j<3;j+)for(k=0;k<3;k+) if(s1->ajk!=s2->ajk)return 0; ;return 1; int test(treenode *s1,treenode *s2) int j,k,n=0;for(j=0;j<3;j+)for(k=0;k<3;k+) if(s1->ajk!=s2->ajk)n+;

10、 ;s1->exp=n;return n; ;void xuhao(treenode *s) i+;s->i=i; void cpynode(treenode *s1,treenode *s2) int j,k;for(j=0;j<3;j+)for(k=0;k<3;k+)s1->ajk=s2->ajk;s1->bef=s2->bef;s1->cost=s2->cost;s1->exp=s2->exp;s1->degree=s2->degree;s1->i=s2->i;s1->father=s2

11、->father; ;void print(treenode *s) int j,k;for(j=0;j<3;j+) for(k=0;k<3;k+) printf("%2d",s->ajk); if(j=1) printf(" n=%2d d=%2d f=%2d",s->i,s->degree,s->father);printf("n"); printf("n"); void position(treenode *s,treenode *open,treenode *clo

12、se,treenode *s1) int m,n,t,k;treenode *r1;for(m=0;m<3;m+) for(n=0;n<3;n+) k=s->amn;if(k=0)break; ;if(k=0) break; if(m+1<=2&&flag=0)r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1->am+1n; r1->am+1n = r1->amn; r1->amn=t;extend(r1,s,s1,open,close); ;if(m-1>=

13、0&&flag=0)r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1->am-1n; r1->am-1n=r1->amn; r1->amn=t;extend(r1,s,s1,open,close);if(n-1>=0 && flag=0) r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1->amn-1; r1->amn-1=r1->amn; r1->amn=t;extend(r1

14、,s,s1,open,close); ;if(n+1<=2 && flag=0) r1=(treenode*)malloc(sizeof(treenode); cpynode(r1,s);t=r1->amn+1; r1->amn+1=r1->amn; r1->amn=t;extend(r1,s,s1,open,close); void printstr(treenode *s) treenode *t;t=s->late;while(t!=NULL) num+;print(t);t=t->son; ; void extend(treen

15、ode *r1,treenode *s,treenode *s1,treenode *open,treenode *close) r1->father=s->i;r1->degree=s->degree+1;if(test(r1,s1)!=0) jscost(r1);if(search(r1,close)=1 && search(r1,open)=1) xuhao(r1);add1(r1,open);r1->bef=s;count+; else free(r1); else xuhao(r1);jscost(r1);count+;add(r1,cl

16、ose);r1->bef=s;flag=1; int search(treenode *s1,treenode *close) treenode *r,*t;r=s1;t=close->late;while(t!=NULL) if(r->exp=t->exp) if(cmpnode(r,t)=1)return 0; ;t=t->late; ; return 1; void add(treenode *s,treenode *close) treenode *r,*t;t=s;r=close;while(r->late!=NULL)r=r->late;r

17、->late=t;t->late=NULL; void add1(treenode *s,treenode *open)treenode *t;t=open;s->late=t->late;t->late=s; void adjust1(treenode *close) treenode *s,*t;s=close;s->late->bef=NULL;while(s->late!=NULL)s=s->late;s->son=NULL;while(s->bef!=NULL)t=s->bef;t->son=s;s=s-&

18、gt;bef; ; void jscost(treenode *s) s->cost=(s->exp)+s->degree; void sortopen(treenode *open) treenode *t,*s,*r;int k;r=(treenode*)malloc(sizeof(treenode);t=open->late;while(t!=NULL && t->late!=NULL) s=t->late;k=t->cost;while(s!=NULL) if(k > s->cost) k=s->cost;cp

19、ynode(r,t);cpynode(t,s);cpynode(s,r); s=s->late; t=t->late; ; 五、 實(shí)驗(yàn)結(jié)果:1.程序截圖2.搜索過(guò)程請(qǐng)輸入八數(shù)碼的初始狀態(tài):(以空格為分隔)2 8 31 0 47 6 5請(qǐng)輸入八數(shù)碼的目標(biāo)狀態(tài) :(以空格為分隔)1 2 38 0 47 6 5搜索過(guò)程如下: 2 8 3 1 0 4 n= 1 d= 0&#

20、160;f= 0 7 6 5 2 0 3 1 8 4 n= 3 d= 1 f= 1 7 6 5 0 2 3 1 8 4 n= 8 d= 2 f= 3 7 6 5 1 2 3 0 8 4 n=

21、10 d= 3 f= 8 7 6 5 1 2 3 8 0 4 n=12 d= 4 f=10 7 6 55 步,12 個(gè)節(jié)點(diǎn)Press any key to continue 六、 實(shí)驗(yàn)分析:在進(jìn)行搜索的過(guò)程中,同時(shí)記錄了擴(kuò)展新節(jié)點(diǎn)的個(gè)數(shù)。啟發(fā)式搜索僅擴(kuò)展12個(gè)新節(jié)點(diǎn)??梢?jiàn),在本實(shí)驗(yàn)中啟發(fā)式搜索更優(yōu),效率更高。而在求解最短路徑的問(wèn)題上盲目搜

22、索能更高效一點(diǎn)。在實(shí)際的應(yīng)用中應(yīng)根據(jù)具體情況靈活選擇不同的策略,提高程序執(zhí)行效率啟發(fā)式搜索就是在狀態(tài)空間中的搜索對(duì)每一個(gè)搜索的位置進(jìn)行評(píng)估,得到最好的位置,再?gòu)倪@個(gè)位置進(jìn)行搜索直到目標(biāo)。這樣可以省略大量無(wú)謂的搜索路徑,提高了效率。七、 結(jié)論此次實(shí)驗(yàn)用啟發(fā)式搜索方法求解問(wèn)題的使用,讓我們明白了具體問(wèn)題具體分析,更明白了算法的重要,好的算法能夠極大的提高程序的運(yùn)行效率。同時(shí),通過(guò)此次實(shí)踐,也對(duì)課本知識(shí)有了更深刻的認(rèn)識(shí)和體會(huì),真正將課本知識(shí)融于實(shí)踐中是對(duì)我們的最大考驗(yàn)。這次試驗(yàn)讓我更加深入了解了什么是人工智能,讓我了解了人工智能的作用以及含義和人工智能的使用范圍以及對(duì)于我們未來(lái)生活得作用的廣大。用機(jī)

23、器語(yǔ)言解決實(shí)際問(wèn)題的,提高了動(dòng)手能力。使用動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)太陽(yáng)能和風(fēng)能數(shù)據(jù)架構(gòu)的微電網(wǎng) 文摘- 鼓勵(lì)使用可再生能源由于快速減少傳統(tǒng)不可再生能源。然而,尋找新的安裝網(wǎng)站發(fā)電和傳輸變得越來(lái)越困難。在電力系統(tǒng)需要更大的靈活性導(dǎo)致了發(fā)電的一個(gè)新概念微電網(wǎng)。微電網(wǎng)的定義是一個(gè)集成的動(dòng)力輸送系統(tǒng)組成的相互聯(lián)系的加載,存儲(chǔ)設(shè)施和分布式發(fā)電主要由可再生能源。介紹了微電網(wǎng)整體的動(dòng)態(tài)模型在MATLAB仿真軟件模擬和動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)的適用性為太陽(yáng)能和風(fēng)力發(fā)電預(yù)測(cè)數(shù)據(jù)架構(gòu)??偟膩?lái)說(shuō),三種架構(gòu)被提出,即集中時(shí)間延遲神經(jīng)網(wǎng)絡(luò),分布式時(shí)間延遲神經(jīng)網(wǎng)絡(luò)和非線性自回歸神經(jīng)網(wǎng)絡(luò)。實(shí)驗(yàn)結(jié)果表明,提出的網(wǎng)絡(luò)實(shí)現(xiàn)一個(gè)可接受的預(yù)測(cè)的準(zhǔn)確性。

24、比較而言,預(yù)測(cè)的準(zhǔn)確性最高達(dá)到分布式時(shí)間延遲神經(jīng)網(wǎng)絡(luò)。 關(guān)鍵詞-分布式能源資源、分布式發(fā)電、動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò),MATLAB,微電網(wǎng)仿真軟件 一、介紹 分布式發(fā)電(DG)是一種新興的趨勢(shì)在本地發(fā)電配電電壓水平通過(guò)使用天然氣等可再生能源,沼氣,風(fēng)力發(fā)電,太陽(yáng)能光伏電池,燃料電池,結(jié)合熱力和電力(CHP)系統(tǒng),micro-turbines,斯特林發(fā)動(dòng)機(jī)和將它們集成到工具分銷(xiāo)網(wǎng)絡(luò)1。使用的能源是稱為分布式能源資源(各級(jí))或微型電源2。通常對(duì)產(chǎn)品進(jìn)行模塊化單位廣為分布的小容量。這些通常是位于靠近加載3。各級(jí)微型電網(wǎng)是小規(guī)模的供應(yīng)網(wǎng)絡(luò)組成的可再生能源發(fā)電在配電電壓集成在一起。確保靈活性操作作為一個(gè)聚合體系和維

25、護(hù)指定的電能質(zhì)量和能量輸出是由電力電子接口(PEIs)和控制內(nèi)置微型電源2。在過(guò)去的幾年中,許多研究嘗試了微電網(wǎng)建模和預(yù)測(cè)可再生發(fā)電數(shù)據(jù)。在4中,混合動(dòng)力系統(tǒng)可以作為獨(dú)立的系統(tǒng)或電網(wǎng)連接系統(tǒng)通過(guò)使用光伏系統(tǒng)結(jié)合高速微型渦輪進(jìn)行了研究。在5,MATLAB仿真軟件模型加州理工可持續(xù)電力電子資源(超級(jí))系統(tǒng)設(shè)計(jì)。在6、光伏電池、微型渦輪風(fēng)力渦輪機(jī)塊建模和組合起來(lái)形成一個(gè)微型電網(wǎng)。這樣一個(gè)系統(tǒng)的瞬態(tài)和穩(wěn)態(tài)行為變化的輸入進(jìn)行了研究。在7,適用性提前24小時(shí)太陽(yáng)能發(fā)電的人工神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)20 kW的光伏系統(tǒng)適合一個(gè)可靠的微電網(wǎng)能量管理進(jìn)行了研究。在8,提出了一種模型提前24小時(shí)預(yù)報(bào)的風(fēng)速和風(fēng)力發(fā)電機(jī)的輸出功率使用人工神經(jīng)網(wǎng)絡(luò)(ANN)的反向傳播算法。9,遞歸神經(jīng)網(wǎng)絡(luò)(RNN)提出了風(fēng)速預(yù)測(cè)并與前饋神經(jīng)網(wǎng)絡(luò)(FNN)。其他一些模型用于短期預(yù)測(cè)是徑向基函數(shù)、支持向量機(jī)、模糊模型和ARMA模型10。 六、結(jié)論 微電網(wǎng)在MATLAB仿真軟件模擬模型及其動(dòng)態(tài)行為進(jìn)行了研究。動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)被用于風(fēng)速預(yù)測(cè)和太陽(yáng)能電池板電壓預(yù)測(cè)。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論