譚樹東,譚立獻(xiàn)(.遼寧省建平縣氣象局,遼寧朝陽400;.遼寧省東港市氣象局,遼寧丹東83000)
遼西建平地區(qū)耕地總計14.6萬hm2,平均每人擁有耕地0.3 hm2,位居遼寧省第一,是我國農(nóng)村人均耕地占有量的1倍,主要經(jīng)濟(jì)作物為馬鈴薯、玉米等,氣候條件屬于半濕潤、半干旱季風(fēng)型大陸性氣候,雨熱同期,近10年平均降水量615.7 mm。由于夏季溫度較高且降水不足,常需進(jìn)行人工增雨工作,該地區(qū)氣象工作對農(nóng)業(yè)生產(chǎn)有著重要影響。
現(xiàn)代氣象工作主要以氣象觀測的數(shù)據(jù)為主要依據(jù),其中地面氣象觀測數(shù)據(jù)的主要來源是地面氣象自動站。自動氣象站是一種通過傳感器進(jìn)行氣象數(shù)據(jù)采集,然后通過通信網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)實(shí)時傳輸或存儲起來供以后使用,其目的是節(jié)省人力和測量更為全面的氣象數(shù)據(jù),然而由于氣象觀測的環(huán)境要求,其地理位置分布較廣且基本上均處于偏僻地區(qū),由于環(huán)境因素和電子儀器的敏感性其經(jīng)常出現(xiàn)問題,需要定期對其進(jìn)行巡視維護(hù),以保證其正常運(yùn)行。筆者在此以遼西建平地區(qū)的氣象自動站為例,提出了通過遺傳算法建立數(shù)學(xué)模型并通過MATLAB數(shù)學(xué)軟件進(jìn)行計算的解決辦法。
建平縣內(nèi)一共擁有15個自動氣象觀測站,其中14個分布在鄉(xiāng)下農(nóng)村地區(qū),日常巡視要求每一個自動站均要進(jìn)行巡視并維修有問題的自動氣象站,這是一個典型的TSP問題(TSP問題就是尋找一條最短的遍歷n個城市的最短路徑)。
遺傳算法是通過自然界的生物進(jìn)化規(guī)律演化而來的隨機(jī)化搜索方法,算法通過自然選擇、遺傳、變異等步驟,使每代個體的適應(yīng)度逐漸增強(qiáng),其主要特點(diǎn)是直接對結(jié)構(gòu)對象進(jìn)行操作,不存在求導(dǎo)和函數(shù)連續(xù)性的限定;具有內(nèi)在的隱并行性和更好的全局尋優(yōu)能力,采用概率化的尋優(yōu)方法,能自動獲取和指導(dǎo)優(yōu)化的搜索空間,自適應(yīng)地調(diào)整搜索方向,不需要確定的規(guī)則,遺傳算法在解決TSP問題中有著其他算法沒有的優(yōu)勢[1]。標(biāo)遺傳算法包括群體的初始化、選擇、交叉、變異操作。通過遺傳算法解決TSP問題的主要步驟可描述如下。
1.1 初始化 隨機(jī)產(chǎn)生一組初始個體構(gòu)成的初始種群,設(shè)置進(jìn)化代數(shù)計數(shù)器i=0,設(shè)置最大進(jìn)化代數(shù)I,隨機(jī)生成n個個體作為初始群體Z(0)。
1.2 個體評價 計算群體Z(i)中各個個體的適應(yīng)度。
1.3 選擇運(yùn)算 將選擇算子作用于群體。選擇的目的是把優(yōu)化的個體直接遺傳到下一代或通過配對交叉產(chǎn)生新的個體再遺傳到下一代。
1.4 交叉和變異運(yùn)算 按交叉概率Zc執(zhí)行交叉操作,再按變異概率Zn執(zhí)行變異操作。
1.5 判斷是否終止循環(huán) 判斷算法的收斂性是否符合要求,如果i=I,輸出遺傳進(jìn)化過程中具有最大適應(yīng)度的個體作為最優(yōu)解,否則重復(fù)步驟“1.2”[2]。
2.1 數(shù)據(jù)收集與坐標(biāo)轉(zhuǎn)換 通過GPS定位得到建平縣23個自動氣象站的經(jīng)度、緯度,通過軟件轉(zhuǎn)化成平面的X、Y坐標(biāo),結(jié)果如表1所示。
2.2 Matlab 編程
2.2.1 數(shù)據(jù)輸入與種群初始化。矩陣defaultConfig.xy儲存的是個城市的坐標(biāo)(設(shè)維護(hù)人員出發(fā)點(diǎn)的坐標(biāo)為(0,0)),且創(chuàng)建一個全新的種群。代碼如下:
2.2.2 距離矩陣和適應(yīng)度函數(shù)。距離矩陣使用一個n×n階矩陣pop存儲,pop(i,j)代表城市 i和城市j之間的距離。pop(i,j)=sqrt((Xi-Xj)2+(Yi-Yj)2)在該問題的求解中,用距離的總和來衡量適應(yīng)度,距離的總和越大,則適應(yīng)度越小,進(jìn)而研究得到的解是否是最優(yōu)解。每個個體(每條路徑距離)總和的計算公式如下:
2.2.3 選擇操作。選擇操作的目的是為了在當(dāng)前的種群中選出優(yōu)良的個體,讓他們作為父代產(chǎn)生適應(yīng)度更高的子代個體。代碼如下:
表1 自動站坐標(biāo)
2.2.4 交叉操作。群體中的每個個體之間均以一定的概率p1交叉,即2個個體從各自字符串的某一位置(一般是隨機(jī)確定)開始互相交換,這類似生物進(jìn)化過程中的基因分裂與重組。如假設(shè)2個父代個體x1、x2分別為x1=0100110、x2=1010001,從這2個個體的第2位開始交叉,交叉完成后得到2個新的子代個體 y1、y2分別為y1=0100101、y2=1010010,這樣2個子代個體就分別具有了2個父代個體的一些特征。利用交叉操作可以由父代個體在子代組合成具有更高適應(yīng)度的新個體。Matlab實(shí)現(xiàn)步驟如下:2.2.5 變異操作?;蛲蛔兦闆r普遍的存在于生物進(jìn)化過程當(dāng)中。變異是指父代中個體的每一位均以同一概率p2翻轉(zhuǎn),即由“1”變?yōu)椤?”,或由“0”變?yōu)椤?”。遺傳算法所具有的變異性可以使求解過程能夠隨機(jī)地搜索到最優(yōu)解可能存在的整個空間,因此可以在一定程度上求得全局最優(yōu)解。這一部分的代碼如下:
2.3 Matlab求解 通過Matlab運(yùn)算,發(fā)現(xiàn)經(jīng)過4 600次遺傳之后最優(yōu)路徑的值不會再發(fā)生特別大的變化(圖1),最后經(jīng)過4 637次的遺傳之后最終得到一條最優(yōu)路徑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 經(jīng)過n代遺傳之后的最優(yōu)解大小
該研究通過建立遺傳算法的數(shù)學(xué)模型,并通過MATLAB軟件求解的方法給出了一條遼西建平地區(qū)氣象自動站巡視維護(hù)的最佳路徑,能夠提升自動站維護(hù)人員的工作效率,減少日常維護(hù)的消耗開支,為自動站巡視問題提供了理論上的參考,在實(shí)際應(yīng)用中有很大的參考意義。
圖2 通過遺傳算法得到的最短路徑圖
[1]洪瑋.基于實(shí)例的歸納學(xué)習(xí)在遺傳算法策略優(yōu)選中的應(yīng)用研究[D].西安:西安理工大學(xué),2010.
[2]百度文庫.遺傳算法實(shí)例[EB/OL].http://wenku.baidu.com/view/1e27d0ed6294dd88d0d26bff.html.