[Planificación de ruta] Planificación de ruta tridimensional basada en el algoritmo de colonia de hormigas [Matlab 042]

1. Introducción

El algoritmo de colonia de hormigas también es uno de los algoritmos de optimización. El algoritmo de colonia de hormigas es bueno para resolver problemas de optimización combinatoria. El algoritmo de la colonia de hormigas puede resolver eficazmente el conocido problema del viajante de comercio (TSP), y más que eso, también ha logrado ciertos resultados en otros campos, como problemas de secuenciación de procesos, problemas de coloración de gráficos, problemas de enrutamiento de red, etc. A continuación, presentaré brevemente las ideas básicas del algoritmo de colonias de hormigas.

El algoritmo de colonias de hormigas, como su nombre indica, es un algoritmo derivado del comportamiento de búsqueda de alimento de las colonias de hormigas. El comportamiento de búsqueda de alimento de una sola hormiga parece ser caótico, pero según la observación de entomólogos, la colonia de hormigas siempre puede encontrar la ruta más cercana a la comida cuando busca alimento. De hecho, la vista de las hormigas no es muy buena, pero ¿por qué zona encuentran el camino más corto hacia la comida? Después de la investigación, se descubre que cada hormiga liberará una sustancia llamada feromona a lo largo del camino durante el proceso de búsqueda de alimento. Otras hormigas conocerán esta sustancia, por lo tanto, esta sustancia afectará el comportamiento de búsqueda de alimento de otras hormigas. Cuando hay más hormigas en algunos caminos, la concentración de feromonas en este camino será mayor, y es más probable que otras hormigas elijan este camino, aumentando así la concentración de feromonas en este camino. Por supuesto, la concentración de feromonas en un camino también disminuirá con el tiempo. Este proceso de selección se denomina comportamiento autocatalítico de las hormigas, que es un mecanismo de retroalimentación positiva, y toda la colonia de hormigas también se puede identificar como un sistema de aprendizaje mejorado.

Para que todos comprendan mejor el comportamiento de búsqueda de alimento de la colonia de hormigas mencionada anteriormente, aquí hay una imagen para ilustrar el comportamiento de búsqueda de alimento de la colonia de hormigas.

Como se muestra en la figura, el punto A es un nido de hormigas, y hay dos hormigas en él, la hormiga 1 y la hormiga 2. El punto B es donde está la comida y el punto C es solo un punto en el camino. Suponga que ABC forma un triángulo equilátero y que las velocidades de movimiento de dos hormigas son las mismas.

En el momento t0, hay dos hormigas en el nido y hay dos formas de elegir entre ellas, a saber, AB o AC. Dos hormigas eligen al azar. Suponemos que la hormiga 1 elige el camino AC y la hormiga 2 elige el camino AB.

En el tiempo t1, la hormiga 1 ha llegado al punto C y la hormiga 2 ha llegado al punto B, donde se encuentra la comida. Liberan feromonas en el camino que pasan, lo que se indica con una línea de puntos en el camino. La hormiga 2 luego transporta la comida al hormiguero y aún libera feromonas en el camino, mientras que la hormiga 1 se dirige del punto C al punto B.

En el tiempo t2, la hormiga 2 alcanzó el punto A del hormiguero y la hormiga 1 llegó al punto B donde estaba la comida. En ese momento, la hormiga 2 se dispuso a llevar comida de nuevo. Descubrió que la concentración de feromonas en la ruta AB era mayor que el de la ruta AC Concentración de feromonas (hay dos líneas punteadas en la ruta AB y sólo una línea punteada en la ruta AC). Por lo tanto, la hormiga 2 elige la ruta AB para llevar la comida, y la hormiga 1 obtiene la comida en el punto B y luego regresa al hormiguero. Sin embargo, también tiene dos opciones, una es regresar por la misma ruta y la otra es para seguir la ruta AB. La hormiga 1 encuentra que la concentración de feromonas en la ruta AB es más alta que la concentración de feromonas en la ruta AC, por lo que elegirá AB para regresar al nido.

De esta manera, la concentración de feromonas de la ruta AC será cada vez menor, y la concentración de feromonas de la ruta AB será cada vez mayor, por lo que no habrá hormigas en la ruta AC para volver a pasar, y ambas hormigas solo lo harán. elija el camino más corto Línea AB para llevar comida.

