基于delphi的神經(jīng)網(wǎng)絡(luò)系統(tǒng)辨識側(cè)重程序_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  中 南 大 學(xué)</b></p><p>  基于Delphi的神經(jīng)網(wǎng)絡(luò)</p><p><b>  系統(tǒng)辨識</b></p><p>  學(xué) 院:信息科學(xué)與工程學(xué)院</p><p>  專業(yè)班級:自 動 化 ****</p><p>  姓

2、 名:********</p><p>  學(xué) 號:**********</p><p>  指導(dǎo)老師:*********</p><p><b>  第一章 緒論</b></p><p><b>  1.1 訓(xùn)練目的</b></p><p>  能針對題目獨立

3、展開調(diào)研,查閱相關(guān)教材、論文和數(shù)字文獻(xiàn)資料,在此基礎(chǔ)上找到解決問題的方法和思路,并做好實施方案;</p><p>  了解辨識系統(tǒng)的原理和基本方法,重點掌握基于神經(jīng)網(wǎng)絡(luò)非線性系統(tǒng)辨識方法;</p><p>  了解BP神經(jīng)網(wǎng)絡(luò)及其在系統(tǒng)辨識建模中的應(yīng)用;</p><p>  能設(shè)計理想的神經(jīng)網(wǎng)絡(luò)(結(jié)構(gòu)、隱層數(shù)及其節(jié)點數(shù)),分析其非線性映射能力如何保證及其在系統(tǒng)辨識中

4、具有良好的泛化能力;</p><p>  熟悉Delphi開發(fā)環(huán)境,能在該環(huán)境下實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)對不同的非線性系統(tǒng)的辨識;</p><p>  神經(jīng)網(wǎng)絡(luò)的設(shè)計和分析過程中,設(shè)計者需融入自己的細(xì)想,發(fā)揮其主觀能動性,尤其需適當(dāng)改進(jìn)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,以保證算法的收斂性和穩(wěn)定性;</p><p>  培養(yǎng)綜合運用基礎(chǔ)理論知識獨立分析和解決問題的能力;</p>

5、<p>  加深對基礎(chǔ)理論部分的理解的同時,提高實踐能力。</p><p>  1.2 工程訓(xùn)練內(nèi)容和基本要求</p><p>  熟悉Delphi開發(fā)環(huán)境,實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的構(gòu)件,繪制仿真曲線;</p><p>  采用BP神經(jīng)網(wǎng)絡(luò)辨識非線性擴展自回歸滑動平均模型(NARMAX),模型的參數(shù)和結(jié)構(gòu)自行設(shè)置,最后具有代表性;</p><

6、;p>  設(shè)計可視化界面,能交互式地改變系統(tǒng)的階次和系統(tǒng)的參數(shù),并相應(yīng)地改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和算法,實時的顯示仿真曲線(輸入輸出數(shù)據(jù)的跟蹤曲線)和建模誤差曲線;</p><p>  根據(jù)仿真結(jié)果適當(dāng)修改或改進(jìn)神經(jīng)網(wǎng)絡(luò)的結(jié)果或?qū)W習(xí)算法,并分析各算法的收斂性和穩(wěn)定性;</p><p>  比較兩種或兩種以上的辨識方法(如采用不同的神經(jīng)網(wǎng)絡(luò)),根據(jù)系統(tǒng)辨識效果的好壞,分析造成實驗結(jié)果的原因,闡

7、述自己對此的觀點和改進(jìn)建議;</p><p>  必須有完整的可視化界面,利用數(shù)據(jù)或曲線作為實驗結(jié)果,具有一定的說服力;</p><p>  根據(jù)實驗結(jié)果, 分析你所采用的方法的合理性、優(yōu)越性和不足之處,要求體現(xiàn)自己的設(shè)計思想。</p><p>  1.3 工程訓(xùn)練的意義</p><p>  通過完成從用戶需求分析、Delphi界面設(shè)計到上機

