當前位置:首頁 » 操作系統 » C蟻群演算法

C蟻群演算法

發布時間: 2025-02-08 20:21:25

㈠ 蟻群演算法求函數的最小值

未定義函數或變數 'max_global'。
出錯 ant_main_program (line 107)
if max_local(i_ger) > max_global(i_ger-1)
怎麼解決

㈡ TSP中用蟻群演算法和遺傳演算法有區別么

TSP,只是一個普通但很經典的NP-C問題。具有大的難以想像的解空間。一般的branch-and-bound演算法是很難搞定的。於是,人們嘗試智能演算法,包括遺傳演算法,蟻群演算法,粒子群演算法等。遺傳演算法和蟻群演算法都是基於種群的。但是這兩個演算法有著本質區別。遺傳演算法的進化機制是基於個體競爭,而蟻群演算法的搜索機制則是螞蟻之間的信息素傳導機制下的群體合作。因此,蟻群演算法,粒子群演算法,人工魚群演算法等,被歸納為群智能演算法,成為了一個有別於遺傳演算法的另一個進化計算領域的分支。由於搜索機制的不同,這兩種演算法對於不同的問題,具有不同的效率。就拿標准遺傳演算法和標准蟻群演算法來說,應該是蟻群演算法更適合求解TSP。然而,無論是遺傳演算法還是蟻群演算法,都有大量的變種演算法或者稱為改進演算法,所以很難簡單的說誰更適合TSP。
記得採納啊

㈢ 蟻群演算法的相關研究

