[経路計画]アリコロニーアルゴリズムに基づく3次元経路計画[Matlab042]

1.はじめに

アリコロニーアルゴリズムも最適化アルゴリズムの1つです。アリコロニーアルゴリズムは、組み合わせ最適化の問題を解決するのに適しています。アリコロニーアルゴリズムは、よく知られている巡回セールスマン問題(TSP)を効果的に解決できます。さらに、プロセスシーケンスの問題、グラフ彩色の問題、ネットワークルーティングの問題など、他の分野でも一定の結果を達成しています。次に、アリコロニーアルゴリズムの基本的な考え方を簡単に紹介します。

アリコロニーアルゴリズムは、その名前が示すように、アリコロニーの採餌行動から派生したアルゴリズムです。単一のアリの採餌行動は混沌としているように見えますが、昆虫学者の観察によれば、アリのコロニーは採餌時に常に食物に最も近い経路を見つけることができます。その理由は何ですか?実際、アリの視力はあまり良くありませんが、どの領域で彼らは食物への最短経路を見つけますか?調査の結果、各アリは採餌過程でフェロモンと呼ばれる物質を放出することがわかりました。他のアリはこの物質を知っているので、この物質は他のアリの採餌行動に影響を与えます。一部の経路にアリが多いと、この経路のフェロモン濃度が高くなり、他のアリがこの経路を選択する可能性が高くなるため、この経路のフェロモン濃度が高くなります。もちろん、経路上のフェロモンの濃度も時間とともに減少します。この選択プロセスはアリの自己触媒行動と呼ばれ、正のフィードバックメカニズムであり、アリのコロニー全体を強化された学習システムとして識別することもできます。

上記のアリのコロニーの採餌行動をよりよく理解できるように、アリのコロニーの採餌行動を説明する写真を次に示します。

図に示すように、点Aはアリの巣であり、アリ1とアリ2の2つのアリがいます。ポイントBは食べ物がある場所であり、ポイントCはパス上のポイントにすぎません。ABCが正三角形を形成し、2匹のアリの移動速度が同じであると仮定します。

時間t0で、2匹のアリが巣の中にいて、それらの間で選択する2つの方法、すなわちABまたはACがあります。2匹のアリがランダムに選択します。アリ1がパスACを選択し、アリ2がパスABを選択すると仮定します。

時間t1で、Ant 1はポイントCに到達し、Ant2は食品が配置されているポイントBに到達しました。彼らは通過する経路でフェロモンを放出します。これは途中の点線で示されます。次に、アリ2は食物をアリの巣に運び、途中でフェロモンを放出し続けますが、アリ1はポイントCからポイントBに向かいます。

時間t2で、アリ2はアリの巣のポイントAに到達し、アリ1は餌のあるポイントBに到達しました。このとき、アリ2は再び餌を運び始めました。AB経路のフェロモン濃度がより高いことがわかりました。フェロモン濃度(ABパスには2本の点線があり、ACパスには1本の点線しかありません)。したがって、Ant 2はABパスを選択して餌を運び、Ant 1はポイントBで餌を取得してから蟻の巣に戻ります。ただし、同じルートに戻る方法と、同じルートに戻る方法の2つのオプションもあります。ルートABをたどります。Ant 1は、ABパスのフェロモン濃度がACパスのフェロモン濃度よりも高いことを検出したため、ABを選択してネストに戻ります。

このように、AC経路のフェロモン濃度はますます低くなり、AB経路のフェロモン濃度はますます高くなるので、AC経路上に再び通過するアリはなく、両方のアリは食べ物を運ぶために短いパスのABラインを選択してください。

第二に、ソースコード

%% 清空环境
clc;clear
 
%% 障碍物数据
position = load('barrier.txt');
plot([0,200],[0,200],'.');
hold on
B = load('barrier.txt');
xlabel('km','fontsize',12)
ylabel('km','fontsize',12)
title('二维规划空间','fontsize',12)
%% 描述起点和终点
S = [20,180];
T = [160,90];
plot([S(1),T(1)],[S(2),T(2)],'.');
 
