王久興,劉介丹,陳秀敏
(河北科技師范學院,河北 秦皇島,066600)
農業專家系統是運用人工智能技術,匯集農業知識和專家經驗,采用適宜的知識表示技術和推理策略,為生產及管理者提供咨詢服務的計算機軟件,已在現在農業生產上得到了廣泛的應用,對推動農業發展發揮了重要作用[1~3]。蔬菜生產關系到國計民生,正確診斷與防治病蟲害對提高種植效益,獲得無公害產品尤為重要。為此,筆者曾研制了蔬菜病蟲害輔助診斷與防治系統[4]。而智能蔬菜病蟲害診斷與防治專家系統則是在此基礎上,依托生產實踐經驗、植保知識和相關科研成果,構建知識庫,通過優化結構設計和友好的人機界面,幫助用戶對蔬菜病蟲害做出正確診斷,并提供相應的防治方法。
智能蔬菜病蟲害診斷與防治專家系統采用C#語言、在.NET3.5環境下開發,系窗體應用程序,采用C/S架構,數據庫可以是Access,Sql Server,Oracle其中的任一種,數據庫連接組件采用ADO.NET中的OLEDB數據提供程序。之所以采用窗體應用程序,是因為數據庫中有大量的圖片信息,需要有較高的采集效率和較快的顯示響應速度。
專家系統需要有大量數據的支撐,因此決定了此應用程序是以數據為中心的系統。本系統采用分層的組件設計思想,分為DB層、DTO層、BL層和UI層,同時有一個Utils自定義工具組件。每一層都是一個單獨的程序集組件,與其它層可最大程度地分離,同時通過對此層所對應的程序集的引用來調用此層中的功能,每一層都是一個單獨的類庫。其中,DB層為數據訪問層,完成對數據庫的直接數據操縱,采用的系統類庫是OLEDB數據提供程序,位于System.Data.OleDb命名空間,可以連接和操縱Access,Sql Server,Oracle等多種數據庫,最大程度地滿足用戶對于數據庫的擴展性要求。DTO層為數據傳輸對象層,與數據庫的各個表結構相對應,用來獲取表結構如字段和關系的信息,同時派生出BL層。BL層是業務邏輯層,用來處理系統所需的基礎數據,調用DB層的數據訪問功能,從而實現各個數據表對應的數據的業務邏輯的執行,供用戶界面層直接調用,實現用戶界面層與業務邏輯層的分離,從而便于維護、擴展以及分布式部署。UI層為用戶界面層,與用戶交互,采用窗體形式,其后的控件的事件過程代碼調用BL層的功能。Utils層為工具層,為公共的函數庫,完成從數據庫中讀取圖片、向數據庫中存儲圖片以及讀取、設置數據庫的連接字符串、密碼的加密傳輸等公共的操作。
系統分為智能診斷、瀏覽查詢、推薦農資、數據管理4個主模塊。其中數據管理是基礎模塊,為系統提供基礎數據的組織、錄入、管理、存儲,其余3個模塊是應用模塊。數據管理模塊又分為蔬菜信息管理、病蟲害信息管理、農資信息管理、蔬菜病蟲害管理、特征圖片管理、治療方案管理、角色管理、用戶管理8個模塊(圖1)。