En segundo lugar, el código fuente

%% 清空环境
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('迭代次数');

Tres, resultados en ejecución

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuatro, comentarios

Agregue QQ912100926 para completar el código o la escritura.
Revisión anterior >>>>>>
[Planificación de ruta] Algoritmo de optimización de enjambre de partículas para planificación de ruta UAV tridimensional [Matlab 012]
[Planificación de ruta] Algoritmo genético para planificación de ruta de vehículo abierto para múltiples centros logísticos [Matlab 013]
[Planificación de ruta] Planificación de ruta de cuadrícula de robot basada en algoritmo de enjambre de partículas [Matlab 014]
[Planificación de ruta] Algoritmo de colonia de hormigas para resolver la ruta más corta [Matlab 015]
[Planificación de ruta] Algoritmo inmune para la selección de la ubicación del centro logístico [Matlab 016]
[Planificación de ruta] Tres- planificación de ruta dimensional para drones
basada en colonia de abejas artificial [Matlab 017] [Planificación de ruta] Algoritmo genético para planificación de ruta de robot basado en mapa de cuadrícula [Matlab 018]
[Planificación de ruta] Algoritmo de colonia de hormigas para varios drones Programación de ataque [Matlab 019]
[Ruta planificación] Algoritmo genético basado en mapa de cuadrícula planificación de ruta óptima de robot [Matlab 020]
[Planificación de ruta] Algoritmo genético para modelado de asignación de objetivos cooperativo multi-UAV considerando el orden de asignación [problema Matlab 021]
[planificación de ruta] algoritmo de colonia de hormigas vrp multicéntrico problema [Matlab 022]
[planificación de ruta] algoritmo de colonia de hormigas para resolver VRP multicéntrico con ventana de tiempo [problema Matlab 023]
[planificación de ruta] muchos algoritmos genéticos Solución central de VRP [Matlab 024]
[planificación de ruta] Recocido simulado para resolver el VRP problema [Matlab 025]
[Planificación de ruta] Planificación de ruta de cuadrícula estelar [Matlab 026]
[Planificación de ruta] Basado en un factor cruzado de dos vías Planificación de ruta de mapa de cuadrícula de enjambre de partículas óptimo [Matlab 027]
[Planificación de ruta] [TSP] Algoritmo de colonia de hormigas para resolver el problema de TSP con GUI [Matlab 028]
[Planificación de ruta] Algoritmo de colonia de hormigas para planificación de ruta de mapa ráster [Matlab 029]
[Planificación de ruta] Algoritmo genético para vendedor ambulante TSP [Matlab Issue 030 ]
[Planificación de ruta] Problema de TSP de vendedor ambulante del algoritmo de recocido simulado [Matlab 031]
[Planificación de ruta] Planificación de ruta de automóvil inteligente del algoritmo de colonia de hormigas [Matlab 032]
[Planificación de ruta] Copa Huawei: UAV basado en matlab Aplicación optimizada en rescate de emergencia y [Matlab 033]
[Planificación de ruta] Problema de cálculo de flujo máximo y costo mínimo de MATLAB [Matlab 034]
[Planificación de ruta] Un algoritmo * para resolver el problema de planificación de ruta tridimensional [Matlab 035]
[Planificación de ruta] Personas Planificación de ruta de algoritmo de colonia de abejas obreras [período Matlab036]
[Planificación de ruta] Algoritmo de planificación de ruta de colonia de abejas artificiales [Matlab 037]
[Planificación de ruta] Algoritmo de colonia de hormigas para ventas de viajes múltiples Problema de MTSP [Matlab 038]
[Planificación de ruta] Planificación de ruta de UAV de hormigas basado en el algoritmo de enjambre [Matlab 039]

[[Path Planning] Algoritmo genético para resolver varios problemas de VRP [Matlab 040]] (https://blog.csdn.net/m0_54742769/article/details/113091004
[VRP] Algoritmo genético para problemas de generación de rutas de vehículos con ventana de tiempo [Matlab 041 ]

Supongo que te gusta

Origin blog.csdn.net/m0_54742769/article/details/113104776
Recomendado
Clasificación