[Problema TSP] Evolución diferencial para resolver el problema TSP [Matlab 044]

1. Introducción

El algoritmo de evolución diferencial es un algoritmo de búsqueda heurística aleatoria formado mediante la simulación de la ley de desarrollo evolutivo de poblaciones biológicas naturales basado en el principio de "supervivencia del más apto y supervivencia del más apto". Conserva la estrategia de búsqueda global basada en la población, adopta la codificación de números reales, la operación de mutación simple basada en la diferencia y la estrategia de supervivencia competitiva uno a uno, que es más simple que el algoritmo genético. Al mismo tiempo, la capacidad de memoria única del algoritmo de evolución diferencial le permite realizar un seguimiento dinámico de la situación de búsqueda actual y ajustar la medición de búsqueda a tiempo, por lo que tiene una fuerte capacidad de convergencia global.
Hasta ahora, el algoritmo de evolución diferencial se ha convertido en un método extremadamente eficaz para resolver funciones complejas no lineales, no diferenciables, multiextremas y de alta dimensión.
En el diseño de optimización, el algoritmo de evolución diferencial tiene las siguientes características en comparación con el algoritmo tradicional:
1. El algoritmo de evolución diferencial busca en un grupo, es decir, múltiples puntos en lugar de partir de un punto. Este es también el algoritmo que puede encontrar el todo con mayor probabilidad El motivo de la solución óptima.
2. El criterio de evolución del algoritmo se basa en información adaptativa y no requiere de otra información auxiliar, como el requisito de que la función sea derivable y continua.
3. El algoritmo de evolución diferencial tiene un paralelismo inherente y es adecuado para el procesamiento distribuido en paralelo a gran escala, lo que reduce el costo de tiempo y los gastos generales.
Pero las desventajas son:
1. La diferencia entre los individuos en la última etapa del algoritmo se reduce, la velocidad de convergencia es lenta y es fácil caer en el óptimo local.
2. Sin utilizar el conocimiento previo del individuo, pueden ser necesarias más iteraciones para converger al
marco del algoritmo óptimo global :
Inserte la descripción de la imagen aquí
1. Inicializar la población y establecer el álgebra de evolución inicial t = 0, en el espacio de solución factible del problema de optimización, siguen la fórmula, aleatoriamente Generar NP individuos X que cumplen con las restricciones para formar la población inicial La selección de NP es generalmente entre 5-10 veces la dimensión D.
Inserte la descripción de la imagen aquí
2. Operación de mutación La operación de mutación es un paso clave en el algoritmo DE, y también es la principal diferencia entre este y otros algoritmos evolutivos. El componente de variación más básico del algoritmo DE es el vector de diferencia del padre. Cada vector de diferencia corresponde al vector de diferencia de dos individuos diferentes en la población de padres. La definición del vector de diferencia es la siguiente:
Inserte la descripción de la imagen aquí
Entre ellos, r1, r2, r3 ∈ {1, 2,…, NP} son números enteros positivos seleccionados al azar que son diferentes entre sí, y r1, r2, r3 son diferentes del número de índice del vector individual objetivo actual i. Puede Se verá que el tamaño de la población del algoritmo DE debe ser superior a 4, de lo contrario la operación de mutación no será posible. Vi (t + 1) es el vector individual mutado correspondiente al vector individual objetivo Xi (t), Xr3 (t) se llama vector base y F∈ [0, 2] es una constante, que es una de las principales parámetros de control del algoritmo DE, denominado Es el factor de variación o factor de escala, que controla la escala del vector diferencia, es decir, la magnitud de la influencia sobre el vector base.
Inserte la descripción de la imagen aquí
3. Operación de cruce Para aumentar aún más la diversidad de la población, el algoritmo DE cruza el individuo vector objetivo Xi (t) con su correspondiente individuo variante Vi (t + 1) para generar un individuo de prueba, es decir, el individuo objetivo candidato Ui (t + 1). Para asegurar la evolución del individuo objetivo Xi (t), es necesario asegurarse de que al menos un componente dimensional en el individuo de prueba Ui (t + 1) sea contribuido por el individuo variante Vi (t + 1), mientras que otros componentes dimensionales están determinados por el factor de probabilidad de cruce CR. Por lo tanto, cada componente dimensional uij (t + 1) en el individuo de prueba es el siguiente.
Inserte la descripción de la imagen aquí
Entre ellos, xij (t) representa el j-ésimo componente de dimensión en el vector individual objetivo Xi (t) en la población madre, vij (t + 1) es el j-ésimo componente de dimensión en el individuo variante Vi (t + 1 ), donde i = 1, ..., NP, j = 1, ..., D. rand (j) ∈ [0,1] es el número aleatorio correspondiente al componente de dimensión j-ésima. El factor de probabilidad de cruce CR∈ [0,1] es otro parámetro de control principal del algoritmo DE, que determina la proporción del individuo variante Vi (t + 1) en el individuo de prueba generado Ui (t + 1). k es el coeficiente correspondiente al i-ésimo individuo, que generalmente es un número entero seleccionado al azar de la secuencia [1, 2,…, D] para asegurar que al menos un componente dimensional del individuo candidato Ui (t + 1) sea del individuo variante Vi (t + 1).

