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

下載本文檔

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

文檔簡介

人工智能大作業(yè)

學(xué)生:021151**

021151**

時間:2023年12月4號

--啟發(fā)式搜索解決八數(shù)碼問題

1.實驗?zāi)康?/p>

問題描述:現(xiàn)有一個3大3的棋盤,其中有0-8一共9個數(shù)字,0表達(dá)空格,

其他的數(shù)字可以和0互換位置(只能上下左右移動)。給定一個初始狀態(tài)和一

個目的狀態(tài),找出從初始狀態(tài)到目的狀態(tài)的最短途徑的問題就稱為八數(shù)碼問

題。

例如:實驗問題為

H□

從初始狀態(tài):ES□到目的狀態(tài):ES□

ES0□□

規(guī)定編程解決這個問題,給出解決這個問題的搜索樹以及從初始節(jié)點(diǎn)到目的

節(jié)點(diǎn)的最短途徑。

2.實驗設(shè)備及軟件環(huán)境

運(yùn)用計算機(jī)編程軟件VisualC++6.0,用C語言編程解決該問題。

3.實驗方法

(1).算法描述:

①.把初始節(jié)點(diǎn)S放到OPEN表中,計算/(S),并把其值與節(jié)點(diǎn)S聯(lián)系

起來。

②.假如OPEN表是個空表,則失敗退出,無解。

③.從OPEN表中選擇一個/值最小的節(jié)點(diǎn)。結(jié)果有幾個節(jié)點(diǎn)合格,當(dāng)其

中有一個為目的節(jié)點(diǎn)時,則選擇此目的節(jié)點(diǎn),否則就選擇其中任一節(jié)點(diǎn)作為節(jié)

點(diǎn)io

④.把節(jié)點(diǎn)i從OPEN表中移出,并把它放入CLOSED的擴(kuò)展節(jié)點(diǎn)表中。

⑤.假如,是目的節(jié)點(diǎn),則成功退出,求得一個解。

⑥.擴(kuò)展節(jié)點(diǎn)i,生成其所有后繼節(jié)點(diǎn)。對于i的每一個后繼節(jié)點(diǎn)八

a.計算f(j)o

b.假如/既不在OPEN表中,也不在CLOSED表中,則用估價函數(shù)f

把它添加入OPEN表。從/加一指向其父輩節(jié)點(diǎn)i的指針,以便一旦找

到目的節(jié)點(diǎn)時記住一個解答途徑。

c.假如j已在OPEN表或CLOSED表上,則比較剛剛對/計算過的f

值和前面計算過的該節(jié)點(diǎn)在表中的/值。假如新的/值較小,則

I.以此新值取代舊值。

II.從/指向,,而不是指向它的父輩節(jié)點(diǎn)。

III.假如節(jié)點(diǎn),在CLOSED表中,則把它移回OPEN表。

⑦轉(zhuǎn)向②,即GOTO②。

(2).流程圖描述:

⑶.程序源代碼:

#include<stdio,h>

#include<stdlib.h>

structnode{

?intnumber[3][3];〃用二維數(shù)組存放8數(shù)碼

intW;//W表達(dá)與目的狀態(tài)相比錯放的數(shù)碼數(shù)

6intDepth;〃記錄當(dāng)前節(jié)點(diǎn)的深度

6structnode*parent;//指向父節(jié)點(diǎn)的指針

"Structnode*next;〃指向鏈表中下一個節(jié)點(diǎn)的指針

);

intCounterW(intNumber[3][3])

{//函數(shù)說明:計算當(dāng)前狀態(tài)與目的狀態(tài)的W值

?inti,j;

。intW=0;

ointDesnode[3][3]={1,2,3,8,0,4,7,6,5};

?for(i=0;i<3;i++)

。。for(j=0;j<3;j++)

soif(Number[i][j]!=Desnode[i][j])

°。W++;

returnW;

}

voidPrintNode(node*A)

|

。intij;

?for(i=0;i<3;i++)

(

for(j=0;j<3;j++)

,printf("%d",A—>number[i][j]);

,printf("\n");

}

printf("\n");。。

)

intCheckNode(node*open,node*close,inta[3][3])