跟著螞蟻的蹤跡,你找到了什麼?通過上面的原理敘述和實際操作,我們不難發現螞蟻之所以具有智能行為,完全歸功於它的簡單行為規則,而這些規則綜合起來具有下面兩個方面的特點:
1、多樣性
2、正反饋
多樣性保證了螞蟻在覓食的時候不至走進死胡同而無限循環,正反饋機制則保證了相對優良的信息能夠被保存下來。我們可以把多樣性看成是一種創造能力,而正反饋是一種學習強化能力。正反饋的力量也可以比喻成權威的意見,而多樣性是打破權威體現的創造性,正是這兩點小心翼翼的巧妙結合才使得智能行為涌現出來了。
引申來講,大自然的進化,社會的進步、人類的創新實際上都離不開這兩樣東西,多樣性保證了系統的創新能力,正反饋保證了優良特性能夠得到強化,兩者要恰到好處的結合。如果多樣性過剩,也就是系統過於活躍,這相當於螞蟻會過多的隨機運動,它就會陷入混沌狀態;而相反,多樣性不夠,正反饋機制過強,那麼系統就好比一潭死水。這在蟻群中來講就表現為,螞蟻的行為過於僵硬,當環境變化了,螞蟻群仍然不能適當的調整。
既然復雜性、智能行為是根據底層規則涌現的,既然底層規則具有多樣性和正反饋特點,那麼也許你會問這些規則是哪裡來的?多樣性和正反饋又是哪裡來的?我本人的意見:規則來源於大自然的進化。而大自然的進化根據剛才講的也體現為多樣性和正反饋的巧妙結合。而這樣的巧妙結合又是為什麼呢?為什麼在你眼前呈現的世界是如此栩栩如生呢?答案在於環境造就了這一切,之所以你看到栩栩如生的世界,是因為那些不能夠適應環境的多樣性與正反饋的結合都已經死掉了,被環境淘汰了! 蟻群演算法的由來:螞蟻是地球上最常見、數量最多的昆蟲種類之一,常常成群結隊地出現在人類的日常生活環境中。這些昆蟲的群體生物智能特徵,引起了一些學者的注意。義大利學者M.Dorigo,V.Maniezzo等人在觀察螞蟻的覓食習性時發現,螞蟻總能找到巢穴與食物源之間的最短路徑。經研究發現,螞蟻的這種群體協作功能是通過一種遺留在其來往路徑上的叫做信息素(Pheromone)的揮發性化學物質來進行通信和協調的。化學通信是螞蟻採取的基本信息交流方式之一,在螞蟻的生活習性中起著重要的作用。通過對螞蟻覓食行為的研究,他們發現,整個蟻群就是通過這種信息素進行相互協作,形成正反饋,從而使多個路徑上的螞蟻都逐漸聚集到最短的那條路徑上。
這樣,M.Dorigo等人於1991年首先提出了蟻群演算法。其主要特點就是:通過正反饋、分布式協作來尋找最優路徑。這是一種基於種群尋優的啟發式搜索演算法。它充分利用了生物蟻群能通過個體間簡單的信息傳遞,搜索從蟻巢至食物間最短路徑的集體尋優特徵,以及該過程與旅行商問題求解之間的相似性。得到了具有NP難度的旅行商問題的最優解答。同時,該演算法還被用於求解Job-Shop調度問題、二次指派問題以及多維背包問題等,顯示了其適用於組合優化類問題求解的優越特徵。
多年來世界各地研究工作者對蟻群演算法進行了精心研究和應用開發,該演算法現已被大量應用於數據分析、機器人協作問題求解、電力、通信、水利、采礦、化工、建築、交通等領域。
蟻群演算法之所以能引起相關領域研究者的注意,是因為這種求解模式能將問題求解的快速性、全局優化特徵以及有限時間內答案的合理性結合起來。其中,尋優的快速性是通過正反饋式的信息傳遞和積累來保證的。而演算法的早熟性收斂又可以通過其分布式計算特徵加以避免,同時,具有貪婪啟發式搜索特徵的蟻群系統又能在搜索過程的早期找到可以接受的問題解答。這種優越的問題分布式求解模式經過相關領域研究者的關注和努力,已經在最初的演算法模型基礎上得到了很大的改進和拓展。
經過一定時間,從食物源返回的螞蟻到達D點同樣也碰到障礙物,也需要進行選擇。此時A, B兩側的信息素濃度相同,它們仍然一半向左,一半向右。但是當A側的螞蟻已經完全繞過障礙物到達C點時,B側的螞蟻由於需走的路徑更長,還不能到達C點,圖3表示蟻群在障礙物前經過一段時間後的情形。
此時對於從蟻巢出發來到C點的螞蟻來說,由於A側的信息素濃度高,B側的信息素較低,就傾向於選擇A側的路徑。這樣的結果是A側的螞蟻越來越多,最終所有螞蟻都選擇這條較短的路徑,圖4 表示蟻群最終選擇的路徑
上述過程,很顯然是由螞蟻所留下的信息素的「正反饋」過程而導致的。螞蟻個體就是通過這種信息的交流來達到搜索食物的目的。蟻群演算法的基本思想也是從這個過程轉化而來的。
蟻群演算法的特點:
1)蟻群演算法是一種自組織的演算法。在系統論中,自組織和它組織是組織的兩個基本分類,其區別在於組織力或組織指令是來自於系統的內部還是來自於系統的外部,來自於系統內部的是自組織,來自於系統外部的是他組織。如果系統在獲得空間的、時間的或者功能結構的過程中,沒有外界的特定干預,我們便說系統是自組織的。在抽象意義上講,自組織就是在沒有外界作用下使得系統熵減小的過程(即是系統從無序到有序的變化過程)。蟻群演算法充分體現了這個過程,以螞蟻群體優化為例子說明。當演算法開始的初期,單個的人工螞蟻無序的尋找解,演算法經過一段時間的演化,人工螞蟻間通過信息激素的作用,自發的越來越趨向於尋找到接近最優解的一些解,這就是一個無序到有序的過程。
2)蟻群演算法是一種本質上並行的演算法。每隻螞蟻搜索的過程彼此獨立,僅通過信息激素進行通信。所以蟻群演算法則可以看作是一個分布式的多agent系統,它在問題空間的多點同時開始進行獨立的解搜索,不僅增加了演算法的可靠性,也使得演算法具有較強的全局搜索能力。
3)蟻群演算法是一種正反饋的演算法。從真實螞蟻的覓食過程中我們不難看出,螞蟻能夠最終找到最短路徑,直接依賴於最短路徑上信息激素的堆積,而信息激素的堆積卻是一個正反饋的過程。對蟻群演算法來說,初始時刻在環境中存在完全相同的信息激素,給予系統一個微小擾動,使得各個邊上的軌跡濃度不相同,螞蟻構造的解就存在了優劣,演算法採用的反饋方式是在較優的解經過的路徑留下更多的信息激素,而更多的信息激素又吸引了更多的螞蟻,這個正反饋的過程使得初始的不同得到不斷的擴大,同時又引導整個系統向最優解的方向進化。因此,正反饋是螞蟻演算法的重要特徵,它使得演算法演化過程得以進行。
4)蟻群演算法具有較強的魯棒性。相對於其它演算法,蟻群演算法對初始路線要求不高,即蟻群演算法的求解結果不依賴於初始路線的選擇,而且在搜索過程中不需要進行人工的調整。其次,蟻群演算法的參數數目少,設置簡單,易於蟻群演算法應用到其它組合優化問題的求解。
蟻群演算法的應用進展以蟻群演算法為代表的蟻群智能已成為當今分布式人工智慧研究的一個熱點,許多源於蜂群和蟻群模型設計的演算法己越來越多地被應用於企業的運轉模式的研究。美國五角大樓正在資助關於群智能系統的研究工作-群體戰略(Swarm Strategy),它的一個實戰用途是通過運用成群的空中無人駕駛飛行器和地面車輛來轉移敵人的注意力,讓自己的軍隊在敵人後方不被察覺地安全進行。英國電信公司和美國世界通信公司以電子螞蟻為基礎,對新的電信網路管理方法進行了試驗。群智能還被應用於工廠生產計劃的制定和運輸部門的後勤管理。美國太平洋西南航空公司採用了一種直接源於螞蟻行為研究成果的運輸管理軟體,結果每年至少節約了1000萬美元的費用開支。英國聯合利華公司己率先利用群智能技術改善其一家牙膏廠的運轉情況。美國通用汽車公司、法國液氣公司、荷蘭公路交通部和美國一些移民事務機構也都採用這種技術來改善其運轉的機能。鑒於群智能廣闊的應用前景,美國和歐盟均於近幾年開始出資資助基於群智能模擬的相關研究項目,並在一些院校開設群體智能的相關課程。國內,國家自然科學基金」十五」期間學科交叉類優先資助領域中的認知科學及其信息處理的研究內容中也明確列出了群智能領域的進化、自適應與現場認知主題。
蟻群優化演算法最初用於解決TSP問題,經過多年的發展,已經陸續滲透到其他領域中,比如圖著色問題、大規模集成電路設計、通訊網路中的路由問題以及負載平衡問題、車輛調度問題等。蟻群演算法在若干領域己獲得成功的應用,其中最成功的是在組合優化問題中的應用。
在網路路由處理中,網路的流量分布不斷變化,網路鏈路或結點也會隨機地失效或重新加入。蟻群的自身催化與正向反饋機制正好符合了這類問題的求解特點,因而,蟻群演算法在網路領域得到一定應用。蟻群覓食行為所呈現出的並行與分布特性使得演算法特別適合於並行化處理。因而,實現演算法的並行化執行對於大量復雜的實際應用問題的求解來說是極具潛力的。
在某群體中若存在眾多無智能的個體,它們通過相互之間的簡單合作所表現出來的智能行為即稱為集群智能(Swarm Intelligence)。互聯網上的交流,不過是更多的神經元連接(人腦)通過互聯網相互作用的結果,光纜和路由器不過是軸突和突觸的延伸。從自組織現象的角度上看,人腦的智能和蟻群也沒有本質上的區別,單個神經元沒有智能可言,單個螞蟻也沒有,但是通過連接形成的體系,是一個智能體。(作者: 李精靈 編選:中國電子商務研究中心)

