freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

車輛工程畢業(yè)設(shè)計(jì)論文-基于c語言的bp神經(jīng)網(wǎng)絡(luò)預(yù)測程序開發(fā)-資料下載頁

2025-07-20 18:14本頁面

【導(dǎo)讀】合高度復(fù)雜的非線性動(dòng)力學(xué)系統(tǒng)仿真。人工神經(jīng)網(wǎng)絡(luò)已經(jīng)在組合優(yōu)化、模式識(shí)別、在工程領(lǐng)域逐漸受到廣泛重視。人工神經(jīng)網(wǎng)絡(luò)用于非線性動(dòng)力學(xué)系統(tǒng)研究,近來。在汽車動(dòng)力學(xué)建模與仿真領(lǐng)域也引起了極大關(guān)注。對(duì)此類控制問題很難取得滿意的效果。為了解決這類問題,預(yù)測控制應(yīng)運(yùn)而生。反向傳播神經(jīng)網(wǎng)絡(luò)是當(dāng)前應(yīng)用最為。速度的改進(jìn)算法。

  

【正文】 是反復(fù)重復(fù)上面介紹的輸入模式順傳播和輸出誤差逆?zhèn)鞑ミ^程。 流程圖如下: 圖 循環(huán)流程圖 由此流程圖得出 程序如下: 連接權(quán)及閾值初始化 計(jì)算中間層各單元的輸入、輸出 全部模式訓(xùn)練完 是 學(xué)習(xí)模式提供給網(wǎng)絡(luò) 計(jì)算輸出層各單元的輸入、輸出 計(jì)算輸出層各單元的校正誤差 計(jì)算中間層各單元的校 正誤差 調(diào)整中間層至輸出層之間的連接權(quán)及輸出層各單元的輸出閾值 調(diào)整輸入層至中間層之間的連接權(quán)及輸出層各單元的輸出閾值 更新學(xué)習(xí)輸入模式 更新學(xué)習(xí)次數(shù) 誤差 < ε 或?qū)W習(xí)次數(shù)> N 學(xué)習(xí)結(jié)束 開 始 25 void wTrain() { int k,j,i,ct=0。 float err[wON]。 printf(\n)。 printf(\n)。 printf(It is time to training!\n)。 printf(\n)。 printf(\n)。 printf(This calculation needs about two minutes,\n)。 printf(\n)。 printf(\n)。 printf(Please wait patiently!\n)。 winitwt()。 winput()。 do { for(i=0。iwON。i++) { err[i]=。 } for (k=0。kwPN。k++) { for (i=0。iwIN。i++) { wIV[i]=wIP[i][k]。 } for (i=0。iwON。i++) { wD[i]=wDP[i][k]。 26 } wforward()。 for (i=0。iwON。i++) { err[i]+=(wD[i]wOV[i])*(wD[i]wOV[i])。 } wbackwd()。 } ct++。 } while (ctwMAXIT)。//amp。amp。(err[i]wSERROR))。 if ((wfpwt=fopen(wszWt,w))==NULL) { /*printf(Can39。t write Weight data file:%s!,wszWt)。*/ exit(1)。 } for (i=0。iwHN。i++) { for (j=0。jwIN。j++) { fprintf(wfpwt,%e,%e,%e\n,ww[j][i],wdw[j][i],wdw1[j][i])。 } fprintf(wfpwt,%e,%e,%e\n,wsth[i],wdsth[i],wdsth1[i])。 } for (i=0。iwON。i++) { for (j=0。jwHN。j++) { fprintf(wfpwt,%e,%e,%e\n,wv[j][i],wdv[j][i],wdv1[j][i])。 } fprintf(wfpwt,%e,%e,%e\n,wsto[i],wdsto[i],wdsto1[i])。 27 } if ((wfperr=fopen(wszerr,w))==NULL) { /* printf(Can39。t write Weight data file:%s!,wszWt)。*/ exit(1)。 } for(i=0。iwON。i++) { err[i]=err[i]/(wPN*wON)。 err[i]=(float)sqrt(err[i])。 fprintf(wfperr,%e\n,err[i])。 /*printf(循環(huán) %4d 次后 err[%d]為 : %e\n,ct,i,err[i])。*/ } fclose(wfperr)。 fclose(wfpwt)。 } 學(xué)習(xí)結(jié)果的判別 當(dāng)每次循環(huán)記憶訓(xùn)練結(jié)束后,都要進(jìn)行學(xué)習(xí)結(jié)果的判別。判別的目的主要是檢查輸出誤差是否已經(jīng)小到允許的程度。如果小到允許的程度,就可以結(jié)束這個(gè)學(xué)習(xí)過程,否則還要進(jìn) 行循環(huán)訓(xùn)練。學(xué)習(xí)或者說訓(xùn)練的過程是網(wǎng)絡(luò)全局誤差趨向于極小值的過程。 在網(wǎng)絡(luò)的學(xué)習(xí)階段,通過調(diào)整所有連接權(quán)和閾值使系統(tǒng)的平均誤差 E 達(dá)到最小, 訓(xùn)練結(jié)束。 21 )(21 kknk tE ??? ?? ( ) 式中: kt ——計(jì)算的輸出值 ; k? ——實(shí)際的輸出值 ; n——樣本數(shù)。 28 一些數(shù)據(jù)不止一個(gè)數(shù)量級(jí),存在奇異樣本數(shù)據(jù),訓(xùn)練前要對(duì)輸入?yún)?shù)進(jìn) 行歸一化處理。歸一化處理 VC 程序如下: float wpfMap(float x,float m, float n, float h, float l) { float wxmin=m, wxmax=n, wymin=h, wymax=l。 float A,B,y。 A=(wymaxwymin)/(wxmaxwxmin)。 B=(wxmax*wyminwxmin*wymax)/(wxmaxwxmin)。 y=x*A+B。 return (y)。 } 所以對(duì)預(yù)測判斷的程序如下: void wTest() { int k,j,i。 float err[wON]。 float x。 /*printf(Testing!\n)。*/ if ((wfpwt=fopen(wszWt,r))==NULL) { printf(Can39。t open Weight data file:%s!,wszWt)。 exit(1)。 } for (i=0。iwHN。i++) { for (j=0。jwIN。j++) { 29 fscanf(wfpwt,%e,%e,%e,amp。ww[j][i],amp。wdw[j][i],amp。wdw1[j][i])。 } fscanf(wfpwt,%e,%e,%e,amp。wsth[i],amp。wdsth[i],amp。wdsth1[i])。 } for (i=0。iwON。i++) { for (j=0。jwHN。j++) { fscanf(wfpwt,%e,%e,%e,amp。wv[j][i],amp。wdv[j][i],amp。wdv1[j][i])。 } fscanf(wfpwt,%e,%e,%e,amp。wsto[i],amp。wdsto[i],amp。wdsto1[i])。 } fclose(wfpwt)。 if ((wfpout=fopen(wszOut,w))==NULL) { printf(Can39。t write output data file:%s!,wszOut)。 exit(1)。 } if ((wfptest=fopen(wszTest,r))==NULL) { printf(Can39。t open test data file:%s!,wszTest)。 exit(1)。 } if((wfparea=fopen(wszArea,r))==NULL) { printf(can39。t open file %s\n,wszArea)。 exit(1)。 } for (i=0。iwIN+3。i++) { 30 fscanf(wfparea,%f%f%f%f,amp。wxmin[i],amp。wxmax[i],amp。wymin[i],amp。wymax[i])。 } for (i=0。iwTN。i++) { for (j=0。jwIN。j++) { float m=wxmin[j]。 float n=wxmax[j]。 float h=wymin[j]。 float l=wymax[j]。 fscanf(wfptest,%e,amp。wIT[j][i])。 x=wIT[j][i]。 wIT[j][i]=wpfMap(x,m,n,h,l)。 } for(k=0。kwON。k++) { float m=wxmin[wIN+k]。 float n=wxmax[wIN+k]。 float h=wymin[wIN+k]。 float l=wymax[wIN+k]。 fscanf(wfptest,%e,amp。wDT[k][i])。 x=wDT[k][i]。 wDT[k][i]=wpfMap(x,m,n,h,l)。 } } for (i=0。iwON。i++) { err[i]=。 } for (k=0。kwTN。k++) 31 { for (i=0。iwIN。i++) { wIV[i]=wIT[i][k]。 } for (i=0。iwON。i++) { wD[i]=wDT[i][k]。 } wforward()。 for (i=0。iwON。i++) { float m=wxmin[wIN+i]。 float n=wxmax[wIN+i]。 float h=wymin[wIN+i]。 float l=wymax[wIN+i]。 x=wOV[i]。 wOV[i]=wpbMap(x,m,n,h,l)。 x=wD[i]。 wD[i]=wpbMap(x,m,n,h,l)。 err[i]+=(wD[i]wOV[i])*(wD[i]wOV[i])。 fprintf(wfpout,%\t,wOV[i])。 fprintf(wfpout,%\t,wD[i])。 fprintf(wfpout,%\t,(wD[i]wOV[i])/wD[i])。 } fprintf(wfpout,\n)。 } if ((wfperr=fopen(wszerr,w))==NULL) { /* printf(Can39。t write Weight data file:%s!,wszWt)。*/ 32 exit(1)。 } for(i=0。iwON。i++) { err[i]=err[i]/(wPN*wON)。 err[i]=(float)sqrt(err[i])。 fprintf(wfperr,%e\n,err[i])。 /*printf(循環(huán) %4d 次后 err[%d]為 : %e\n,ct,i,err[i])。*/ } fclose(wfperr)。 fclose(wfptest)。 fclose(wfparea)。 fclose(wfpout)。 } 對(duì)數(shù)據(jù)的預(yù)測程序編寫 最后的預(yù)測程序就是對(duì)前面訓(xùn)練好的網(wǎng)絡(luò)的實(shí)現(xiàn),先把調(diào)整好的閾值和權(quán)值送進(jìn)檔,然后把要預(yù)測的數(shù)據(jù)放進(jìn)預(yù)測檔中進(jìn)行正向的順序運(yùn)算,最后得出預(yù)測數(shù)據(jù)。得到如下程序 : void wpre() { int k,j,i。 float err[wON]。 float x。 /*printf(predicting!\n)。*/ if ((wfpwt=fopen(wszWt,r))==NULL) { printf(Can39。t open Weight data file:%s!,wszWt)。 exit(1)。 } //read the satisfied wt value for (i=0。iwHN。i++) 33 { for (j=0。jwIN。j++) { fscanf(wfpwt,%e,%e,%e,amp。ww[j][i],amp。wdw[j][i],amp。wdw1[j][i])。 } fscanf(wfpwt,%e,%e,%e,amp。wsth[i],amp。wdsth[i],amp。wdsth1[i])。 } for (i=0。iwON。i++) { for (j=0。jwHN。j++) { fscanf(wfpwt,%e,%e,%e,amp。wv[j][i],amp。wdv[j][i],
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1