{//檢查該節(jié)點(diǎn)狀態(tài)是否出現(xiàn)過的子程序

intCheckFlag=0;

?intf1agl,flag2;

node*p=open;

node*q=close;

3while(p!=NULL)

°{

flag1=0;

for(inti=0;i<3;i++)

。{

。?for(intj=0;j<3;j++)

6。if(a[i][j]==p->number[i][j])

o。flag1++;

}

3if(flagl==9)

3bbreak;

。ee1se

p=p->next;

}

3while(q!=NULL)

oflag2=0;

6for(inti=0;i<3;i++)

匕for(intj=0;j<3;j++)

。°if(a[i][]]==q->numberLi][j])

003oof1ag2++;

0)

。if(flag2==9)

33bbreak;

。else

6bq=q->next;

}

if{(flagl==9)I|(flag2==9))

。CheckFlag=1;〃假如出現(xiàn)過,置標(biāo)志位為1

returnCheckF1ag;

}

structnode*FindNextNode(node*Prenode,node*openz

node*c1ose)

{//擴(kuò)展Prenode指向的節(jié)點(diǎn),并將擴(kuò)展所得結(jié)點(diǎn)組成一條單鏈表。

inti,j,m,n;//循環(huán)變量

inttemp;〃臨時替換變量

eintflag=O;

inta[3]⑶;〃臨時存放二維數(shù)組

structnode*p,*q,*head;

head=(node)malloc(sizeof(node));//head指向該鏈表首結(jié)點(diǎn),

并且作為返回值

p=head;

°q=head;

head->next=NULL;//初始化

ofor(i=0;i<3;i++)〃找到二維數(shù)組中0的位置

for(j=0;j<3;j++)

?if(Prenode->number[i][j]==0)

000{

°°flag=1;

?break;。

°}

if(f1ag==l)

。o。break;

°}

〃根據(jù)0的位置的不同,對a進(jìn)行相應(yīng)的變換

for(m=0;m<3;m++)//將Prenode->number賦給a

??for(n=0;n<3;n++)

oaEm][n]=Prenode->number[m][n];

if(i+k=2)//情況1,0向下移

°{

。temp=a[i皿;aLi][j]=a[i+l][j];a[i+l][j]=temp;

ointCheckNum=CheckNode(open,cIose,a);

00if(CheckNum==0)〃若該結(jié)點(diǎn)未出現(xiàn)過則執(zhí)行下面的操作

00。{

3q=(node*)ma1Ioc(sizeof(node));

3for(m=0;m<3;m++)〃將a賦給擴(kuò)展節(jié)點(diǎn)q->number

6for(n=0;n<3;n++)

。3q->number[m][n]=a[m][n];

000PrintNode(q);

q—>parent=Prenode;

oeoq->Depth=q->parent->Depth+1;〃子結(jié)點(diǎn)的深度等

于其父結(jié)點(diǎn)深度加1

。。q->W=CounterW(q->number);

。。q->next=NULL;

。p->next=q;〃擴(kuò)展節(jié)點(diǎn)插入head鏈表

sp=p->next;

}

b}

for(m=0;m<3;m++)〃將Prenode->number重新賦給a

for(n=0;n<3;n++)

。0a[m][n]=Prenode->number[m][n];

if(i?l>=0)〃情況2,0向上移

(

^temp=a[i][j];a[i][j]=a[i-1][j];a[i-l][j]=temp;

intCheckNum=CheckNode(open,close,a);

。。if(CheckNum==0)〃若該結(jié)點(diǎn)未出現(xiàn)過則執(zhí)行下面的操作

03{

q=(node*)malloc(sizeof(node));

。。efor(m=0;m<3;m++)〃將a賦給q->number

3for(n=0;n<3;n++)

q->number[m][n]=a[m][n];

333PrintNode(q);

q->parent=Prenode;

ooq->Depth=q—>parent—>Depth+1;

00。q->W=CounterW(q->number);

。q->next=NULL;

op—>next=q;

°p=p->next;

}

}

。for(m=0;m<3;m++)

for(n=0;n<3;n++)

。a[m]Ln]=Prenode->number[m][n];

。if(j-l>=0)〃情況3,0向左移