㈣ 急求蟻群演算法解決 VRPTW問題的matlab代碼,最好是ACS或者MMAS的!

function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
%%=========================================================================
%% ACATSP.m
%% Ant Colony Algorithm for Traveling Salesman Problem
%% ChengAihua,PLA Information Engineering University,ZhengZhou,China
%% Email:[email protected]
%% All rights reserved
%%-------------------------------------------------------------------------
%% 主要符號說明
%% C n個城市的坐標,n×2的矩陣
%% NC_max 最大迭代次數
%% m 螞蟻個數
%% Alpha 表徵信息素重要程度的參數
%% Beta 表徵啟發式因子重要程度的參數
%% Rho 信息素蒸發系數
%% Q 信息素增加強度系數
%% R_best 各代最佳路線
%% L_best 各代最佳路線的長度
%% 運行可能要很久,需要耐心等待
%%=========================================================================

n=length(C); %n 為市個數
for i=1:n %坐標矩陣轉換為距離矩陣
for j=1:n
D(i,j)=sqrt((x(i,1)-x(j,1))^2+(x(i,2)-x(j,2))^2);
end
end
for i=1:n %Eta為啟發因子,這里設為距離的倒數
for j=1:n %原文作者少考慮的當D=0是MATLAB提示出錯
if i~=j
Eta(i,j)=1./D(i,j);
end
end
end
for i=1:n
Eta(i,i)=0;
end
Tau=ones(n,n); %Tau為信息素矩陣
Tabu=zeros(m,n); %存儲並記錄路徑的生成
NC=1; %迭代計數器
R_best=zeros(NC_max,n); %各代最佳路線
L_best=inf.*ones(NC_max,1); %各代最佳路線的長度
L_ave=zeros(NC_max,1); %各代路線的平均長度

while NC<=NC_max %停止條件之一:達到最大迭代次數
%%第二步:將m只螞蟻放到n個城市上
Randpos=[];
for i=1:(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:,1)=(Randpos(1,1:m))';

