ARIMA模型(完整的Word文件可以去我的博客里面下載)
ARIMA模型(英語:AutoregressiveIntegratedMovingAverage model),差分整合移動平均自回歸模型,又稱整合移動平均自回歸模型(移動也可稱作滑動),時間序列預測分析方法之一。ARIMA(p,d,q)中,AR是"自回歸",p為自回歸項數;MA為"滑動平均",q為滑動平均項數,d為使之成為平穩序列所做的差分次數(階數)。
ARIMA(p,d,q)模型是ARMA(p,q)模型的擴展。ARIMA(p,d,q)模型可以表示為:
其中L是滯后算子(Lag operator),
1. 平穩性:
平穩性就是要求經由樣本時間序列所得到的擬合曲線,在未來的一段時間內仍能順着現有狀態“慣性”地延續下去;
平穩性要求序列的均值和方差不發生明顯變化;
方差越大,數據波動越大,方差計算公式如下式所示:
方差等於1,那么標准差也就是1,表示概率函數在對稱軸左右偏差1的位置導數為0,即為拐點。期望為0,表示概率函數以y軸為對稱軸。
平穩性分為嚴平穩和弱平穩
嚴平穩:嚴平穩表示的分布不隨時間的改變而改變,如:白噪聲(正態),無論怎么取,都是期望為0,方差為1;
弱平穩:期望與相關系數(依賴性)不變,未來某時刻的t值Xt就要依賴於它的過去信息,所以需要依賴性;
2. 差分法:時間序列在t與t-1時刻的差值
3. 自回歸模型(AR)
描述當前值與歷史值之間的關系,用變量自身的歷史時間數據對自身進行預測
自回歸模型必須滿足平穩性的要求
p階自回歸過程的公式定義:
是當前值, 是常數項,P是階數(需要我們自己指定), 是自相關系數, 是誤差
4. 移動平均模型(MA)
移動平均模型關注的是自回歸模型中誤差項的累加
q階自回歸過程的公式定義:
移動平均法能有效消除預測中的隨機波動
5. 自回歸移動平均模型(ARMA)
自回歸與移動平均結合,公式定義如下,由下述公式我們可以得到,當拿到ARMA模型時,我們僅需要指定三個參數(p,d,q),d是階數,d=1即為一階差分,d=2為二階差分,以此類推。
6. 差分自回歸移動平均模型
ARIMA (p, d, q)模型全稱為差分自回歸移動平均模型(Autoregressive Integrated Moving Average Model,簡記ARIMA)。
AR是自回歸,p為自回歸項;MA為移動平均,q為移動平均項數,d為時間序列成為平穩時所做的差分次數。
原理:將非平穩時間序列轉換為平穩時間序列。然后將因變量僅對它滯后值(階數)以及隨機誤差項的現值和滯后值進行回歸所建立的模型。
6.1 自相關函數ACF(autocorrelation function)
相關性:有序的隨機變量序列與其自身相比較,自相關函數反映了自身數據在同一序列在不同時序之間的相關性。
公式:
6.2 偏自相關函數(PACF)(partial autocorrelation function)
對於一個平穩AR(p)模型,求出滯后k自相關系數p(k)時實際上得到的並不是x(t)與x(t-k)之間單純的相關關系:
x(t)同時還會受到中間k-1個隨機變量x(t-1)、x(t-2)、......、x(t-k+1)的影響,而這k-1個隨機變量又都和x(t-k)具有相關關系,所以自相關系數p(k)里實際摻雜了其他變量對x(t)與x(t-k)的影響;
ACF還包含了其他變量的影響,而偏自相關系數PACF是嚴格這兩個變量之間的相關性;
6.3 ARIMA建模流程
將序列平穩(差分法確定d)
p和q階數確定:ACF與PACF
ARIMA(p,d,q)
6.4 模型參數選擇
模型選擇AIC與BIC:選擇更簡單的模型
AIC:赤池信息准則(Akaike Information Criterion,AIC)
BIC:貝葉斯信息准則(Bayesian Information Criterion,BIC)
k為模型參數個數,n為樣本數量,L為似然函數
6.5 模型殘差檢驗
ARIMA模型的殘差是否是平均值為0且方差為常熟的正態分布
QQ圖:線性即正態分布
粒子群優化算法(PSO)
1、概念
粒子群優化算法是一種進化計算技術,源於對鳥群捕食行為研究。
基本思想:通過群體中個體之間的協作和信息共享來尋找最優解。
優勢:簡單、容易實現並且沒有許多的參數調節。
廣泛應用於函數優化、神經網絡訓練、模糊系統控制。
2、算法
2.1問題抽象
鳥被抽象為沒有質量和體積的微粒(點),並延伸到N維空間,粒子i在N維空間的位置表示為矢量Xi=(x1,x2,…,xN),飛行速度表示為矢量Vi=(v1,v2,…,vN)。每個粒子都有一個由目標函數決定的適應值(fitness value),並且知道自己到目前為止發現的最好位置(pbest)和現在的位置Xi。這個可以看作是粒子自己的飛行經驗。除此之外,每個粒子還知道到目前為止整個群體中所有粒子發現的最好位置(gbest)(gbest是pbest中的最好值),這個可以看作是粒子同伴的經驗。粒子就是通過自己的經驗和同伴中最好的經驗來決定下一步的運動。
2.2更新規則
PSO初始化為一群隨機粒子(隨機解)。然后通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個“極值”(pbest,gbest)來更新自己。在找到這兩個最優值后,粒子通過下面的公式來更新自己的速度和位置。
2.3標准PSO算法流程
標准PSO算法的流程:
1)初始化一群微粒(群體規模為N),包括隨機位置和速度;
2)評價每個微粒的適應度;
3)對每個微粒,將其適應值與其經過的最好位置pbest作比較,如果較好,則將其作為當前的最好位置pbest;
4)對每個微粒,將其適應值與其經過的最好位置gbest作比較,如果較好,則將其作為當前的最好位置gbest;
5)根據公式(2)、(3)調整微粒速度和位置;
6)未達到結束條件則轉第2)步。
迭代終止條件根據具體問題一般選為最大迭代次數Gk或(和)微粒群迄今為止搜索到的最優位置滿足預定最小適應閾值。
當C1=0時,則粒子沒有了認知能力,變為只有社會的模型(social-only):
被稱為全局PSO算法。粒子有擴展搜索空間的能力,具有較快的收斂速度,但由於缺少局部搜索,對於復雜問題比標准PSO 更易陷入局部最優。
當C2=0時,則粒子之間沒有社會信息,模型變為只有認知(cognition-only)模型:
被稱為局部PSO算法。由於個體之間沒有信息的交流,整個群體相當於多個粒子進行盲目的隨機搜索,收斂速度慢,因而得到最優解的可能性小。
2.3參數分析
參數:群體規模N,慣性因子 ,學習因子c1和c2,最大速度Vmax,最大迭代次數Gk。
群體規模N:一般取20~40,對較難或特定類別的問題可以取到100~200。
最大速度Vmax:決定當前位置與最好位置之間的區域的分辨率(或精度)。如果太快,則粒子有可能越過極小點;如果太慢,則粒子不能在局部極小點之外進行足夠的探索,會陷入到局部極值區域內。這種限制可以達到防止計算溢出、決定問題空間搜索的粒度的目的。
權重因子:包括慣性因子和學習因子c1和c2。使粒子保持着運動慣性,使其具有擴展搜索空間的趨勢,有能力探索新的區域。c1和c2代表將每個粒子推向pbest和gbest位置的統計加速項的權值。較低的值允許粒子在被拉回之前可以在目標區域外徘徊,較高的值導致粒子突然地沖向或越過目標區域。
參數設置:
1) 如果令c1=c2=0,粒子將一直以當前速度的飛行,直到邊界。很難找到最優解。
2) 如果 =0,則速度只取決於當前位置和歷史最好位置,速度本身沒有記憶性。假設一個粒子處在全局最好位置,它將保持靜止,其他粒子則飛向它的最好位置和全局最好位置的加權中心。粒子將收縮到當前全局最好位置。在加上第一部分后,粒子有擴展搜索空間的趨勢,這也使得的作用表現為針對不同的搜索問題,調整算法的全局和局部搜索能力的平衡。較大時,具有較強的全局搜索能力;較小時,具有較強的局部搜索能力。
3) 通常設c1=c2=2。Suganthan的實驗表明:c1和c2為常數時可以得到較好的解,但不一定必須等於2。Clerc引入收斂因子(constriction factor) K來保證收斂性。
通常取 為4.1,則K=0.729.實驗表明,與使用慣性權重的PSO算法相比,使用收斂因子的PSO有更快的收斂速度。其實只要恰當的選取和c1、c2,兩種算法是一樣的。因此使用收斂因子的PSO可以看作使用慣性權重PSO的特例。
恰當的選取算法的參數值可以改善算法的性能。
遺傳算法(GA)
遺傳算法便基於達爾文的進化論,模擬了自然選擇,物競天擇、適者生存,通過N代的遺傳、變異、交叉、復制,進化出問題的最優解。
遺傳算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。遺傳算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(individual)組成。每個個體實際上是染色體(chromosome)帶有特征的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之后,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,並借助於自然遺傳學的遺傳算子(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的后生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼(decoding),可以作為問題近似最優解。
主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;采用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。
對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規划模型:
式中 為決策變量, 為目標函數式, 、 為約束條件,U是基本空間,R是U的子集。滿足約束條件的解 稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。
基本運算過程如下:
a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。
b)個體評價:計算群體P(t)中各個個體的適應度。
c)選擇運算:將選擇算子作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。
d)交叉運算:將交叉算子作用於群體。遺傳算法中起核心作用的就是交叉算子。
e)變異運算:將變異算子作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。群體P(t)經過選擇、交叉、變異運算之后得到下一代群體P(t+1)。
f)終止條件判斷:若t=T,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。
概念1:基因和染色體
在遺傳算法中,我們首先需要將要解決的問題映射成一個數學問題,也就是所謂的“數學建模”,那么這個問題的一個可行解即被稱為一條“染色體”。一個可行解一般由多個元素構成,那么這每一個元素就被稱為染色體上的一個“基因”。
比如說,對於如下函數而言,[1,2,3]、[1,3,2]、[3,2,1]均是這個函數的可行解(代進去成立即為可行解),那么這些可行解在遺傳算法中均被稱為染色體。
3x+4y+5z<100
這些可行解一共有三個元素構成,那么在遺傳算法中,每個元素就被稱為組成染色體的一個基因。
概念2:適應度函數
遺傳算法在運行的過程中會進行N次迭代,每次迭代都會生成若干條染色體。適應度函數會給本次迭代中生成的所有染色體打個分,來評判這些染色體的適應度,然后將適應度較低的染色體淘汰掉,只保留適應度較高的染色體,從而經過若干次迭代后染色體的質量將越來越優良。
概念3:交叉
遺傳算法每一次迭代都會生成N條染色體,在遺傳算法中,這每一次迭代就被稱為一次“進化”。每次進化新生成的染色體通過“交叉”而來,你可以把它理解為交配。
交叉的過程需要從上一代的染色體中尋找兩條染色體,一條是爸爸,一條是媽媽。然后將這兩條染色體的某一個位置切斷,並拼接在一起,從而生成一條新的染色體。這條新染色體上即包含了一定數量的爸爸的基因,也包含了一定數量的媽媽的基因。
一般通過輪盤賭算法從上一代染色體中選出爸爸和媽媽的基因。在每完成一次進化后,都要計算每一條染色體的適應度,然后采用如下公式計算每一條染色體的適應度概率。那么在進行交叉過程時,就需要根據這個概率來選擇父母染色體。適應度比較大的染色體被選中的概率就越高。這也就是為什么遺傳算法能保留優良基因的原因。
染色體i被選擇的概率 = 染色體i的適應度 / 所有染色體的適應度之和
概念4:變異
交叉能保證每次進化留下優良的基因,但它僅僅是對原有的結果集進行選擇,基因還是那么幾個,只不過交換了他們的組合順序。這只能保證經過N次進化后,計算結果更接近於局部最優解,而永遠沒辦法達到全局最優解,為了解決這一個問題,我們需要引入變異。
當我們通過交叉生成了一條新的染色體后,需要在新染色體上隨機選擇若干個基因,然后隨機修改基因的值,從而給現有的染色體引入了新的基因,突破了當前搜索的限制,更有利於算法尋找到全局最優解。
概念5:復制
每次進化中,為了保留上一代優良的染色體,需要將上一代中適應度最高的幾條染色體直接原封不動地復制給下一代。
假設每次進化都需生成N條染色體,那么每次進化中,通過交叉方式需要生成N-M條染色體,剩余的M條染色體通過復制上一代適應度最高的M條染色體而來。
遺傳算法的流程
在算法初始階段,它會隨機生成一組可行解,就是第一代染色體。
然后采用適應度函數分別計算每一條染色體的適應程度,並根據適應程度計算每一條染色體在下一次進化中被選中的概率。
上面都是准備過程,下面正式進入“進化”過程。
通過“交叉”,生成N-M條染色體;
再對交叉后生成的N-M條染色體進行“變異”操作;
然后使用“復制”的方式生成M條染色體;
到此為止,N條染色體生成完畢!緊接着分別計算N條染色體的適應度和下次被選中的概率。
這就是一次進化的過程,緊接着進行新一輪的進化。
究竟需要進化多少次?
每一次進化都會更優,因此理論上進化的次數越多越好,但在實際應用中往往會在結果精確度和執行效率之間尋找一個平衡點,一般有兩種方式。
1. 限定進化次數
在一些實際應用中,可以事先統計出進化的次數。比如,你通過大量實驗發現:不管輸入的數據如何變化,算法在進化N次之后就能夠得到最優解,那么你就可以將進化的次數設成N。
然而,實際情況往往沒有那么理想,往往不同的輸入會導致得到最優解時的迭代次數相差甚遠,這是你可以考慮采用第二種方式。
2. 限定允許范圍
如果算法要達到全局最優解可能要經過很多次的進化,這極大影響系統的性能。那么我們就可以在算法的精確度和系統效率之間尋找一個平衡點。我們可以事先設定一個可以接收的結果范圍,當算法進行X次進化后,一旦發現了當前的結果已經在誤差范圍之內了,那么就終止算法。
但這種方式也有個缺點,有些情況下可能稍微進化幾次就進入了誤差允許范圍,但有些情況下需要進化很多次才能進入誤差允許范圍。這種不確定性導致算法的執行效率不可控。
所以,究竟選擇何種方式來控制算法的迭代次數,這需要你根據具體的業務場景合理地選擇。
采用遺傳算法解決負載均衡調度問題
算法都是用來解決實際問題的,下面我們就用遺傳算法來解決一個實際問題——負載均衡調度問題。
假設有N個任務,需要負載均衡器分配給M個服務器節點去處理。每個任務的任務長度、每台服務器節點(下面簡稱“節點”)的處理速度已知,請給出一種任務分配方式,使得所有任務的總處理時間最短。
數學建模
拿到這個問題后,我們首先需要將這個實際問題映射成遺傳算法的數學模型。
任務長度矩陣(簡稱:任務矩陣)
我們將所有任務的任務長度用矩陣tasks表示,如:
Tasks={2,4,6,8}
那么,tasks[i]中的i表示任務的編號,而tasks[i]表示任務i的任務長度。
節點處理速度矩陣(簡稱:節點矩陣)
我們將所有服務器節點的處理速度用矩陣nodes表示,如:
Nodes={2,1}
那么,nodes[j]中的j表示節點的編號,而nodes[j]表示節點j的處理速度。
任務處理時間矩陣
當任務矩陣Tasks和節點矩陣Nodes確定下來之后,那么所有任務分配給所有節點的任務處理時間都可以確定了,我們用矩陣timeMatrix表示,它是一個二維數組:
1 2
2 4
3 6
4 8
timeMatrix[i][j]表示將任務i分配給節點j處理所需的時間,它通過如下公式計算:
timeMatrix[i][j] = tasks[i]/nodes[j]
染色體
每次進化都會產生N條染色體,每一條染色體都是當前問題的一個可行解,可行解由多個元素構成,每個元素稱為染色體的一個基因。下面我們就用一個染色體矩陣來記錄算法每次進化過程中的可行解。
一條染色體的構成如下:
chromosome={1,2,3,4}
一條染色體就是一個一位數組,一位數組的下標表示任務的編號,數組的值表示節點的編號。那么chromosome[i]=j的含義就是:將任務i分配給了節點j。
上面的例子中,任務集合為Tasks={2,4,6,8},節點集合為Nodes={2,1},那么染色體chromosome={3,2,1,0}的含義是:
將任務0分配給3號節點
將任務1分配給2號節點
將任務2分配給1號節點
將任務3分配給0號節點
適應度矩陣
在遺傳算法中扮演者“上帝”角色的是適應度函數,它會評判每一條染色體的適應度,並保留適應度高的染色體、淘汰適應度差的染色體。那么在算法實現時,我們需要一個適應度矩陣,記錄當前N條染色體的適應度,如下所示:
adaptability={0.6, 2, 3.2, 1.8}
adaptability數組的下標表示染色體的編號,而adaptability[i]則表示編號為i的染色體的適應度。
在負載均衡調度這個實例中,我們將N個任務執行總時長作為適應度評判的標准。當所有任務分配完后,如果總時長較長,那么適應度就越差;而總時長越短,則適應度越高。
選擇概率矩陣
通過上文可知,每次進化過程中,都需要根據適應度矩陣計算每一條染色體在下一次進化中被選擇的概率,這個矩陣如下所示:
selectionProbability={0.1, 0.4, 0.2, 0.3}
矩陣的下標表示染色體的編號,而矩陣中的值表示該染色體對應的選擇概率。其計算公式如下:
selectionProbability[i] = adaptability[i] / 適應度之和
遺傳算法的例子
例:求下述二元函數的最大值:
(1) 個體編碼
遺傳算法的運算對象是表示個體的符號串,所以必須把變量 x1, x2 編碼為一種符號串。本題中,用無符號二進制整數來表示。
因 x1, x2 為 0 ~ 7之間的整數,所以分別用3位無符號二進制整數來表示,將它們連接在一起所組成的6位無符號二進制數就形成了個體的基因型,表示一個可行解。
例如,基因型 X=101110 所對應的表現型是:x=[ 5,6 ]。
個體的表現型x和基因型X之間可通過編碼和解碼程序相互轉換。
(2) 初始群體的產生
遺傳算法是對群體進行的進化操作,需要給其准備一些表示起始搜索點的初始群體數據。
本例中,群體規模的大小取為4,即群體由4個個體組成,每個個體可通過隨機方法產生。
如:011101,101011,011100,111001
(3) 適應度計算
遺傳算法中以個體適應度的大小來評定各個個體的優劣程度,從而決定其遺傳機會的大小。
本例中,目標函數總取非負值,並且是以求函數最大值為優化目標,故可直接利用目標函數值作為個體的適應度。
(4) 選擇運算
選擇運算(或稱為復制運算)把當前群體中適應度較高的個體按某種規則或模型遺傳到下一代群體中。一般要求適應度較高的個體將有更多的機會遺傳到下一代群體中。
本例中,我們采用與適應度成正比的概率來確定各個個體復制到下一代群體中的數量。其具體操作過程是:
• 先計算出群體中所有個體的適應度的總和fi ( i=1.2,…,M );
• 其次計算出每個個體的相對適應度的大小 fi / fi ,它即為每個個體被遺傳到下一代群體中的概率,
• 每個概率值組成一個區域,全部概率值之和為1;
• 最后再產生一個0到1之間的隨機數,依據該隨機數出現在上述哪一個概率區域內來確定各個個體被選中的次數。
(5) 交叉運算
交叉運算是遺傳算法中產生新個體的主要操作過程,它以某一概率相互交換某兩個個體之間的部分染色體。
本例采用單點交叉的方法,其具體操作過程是:
• 先對群體進行隨機配對;
• 其次隨機設置交叉點位置;
• 最后再相互交換配對染色體之間的部分基因
(6) 變異運算
變異運算是對個體的某一個或某一些基因座上的基因值按某一較小的概率進行改變,它也是產生新個體的一種操作方法。
本例中,我們采用基本位變異的方法來進行變異運算,其具體操作過程是:
• 首先確定出各個個體的基因變異位置,下表所示為隨機產生的變異點位置,其中的數字表示變異點設置在該基因座處;
• 然后依照某一概率將變異點的原有基因值取反。
對群體P(t)進行一輪選擇、交叉、變異運算之后可得到新一代的群體p(t+1)。
從上表中可以看出,群體經過一代進化之后,其適應度的最大值、平均值都得到了明顯的改進。事實上,這里已經找到了最佳個體“111111”。
適應度函數
進化論中的適應度,是表示某一個體對環境的適應能力,也表示該個體繁殖后代的能力。遺傳算法的適應度函數也叫評價函數,是用來判斷群體中的個體的優劣程度的指標,它是根據所求問題的目標函數來進行評估的。
遺傳算法在搜索進化過程中一般不需要其他外部信息,僅用評估函數來評估個體或解的優劣,並作為以后遺傳操作的依據。由於遺傳算法中,適應度函數要比較排序並在此基礎上計算選擇概率,所以適應度函數的值要取正值。將目標函數映射成求最大值形式且函數值非負的適應度函數是必要的。
適應度函數的設計主要滿足以下條件:
a)單值、連續、非負、最大化
b) 合理、一致性
c)計算量小
d)通用性強。
在具體應用中,適應度函數的設計要結合求解問題本身的要求而定。適應度函數設計直接影響到遺傳算法的性能。
初始群體選取
遺傳算法中初始群體中的個體是隨機產生的。一般來講,初始群體的設定可采取如下的策略:
a)根據問題固有知識,設法把握最優解所占空間在整個問題空間中的分布范圍,然后,在此分布范圍內設定初始群體。
b)先隨機生成一定數目的個體,然后從中挑出最好的個體加到初始群體中。這種過程不斷迭代,直到初始群體中個體數達到了預先確定的規模。
遺傳算法(GA)和粒子群優化算法(PSO)的比較
1)共性:
(1) 都屬於仿生算法。
(2) 都屬於全局優化方法。
(3) 都屬於隨機搜索算法。
(4) 都隱含並行性。
(5) 根據個體的適配信息進行搜索,因此不受函數約束條件的限制,如連續性、可導性等。
(6) 對高維復雜問題,往往會遇到早熟收斂和收斂 性能差的缺點,都無法保證收斂到最優點。
2)差異:
(1) PSO有記憶,好的解的知識所有粒子都保 存,而GA(Genetic Algorithm),以前的知識隨着種群的改變被改變。
(2) PSO中的粒子僅僅通過當前搜索到最優點進行共享信息,所以很大程度上這是一種單共享項信息機制。而GA中,染色體之間相互共享信息,使得整個種群都向最優區域移動。
(3) GA的編碼技術和遺傳操作比較簡單,而PSO相對於GA,沒有交叉和變異操作,粒子只是通過內部速度進行更新,因此原理更簡單、參數更少、實現更容易。
(4) 應用於人工神經網絡(ANN)
GA可以用來研究NN的三個方面:網絡連接權重、網絡結構、學習算法。優勢在於可處理傳統方法不能處理的問題,例如不可導的節點傳遞函數或沒有梯度信息。
GA缺點:在某些問題上性能不是特別好;網絡權重的編碼和遺傳算子的選擇有時較麻煩。
已有利用PSO來進行神經網絡訓練。研究表明PSO是一種很有潛力的神經網絡算法。速度較快且有較好的結果。且沒有遺傳算法碰到的問題。