(

。temp=a[i]01;a[i][j]=a[i][j-1];a[i][j—l]=temp;

。intCheckNum=CheckNode(open,close,a);

…if(CheckNum==0)//若該結(jié)點(diǎn)未出現(xiàn)過則執(zhí)行下面的操作

?(

q=(node*)ma1Ioc(sizeof(node));

3凸for(m=0;m<3;m++)//將a賦給q—>numb

e。for(n=0;n<3;n++)

3q—>number[m][n]=a[m][n];

。PrintNode(q);

q->parent=Prenode;

33q->Depth=q->parent->Depth+l;

-q->W=CounterW(q->number);

。q->next=NULL;

。p->next=q;

p=p->next;

00}

)

for(m=0;m<3;m++)

^for(n=0;n<3;n++)

a[m][n]=Prenode—>number[m][n];

if(j+l<=2)〃情況4,0向右移

6{

。temp=a[i][j];a[i][j]=a[i][j+l];a[i][j+l]=temp;

。intCheckNum=CheckNode(open,closeza);

if(CheckNum==0)〃若該結(jié)點(diǎn)未出現(xiàn)過則執(zhí)行下面的

操作

q=(node*)maIIoc(sizeof(node));

for(m=0;m<3;m++)//將a賦給q?>number

for(n=0;n<3;n++)

q->number[m][n]=a[m]En];

PrintNode(q);

q->parent=Prenode;

q—>Depth=q->parent—>Depth+1;

。q->W=CounterW(q->number);

q->next=NULL;

p->next=q;

p=p->next;

。}

head=head->next;

returnhead;

)

node*insert(node*open,node*head)

{//將head鏈表的結(jié)點(diǎn)依次插入到open鏈表相應(yīng)的位置,

〃使open表中的結(jié)點(diǎn)按從小到大排序。函數(shù)返回open指針

0node*p,*q;//p、q均指向open表中的結(jié)點(diǎn),p指向q所指的前一

個結(jié)點(diǎn)

。intf1ag=O;

匕if((open==NULL)&&(head!=NULL))〃初始狀態(tài),open表為

。{〃一方面將head表第一個結(jié)點(diǎn)直接放入open表中

open=head;

e3q=head;

head=head->next;

Bq—>next=NULL;

}

。if((open!=NULL)&&(open->next==NULL)&&(head!=NUL

L))

{//open表中只有一個元素

°q=open;

if((head—>W+head—>Depth)<(open->W+open->

Depth))

。//若后一結(jié)點(diǎn)的f值小于首結(jié)點(diǎn),則將它插入到首結(jié)點(diǎn)位置。

open=head;

。head=head->next;

3open—>next=q;

6O}

be1se〃或者第二個結(jié)點(diǎn)的位置

°(

q->nextiead;

。head=head->next;

q=q->next;

。?q->next=NULL;

p=open;

}

while(head!=NULL)

°{

°q=open;

if((head->W+head->Depth)<(open->W+open—>Depth))

。{〃插入到表頭

。o3open=head;

oohead=head—>next;

open->next=q;

33continue;

}

aoe1se

°q=q->next;p=open;

。}//否則,q指像第二個結(jié)點(diǎn),P指向q前一個結(jié)點(diǎn)

while(q->next!=NULL)〃將head的一個結(jié)點(diǎn)插入到鏈表中(非表

尾的位置)

03{

6if(q->W<head->W)

°{

b3boq=q->next;

p=p->next;

°}

6else

eoop->next=head;

。bbhead=head->next;

。。op->next->next=q;

33break;

}

}

。if(q—>next=二NULL)〃將head的一個結(jié)點(diǎn)插入到表尾或倒數(shù)第二個位置

001

oif((q—>W+q->Depth)<(head->W+head->Depth))

d3{

6sq->next=head;

03head=head->next;

。eeq->next->next=NULL;

00}

else

p->next=head;

。head=head->next;

。p->next->next=q;

00d|

b3}

}

returnopen;

}

voidmain()

(

。intiJ;

。intkey=0;

nodeFirstNode;

node*open,*c1ose;

Bnode*p,*r;

。node*NodeList;

。printf("請輸入初始狀態(tài)的8數(shù)碼(按每行從左往右依次輸入,用0表達(dá)空

格):\n");

for(i=0;i<3;i++)

6for(j=0;j<3;j++)

oscanf("%d",&FirstNode.number[i][j]);

??printf("\n");

。Printf("搜索樹為:\n");

for(i=0;i<3;i++)

。。for(j=0;j<3;j++)

o。printf("%d",FirstNode.number[i][j]);

叩rintf("\n");

0}

