譚樹東,譚立獻(.遼寧省建平縣氣象局,遼寧朝陽400;.遼寧省東港市氣象局,遼寧丹東83000)
遼西建平地區耕地總計14.6萬hm2,平均每人擁有耕地0.3 hm2,位居遼寧省第一,是我國農村人均耕地占有量的1倍,主要經濟作物為馬鈴薯、玉米等,氣候條件屬于半濕潤、半干旱季風型大陸性氣候,雨熱同期,近10年平均降水量615.7 mm。由于夏季溫度較高且降水不足,常需進行人工增雨工作,該地區氣象工作對農業生產有著重要影響。
現代氣象工作主要以氣象觀測的數據為主要依據,其中地面氣象觀測數據的主要來源是地面氣象自動站。自動氣象站是一種通過傳感器進行氣象數據采集,然后通過通信網絡進行數據實時傳輸或存儲起來供以后使用,其目的是節省人力和測量更為全面的氣象數據,然而由于氣象觀測的環境要求,其地理位置分布較廣且基本上均處于偏僻地區,由于環境因素和電子儀器的敏感性其經常出現問題,需要定期對其進行巡視維護,以保證其正常運行。筆者在此以遼西建平地區的氣象自動站為例,提出了通過遺傳算法建立數學模型并通過MATLAB數學軟件進行計算的解決辦法。
建平縣內一共擁有15個自動氣象觀測站,其中14個分布在鄉下農村地區,日常巡視要求每一個自動站均要進行巡視并維修有問題的自動氣象站,這是一個典型的TSP問題(TSP問題就是尋找一條最短的遍歷n個城市的最短路徑)。
遺傳算法是通過自然界的生物進化規律演化而來的隨機化搜索方法,算法通過自然選擇、遺傳、變異等步驟,使每代個體的適應度逐漸增強,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱并行性和更好的全局尋優能力,采用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則,遺傳算法在解決TSP問題中有著其他算法沒有的優勢[1]。標遺傳算法包括群體的初始化、選擇、交叉、變異操作。通過遺傳算法解決TSP問題的主要步驟可描述如下。
1.1 初始化 隨機產生一組初始個體構成的初始種群,設置進化代數計數器i=0,設置最大進化代數I,隨機生成n個個體作為初始群體Z(0)。
1.2 個體評價 計算群體Z(i)中各個個體的適應度。
1.3 選擇運算 將選擇算子作用于群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。
1.4 交叉和變異運算 按交叉概率Zc執行交叉操作,再按變異概率Zn執行變異操作。
1.5 判斷是否終止循環 判斷算法的收斂性是否符合要求,如果i=I,輸出遺傳進化過程中具有最大適應度的個體作為最優解,否則重復步驟“1.2”[2]。
2.1 數據收集與坐標轉換 通過GPS定位得到建平縣23個自動氣象站的經度、緯度,通過軟件轉化成平面的X、Y坐標,結果如表1所示。
2.2 Matlab 編程
2.2.1 數據輸入與種群初始化。矩陣defaultConfig.xy儲存的是個城市的坐標(設維護人員出發點的坐標為(0,0)),且創建一個全新的種群。代碼如下:

2.2.2 距離矩陣和適應度函數。距離矩陣使用一個n×n階矩陣pop存儲,pop(i,j)代表城市 i和城市j之間的距離。pop(i,j)=sqrt((Xi-Xj)2+(Yi-Yj)2)在該問題的求解中,用距離的總和來衡量適應度,距離的總和越大,則適應度越小,進而研究得到的解是否是最優解。每個個體(每條路徑距離)總和的計算公式如下:

2.2.3 選擇操作。選擇操作的目的是為了在當前的種群中選出優良的個體,讓他們作為父代產生適應度更高的子代個體。代碼如下:



表1 自動站坐標
2.2.4 交叉操作。群體中的每個個體之間均以一定的概率p1交叉,即2個個體從各自字符串的某一位置(一般是隨機確定)開始互相交換,這類似生物進化過程中的基因分裂與重組。如假設2個父代個體x1、x2分別為x1=0100110、x2=1010001,從這2個個體的第2位開始交叉,交叉完成后得到2個新的子代個體 y1、y2分別為y1=0100101、y2=1010010,這樣2個子代個體就分別具有了2個父代個體的一些特征。利用交叉操作可以由父代個體在子代組合成具有更高適應度的新個體。Matlab實現步驟如下:2.2.5 變異操作。基因突變情況普遍的存在于生物進化過程當中。變異是指父代中個體的每一位均以同一概率p2翻轉,即由“1”變為“0”,或由“0”變為“1”。遺傳算法所具有的變異性可以使求解過程能夠隨機地搜索到最優解可能存在的整個空間,因此可以在一定程度上求得全局最優解。這一部分的代碼如下:



2.3 Matlab求解 通過Matlab運算,發現經過4 600次遺傳之后最優路徑的值不會再發生特別大的變化(圖1),最后經過4 637次的遺傳之后最終得到一條最優路徑0-23-15-19-7-13-1-5-3-11-4-12-2-10-14-17-22-6-8-16-21-9-18-20,即本站-昌隆-老官地-沙海-三家-奎德素-太平莊-八家-黑水-熱水-哈拉道口-燒過營子-廿家子-馬場-羅福溝-楊樹嶺-張家營子-青松嶺-喀喇沁-榆樹林子-朱碌科-深井-青峰山-小塘,基本路徑如圖2所示。

圖1 經過n代遺傳之后的最優解大小
該研究通過建立遺傳算法的數學模型,并通過MATLAB軟件求解的方法給出了一條遼西建平地區氣象自動站巡視維護的最佳路徑,能夠提升自動站維護人員的工作效率,減少日常維護的消耗開支,為自動站巡視問題提供了理論上的參考,在實際應用中有很大的參考意義。

圖2 通過遺傳算法得到的最短路徑圖
[1]洪瑋.基于實例的歸納學習在遺傳算法策略優選中的應用研究[D].西安:西安理工大學,2010.
[2]百度文庫.遺傳算法實例[EB/OL].http://wenku.baidu.com/view/1e27d0ed6294dd88d0d26bff.html.