圖1 智能蔬菜病蟲害診斷與防治專家系統結構
采用ADO.NET中的OLEDB數據提供程序訪問數據庫。當UI層以數據網格形式操縱數據時,采用的是無連接的適配器訪問模式,即使用數據適配器DataAdapter對象直接填充到數據集之中,然后將DataGrid數據綁定到此數據集的一個數據表之上,從而完成數據的顯示工作。對于此數據源的添加、刪除、修改等更新操作,由數據適配器自動記錄,然后由程序調用DataAdapter的update方法把數據的更新操作回寫到數據庫之中。其中用到的主要對象有OleDbConnection,OleDbCommand,OleDbDataAdapter,DataSet,OleDbCommandBuilder。當UI層操作數據顯示功能時,采用有連接的形式,主要使用OleDb-Connction,OleDbCommand,OleDbDataReader等3 個對象完成。
智能診斷模塊按照種類對蔬菜信息分類,用樹形圖和常用按鈕項進行組織,其中常用按鈕項動態配置,滿足不同用戶個性需求。當用戶點擊某蔬菜結點或按鈕時,特征圖片區就會顯示此蔬菜對應的所有特征癥狀圖片,每張圖片配有簡短文字說明,對圖片可進行縮放操作。用戶通過比對,對特征圖片進行勾選。系統根據在數據管理模塊中錄入的基礎數據進行計算和判斷,從而推導出病蟲害名稱。用戶繼續點擊相應的“詳細信息”按鈕查看該病蟲害的所有癥狀圖片、文本以及治療方案。
在瀏覽查詢模塊中,按照蔬菜及病蟲害的分類,瀏覽和查詢各種蔬菜病蟲害的圖片和文字內容。分3級顯示,第1級為病蟲害種類,分為侵染性病害、生理性病害、蟲害3類,第2級為蔬菜種類,分為瓜類、茄果類、豆類、白菜類、甘藍類、蔥蒜類、根菜類、薯芋類等12類,第3級為具體的蔬菜病蟲害。
每種蔬菜的侵染性病害數據內容分圖片和文字兩部分,圖片內容包括不同發病時期(前期、中期、后期)和不同發病部位(根、莖、花、葉、果)的發病癥狀圖片和對應的病原形態學顯微照片,文本內容為該病害的英文名稱、別名、癥狀描述、病原、發病規律、防治方法等詳細信息。
每種蔬菜生理性病害的圖片內容包括不同發病時期(前期、中期、后期)和不同發病部位(根、莖、花、葉、果)的發病癥狀圖片,文本內容為該病害的英文名稱、別名、癥狀描述、發病原因、防治方法等詳細信息。
每種蔬菜蟲害的圖片內容包括蔬菜不同部位(根、莖、花、葉、果)的受害癥狀以及害蟲不同蟲態(卵、幼蟲、蛹、成蟲)的形態圖片,文本內容為該害蟲的英文名稱、別名、拉丁文學名、分類、為害特點、形態特征、生活習性、發生規律、防治方法等詳細信息。
在瀏覽查詢界面,蔬菜病蟲害的顯示分為詳細樹形圖列表和常用蔬菜病蟲害按鈕兩種形式,且常用按鈕是可以動態配置的。對所有圖片可以進行放大、縮小、全屏顯示、移動等操作,便于用戶觀察癥狀細節。可以通過點擊按鈕,查看此病蟲害的文本,并可打印文本,可以瀏覽推薦農藥。可以按照蔬菜病蟲害的名字檢索相應的信息。
農資層次信息同樣以樹形圖的形式組織,當點擊每個結點時,其所下轄的具體農資便會顯示在數據網格中,同時與此種農資相關的治療方案也會呈現出來。點擊每一種農資,即可查看相應的圖片和文本介紹。
數據管理模塊分8個子模塊(圖2)。
蔬菜信息管理模塊,下轄蔬菜類別、具體蔬菜信息的添加、刪除、修改等操作。
病蟲害信息管理模塊,下轄病蟲害類別、具體病蟲害信息的添加、刪除、修改等操作。
農資信息管理模塊,完成農資層次樹的建立、修改、刪除操作,實現農資層次的無限擴展,適合于任一形式的層次存儲結構,完成對農資的添加、刪除、修改等操作,同時存取此農資對應的圖片和文本數據信息。農資的層次關系是一個樹形的多級不遞歸且層次確定的數據結構,層次下面有若干子層,子層下面又再分為若干次一級子層,從而便于程序的擴展性,當刪除某一層時,下面的所有子層(包括直接子層和間接子層)也會被遞歸刪除。這樣的結構是建立在數據庫某個表結構中的,對于每一條記錄,有ID,Name,ParentID幾個關鍵字段,ID是自動遞增數字,也是主鍵,Name是農資的名稱,ParentID是其直接父級ID號,即此表的ID既是主鍵也是外鍵,當某一條記錄是最高層時,其ParentID設為-1。
蔬菜病蟲害模塊,由蔬菜和病蟲害信息依照“多對多”的關系組合而成,抽取各自的主鍵,形成蔬菜病蟲害信息表,完成對其添加、刪除、修改等的操作。同時,與此具體蔬菜病蟲害相關聯的圖片數據和文本數據被錄入到數據庫中,實現對圖片數據和文本數據的添加、刪除、修改等的操作。其中,圖片輸入的基本流程為,將圖片從文件流中讀到字節數組中,然后將字節數組中的數據再讀到數據庫中,因此要為文件建立1個文件流,用文件流的Read()方法將該文件的數據讀入本地的字節數組之中。
特征圖片管理模塊,主要完成特征圖片的設置。管理由發病部位如葉、花、果、莖、根以及蟲態如卵、幼蟲、蛹、成蟲等構成的特征類,實現對這些特征類的添加、刪除、修改等操作。并對圖片信息進行分類,對特征類所下轄的圖片信息實現添加、刪除、修改等的操作。只記錄圖片的主鍵信息,不重復存取圖片數據。
治療方案管理模塊,設置已錄入農資與蔬菜病蟲害的對應關系,農藥和蔬菜病害之間是“多對多”關系,并實現對治療方案的添加、刪除、修改等操作。
角色管理模塊,將特定的角色與一組特定的權限相關聯,當某個用戶從屬于某個角色時,即擁有與該角色相對應的權限。本系統充分使用了.NET之中的反射機制,權限控制嚴格、分配細致,能夠通過設置將角色所對應的權限細致到每一個按鈕或每一個菜單項,從而隨意控制用戶使用某個特定控件的權利,而該控件的事件過程就執行了程序中的一定的邏輯,對控件的使用權就意味著是否有執行程序中某一個功能模塊的權利,從而達到控制權限的目的。所使用的數據庫的表有Users,Roles,Priveleges,Functions,用戶登錄后,查詢它所屬的角色號,由角色號查詢Privelegs表,從而得到能夠控制的功能號(funID),由funID號確定此邏輯功能是由系統中的哪些控件的事件處理程序來實現的,然后把控件的名字和所屬窗體名字保存到一個全局的集合之中,每當窗體加載時,根據集合中保存的控件的信息來決定此窗體中的各控件是否可用。
用戶管理模塊,執行添加、刪除、修改用戶的功能。執行用戶注銷功能,使當前用戶退出,重新回到數據管理的登錄窗口。