oprintf("\n");

FirstNode.parent=(node*)malloc(sizeof(node));

FirstNode.Depth=O;//開始結(jié)點(diǎn)深度為零

FirstNode.W=CounterW(FirstNode.number);

open=&FirstNode;

p=&FirstNode;

oif(open->W==0)〃該結(jié)點(diǎn)的狀態(tài)與目的結(jié)點(diǎn)相同

b{

。printf("該結(jié)點(diǎn)已為目的結(jié)點(diǎn)狀態(tài)!\n“);

匕return;

0}

r=&FirstNode;

close=&FirstNode;

。。r->next=NULL;

。open=NULL;

匕NodeList=FindNextNode(r,open,close);//NodeList指向新擴(kuò)

展出來的鏈表

。open=insert(open,NodeList);〃將擴(kuò)展出來的結(jié)點(diǎn)插入到open表

while(open!=NULL)

°{

。r->next=open;//將open表的第一個元素加到close表,r始終

指向close表的最后一個元素

open=open->next;

r=r->next;

or—>next=NULL;

。if(r->W==0)

00d1

key=1;

-printf("\n啟發(fā)式搜索成功!\n");

oobreak;

)

。。NodeList=FindNextNode(r,open,c1ose);;//對c1ose

表最后一個結(jié)點(diǎn)進(jìn)行擴(kuò)展,擴(kuò)展得到的鏈表接到head表

open=insert(open,NodeList);〃將擴(kuò)展的結(jié)點(diǎn)按順序插入

到open表中

}

。if(key==1)

0b{b33

p=c1ose;

printf("最優(yōu)搜索過程如下:\n“);

n

匕printf(結(jié)點(diǎn)深度為:%d\n”,FirstNode.Depth);

printf(H--—-------------\n");

。whi1e(p!=NULL)

bbb

for(i=0;i<3;i++)

for(j=0;j<3;j++)

printf("%d",p->number[i][j]);

printf("\n");

)

。printf("\n");

°p=p—>next;

。if(p!=NULL)

printf("結(jié)點(diǎn)深度為:%d\n",p->Depth);

oprintf(n------——--------\nH);

)

}else

printf("查找失敗,該問題無解!\n");。。。

)

4.實驗結(jié)果

搜索樹為:

■"C:\Users\carl\Desktop\2013T\AlVkSXc?\Debug\Eight-numbers.exe"

清輸入初始狀態(tài)由藏福7按每行涯港右依次輸入,用0表示空格):

283104765

搜索樹為:

283

104

765

283

164

705

203

184

765

283

014

765

283

140

|F?65

'C:\Users\carl\Desktop\2013T\AlVk23lSi\Debug\Eight_numbers.exe"

023

184

?65

230

184

765

283

714

065

083

214

765

123

084

765

123

?84

065

numbers.exe"

12

08

76

12

78

06

12

804

765

最短途徑為:

?選定.C:\Users\carl\Desktop\2013~F\AIV墩碼\Debug\Eight_numbers.exe?

765-

283

104

765

結(jié)點(diǎn)深度為門

203

184

765

結(jié)點(diǎn)深度為:2

023

184

765

結(jié)點(diǎn)深度為:3

"C:\Users\carl\Desktop\2013T\AIVk^^\Debug\Eight_numbers.exe"

765-

結(jié)點(diǎn)深度為:2

023

184

765

結(jié)點(diǎn)深度為:3

123

084

765

結(jié)點(diǎn)深度為:4

123

804

765

Pressanukeutocontinue—

5.實驗分析

本次實驗采用啟發(fā)式搜索,運(yùn)用C語言編寫程序?qū)崿F(xiàn)八數(shù)碼問題的求解。

采用簡樸的估價函數(shù):

/(〃)=d(〃)+W⑺

其中d(〃)是搜索樹中節(jié)點(diǎn)的〃深度;W(〃)用來計算相應(yīng)于節(jié)點(diǎn)〃的數(shù)據(jù)庫中

錯放的棋子個數(shù)。例如初始節(jié)點(diǎn)的估價函數(shù)值為3。

