[摘要] 預(yù)測預(yù)報是人們對客觀事物發(fā)展變化的一種認(rèn)識與估計。對某個對象系統(tǒng)選擇哪一種方法來建立預(yù)測預(yù)報模型,關(guān)鍵在于用此方法建立的預(yù)測模型的計算值與實際值的擬合程度。近幾年發(fā)展起來的遺傳算法(GA, Genetic Algorithm)是借鑒生物遺傳機(jī)制的一種隨機(jī)化搜索算法,其主要特點是群體搜索和群體中的個體之間的信息交換。遺傳算法尤其適用于處理傳統(tǒng)方法難以解決的復(fù)雜的和非線性的問題,己在許多領(lǐng)域有廣泛的應(yīng)用,它將成為智能計算的主要技術(shù)之一。文章以某企業(yè)各年度資金實際需要量動態(tài)數(shù)列為例,探討了基于遺傳算法的時序預(yù)測模型的建模方法及預(yù)測精度的有效性。
[關(guān)鍵詞] 遺傳算法 預(yù)測 建模 擬合 精度
預(yù)測預(yù)報是人們對客觀事物發(fā)展變化的一種認(rèn)識與估計。預(yù)測預(yù)報對人類社會的重要性早己為人們所認(rèn)識,“凡事預(yù)則立,不預(yù)則廢”,說明了人們對預(yù)測的重要性的認(rèn)識。預(yù)測可采用的方法很多,例如,傳統(tǒng)的回歸分析方法、基于灰色理論的灰色模型(Grey Model),以及近幾年發(fā)展起來的遺傳算法和人工神經(jīng)網(wǎng)絡(luò)模型等。對某個對象系統(tǒng)選擇哪一種方法來建立預(yù)測預(yù)報模型,關(guān)鍵在于用此方法建立的預(yù)測模型的計算值與實際值的擬合程度。
遺傳算法(GA,Genetic Algorithm)是借鑒生物遺傳機(jī)制的一種隨機(jī)化搜索算法,其主要特點是群體搜索和群體中的個體之間的信息交換遺傳算法尤其適用于處理傳統(tǒng)方法難以解決的復(fù)雜的和非線性的問題,己在許多領(lǐng)域有廣泛的應(yīng)用,它將成為智能計算的主要技術(shù)之一。
一、遺傳算法原理綜述
1.基本術(shù)語
遺傳算法是遺傳學(xué)和計算機(jī)科學(xué)相互結(jié)合滲透而成的新的計算方法,它使用了遺傳學(xué)的一些概念和基本術(shù)語來描述它的計算方法。
生物遺傳物質(zhì)的主要載體是染色體,最主要的遺傳物質(zhì)是DNA。染色體由基因組成,染色體中基因的位置稱為基因座,基因所取的值稱為等位基因?;蚝突蜃鶝Q定了染色體的特征,也決定了生物個體的性狀。
染色體有兩種表示模式,即基因型(genetype)表示模式和表現(xiàn)型(phenotype)表示模式。表現(xiàn)型是指生物個體所表現(xiàn)出來的性狀?;蛐褪侵概c生物個體表現(xiàn)出來的性狀密切相關(guān)的基因組成。同一種基因型的生物個體在不同的環(huán)境條件下表現(xiàn)出來的性狀會有差異,因此,表現(xiàn)型是基因型與環(huán)境條件相互作用的結(jié)果。
2.編譯碼操作
在遺傳算法中,與染色體相對應(yīng)的是數(shù)據(jù)或數(shù)組。在標(biāo)準(zhǔn)的遺傳算法中,染色體可用一維的串結(jié)構(gòu)數(shù)據(jù)來表示,串的各個位置對應(yīng)染色體的基因座,各位置上所取的值對應(yīng)等位基因。遺傳算法對染色體進(jìn)行處理,或者稱為對基因型個體(individuals)進(jìn)行處理。一定數(shù)量的個體組成群體(population),群體中的個體數(shù)稱為群體大小(population size)或群體規(guī)模。各個個體對環(huán)境的適應(yīng)程度稱為適應(yīng)度(fitness)。
執(zhí)行遺傳算法時有兩個必需的數(shù)據(jù)轉(zhuǎn)換操作,一個操作是把搜索空間中的參數(shù)或解數(shù)據(jù)轉(zhuǎn)換成遺傳空間的染色體或個體,或者說是把染色體數(shù)據(jù)從表現(xiàn)型表示轉(zhuǎn)換成基因型表示,這個過程稱為編碼操作;另一個操作稱為譯碼操作,它是同編碼操作相反的數(shù)據(jù)轉(zhuǎn)換操作,譯碼操作把染色體數(shù)據(jù)從基因型表示轉(zhuǎn)換成表現(xiàn)型表示。
3.算法流程
遺傳算法的基本流程如下圖所示。遺傳算法以群體中的所有個體為對象,選擇(selection)、雜交(crossbreed)和變異(mutation)是遺傳算法的三個主要操作算子,它們構(gòu)成了所謂的遺傳操作(Genetic Operations),使遺傳算法具有了其他傳統(tǒng)方法所沒有的特征。
4.基本要素
應(yīng)用遺傳算法求解問題,需要根據(jù)求解的具體問題進(jìn)行下述五個方面的工作,這是遺傳算法的核心內(nèi)容,也稱為遺傳算法的五個基本要素:
(1)參數(shù)編碼的格式設(shè)定及參數(shù)編碼
(2)初始群體的設(shè)定
(3)適應(yīng)度函數(shù)的設(shè)計
(4)遺傳操作設(shè)計
(5)控制參數(shù)設(shè)計,主要是指群體規(guī)模和遺傳操作中所需使用的有關(guān)控制參數(shù)的設(shè)定和設(shè)計
二、應(yīng)用遺傳算法建立預(yù)測預(yù)報模型
下面是一個用來說明遺傳算法在建立預(yù)測預(yù)報模型中的應(yīng)用實例。
例:己知某企業(yè)從1985年~2006年各年的資金實際需要量(萬元)如下表所示,應(yīng)用遺傳算法建立該企業(yè)資金年需要量預(yù)測模型。
1.建模分析
由表給出的1985年~2006年的資金實際需要量,可作出如下圖所示的年資金實際需要量曲線。由此曲線可見,企業(yè)年資金實際需要量的總趨勢在增長,但有準(zhǔn)周期性的振蕩,因此,年資金實際需要量預(yù)測模型應(yīng)考慮曲線總體增長趨勢的描述和振蕩規(guī)律的描述兩部分組成。
(1)企業(yè)年資金需要量總體增長趨勢的描述。
在一個企業(yè)的成長發(fā)展時期中,企業(yè)年資金需要量的變化情況可分為發(fā)生、發(fā)展、成熟三個階段。在發(fā)生階段,隨著企業(yè)基礎(chǔ)設(shè)施和管理的到位,年資金需要量增長速度較慢,并逐漸加大增長趨勢;在發(fā)展階段,隨著企業(yè)品牌形象的逐步形成,年資金需要量增長速度較快,并維持一段時間后進(jìn)入成熟期;在成熟階段,其增長速度將逐漸變慢,增長趨于飽和。企業(yè)年資金需要量的這種總體發(fā)展變化規(guī)律可采用Logistic生長曲線描述。Logistic生長曲線是下述非線性常微分方程:
的解:
式中各參數(shù)在本例中的含義是:Y是年資金需要量,t是時間(年),a是年資金需要量增長速度系數(shù),b是企業(yè)年資金需要量的極限值,m和c是與a,b有關(guān)的參數(shù)。
Logistic生長曲線如下圖所示,可用于反映一般處于成長發(fā)展時期中的對象系統(tǒng)隨時間的生長情況。由于Logistic曲線符合企業(yè)年資金需要量隨企業(yè)打拼發(fā)展的變化規(guī)律,所以采用Logistic曲線描述企業(yè)年資金需要量的總體增長趨勢是比較合適的。
考慮到1985年以前的年資金需要量應(yīng)對Logistic生成曲線的起點定位及其預(yù)測值有“抬高”的影響,故對Logistic曲線進(jìn)行如下修改:
(2)企業(yè)年資金需要量振蕩規(guī)律的描述。
由企業(yè)年資金需要量曲線可見,從1985年~2006年,實際年資金需要量的變化與Logistic曲線有較大差異。實際年資金需要量曲線有較大幅度的振蕩,是一個多峰曲線。企業(yè)年資金需要量出現(xiàn)振蕩多峰的原因是復(fù)雜的,但是,我們這里并不需要去探討振蕩的原因及其各種原因是如何影響預(yù)測模型的,只需要在預(yù)測模型中給出振蕩規(guī)律的大致描述。
由圖所示的實際年資金需要量曲線的振蕩具有準(zhǔn)周期性衰減,周期性可以用正弦函數(shù)描述,幅值的衰減性可以用負(fù)指數(shù)函數(shù)描述。因此,考慮到年資金需要量曲線的振蕩特征后,需要對由Logistic曲線表示的年資金需要量總體增長趨勢乘以一個振蕩修正因子,即有:
式中,p為相對振蕩幅值,h為振蕩半周期長度(年),u為振蕩的初始幅角,g為振蕩衰減系數(shù)。
上式中含有8個待定參數(shù)b,c,d.m,p,g,h和u。我們采用遺傳算法求解這8個參數(shù),從而得出企業(yè)年資金需要量的預(yù)測模型y(t)。
2.采用遺傳算法求解模型的待定參數(shù)
(1)編碼
把待定的8個參數(shù)表示成一維數(shù)組x=(b,c,d,m,p,g,h,u),數(shù)組各元為帶符號的十進(jìn)制數(shù)。
(2)初始群體的隨機(jī)生成
設(shè)群體規(guī)模為n,隨機(jī)生成初始群體的n個個體xi=(ai1,ai2,ai3,ai4,ai5,ai6,ai7,ai8),i=1,2, …,n。個體xi中基因座k上的基因值aik(1≤k≤8)就是數(shù)組xi的第k個元的值。
(3)適應(yīng)度函數(shù)
待定參數(shù)的確定應(yīng)使得預(yù)測模型的年資金需要量計算值y(t)與年資金需要量實際值y*(t)的擬合最好,即從1985年~2006年共22年的計算值y(t)與實際值y*(t)的誤差累計最小。故建立適應(yīng)度函數(shù)為:
(4)選擇操作
為減小計算的復(fù)雜程度,可直接選擇適應(yīng)度fi最小的個體xi作為優(yōu)良個體,對其復(fù)制一次,并淘汰適應(yīng)度最大的一個個體。對規(guī)模較大的群體,優(yōu)良個體被選擇的次數(shù)可多于兩次,并相應(yīng)淘汰多個劣質(zhì)個體,以保持群體規(guī)模n不變。
(5)雜交操作
對配對池MP=(x1,…,xi,…,xj,…,xn)中的n個個體隨機(jī)配對進(jìn)行雜交繁殖。若隨機(jī)選擇xi=(ai1,ai2,ai3,ai4,ai5,ai6,ai7,ai8)與xj=(aj1,aj2,aj3,aj4,aj5,aj6,aj7,aj8)配對,則雜交操作為:
其中,雜交參數(shù)β可以是一個隨機(jī)數(shù),β的取值范圍為0<β<1,a`ik是個體xi與xj雜交生成的后代個體x`k中第k個基因的值, a`jk是個體xj與xi雜交生成的后代個體x`j中第k個基因的值。
(6)變異操作
本例選取的變異操作的概率為1%,即每次對群體中的8n個基因隨機(jī)選擇8n×1%個基因進(jìn)行變異操作。若隨機(jī)選擇基因aik進(jìn)行變異操作,則變異后的基因為:
式中,變異參數(shù)η可以是一個隨機(jī)數(shù),η的取值范圍為0<η<1。
(7)算法終止條件
遺傳算法是一種迭代算法,對生成的后代群體的n個個體繼續(xù)進(jìn)行選擇、雜交和變異操作,直至滿足算法終止條件。理想的算法終止條件是連續(xù)若干代(例如10代)不再產(chǎn)生適應(yīng)度更小的個體,即不再能繁殖出更優(yōu)良的個體。這個終止條件是比較嚴(yán)格的,需要迭代計算許多次。為了減少算法運算的時空開銷,比較一般的終止條件可為:若fi≤ε,則算法終止,相應(yīng)的個體xi即是問題的解。xi中的8個基因值即分別為待定的8個參數(shù)值。ε為指定的擬合精度誤差。
三、結(jié)束語
由上例討論可見,為了建立任何一個對象系統(tǒng)的時序預(yù)測模型,只要能先用一個參數(shù)待定的非線性函數(shù)來大致描述該對象系統(tǒng)的變化規(guī)律,無論這個非線性函數(shù)有多復(fù)雜,都可以用一組實際值作為實例,采用遺傳算法來訓(xùn)練模型,求解出模型的待定參數(shù),從而建立起這個模型。另外,適應(yīng)度函數(shù)和算法終止條件能保證建立的模型的計算值與實際值會有很好的擬合精度,所以基于遺傳算法的時序預(yù)測模型的建模方法與傳統(tǒng)建模方法比較,前者建立的預(yù)測模型會有較高的預(yù)測精度,尤其是近期預(yù)測。
參考文獻(xiàn):
[1]高巖位耀光付冬梅張蔚:免疫遺傳算法的研究及其在函數(shù)優(yōu)化中的應(yīng)用[J].微計算機(jī)信息,2007,(6):183~184
[2]吉根林:遺傳算法研究綜述[J].計算機(jī)應(yīng)用與軟件,2004,21(2):69~73
[3]尹朝慶尹皓:人工智能與專家系統(tǒng)[M].北京:中國水利水電出版社,2002:286~294
[4]王煦法:遺傳算法及其應(yīng)用[J].小型微型計算機(jī)系統(tǒng),1995,16(2):59~64
[5]S. G. Ponnambalam,P. Aravindan ,G. Mogileeswar Naidu.A Multi-Objective Genetic Algorithm for Solving Assembly Line Balancing Problem[J].The Intenational Journal of Advanced Manufacture Technology,2000,16:341~352