標籤:
連續型Hopfield在matlab中沒有直接的工具箱,所以我們們根據Hopfield給出的連續行演算法自行編寫程式。本文中,以求解旅行商
問題來建立Hopfield網路,並得到解,但是該解不一定是最優解,用Hopfield得到的解可能是次優解,或沒有解。直接上問題:
8個城市的座標:
0.100000000000000 0.100000000000000
0.9000000000000000.500000000000000
0.9000000000000000.100000000000000
0.4500000000000000.900000000000000
0.9000000000000000.800000000000000
0.5000000000000000.500000000000000
0.1000000000000000.450000000000000
0.4500000000000000.100000000000000
求這8個城市的旅行商解。
在求解前,先簡單引入一下連續性Hopfield網路的特點。
一般神經網路(RBF或BP)是單項的,而Hopfield網路特點在於有反饋,而最終得到的結果是一個網路的收斂值。
對於一個Hopfield網路來說,關鍵是在於確定它在穩定條件下的權係數。
ps:說白了,神經網路就是不斷的改變權係數來逼近樣本。
這裡我們不介紹Hopfield網路的物理實現,因為該網路是一種模電物理模型,具體硬體知識我也不怎麼清楚。我們只需要關心
兩個問題:
1,單個神經元輸入輸出是什麼(或者說怎麼變化)
2,整個網路的變化狀態(能量)
對於一個N節點的CHNN模型來說,其神經元狀態變數的動態變化可用下述非線性微分方程組來描述
這個等式來自於Ui節點的電流,流入節點電流等於流出。Vi表示電壓的變化。
這就是我們關心的能量函數。
這兩個等式看不懂也沒什麼大問題,我們只要知道根據這兩個等式推出的結論就可以。
結論:該網路是逐漸穩定的,隨著時間推移,網路的能量E隨著減小的方向運動,其最終狀態就是E的極小值。
這裡給出證明:
觀察E的變化趨勢,即求,而,其中
所以,不難發現,E的變動率是遞減的,即上述結論正確。
根據連續Hopfield天生的特點,我們不禁想到如果把一個最佳化問題的目標函數轉換成網路的能量函數,把問題的變數對應於網路的狀態,那麼Hopfield神經網路就能夠用於解決最佳化組合問題。
接下來給出演算法步驟:
這裡需要反覆迭代計算4~8步
這裡具體代碼見URL:http://files.cnblogs.com/files/panpansky/TSP_hopfield.rar
運算結果分析:
圖一 圖二 圖三
圖一表示城市1~8分別進行的順序:4-6-7-1-8-3-2-5,圖二是具體的路線圖,圖三表示能量的變化,其實在迭代至30次左右,能量已經趨於平穩。
以上代碼和資料均來自http://www.ilovematlab.cn/thread-44738-1-1.html。
TSP旅行商問題的Hopfield求解過程