估價函數(shù)可以提供一個評估候選擴(kuò)展節(jié)點(diǎn)的方法,以便擬定哪個節(jié)點(diǎn)

時最有也許在通向目的的最佳途徑上。這樣選擇對的的估價函數(shù),可以減少

擴(kuò)展節(jié)點(diǎn)個數(shù),對于實驗所給的初始節(jié)點(diǎn)和估價函數(shù),只用擴(kuò)展1L個節(jié)點(diǎn)就

能找到目的節(jié)點(diǎn);相比于盲目搜索可以減少被擴(kuò)展的節(jié)點(diǎn)數(shù),減少很多空間

占用和時間損耗。

運(yùn)用啟發(fā)信息來決定哪一個是下一步要擴(kuò)展的節(jié)點(diǎn),這種搜索總是選擇

“最有希望”的節(jié)點(diǎn)作為下一步被擴(kuò)展的節(jié)點(diǎn)。這事實上是通過估價函數(shù)值

的大小重排OPEN表,小的一直排在OPEN表的前面。每次取OPEN表的

第一個節(jié)點(diǎn)放到CLOSED表中進(jìn)行擴(kuò)展,這樣一步步靠近目的節(jié)點(diǎn),直到最

后找到目的節(jié)點(diǎn),停止擴(kuò)展。

6.結(jié)論

對的選擇估價函數(shù)對擬定搜索結(jié)果具有決定性作用。使用不能辨認(rèn)某些

節(jié)點(diǎn)真是希望的估價函數(shù)會形成非最小代價途徑;而使用一個過多地估計了

所有節(jié)點(diǎn)希望的估價函數(shù),又會擴(kuò)展過多的節(jié)點(diǎn)。在選對估價函數(shù)的前提下,

啟發(fā)式搜索能準(zhǔn)確辨認(rèn)有希望和沒有希望的節(jié)點(diǎn),從而不久擴(kuò)展到目的節(jié)點(diǎn),

找到最短途徑。在本次實驗中假如選擇估價函數(shù)值為/(")=W(")(W(〃)用來

計算相應(yīng)于節(jié)點(diǎn)n的數(shù)據(jù)庫中錯放的棋子個數(shù)),將會擴(kuò)展更少的節(jié)點(diǎn),更加快

的找到到達(dá)目的節(jié)點(diǎn)的最短途徑。

二.英文期刊翻譯

AdaptiveEvo1utionaryArt

ificialNeura1

NetworksforPatternClas

sification

自適應(yīng)進(jìn)化人工神經(jīng)網(wǎng)絡(luò)模式分類

摘要:這篇文章提出了一種新的進(jìn)化方法稱為混合進(jìn)化人工神經(jīng)網(wǎng)絡(luò)(HEANN),

同時提出進(jìn)化人工神經(jīng)網(wǎng)絡(luò)(ANNs)拓?fù)浣Y(jié)構(gòu)和權(quán)重。進(jìn)化算法(EAs)具有較

強(qiáng)的全局搜索能力且很也許指向最有前程的領(lǐng)域。然而,在搜索空間局部微調(diào)時,

他們效率較低。HEANN強(qiáng)調(diào)全局搜索的平衡和局部搜索的進(jìn)化過程,通過調(diào)整

變異概率和步長擾動的權(quán)值。這是區(qū)別于大多數(shù)以前的研究,那些研究整合EA

來搜索網(wǎng)絡(luò)拓?fù)浜吞荻葘W(xué)習(xí)來進(jìn)行權(quán)值更新。四個基準(zhǔn)函數(shù)被用來測試的HEA

NN進(jìn)化框架。此外,HEANN測試了七個分類基準(zhǔn)問題的UCI機(jī)器學(xué)習(xí)庫。實

驗結(jié)果表白在少數(shù)幾代算法中,HEANN在微調(diào)網(wǎng)絡(luò)復(fù)雜性的性能是優(yōu)越的。同時,

他還保存了相對于其他算法的泛化性能。

簡介:人工神經(jīng)網(wǎng)絡(luò)(ANNs)已經(jīng)成為一種強(qiáng)大的工具被用于模式分類

[1],[2]。ANN拓?fù)鋬?yōu)化和連接權(quán)重訓(xùn)練經(jīng)常被單獨(dú)解決。這樣一個分治算法