% 图形标注
text(S(1)+2,S(2),'S');
text(T(1)+2,T(2),'T');
 
%% 描绘障碍物图形
fill(position(1:4,1),position(1:4,2),[0,0,0]);
fill(position(5:8,1),position(5:8,2),[0,0,0]);
fill(position(9:12,1),position(9:12,2),[0,0,0]);
fill(position(13:15,1),position(13:15,2),[0,0,0]);
 
% 下载链路端点数据
L = load('lines.txt');
 
%% 描绘线及中点
v = zeros(size(L));
for i=1:20
    plot([position(L(i,1),1),position(L(i,2),1)],[position(L(i,1),2)...
        ,position(L(i,2),2)],'color','black','LineStyle','--');
    v(i,:) = (position(L(i,1),:)+position(L(i,2),:))/2;
    plot(v(i,1),v(i,2),'*');
    text(v(i,1)+2,v(i,2),strcat('v',num2str(i)));
end
 
%% 描绘可行路径
sign = load('matrix.txt');
[n,m]=size(sign);
 
for i=1:n
    
    if i == 1
        for k=1:m-1
            if sign(i,k) == 1
                plot([S(1),v(k-1,1)],[S(2),v(k-1,2)],'color',...
                    'black','Linewidth',2,'LineStyle','-');
            end
        end
        continue;
    end
    
    for j=2:i
        if i == m
            if sign(i,j) == 1
                plot([T(1),v(j-1,1)],[T(2),v(j-1,2)],'color',...
                    'black','Linewidth',2,'LineStyle','-');
            end
        else
            if sign(i,j) == 1
                plot([v(i-1,1),v(j-1,1)],[v(i-1,2),v(j-1,2)],...
                    'color','black','Linewidth',2,'LineStyle','-');
            end
        end
    end
end
path = DijkstraPlan(position,sign);
j = path(22);
plot([T(1),v(j-1,1)],[T(2),v(j-1,2)],'color','yellow','LineWidth',3,'LineStyle','-.');
i = path(22);
j = path(i);
count = 0;
while true
    plot([v(i-1,1),v(j-1,1)],[v(i-1,2),v(j-1,2)],'color','yellow','LineWidth',3,'LineStyle','-.');
    count = count + 1;
    i = j;
    j = path(i);
    if i == 1 || j==1
        break;
    end
end
plot([S(1),v(i-1,1)],[S(2),v(i-1,2)],'color','yellow','LineWidth',3,'LineStyle','-.');
 
 
count = count+3;
pathtemp(count) = 22;
j = 22;
for i=2:count
    pathtemp(count-i+1) = path(j);
    j = path(j);
end
path = pathtemp;
path = [1     9     8     7    13    14    12    22];
 
%% 蚁群算法参数初始化
pathCount = length(path)-2;          %经过线段数量
pheCacuPara=2;                       %信息素计算参数
pheThres = 0.8;                      %信息素选择阈值
pheUpPara=[0.1 0.0003];              %信息素更新参数
qfz= zeros(pathCount,10);            %启发值
 
phePara = ones(pathCount,10)*pheUpPara(2);         %信息素
qfzPara1 = ones(10,1)*0.5;           %启发信息参数
qfzPara2 = 1.1;                      %启发信息参数
m=10;                                %种群数量
NC=500;                              %循环次数
pathk = zeros(pathCount,m);          %搜索结果记录
shortestpath = zeros(1,NC);          %进化过程记录
 
%% 初始最短路径
dijpathlen = 0;
vv = zeros(22,2);
vv(1,:) = S;
vv(22,:) = T;
vv(2:21,:) = v;
for i=1:pathCount-1
dijpathlen = dijpathlen + sqrt((vv(path(i),1)-vv(path(i+1),1))^2+(vv(path(i),2)-vv(path(i+1),2))^2);
end
LL = dijpathlen;
 
 
 