8、編程、算法實現(xiàn)、調(diào)試和應(yīng)用等全過程,進(jìn)一步了解和掌握本書中所講解的內(nèi)容。</p><p><b>  程序設(shè)計流程</b></p><p><b>  程序設(shè)計流程如下:</b></p><p>  1、按照軟件工程學(xué)的方法,對需要開發(fā)的軟件進(jìn)行需求分析、可行性分析以及詳細(xì)的設(shè)計等;</p><p>

9、;  2、建立一個新的項目,根據(jù)需要建立所需要的窗體;</p><p>  3、根據(jù)需要向窗體中添加組件,設(shè)計窗體的外觀和組件的布局,即設(shè)計用戶界面;</p><p>  4、根據(jù)需要設(shè)置組件的相應(yīng)屬性;</p><p>  5、根據(jù)需要編寫事實響應(yīng)代碼;</p><p>  6、保存項目相關(guān)的所用文件,編譯、調(diào)試和運行程序。</p&g

10、t;<p>  第三章 Delphi界面設(shè)計</p><p><b>  2.1 設(shè)計要求</b></p><p>  1、顯示與BP算法的相關(guān)參數(shù),并可以修改其參數(shù);</p><p>  2、顯示通過BP算法逼近的訓(xùn)練曲線以及誤差曲線:</p><p>  3、可以選擇不同類型的函數(shù)曲線以此來驗證BP算

11、法。</p><p>  2.2 Delphi實現(xiàn)</p><p><b>  總的設(shè)計界面如下:</b></p><p><b>  具體相關(guān)代碼如下:</b></p><p>  此系統(tǒng)讀者可以手動改變BP算法的相關(guān)參數(shù),例如:輸入節(jié)點、學(xué)習(xí)速率、動量因子。界面如下圖:</p>&

12、lt;p>  界面顯示的相關(guān)代碼如下:</p><p>  object Label1: TLabel</p><p><b>  Left = 40</b></p><p><b>  Top = 33</b></p><p>  Width = 48</p><p>

13、;  Height = 12</p><p>  Caption = '輸入節(jié)點'</p><p>  Font.Charset = ANSI_CHARSET</p><p>  Font.Color = clWindowText</p><p>  Font.Height = -12</p><p>

14、  Font.Name = '宋體'</p><p>  Font.Style = []</p><p>  ParentFont = False</p><p><b>  end</b></p><p>  object Label2: TLabel</p><p>  Lef

15、t = 174</p><p><b>  Top = 33</b></p><p>  Width = 66</p><p>  Height = 12</p><p>  Caption = '學(xué)習(xí)速率η='</p><p>  Font.Charset = ANSI_CHAR

16、SET</p><p>  Font.Color = clWindowText</p><p>  Font.Height = -12</p><p>  Font.Name = '宋體'</p><p>  Font.Style = []</p><p>  ParentFont = False<

17、;/p><p><b>  end</b></p><p>  object Label3: TLabel</p><p>  Left = 308</p><p><b>  Top = 33</b></p><p>  Width = 66</p><p&

18、gt;  Height = 12</p><p>  Caption = '動量因子α='</p><p>  Font.Charset = ANSI_CHARSET</p><p>  Font.Color = clWindowText</p><p>  Font.Height = -12</p><p

19、>  Font.Name = '宋體'</p><p>  Font.Style = []</p><p>  ParentFont = False</p><p><b>  End</b></p><p>  系統(tǒng)通過BP算法現(xiàn)實的曲線圖界面如下:</p><p><

20、;b>  相關(guān)代碼如下: </b></p><p>  object Chart1: TChart</p><p><b>  Left = -8</b></p><p><b>  Top = 204</b></p><p>  Width = 409</p>&l

21、t;p>  Height = 293</p><p>  BackWall.Brush.Color = clWhite</p><p>  BackWall.Brush.Style = bsClear</p><p>  BackWall.Color = clSilver</p><p>  Foot.Text.Strings = (&

22、lt;/p><p><b>  'k')</b></p><p>  MarginBottom = 0</p><p>  MarginLeft = 0</p><p>  MarginRight = 0</p><p>  MarginTop = 2</p><p