產(chǎn)生一個不精確的評價選擇的神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。事實上,這兩個任務(wù)都是互相

依存的且應(yīng)當(dāng)同時解決以達(dá)成最佳結(jié)果。

一個模式分類的關(guān)鍵任務(wù)是設(shè)計一個緊湊和廣義ANN拓?fù)?。為特定的問題

選擇一個適當(dāng)?shù)腁NN拓?fù)涫侵陵P(guān)重要的,由于ANN泛化相關(guān)性信息解決能力和AN

N拓?fù)涞膹?qiáng)關(guān)聯(lián)能力。過度的小型網(wǎng)絡(luò)的大小表白問題不能學(xué)得很好,而一個特

別大的網(wǎng)絡(luò)規(guī)模將導(dǎo)致過度學(xué)習(xí)和差的推廣性能。耗時的實驗訓(xùn)練方法和爬山建

設(shè)性或修剪算法[3]-[7]用于設(shè)計一個ANN架構(gòu),對于一個給定的任務(wù)只有探

索小型建筑子集,或往往是停在結(jié)構(gòu)局部最優(yōu)解。相關(guān)的神經(jīng)網(wǎng)絡(luò)是一個流行的

[8]建設(shè)性算法而用于構(gòu)造有多個維層的ANN拓?fù)?。新的隱藏節(jié)點(diǎn)一個接一個的

被添加進(jìn)來且都與每一個現(xiàn)有的隱藏節(jié)點(diǎn)在當(dāng)前的網(wǎng)絡(luò)連接。因此,網(wǎng)絡(luò)可以被

視為擁有多個可以形成一個級聯(lián)結(jié)構(gòu)的集中度值層。然而,網(wǎng)絡(luò)是傾向于結(jié)構(gòu)局

部最優(yōu)解由于它具有建設(shè)性的行為。設(shè)計一個ANN拓?fù)涫褂眠M(jìn)化算法(EAs)已經(jīng)

成為一種流行的方法來克服建設(shè)性或修剪方法的缺陷。它有很強(qiáng)的全

局搜索能力,可以有效地搜索通過接近完整的ANN拓?fù)漕悺?/p>

許多工作已經(jīng)致力于進(jìn)化神經(jīng)網(wǎng)絡(luò)ANN拓?fù)浣Y(jié)構(gòu)。兩個重要的方法來發(fā)展A

NN拓?fù)涞奈墨I(xiàn)報告是沒有重權(quán)值和ANN拓?fù)渫竭M(jìn)化的兩個拓?fù)浜蜋?quán)重。演

化的一個無權(quán)值得ANN拓?fù)?必須從一組隨機(jī)的初始權(quán)重訓(xùn)練評估其適應(yīng)性。姚

和劉口1]指出,這個適應(yīng)性評價方法很嘈雜由于一個顯性型的適應(yīng)性是用來代

表隱形型的適應(yīng)性。雖然的進(jìn)化ANN拓?fù)涞倪m應(yīng)性可以通過運(yùn)營多個不同的隨

機(jī)初始權(quán)重而得到的平均結(jié)果來估計,為適應(yīng)性計算評價時間是急劇增長。因此,

只有小ANN拓?fù)湓冢?4]和[15]中被演化。

同時進(jìn)化的ANN拓?fù)浜蜋?quán)重,權(quán)重信息拓?fù)浜途幋a在每個個體是獨(dú)立的。因

此嘈雜的適應(yīng)性評價問題可以被緩解。一個突出的工作稱為EPNet被姚和劉[11]

引入,那是一個同時進(jìn)化ANN拓?fù)浜蜋?quán)重例子。姚和劉用混合訓(xùn)練來進(jìn)化ANN權(quán)

重測試。梯度學(xué)習(xí)和模擬退火都納入進(jìn)化過程演變的ANN權(quán)重。MartInez-Est

udi11。等人在最佳的獨(dú)立ANN下使用梯度學(xué)習(xí)方法演變權(quán)重。他們用聚類算法

劃分的個體在總數(shù)中提成幾個屬于同一區(qū)域的吸引力集群。然而,由于靈敏度高

的反向傳播算法對初始權(quán)重,使用梯度學(xué)習(xí)方法如反向傳播算法進(jìn)化ANN權(quán)重引

起噪聲適應(yīng)性評價。Palmeseta1[12]使用基于突變EA在一個進(jìn)化的ANN下