%%第三步:m只螞蟻按概率函數選擇下一座城市,完成各自的周遊
for j=2:n
for i=1:m
visited=Tabu(i,1:(j-1)); %已訪問的城市
J=zeros(1,(n-j+1)); %待訪問的城市
P=J; %待訪問城市的選擇概率分布
Jc=1;
for k=1:n
if length(find(visited==k))==0
J(Jc)=k;
Jc=Jc+1;
end
end
%下面計算待選城市的概率分布
for k=1:length(J)
P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
end
P=P/(sum(P));
%按概率原則選取下一個城市
Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));
Tabu(i,j)=to_visit;
end
end
if NC>=2
Tabu(1,:)=R_best(NC-1,:);
end

%%第四步:記錄本次迭代最佳路線
L=zeros(m,1);
for i=1:m
R=Tabu(i,:);
for j=1:(n-1)
L(i)=L(i)+D(R(j),R(j+1));
end
L(i)=L(i)+D(R(1),R(n));
end
L_best(NC)=min(L);
pos=find(L==L_best(NC));
R_best(NC,:)=Tabu(pos(1),:);
L_ave(NC)=mean(L);
NC=NC+1;

%%第五步:更新信息素
Delta_Tau=zeros(n,n);
for i=1:m
for j=1:(n-1)
Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
end
Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);
end
Tau=(1-Rho).*Tau+Delta_Tau;

%%第六步:禁忌表清零
Tabu=zeros(m,n);
end

%%第七步:輸出結果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:);
Shortest_Length=L_best(Pos(1));
DrawRoute(C,Shortest_Route) %調用函數繪圖

㈤ 蟻群演算法及其應用實例

       蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種對自然界螞蟻的尋徑方式進行模擬而得到的一種仿生演算法,是一種用來在圖中尋找優化路徑的機率型演算法。
       螞蟻在運動過程中,可以在行走的路徑上留下信息素,後來的螞蟻可以感知到信息素的存在,信息素濃度越高的路徑越容易被後來的螞蟻選擇,從而形成一種正反饋現象。
       它能夠求出從原點出發,經過若干個給定的需求點,最終返回原點的最短路徑。這也就是著名的旅行商問題(Traveling Saleman Problem,TSP)。

       若螞蟻從A點出發到D點覓食,它可以隨機從ABD或ACD中選擇一條路。假設初始時為每條路分配一隻螞蟻,每個時間單位行走一步,則經過8個時間單位後,情形如下圖所示:ABD路線的螞蟻到達D點,ACD路線的螞蟻到達C點。

       那麼,再過8個時間單位,很容易可以得到下列情形:ABD路線的螞蟻回到A點,ACD路線的螞蟻到達D點。

α 代表信息素量對是否選擇當前路徑的影響程度,反映了蟻群在路徑搜索中隨機性因素作用的強度。
α 越大,螞蟻選擇以前走過的路徑的可能性越大,搜索的隨機性就會減弱。
α 過小,會導致蟻群搜索過早陷入局部最優,取值范圍通常為[1,4]。

β 反映了啟發式信息在指導蟻群搜索中的相對重要程度,蟻群尋優過程中先驗性、確定性因素作用的強度。
β 過大,雖然收斂速度加快,但是易陷入局部最優。
β 過小,蟻群易陷入純粹的隨機搜索,很難找到最優解。通常取[0,5]。

ρ 反映了信息素的蒸發程度,相反,1-ρ 表示信息素的保留水平
ρ 過大,信息素會發過快,容易導致最優路徑被排除。
ρ 過小,各路徑上信息素含量差別過小,以前搜索過的路徑被在此選擇的可能性過大,會影響演算法的隨機性和全局搜索能力。通常取[0.2,0.5]。

m過大,每條路徑上信息素趨於平均,正反饋作用減弱,從而導致收斂速度減慢。
m過小,可能導致一些從未搜索過的路徑信息素濃度減小為0,導致過早收斂,解的全局最優性降低

總信息量Q對演算法性能的影響有賴於αβρ的選取,以及演算法模型的選擇。
Q對ant-cycle模型蟻群演算法的性能沒有明顯影響,不必特別考慮,可任意選取。

熱點內容
新箱子密碼鎖怎麼設置 發布:2025-02-08 23:26:50 瀏覽:147
安卓如何可以看見被撤回的消息 發布:2025-02-08 23:19:17 瀏覽:797
火影忍者競技場腳本 發布:2025-02-08 23:10:18 瀏覽:934
英國訪問學者簽證費用 發布:2025-02-08 23:04:46 瀏覽:926
洛奇合成腳本 發布:2025-02-08 22:57:04 瀏覽:141
linux文件軟鏈接 發布:2025-02-08 22:35:48 瀏覽:773
iphone6s緩存怎麼清理 發布:2025-02-08 22:33:17 瀏覽:928
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44
processc語言 發布:2025-02-08 22:11:15 瀏覽:537
國產車配置為什麼這么便宜 發布:2025-02-08 22:09:52 瀏覽:481