【路徑規(guī)劃】基于蟻群算法求解電動汽車充電站與換電站協(xié)調(diào)路徑規(guī)劃matlab源碼含GUI
1.蟻群算法(ant colony algorithm,ACA)起源和發(fā)展歷程
Marco Dorigo等人在研究新型算法的過程中,發(fā)現(xiàn)蟻群在尋找食物時,通過分泌一種稱為信息素的生物激素交流覓食信息從而能快速的找到目標,于是在1991年在其博士論文中首次系統(tǒng)地提出一種基于螞蟻種群的新型智能優(yōu)化算法“螞蟻系統(tǒng)(Ant system,簡稱AS)”,后來,提出者及許多研究者對該算法作了各種改進,將其應用于更為廣泛的領域,如圖著色問題、二次分配問題、工件排序問題、車輛路徑問題、車間作業(yè)調(diào)度問題、網(wǎng)絡路由問題、大規(guī)模集成電路設計等。近些年來,M.Dorigo等人把螞蟻算法進一步發(fā)展成一種通用的優(yōu)化技術“蟻群優(yōu)化(Ant Colony Optimization,簡稱ACO)”,并將所有符合ACO框架的算法稱為“蟻群優(yōu)化算法(ACO algorithm)”。


具體來說,各個螞蟻在沒有事先告知食物在什么地方的前提下開始尋找食物。當一只找到食物以后,它會向環(huán)境釋放一種揮發(fā)性分泌物pheromone (稱為信息素,該物質(zhì)隨著時間的推移會逐漸揮發(fā)消失,信息素濃度的大小表征路徑的遠近)信息素能夠讓其他螞蟻感知從而起到一個引導的作用。通常多個路徑上均有信息素時,螞蟻會優(yōu)先選擇信息素濃度高的路徑,從而使?jié)舛雀叩穆窂叫畔⑺貪舛雀?,形成一個正反饋。有些螞蟻并沒有像其它螞蟻一樣總重復同樣的路,他們會另辟蹊徑,如果另開辟的道路比原來的其他道路更短,那么,漸漸地,更多的螞蟻被吸引到這條較短的路上來。最后,經(jīng)過一段時間運行,可能會出現(xiàn)一條最短的路徑被大多數(shù)螞蟻重復著。最終,信息素濃度最高的路徑即是最終被螞蟻選中的最優(yōu)路徑。
與其他算法相比,蟻群算法是一種比較年輕的算法,具有分布式計算、無中心控制、個體之間異步間接通信等特點,并且易于與其他優(yōu)化算法相結合,經(jīng)過不少仁人志士的不斷探索,到今天已經(jīng)發(fā)展出了各式各樣的改進蟻群算法,不過蟻群算法的原理仍是主干。
2蟻群算法的求解原理
基于上述對蟻群覓食行為的描述,該算法主要對覓食行為進行以下幾個方面模擬:
1模擬的圖場景中包含了兩種信息素,一種表示家,一種表示食物的地點,并且這兩種信息素都在以一定的速率進行揮發(fā)。
2 每個螞蟻只能感知它周圍的小部分地方的信息。螞蟻在尋找食物的時候,如果在感知范圍內(nèi),就可以直接過去,如果不在感知范圍內(nèi),就要朝著信息素多的地方走,螞蟻可以有一個小概率不往信息素多的地方走,而另辟蹊徑,這個小概率事件很重要,代表了一種找路的創(chuàng)新,對于找到更優(yōu)的解很重要。
3、螞蟻回窩的規(guī)則與找食物的規(guī)則相同。
4、螞蟻在移動時候首先會根據(jù)信息素的指引,如果沒有信息素的指引,會按照自己的移動方向慣性走下去,但也有一定的機率改變方向,螞蟻還可以記住已經(jīng)走過的路,避免重復走一個地方。
5、螞蟻在找到食物時留下的信息素最多,然后距離食物越遠的地方留下的信息素越少。找到窩的信息素留下的量的規(guī)則跟食物相同。蟻群算法有以下幾個特點:正反饋算法、并發(fā)性算法、較強的魯棒性、概率型全局搜索、不依賴嚴格的數(shù)學性質(zhì)、搜索時間長,易出現(xiàn)停止現(xiàn)象。
螞蟻轉移概率公式:

公式中:是螞蟻k從城市i轉移到j的概率;α,β分別為信息素和啟發(fā)式因子的相對重要程度;為邊(i,j)上的信息素量;為啟發(fā)式因子;為螞蟻k下步允許選擇的城市。上述公式即為螞蟻系統(tǒng)中的信息素更新公式,是邊(i,j)上的信息素量;ρ是信息素蒸發(fā)系數(shù),0<ρ<1;為第k只螞蟻在本次迭代中留在邊(i,j)上的信息素量;Q為一正常系數(shù);為第k只螞蟻在本次周游中的路徑長度。
在螞蟻系統(tǒng)中,信息素更新公式為:

3蟻群算法的求解步驟:
1.初始化參數(shù)在計算之初,需要對相關參數(shù)進行初始化,如蟻群規(guī)模(螞蟻數(shù)量)m、信息素重要程度因子α、啟發(fā)函數(shù)重要程度因子β、信息素會發(fā)銀子ρ、信息素釋放總量Q、最大迭代次數(shù)iter_max、迭代次數(shù)初值iter=1。
1. 構建解空間將各個螞蟻隨機地置于不同的出發(fā)點,對每個螞蟻k(k=1,2,3…m),按照(2-1)計算其下一個待訪問城市,直到所有螞蟻訪問完所有城市。
2. 更新信息蘇計算每個螞蟻經(jīng)過路徑長度Lk(k=1,2,…,m),記錄當前迭代次數(shù)中的最優(yōu)解(最短路徑)。同時,根據(jù)式(2-2)和(2-3)對各個城市連接路徑上信息素濃度進行更新。
3. 判斷是否終止若iter<iter_max,則令iter=iter+1,清空螞蟻經(jīng)過路徑的記錄表,并返回步驟2;否則,終止計算,輸出最優(yōu)解。
4. 判斷是否終止若iter<iter_max,則令iter=iter+1,清空螞蟻經(jīng)過路徑的記錄表,并返回步驟2;否則,終止計算,輸出最優(yōu)解。3. 判斷是否終止若iter<iter_max,則令iter=iter+1,清空螞蟻經(jīng)過路徑的記錄表,并返回步驟2;否則,終止計算,輸出最優(yōu)解。



?