解決這個問題。其他作品也集中在同步進(jìn)化的ANN拓?fù)浜蜋?quán)重。Angetal[13]介

紹增長概率允許網(wǎng)絡(luò)演變到合適的大小。Angelineeta1[9]使用參數(shù)

突變和結(jié)構(gòu)性突變進(jìn)化安重量、隱藏節(jié)點(diǎn)和網(wǎng)絡(luò)鏈接。Jian和Yugeng[10]

用進(jìn)化規(guī)劃(EP)進(jìn)化體系結(jié)構(gòu)和前饋神經(jīng)網(wǎng)絡(luò)的權(quán)重和遞歸神經(jīng)網(wǎng)絡(luò)。Liange

tal[17]提出了一種改善遺傳算法的進(jìn)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù)。Gutier

rezetalo[18]使用模擬退火控制參數(shù)突變和五個結(jié)構(gòu)突變進(jìn)化徑向基函

數(shù)(RBF)神經(jīng)網(wǎng)絡(luò)。所有這些以前作品的目的是產(chǎn)生一個緊湊和廣義的ANN。

通常,拓?fù)涞囊粋€ANN可以編碼到一個染色體編碼方案來使用直接或間接編

碼方案。在直接編碼方案中,所有的ANN拓?fù)渚幋a直接進(jìn)入一個染色體,這是通過

使用二進(jìn)制表達(dá),而這表白存在網(wǎng)絡(luò)連接和隱藏的節(jié)點(diǎn)。間接編碼方案只有編碼

的一些重要參數(shù)的一個ANN拓?fù)?,如?shù)量的隱藏層和隱藏的節(jié)點(diǎn)。其他細(xì)節(jié)AN

N拓?fù)涫穷A(yù)定義的或指定的一組擬定的發(fā)展規(guī)則[19]。直接編碼方案易于實現(xiàn),

適合于精確的搜索。盡管間接編碼方案可以減少染色體的長度,它也許不適合找

一個緊湊的具有良好的泛化能力的ANN[19]。在本文中,一個直接編碼方案是用

來代表ANN拓?fù)洹?/p>

進(jìn)化的ANN拓?fù)浜蜋?quán)重可以幫助緩解此問題的嘈雜的評價。然而,僅僅依靠

EA來進(jìn)化神經(jīng)網(wǎng)絡(luò)是相稱低效執(zhí)行本地搜索。進(jìn)一步訓(xùn)練使用傳統(tǒng)的梯度下降方

法進(jìn)化后可以是一個簡樸的方法來調(diào)整網(wǎng)絡(luò)。認(rèn)為情勢的過早收斂在進(jìn)化過程中,

ANN發(fā)現(xiàn)通過進(jìn)一步培訓(xùn)也許不是最優(yōu)的。其他方法如使用退火溫度指導(dǎo)重量

擾動步長[9]和調(diào)度的突變概率[12]的個人網(wǎng)絡(luò)的種群可以被認(rèn)為是初步指南向

本地搜索,但沒有不同的方向已經(jīng)被提供。因此,EA應(yīng)當(dāng)引導(dǎo)對的維持兩者之間

的平衡整個搜索空間的探索和開發(fā)的重要區(qū)域。

出于平衡的重要性,在進(jìn)化過程和同步進(jìn)化的ANN拓?fù)浜蜋?quán)重下的全局和本

地搜索,本文提出了一種新的進(jìn)化方法稱為混合進(jìn)化人工神經(jīng)網(wǎng)絡(luò)(HEANN),同

時發(fā)展ANN拓?fù)浜蜋?quán)重。此外,HEANN演示了一個平衡的全局搜索和局部搜索通過

引入一個在演化工程中產(chǎn)生新奇的自適應(yīng)變異技術(shù)。而不是使用傳統(tǒng)的方法來減

少突變概率或步長大小,HEANN使用信息從種群引導(dǎo)進(jìn)化過程將逐漸向全局搜索

到本地搜索過渡。一方面,概括損失(GL)在種群是用來適應(yīng)變異概率和步長。第

二,適應(yīng)性價值的每個個體的種群是用來擬定突變的嚴(yán)重性,在給定個體的種群。

在本文中

溫馨提示

  • 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

提交評論