figure;
plot(1:NC,shortestpath,'color','blue');
hold on
% plot(1:NC,dijpathlen,'color','red');
ylabel('路径总长度');
xlabel('迭代次数');

3、実行中の結果

ここに画像の説明を挿入
ここに画像の説明を挿入

四、備考

完全なコードまたは記述については、QQ912100926を追加してください。
過去のレビュー>>>>>>
[経路計画] 3次元UAV経路計画のための粒子群最適化アルゴリズム[Matlab012]
[経路計画]複数のロジスティクスセンターのオープンビークル経路計画のための遺伝的アルゴリズム[Matlab013]
[経路計画]粒子群アルゴリズムに基づくロボットグリッド経路計画[Matlab014]
[経路計画]最短経路を解決するためのAntコロニーアルゴリズム[Matlab015]
[経路計画]ロジスティクスセンターの場所を選択するための免疫アルゴリズム[Matlab016]
[経路計画] 3-人工蜂コロニーに
基づくドローンの次元経路計画[Matlab017] [経路計画]グリッドマップに基づくロボット経路計画の遺伝的アルゴリズム[Matlab018]
[経路計画]複数のドローンのAntコロニーアルゴリズム攻撃スケジューリング[Matlab019]
[経路計画]グリッドマップロボット最適経路計画に基づく遺伝的アルゴリズム[Matlab020]
[経路計画]割り当て順序を考慮したマルチUAV協調ターゲット割り当てモデリングのための遺伝的アルゴリズム[
Matlab021問題] [経路計画] antコロニーアルゴリズムmulti-centervrp問題[Matlab022]
[経路計画]時間ウィンドウで多施設VRPを解決するためのantコロニーアルゴリズム[Matlab023問題]
[経路計画]多くの遺伝子アルゴリズム中央VRPソリューション[Matlab024]
[経路計画] VRPを解決するためのシミュレートされたアニーリング問題[Matlab025]
[経路計画]スターグリッド経路計画[Matlab026]
[経路計画]双方向クロスファクターに基づく最適粒子群グリッドマップ経路計画[Matlab027]
[パスプランニング] [TSP] GUIでTSP問題を解決するためのアリコロニーアルゴリズム[Matlab028]
[パスプランニング]ラスターマップパスプランニングのためのアリコロニーアルゴリズム[Matlab029]
[パスプランニング]巡回セールスマンTSPの遺伝的アルゴリズム[MatlabIssue 030 ]
[パスプランニング]巡回セールスマンTSPシミュレーションアニーリングアルゴリズムの問​​題[Matlab031]
[パスプランニング]アリコロニーアルゴリズムのスマートカーパスプランニング[Matlab032]
[パスプランニング] Huawei Cup:matlabに基づくUAV緊急救助および災害救援[Matlab033]
[経路計画] MATLABの最小コストと最大流量計算問題[Matlab034]
[経路計画] 3次元経路計画問題を解決するためのA *アルゴリズム[Matlab035]
[経路計画]人の経路計画労働者蜂コロニーアルゴリズム[Matlab036期間]
[経路計画]人工蜂コロニーアルゴリズムの経路計画[Matlab037] [経路計画]
マルチトラベルセールスMTSP問題のための蟻コロニーアルゴリズム[Matlab038] [経路計画] AntUAV
経路計画ベース群れアルゴリズムについて[Matlab039]

[[経路計画]複数のVRP問題を解決するための遺伝的アルゴリズム[Matlab040]](https://blog.csdn.net/m0_54742769/article/details/113091004
[VRP]時間枠のある車両ルーティング問題のための遺伝的アルゴリズム[Matlab041 ]

おすすめ

転載: blog.csdn.net/m0_54742769/article/details/113104776