ACO算法尋優過程
ACO算法過程如下[115]:
(1)在起點N放置h個螞蟻,在代表從i節點到j節點的路徑(i,j)上設置相同的初始信息素τij(0)。
(2)用啟發式規則確定t時刻k螞蟻(k=1,2,…,h)在路徑(i,j)上的啟發信息ηij(t)。
(3)計算t時刻k螞蟻在i節點處選擇路徑(i,j)的概率:
pkij(t)=[τij(t)]α[ηij(t)]βs∈allowedk[τis(t)]α[ηis(t)]β如果j∈allowedk
式中:α,β--控製信息素及啟發信息相對重要程度的兩個參數,計算前給定。
allowedk--可行路徑表,包含t時刻k螞蟻從i節點出發的所有可能路徑。
(4)若allowedk中存在多條路徑,用輪盤賭方式選擇i節點處k螞蟻前進的路徑。
(5)當i節點處k螞蟻前進的路徑確定後,可能其他節點的某些路徑不再可行,在k螞蟻的allowedk中刪除這些不能選擇的路徑,但仍保留其信息素值,以供其他螞蟻及後續計算使用。
(6)當所有螞蟻回到終點F後,判斷是否滿足結束條件。若滿足,則輸出計算結果,計算結束;若不滿足,則更新各條路徑的信息素,轉(2)。信息素更新方式為:
τ(t+1)=(1-ρ)×τ(t)+ρhk=1Δτkij(3.2)
式中:ρ--[0,1]之間的常數,(1-ρ)表示在t時刻到t+1時刻信息素的揮發率。
Δτkij--第k個螞蟻從t時刻到t+1時刻在路徑(i,j)上的信息素增量。其數值計算有多種方案,分別介紹如下[116]:
式中:Q為常量,表示螞蟻完成一次完整的路徑搜索所釋放的信息素總量;Lk為經過路徑(i,j)的螞蟻k在自始至終整個路徑上的花費(距離、時間、成本等)。
實驗結果表明[117],ant.cycle模型比ant.quantity、ant.density模型有更好的尋優性能,這是因為ant.cycle模型是利用全局信息更新路徑上的信息量,而ant.quantity、ant.density模型是使用局部信息,故ACO算法主要采用ant.cycle模型。
目前,ACO算法已被應用於求解旅行商問題、二次分配問題、車間生產作業計劃問題、網絡路由問題、圖作色問題、車輛調度問題、集成電路綜合布線問題、電纜敷設問題、學習模糊規則問題以及機械結構優化問題等[118]。
ACO算法的特點
ACO算法的優點[119~122]:
(1)其原理是一種正反饋機製或稱增強型學習係統,它通過信息素的不斷更新達到最終收斂於最優路徑上。
(2)它是一種通用型隨機優化方法,但人工螞蟻決不是對實際螞蟻的一種簡單模擬,它融進了人類的智能。
(3)它是一種分布式的優化方法,不僅適合目前的串行計算機,而且適合未來的並行計算機。
(4)它是一種全局優化的方法,不僅可用於求解單目標優化問題,而且可用於求解多目標優化問題。
其缺點是:初期信息素匱乏,求解速度慢。
GA.ACO算法(geneticalgorithm.antcolonyalgorithm)的基本思路是算法前麵部分采用GA算法,充分利用GA算法的快速性、隨機性和全局收斂性,其結果是產生ACO算法的初始信息素分布。算法後續過程采用極大極小螞蟻係統算法MMAS(maximumminimumantsystem),在有一定初始信息素分布的情況下,充分利用螞蟻算法的並行性、正反饋性和求精解效率高等特點。GA算法得到的一條染色體對應於非連接圖模型中的一條可行路徑。
南開大學的丁建立等[124]介紹的GA.ACO算法中,GA算法產生的染色體信息與ACO算法的路徑信息轉換方法如下:
通過GA算法得到的每條染色體對應ACO算法中的一條有效的路徑。路徑片段(i,j)上的信息素濃度為