23、>  Title.Text.Strings = (</p><p>  '期望輸出y(k)、模型輸出ym(k)')</p><p>  BackColor = clSilver</p><p>  LeftAxis.ExactDateTime = False</p><p>  LeftAxis.Grid.Visible

24、 = False</p><p>  LeftAxis.Increment = 0.500000000000000000</p><p>  LeftAxis.MinorTicks.Visible = False</p><p>  LeftAxis.TicksInner.Visible = False</p><p>  LeftAxis.

25、Title.Caption = 'y(k)、ym(k)'</p><p>  Legend.LegendStyle = lsSeries</p><p>  View3D = False</p><p>  BevelInner = bvLowered</p><p>  TabOrder = 0</p><

26、;p>  object Series1: TLineSeries</p><p>  Marks.ArrowLength = 8</p><p>  Marks.Visible = False</p><p>  SeriesColor = clRed</p><p>  Title = 'y(k)'</p>

27、<p>  Pointer.InflateMargins = True</p><p>  Pointer.Style = psRectangle</p><p>  Pointer.Visible = False</p><p>  XValues.DateTime = False</p><p>  XValues.Name

28、 = 'X'</p><p>  XValues.Multiplier = 1.000000000000000000</p><p>  XValues.Order = loAscending</p><p>  YValues.DateTime = False</p><p>  YValues.Name = 'Y&

29、#39;</p><p>  YValues.Multiplier = 1.000000000000000000</p><p>  YValues.Order = loNone</p><p><b>  end</b></p><p>  object Series2: TLineSeries</p>

30、<p>  Marks.ArrowLength = 8</p><p>  Marks.Visible = False</p><p>  SeriesColor = clBlue</p><p>  Title = 'ym(k)'</p><p>  LinePen.Style = psDot</p>

31、<p>  Pointer.InflateMargins = True</p><p>  Pointer.Style = psSmallDot</p><p>  Pointer.Visible = False</p><p>  XValues.DateTime = False</p><p>  XValues.Name =

32、 'X'</p><p>  XValues.Multiplier = 1.000000000000000000</p><p>  XValues.Order = loAscending</p><p>  YValues.DateTime = False</p><p>  YValues.Name = 'Y

33、9;</p><p>  YValues.Multiplier = 1.000000000000000000</p><p>  YValues.Order = loNone</p><p><b>  end</b></p><p><b>  end</b></p><p&g

34、t;  object Chart2: TChart</p><p>  Left = 396</p><p><b>  Top = 204</b></p><p>  Width = 389</p><p>  Height = 293</p><p>  BackWall.Brush.Colo

35、r = clWhite</p><p>  BackWall.Brush.Style = bsClear</p><p>  Foot.Text.Strings = (</p><p><b>  'k')</b></p><p>  MarginBottom = 0</p><p&g

36、t;  MarginLeft = 0</p><p>  MarginRight = 0</p><p>  MarginTop = 2</p><p>  Title.Text.Strings = (</p><p>  '建模誤差e(k)')</p><p>  LeftAxis.ExactDate

37、Time = False</p><p>  LeftAxis.Grid.Visible = False</p><p>  LeftAxis.Increment = 0.100000000000000000</p><p>  LeftAxis.MinorTicks.Visible = False</p><p>  LeftAxis.Ti

38、cksInner.Visible = False</p><p>  LeftAxis.Title.Caption = 'e(k)'</p><p>  Legend.LegendStyle = lsSeries</p><p>  Legend.ShadowSize = 0</p><p>  View3D = False&

39、lt;/p><p>  BevelInner = bvLowered</p><p>  TabOrder = 1</p><p>  object Series3: TLineSeries</p><p>  Marks.ArrowLength = 8</p><p>  Marks.Visible = False<