圖2 智能蔬菜病蟲害診斷與防治專家系統的數據管理界面
農業專家系統的最終使用效果,主要取決于如何解決計算機技術與農業知識的結合問題[5,6]。本系統大量采集田間實拍照片,總結實踐經驗,整合科研成果,并根據蔬菜病蟲害的發病特點和規律,構建了大型知識庫,通過獨特的特征圖片比對等技術,實現了對蔬菜病蟲害的瀏覽、查詢、診斷、防治等多種功能。目前,該系統已在全國30多個省、市、自治區得到應用。
由于本系統是以圖片庫為支持的,要求瞬間從數據庫中讀取幾十乃至幾百張圖片,需要解決占用大量內存的問題,雖然采用了一定的方法,但仍無完美的解決方案。另外,對于圖像的模擬識別及其與植物樣本匹配等智能性問題,還有待進一步研究[7,8]。
[1]李朝東,崔國賢,盛暢,等.農業專家系統的發展概況與展望[J].農業網絡信息,2009(2):4-7,12.
[2]王霓,張艷榮,遲雨佳.東北地區速生豐產林病蟲害專家系統的設計與實現[J].北京林業大學學報,2009,31(增刊2):27-30.
[3]陳步英,胡利平.棉花病蟲害專家系統的構建[J].農機化研究,2010(11),146-149.
[4]賀桂欣,王久興,李卓,等.蔬菜病蟲害輔助診斷與防治系統VPS的構建[J].河北科技師范學院學報,2005,19(3):57-58.
[5]高天琦,金寶石.基于WEB的大豆病蟲害專家系統構建[J].黑龍江八一農墾大學學報,2009,21(5):65-68.
[6]劉任,劉杰,黃建民,等.基于Web的植物病蟲害專家系統的設計與應用[J].天津農業科學,2012,18(3):95-98.
[7]孫敏,姚海燕.園藝植物專家系統研究概況與發展趨勢[J].安徽農業科學,2012,40(2):1 213-1 216.
[8]張葳,楊春雨.基于ASP.NET的玉米病蟲害專家系統研究[J].黑龍江科技信息,2012(3):68.