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