40、;/p><p>  SeriesColor = clBlue</p><p>  Title = 'e(k)'</p><p>  Pointer.InflateMargins = True</p><p>  Pointer.Style = psRectangle</p><p>  Pointer.Vi

41、sible = False</p><p>  XValues.DateTime = False</p><p>  XValues.Name = 'X'</p><p>  XValues.Multiplier = 1.000000000000000000</p><p>  XValues.Order = loAscend

42、ing</p><p>  YValues.DateTime = False</p><p>  YValues.Name = 'Y'</p><p>  YValues.Multiplier = 1.000000000000000000</p><p>  YValues.Order = loNone</p>

43、<p><b>  end</b></p><p>  選擇函數(shù)類型的界面如下:</p><p><b>  相關(guān)代碼如下:</b></p><p>  object Label4: TLabel</p><p><b>  Left = 40</b></p&g

44、t;<p><b>  Top = 80</b></p><p>  Width = 48</p><p>  Height = 13</p><p>  Caption = '輸入數(shù)字'</p><p>  Font.Charset = DEFAULT_CHARSET</p>

45、<p>  Font.Color = clWindowText</p><p>  Font.Height = -11</p><p>  Font.Name = 'MS Sans Serif'</p><p>  Font.Style = []</p><p>  ParentFont = False</p

46、><p><b>  end</b></p><p>  object mEdit: TEdit</p><p>  Left = 126</p><p><b>  Top = 28</b></p><p>  Width = 41</p><p>  

47、Height = 24</p><p>  TabOrder = 0</p><p>  Text = 'mEdit'</p><p><b>  end</b></p><p>  object etaEdit: TEdit</p><p>  Left = 258</p&

48、gt;<p><b>  Top = 28</b></p><p>  Width = 41</p><p>  Height = 24</p><p>  TabOrder = 1</p><p>  Text = 'etaEdit'</p><p><b&g

49、t;  end</b></p><p>  object alphaEdit: TEdit</p><p>  Left = 384</p><p><b>  Top = 28</b></p><p>  Width = 41</p><p>  Height = 24</p&

50、gt;<p>  TabOrder = 2</p><p>  Text = 'alphaEdit'</p><p><b>  end</b></p><p>  object Button1: TButton</p><p>  Left = 216</p><p&g

51、t;<b>  Top = 104</b></p><p>  Width = 113</p><p>  Height = 25</p><p>  Caption = '線性函數(shù)1'</p><p>  Font.Charset = DEFAULT_CHARSET</p><p&g

52、t;  Font.Color = clWindowText</p><p>  Font.Height = -11</p><p>  Font.Name = 'MS Sans Serif'</p><p>  Font.Style = []</p><p>  ParentFont = False</p>&l

53、t;p>  TabOrder = 3</p><p><b>  end</b></p><p>  object Button2: TButton</p><p>  Left = 376</p><p><b>  Top = 104</b></p><p>  W

54、idth = 113</p><p>  Height = 25</p><p>  Caption = '差分函數(shù)2'</p><p>  Font.Charset = DEFAULT_CHARSET</p><p>  Font.Color = clWindowText</p><p>  Font

55、.Height = -11</p><p>  Font.Name = 'MS Sans Serif'</p><p>  Font.Style = []</p><p>  ParentFont = False</p><p>  TabOrder = 4</p><p><b>  end

56、</b></p><p>  object Edit1: TEdit</p><p><b>  Left = 40</b></p><p><b>  Top = 104</b></p><p>  Width = 129</p><p>  Height =

57、24</p><p>  TabOrder = 5</p><p><b>  end</b></p><p>  object BitBtn1: TBitBtn</p><p>  Left = 528</p><p><b>  Top = 104</b></p&g

58、t;<p>  Width = 113</p><p>  Height = 25</p><p>  Caption = '非線性函數(shù)3'</p><p>  TabOrder = 6</p><p><b>  end</b></p><p>  確定與退出設(shè)計界

