




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶葉購銷合作合同模板
- 家族遺產(chǎn)合同樣本
- 天津市實習(xí)學(xué)生勞動合同細(xì)則
- 電梯加裝項目合同模板
- 施工隊勞動合同簡明合同模板
- 農(nóng)村地區(qū)私人租地合同樣本協(xié)議
- 新版團(tuán)體人身意外傷害保險合同條款解析
- 房地產(chǎn)公司合同審核與管理制度
- 信息系統(tǒng)的測試與質(zhì)量保證考核試卷
- 孤殘兒童心理關(guān)愛與支持體系構(gòu)建方法研究考核試卷
- 拆除工程施工拆除進(jìn)度安排
- 絕緣技術(shù)監(jiān)督上崗員:廠用電設(shè)備技術(shù)監(jiān)督考試資料一
- 衛(wèi)生監(jiān)督村醫(yī)培訓(xùn)課件
- 動物的感覺器官
- 獵頭項目方案
- 2024年家庭教育指導(dǎo)師考試(重點(diǎn))題庫及答案(含各題型)
- 直腸癌術(shù)后的康復(fù)護(hù)理
- 性商老師課程培訓(xùn)課件
- 拆除鍋爐可行性報告
- 二級精神病醫(yī)院評審標(biāo)準(zhǔn)實施細(xì)則
- 全套ISO45001職業(yè)健康安全管理體系文件(手冊及程序文件)
評論
0/150
提交評論