4. Seleccione la operación (supervivencia del más apto)
Inserte la descripción de la imagen aquí

En segundo lugar, el código fuente

close all
clear
clc
 
%edit by zhang
% 2014-3-15
 
city=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556;...
    3238,1229;4196,1004;4312,790;4386,570;3007,1970;2562,1756;2788,1491;...
    2381,1676;1332,695;3715,1678;3918,2179;4061,2370;3780,2212;3676,2578;4029,2838;...
    4263,2931;3429,1908;3507,2367;3394,3201;3439,3201;2935,3240;3140,3550;2545,2357;2778,2826;2370,2975];
 
city_num=size(city,1);
%计算两两城市之间的距离
for i=1:city_num
    for j=1:city_num
        distance(i,j)=sqrt((city(i,1)-city(j,1))^2 + (city(i,2)-city(j,2))^2);
    end
end
%相比于其他算法,迭代次数略长
NP=20;
NG=2000;
F=0.6;
CR=0.5;
 
pop=zeros(NP,city_num);
x_old=zeros(NP,city_num);
x_new=zeros(NP,city_num);
pi_old=zeros(NP,city_num);
pi_new=zeros(NP,city_num);
 
for i=1:NP
    for j=1:city_num
       pop(i,j)=5*rand();
    end
end
 
k=1;
 
x_old=pop;
 
while k<=NG
    %将实数编码转换成工件顺序编码
    for i=1:NP
      x_old_decode(i,:)=LOVdecode(x_old(i,:));
    end
    %----find the best value--------------%
    ind_best  = x_old(1,:);
    for i=2:NP
        pi_best=LOVdecode(ind_best);
        
        if CalLength(distance,pi_best)>CalLength(distance,x_old_decode(i,:))
            ind_best = x_old(i,:);
        end
    end
    
    BestFit=CalLength(distance , LOVdecode(ind_best));%最短时间
    Best=LOVdecode(ind_best);%最佳路径
     %%--------mutaiton---------------------%
     for i=1:NP
         R=randperm(NP);
         r1=R(1);
         r2=R(2);
         r3=R(3);
         
         if i==r1
             r1=R(4);
         else if i==r2
                 r2=R(4);
             else if i==r3
                     r3=R(4);
                 end
             end
         end
         
 
       
     x_old = x_new; 
     k=k+1;
end
BSF=Best;
BestL=BestFit;
%绘制路径图
for i=1:city_num-1 
        plot([city(BSF(i),1),city(BSF(i+1),1)],[city(BSF(i),2),city(BSF(i+1),2)],'bo-'); 
        hold on; 
end 
plot([city(BSF(city_num),1),city(BSF(1),1)],[city(BSF(city_num),2),city(BSF(1),2)],'ro-');
title('差分进化TSP')
 
disp('最佳路径');
disp(BSF);
disp('最短路径长度');
disp(BestL)

Tres, resultados en ejecución

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 la planificación de ruta de robot basado en mapa de cuadrícula [Matlab 018]
[Planificación de ruta] Algoritmo de colonia de hormigas para múltiples 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 período]
[Planificación de ruta] Planificación de ruta tridimensional basada en el algoritmo de colonia de hormigas [Matlab 042]
[Planificación de ruta] Optimización de enjambre de partículas colonia de hormigas para resolver la ruta más corta [Matlab 043]

Supongo que te gusta

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