59、面如下:</p><p><b>  相關(guān)代碼如下:</b></p><p>  object OKBtn: TButton</p><p>  Left = 128</p><p><b>  Top = 512</b></p><p>  Width = 73</p

60、><p>  Height = 33</p><p>  Caption = '確定'</p><p>  Default = True</p><p>  ParentShowHint = False</p><p>  ShowHint = True</p><p>  TabO

61、rder = 2</p><p>  OnClick = OKBtnClick</p><p><b>  end</b></p><p>  object BitBtn2: TBitBtn</p><p>  Left = 512</p><p><b>  Top = 512<

62、/b></p><p>  Width = 65</p><p>  Height = 33</p><p>  Caption = '退出'</p><p>  TabOrder = 5</p><p><b>  end</b></p><p>&

63、lt;b>  BP算法的實現(xiàn)</b></p><p>  3.1 BP算法簡介</p><p>  BP算法又稱為誤差反向傳播算法,其學(xué)習(xí)過程可以描述如下:</p><p>  1、工作信號正向傳播:輸入信號從輸入層經(jīng)隱單元,傳向輸出層,在輸出端產(chǎn)生輸出信號,這是工作信號的正向傳播。在信號的向前傳遞過程中網(wǎng)絡(luò)的權(quán)值是固定不變的,每一層神經(jīng)元的狀態(tài)只

64、影響下一層神經(jīng)元的狀態(tài)。如果在輸出層不能得到期望的輸出,則轉(zhuǎn)入誤差信號反向傳播。</p><p>  2、誤差信號反向傳播:網(wǎng)絡(luò)的實際輸出與期望輸出之間差值即為誤差信號,誤差信號由輸出端開始逐層向前傳播,這是誤差信號的反向傳播。在誤差信號的反向傳播的過程中,網(wǎng)絡(luò)的權(quán)值由誤差信號反饋進(jìn)行調(diào)節(jié)。通過權(quán)值的不斷修改使網(wǎng)絡(luò)的實際輸出更接近期望輸出。</p><p><b>  3.2程序

65、實現(xiàn)如下</b></p><p><b>  相關(guān)參數(shù)定義</b></p><p><b>  type</b></p><p>  TForm1 = class(TForm)</p><p>  Chart1: TChart;</p><p>  Chart2:

66、 TChart;</p><p>  Series1: TLineSeries;</p><p>  Series2: TLineSeries;</p><p>  Series3: TLineSeries;</p><p>  OKBtn: TButton;</p><p>  GroupBox1: TGroupBo

67、x;</p><p>  Label1: TLabel;</p><p>  mEdit: TEdit;</p><p>  etaEdit: TEdit;</p><p>  Label2: TLabel;</p><p>  alphaEdit: TEdit;</p><p>  Label

68、3: TLabel;</p><p>  Button1: TButton;</p><p>  Button2: TButton;</p><p>  Label4: TLabel;</p><p>  Edit1: TEdit;</p><p>  Image1: TImage;</p><p&

69、gt;  BitBtn1: TBitBtn;</p><p>  ActionManager1: TActionManager;</p><p>  MainMenu1: TMainMenu;</p><p>  ImageList1: TImageList;</p><p>  FileExit1: TFileExit;</p>

70、<p>  ActionMainMenuBar1: TActionMainMenuBar;</p><p>  BitBtn2: TBitBtn;</p><p>  procedure OKBtnClick(Sender: TObject);</p><p>  procedure ExitBtnClick(Sender: TObject);<

71、/p><p>  procedure FormCreate(Sender: TObject);</p><p>  procedure N3Click(Sender: TObject);</p><p><b>  private</b></p><p>  { Private declarations }</p>

72、;<p><b>  public</b></p><p>  { Public declarations }</p><p><b>  end;</b></p><p>  BP算法實現(xiàn),相關(guān)代碼如下:</p><p>  procedure TForm1.OKBtnClick(S

73、ender: TObject);</p><p>  const L=400;</p><p><b>  var</b></p><p>  u: array[-1..L]of real;</p><p>  y: array[-2..L]of real;</p><p>  ym, e: ar

