摘 要:鑒于豬肉市場的多變和不可預測性,對當前導致豬肉價格變動等信息進行收集、對未來豬肉價格走勢進行初步分析。本系統以研究國內豬肉價格波動為應用課題,開發了基于C#.NET和MATLAB接口的神經網絡預測系統。利用BP神經網絡逼近非線性映射能力來進行豬肉價格預測是可行的。神經網絡在非線性系統的預報方面有著十分廣泛的應用背景。
關鍵詞:預測;神經網絡;接口技術
[中圖分類號]:TP391.9 [文獻標識碼]:A
[文章編號]:1002-2139(2013)-3--01
本系統以研究國內豬肉價格波動為應用課題,開發了基于C#.NET和MATLAB接口的神經網絡預測系統。為了提高軟件預測系統的開發效率和精度,研究誤差反向傳播神經網絡在MATLAB2008b環境下的實驗方法。建立了三層反向傳播神經網絡模型,選用tansig()和purelin()作為隱層傳遞函數和輸出層傳遞函數,采用了梯度下降法進行網絡訓練并對其進行仿真。仿真后,網絡輸出值與測試數據較為吻合,達到了預設精度要求,證明訓練后的BP網絡是可行的。探討了MATLAB與C#.NET開發平臺的接口技術,能成功實現C#.NET與MATLAB神經網絡工具箱的調用。完成了數據庫、C#和MATLAB之間的數據交互,成功地提高軟件使用效率。結果表明,利用BP神經網絡逼近非線性映射能力來進行豬肉價格預測是可行的。
作為本系統的核心部分,BP神經網絡是一種多層前饋型神經網絡,其神經元的傳遞函數是S型函數,輸出量為0到1之間的連續量,它可以實現從輸入到輸出的任意非線性映射。由于權值的調整采用反向傳播學習方法,因此也常稱其為BP網絡。目前,在人工神經網絡的實際應用中,絕大部分的神經網絡模型都是采用BP網絡及其變化形式。它也是前向網絡的核心部分,體現了人工神經網絡的精華。
BP神經網絡主要運用以下四個方面。
函數逼近:用輸入向量和相應的輸出向量訓練一個網絡以逼近一個函數。模式識別:用一個待定的輸出向量將它與輸入向量聯系起來。分類:把輸入向量所定義的合適方式進行分類。數據壓縮:減少輸出向量維數以便于傳輸或存儲。前饋網絡通常有一個或多個隱層中的神經網絡。
本系統采用C/S (Client/Server,客戶機/服務器)模式進行開發。C/S模式又稱C/S結構,是軟件系統體系結構的一種。C/S模式簡單地講就是基于企業內部網絡的應用系統。該結構能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快。
本系統數據庫使用了3個數據表,記錄了影響豬肉價格的因素的信息,分別是:訓練數據表、測試數據表、導出數據表。其中基本信息表是用來保存影響豬肉價格因素的數據,用于數據的導入以及訓練神經網絡使用;測試信息表主要用來記錄測試數據,用于系統的仿真預測;而目標信息表則用來對預測結果進行導出及保存。
本系統使用.NET提供了ADO.NET組件進行數據庫的訪問和操作。主要功能是數據庫的連接及訪問。建立一個數據連接對象也就是建立了一條通向數據庫的管道。要建立一個數據庫連接我們需要給數據庫連接對象足夠的關于它要連接的數據庫的信息,在這里因為使用的是Access數據庫,基本信息包括如連接驅動的信息以及數據庫的路徑等。數據庫管理的主要功能便是實現數據的輸入、刪除及瀏覽等基本功能。從而提高數據導入效率而編寫的模塊。
首先研究確定影響豬肉價格的主要因素,聯系實際情況,導致價格波動的可以歸納成3個主要因素;豬肉市場供給因素;豬肉市場需求因素;外在因素。
(1) 影響豬肉供給的因素:疫情;豬肉價格周期性波動規律;養殖成本。
(2) 影響主場需求的因素:城鄉居民收入快速增長加速了肉價上漲;豬肉的替代作嘔那個導致需求增長。
(3) 外在因素:包括國家宏觀經濟運行環境,政府宏觀調控不當以及不合理的行業管理等。
在影響價格的三個因素中,主要考慮能對豬肉走勢產生短期影響的因素進行量化分析。豬肉價格的走勢波動受到外在因素影響,市場需求和供給等方面的影響。本次研究選擇了居民可支配收入、CPI、毛豬價格、生豬存欄、仔豬價格、主要飼料價格等六個代表性的指標。在這些指標中,居民可支配收入主要是從需求方面對豬肉價格施加影響;CPI則影響各個方面,既反映了宏觀經濟走勢,也影響養豬成本,和消費需求;毛豬價格的高低則直接關系著豬肉價格;生豬存欄量的多少直接決定了未來一段時間市場上可以供給的豬肉數量是多少;主要飼料價格和仔豬價格都市通過對養豬成本的直接影響來對未來豬肉市場價格產生影響的。
本次數據選取2009-2010年成都市區每月平均的居民可支配收入、CPI、毛豬價格、豬肉價格、仔豬價格、生豬存欄數、主要飼料價格(玉米、豆粕)為樣本數據。確定樣本數據后我們將數據分為兩組,將除豬肉價格外的其他頭20個月的數據作為訓練輸入,得到6*20的訓練輸入矩陣,后4個月的數據作為測試數據,得到6*4的測試矩陣。將豬肉價格的前20個月單獨作為訓練輸出數據,得到1*20的訓練輸出矩陣。而豬肉價格的后4個月則作為測試比對數據。
接下來,先將原始樣本數據預處理,進行歸一化。以提高神經網絡的收斂速度,增加精度。
當仿真后的數據和數據庫中的數據出現波動,系統就會預警。當預測價格是為數據庫中最后輸入的10條豬肉價格價格平均值的正負15%的時候,系統便會給出預警提示了。
先寫一個方法用來讀取數據庫中后10條記錄的值,SQL語句并不能直接完成此任務,所以我們需要先用select top 10 * from Trains order by Id desc語句顯示出后10條語句,然后再將其豬肉價格保存到數組之中,累加后方可求出平均值。
本文的創新點研究了基于C#.NET的MATLAB引擎技術,成功調用MATLAB神經網絡工具箱,設計并實現BP網絡對國內豬肉價格的預測,是用戶從大量繁瑣的數學運算中解脫了出來,極大提高了編程效率。不僅如此,還可以優化BP網絡,以達到更高的預測精度。利用了C#進行用戶應用程序界面設計的開發的優勢達到了良好的效果。