74、ray[0..L]of real;</p><p>  out1: array[1..3]of real; //輸入層輸出</p><p>  wi, wik1, wik2, dwi: array of array of real; //輸入層至隱含層權(quán)值及其增量</p><p>  wo, wok1, wok2, dwo: array of real; //隱含

75、層至輸出層權(quán)值及其增量</p><p>  net2, out2, df: array of real; //隱含層輸入、輸出,df為S函數(shù)導(dǎo)數(shù)</p><p>  k, i, j, m, n, v: integer;</p><p>  Eta, alpha: real;</p><p>  //學(xué)習(xí)速率、動量項因子</p>

76、<p><b>  begin</b></p><p>  n:=3; m:=StrToInt(mEdit.Text); //輸入層節(jié)點數(shù)n、隱含層節(jié)點數(shù)m</p><p>  setLength(wi,n,m); setLength(wik1,n,m); //動態(tài)數(shù)組(下標(biāo)從0開始)</p><p>  setLength(wik2

77、,n,m); setLength(dwi,n,m);</p><p>  setLength(wo,m); setLength(wok1,m);</p><p>  setLength(wok2,m); setLength(dwo,m);</p><p>  setLength(net2,m); setLength(out2,m); setLength(df,m);

78、</p><p>  eta:=StrToFloat(etaEdit.Text); //從界面提取數(shù)據(jù)</p><p>  alpha:=StrToFloat(alphaEdit.Text);</p><p>  u[-1]:=0; y[-2]:=0; y[-1]:=0;</p><p>  for j:=0 to m-1 do //設(shè)定

79、初始權(quán)值</p><p><b>  begin</b></p><p>  wo[j]:=0.50*randG(0,1);</p><p>  wok1[j]:=wo[j]; //wo(k-1)</p><p>  wok2[j]:=wo[j]; //wo(k-2)</p><p>  for

80、 i:=0 to n-1 do</p><p><b>  begin</b></p><p>  wi[i,j]:=0.50*randG(0,1);</p><p>  wik1[i,j]:=wi[i,j]; //wi(k-1)</p><p>  wik2[i,j]:=wi[i,j]; //wi(k-2)</p

81、><p><b>  end;</b></p><p><b>  end;</b></p><p>  series1.Clear;</p><p>  series2.Clear;</p><p>  series3.Clear;</p><p>  

82、//***************** 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程 ****************</p><p>  v:=strtoint(edit1.Text);</p><p>  for k:=0 to L do</p><p><b>  begin</b></p><p><b>  if v=1<

83、/b></p><p><b>  then</b></p><p><b>  begin</b></p><p><b>  u[k]:=k;</b></p><p>  y[k]:=power(k,1); //系統(tǒng)實際輸出(即期望輸出)</p><

84、;p><b>  end</b></p><p><b>  else</b></p><p><b>  if v=2</b></p><p><b>  then</b></p><p><b>  begin</b><

85、;/p><p>  u[k]:=sin(0.005*2*pi*k);</p><p>  y[k]:=power(u[k-1],5)+(0.8+power(y[k-1],3))/(1+sqr(y[k-1])+power(y[k-2],4));</p><p><b>  end</b></p><p>  else if v

86、=3 then</p><p><b>  begin</b></p><p><b>  u[k]:=k;</b></p><p>  y[k]:=power(k,2)/10000;</p><p><b>  end;</b></p><p>  o

87、ut1[1]:=u[k-1]; out1[2]:=y[k-1];out1[3]:=y[k-2]; //確定網(wǎng)絡(luò)輸入量</p><p>  //計算隱含層輸入輸出及S函數(shù)的導(dǎo)數(shù)</p><p>  for j:=0 to m-1 do</p><p><b>  begin</b></p><p>  net2[j]:=

88、0;</p><p>  for i:=0 to n-1 do</p><p>  net2[j]:=net2[j]+wik1[i,j]*out1[i];</p><p>  out2[j]:=1/(1+exp(-net2[j]));</p><p>  df[j]:=exp(-net2[j])/sqr(1+exp(-net2[j]));&l

89、t;/p><p><b>  end;</b></p><p>  //計算輸出層輸出(即模型輸出) </p><p>  ym[k]:=0; </p><p>  for j:=0 to m-1 do</p><p>  ym[k]:=ym[k]+wok1[j]*out

90、2[j];</p><p>  e[k]:=y[k]-ym[k]; //輸出誤差</p><p>  //隱含層至輸出層權(quán)值的學(xué)習(xí)</p><p>  for j:=0 to m-1 do</p><p><b>  begin</b></p><p>  dwo[j]:=eta*e[k]*out

91、2[j];</p><p>  wo[j]:=wok1[j]+dwo[j]+alpha*(wok1[j]-wok2[j]);</p><p><b>  end;</b></p><p>  //輸入層至隱含層權(quán)值的學(xué)習(xí)</p><p>  for i:=0 to n-1 do</p><p> 

92、 for j:=0 to m-1 do</p><p><b>  begin</b></p><p>  dwi[i,j]:=eta*e[k]*wok1[j]*df[j]*out1[i];</p><p>  wi[i,j]:=wik1[i,j]+dwi[i,j]+alpha*(wik1[i,j]-wik2[i,j]);</p>

93、<p><b>  end;</b></p><p><b>  //更新數(shù)據(jù)</b></p><p>  for j:=0 to m-1 do</p><p><b>  begin</b></p><p>  wok2[j]:=wok1[j]; //wo(k-2

94、)</p><p>  wok1[j]:=wo[j]; //wo(k-1)</p><p>  for i:=0 to n-1 do</p><p><b>  begin</b></p><p>  wik2[i,j]:=wik1[i,j]; //wi(k-2)</p><p>  wik1[i

95、,j]:=wi[i,j]; //wi(k-1)</p><p><b>  end;</b></p><p><b>  end;</b></p><p>  series1.AddXY(k,y[k]); //曲線繪制</p><p>  series2.AddXY(k,ym[k]);</p&

96、gt;<p>  series3.AddXY(k,e[k]);</p><p><b>  end;</b></p><p><b>  end;</b></p><p>  procedure TForm1.ExitBtnClick(Sender: TObject);</p><p>

97、;<b>  begin</b></p><p><b>  close;</b></p><p><b>  end;</b></p><p><b>  實驗結(jié)果與分析</b></p><p>  4.1 線性函數(shù)逼近</p><p

98、>  輸入節(jié)點:8 學(xué)習(xí)速率:0.3 動量因子:0.05</p><p>  輸入節(jié)點:8 學(xué)習(xí)速率:0.5 動量因子:0.05</p><p>  分析:在進(jìn)行BP算法時,學(xué)習(xí)速率并不是取越大越好,如果取得太大,系統(tǒng)逼近的曲線會產(chǎn)生振蕩。一般的說來輸出單元的局部梯度比輸入端的大,可以使前者的學(xué)習(xí)速率小些。另外,有較多輸入端的神經(jīng)元其學(xué)習(xí)速率比有較少的輸入

99、端的神經(jīng)元其學(xué)習(xí)速率小些。</p><p>  4.2 非線性函數(shù)(平方函數(shù))逼近</p><p>  輸入節(jié)點:10 學(xué)習(xí)速率:0.5 動量因子:0.05</p><p>  輸入節(jié)點:10 學(xué)習(xí)速率:0.5 動量因子:0.02</p><p>  分析:在BP算法中,一定的范圍內(nèi)調(diào)整動量因子α可以提高逼近函數(shù)的

100、精度。</p><p>  4.3 差分函數(shù)逼近</p><p><b>  差分函數(shù)模型:</b></p><p>  u[k]:=sin(0.005*2*pi*k);</p><p>  y[k]:=power(u[k-1],5)+(0.8+power(y[k-1],3))/(1+sqr(y[k-1])+power(

101、y[k-2],4));</p><p>  輸入節(jié)點:10 學(xué)習(xí)速率:0.3 動量因子:0.05</p><p>  輸入節(jié)點:39 學(xué)習(xí)速率:0.3 動量因子:0.05</p><p>  分析:在BP算法中,輸入節(jié)點不應(yīng)設(shè)置的太大,否則過大會引起振蕩即網(wǎng)絡(luò)不穩(wěn)定。</p><p><b>  總結(jié)<

102、;/b></p><p>  本設(shè)計使用Delphi 7作為前臺操作界面實現(xiàn)對辨識系統(tǒng)的功能操作。本辨識系統(tǒng)實現(xiàn)了BP算法逼近函數(shù)曲線的基本功能,經(jīng)過調(diào)試運行,表明該系統(tǒng)具有可行性和可擴充性。但系統(tǒng)還有待進(jìn)一步的完善與規(guī)劃,操作系統(tǒng)還有待于進(jìn)一步的改善,使系統(tǒng)更加高效,更加人性化。</p><p>  通過幾周的設(shè)計練習(xí),從系統(tǒng)的需求分析開始,到概念設(shè)計,邏輯設(shè)計,再到最后的系統(tǒng)實施

103、與維護(hù),一步步走下來雖然感覺有點累,但每一步都獲益匪淺。認(rèn)認(rèn)真真完成每一步,直到完成整個系統(tǒng)之后,忽然有一種破繭而出的感覺。從這個設(shè)計中,不僅僅從實踐中鞏固提高了數(shù)據(jù)庫的相關(guān)知識,體會了設(shè)計一個系統(tǒng)的過程,更學(xué)到了一種設(shè)計分析的思想,一種能力。</p><p>  從系統(tǒng)的需求分析開始,到后來的每一步,都需要圍繞著一個整體的思路,一個工程的概念進(jìn)行,需要逐層的將系統(tǒng)一步步分解,細(xì)化。然后,分別實現(xiàn)每一個功能,每一

104、個模塊,最后將全部模塊整合起來,系統(tǒng)便成型了。在這幾周的課程設(shè)計中,遇到了各種各樣的問題,特別是delphi實現(xiàn)BP算法,以及與系統(tǒng)前臺的實現(xiàn)階段。由于第一次接觸相關(guān)的軟件,所以使用起來相當(dāng)?shù)某粤?,幾乎每一步都可能發(fā)生錯誤。為了解決這樣那樣的問題,我翻閱了不同的書籍,在網(wǎng)上搜索了大量的資料,一個一個的將問題解決掉。在這期間,無形中鍛煉了我分析問題,解決問題的能里,鍛煉了我自主學(xué)習(xí)的能力。</p><p>  在工

105、程訓(xùn)練期間,我體會到了學(xué)習(xí)的樂趣,體會到了付出之后獲得回報的喜悅與欣慰。感謝老師的大力幫助和支持,感謝我的同學(xué)與朋友,在我遇到各種各樣復(fù)雜問題的時候,給與我鼓勵和幫助。</p><p>  參考文獻(xiàn) (References)</p><p>  [1]劉正元 《Delphi 程序設(shè)計與應(yīng)用教程》 中國水利水電出版社 2005</p><p>  [2]許潔舟,林偉

106、鵬,林勝雄,來賓 《Delphi7 程序設(shè)計與實例》 冶金工業(yè)出版社 2003</p><p>  [3]呂偉臣,霍言,高小山 《Delphi2005入門與提高》 清華大學(xué)出版社 2006</p><p>  [4]周志德,張燕 《Delphi程序設(shè)計》 高等教育出版社 2004</p><p>  [5]Fredrick M.Ham Ivica Kostanic

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論