[Задача TSP] Дифференциальная эволюция для решения задачи TSP [Matlab 044]

1. Введение

Алгоритм дифференциальной эволюции - это алгоритм случайного эвристического поиска, созданный путем моделирования закона эволюционного развития естественных биологических популяций, основанный на принципе «выживание наиболее приспособленных и выживание наиболее приспособленных». Он сохраняет глобальную стратегию поиска, основанную на популяции, использует кодирование вещественными числами, простую операцию мутации, основанную на различиях, и стратегию конкурентного выживания один-к-одному, которая проще, чем генетический алгоритм. В то же время уникальная способность запоминания алгоритма дифференциальной эволюции позволяет ему динамически отслеживать текущую ситуацию поиска и корректировать измерение поиска во времени, так что он обладает сильной способностью к глобальной сходимости.
К настоящему времени алгоритм дифференциальной эволюции стал чрезвычайно эффективным методом решения нелинейных, недифференцируемых, многоэкстремальных и многомерных сложных функций.
При проектировании оптимизации алгоритм дифференциальной эволюции имеет следующие характеристики по сравнению с традиционным алгоритмом:
1. Алгоритм дифференциальной эволюции выполняет поиск из группы, то есть из нескольких точек, вместо того, чтобы начинать с одной точки. Этот алгоритм также может найти целое с большей вероятностью Причина оптимального решения.
2. Критерий развития алгоритма основан на адаптивной информации и не требует другой вспомогательной информации, такой как требование, чтобы функция была выводимой и непрерывной.
3. Алгоритм дифференциальной эволюции обладает внутренним параллелизмом и подходит для крупномасштабной параллельной распределенной обработки, сокращая временные затраты и накладные расходы.
Но есть недостатки:
1. Различия между отдельными лицами на более поздней стадии алгоритма уменьшаются, скорость сходимости мала, и легко попасть в локальный оптимум.
2. Без использования предварительных знаний человека может потребоваться больше итераций для схождения к глобальной оптимальной
структуре алгоритма:
Вставьте описание изображения сюда
1. Инициализировать совокупность и установить начальную алгебру эволюции t = 0 в пространстве возможных решений задачи оптимизации, следуйте формуле, случайным образом Сгенерируйте NP индивидуумов X, которые удовлетворяют ограничениям для формирования начальной популяции. Выбор NP обычно в 5-10 раз превышает размерность D.
Вставьте описание изображения сюда
2. Операция мутации Операция мутации - ключевой шаг в алгоритме DE, а также главное отличие этого алгоритма от других эволюционных алгоритмов. Самым основным вариационным компонентом алгоритма DE является вектор различий родительского элемента. Каждый вектор различий соответствует вектору различий двух разных индивидуумов в родительской популяции. Определение вектора различий выглядит следующим образом:
Вставьте описание изображения сюда
Среди них r1, r2, r3 ∈ {1, 2,…, NP} - это случайно выбранные положительные целые числа, которые отличаются друг от друга, а r1, r2, r3 отличаются от текущего целевого индивидуального индекса вектора с номером i. Это может видно, что алгоритм DE Размер популяции должен быть больше 4, иначе операция мутации будет невозможна. Vi (t + 1) - это мутированный индивидуальный вектор, соответствующий целевому индивидуальному вектору Xi (t), Xr3 (t) называется базисным вектором, а F∈ [0, 2] - константа, которая является одной из основных Управляющие параметры алгоритма DE, называемые это коэффициент вариации или масштабный коэффициент, который управляет масштабированием вектора разности, то есть величиной влияния на базовый вектор.
Вставьте описание изображения сюда
3. Операция кроссовера. Чтобы еще больше увеличить разнообразие популяции, алгоритм DE пересекает индивидуальный целевой вектор Xi (t) с соответствующим ему вариантом индивидуума Vi (t + 1) для создания тестовой особи, то есть целевой особи. кандидат Ui (t + 1). Чтобы обеспечить эволюцию целевой индивидуальности Xi (t), необходимо убедиться, что по крайней мере один размерный компонент в тестовой особи Ui (t + 1) вносится индивидуальным вариантом Vi (t + 1), в то время как другие размерные компоненты определяются коэффициентом вероятности кроссовера CR. Следовательно, каждый размерный компонент uij (t + 1) у испытуемого выглядит следующим образом.
Вставьте описание изображения сюда
Среди них xij (t) представляет компонент j-го измерения в целевом индивидуальном векторе Xi (t) в родительской популяции, vij (t + 1) представляет собой компонент j-го измерения в индивидуальном варианте Vi (t + 1 ), где i = 1, ..., NP, j = 1, ..., D. rand (j) ∈ [0,1] - случайное число, соответствующее компоненту j-го измерения. Коэффициент вероятности кроссовера CR∈ [0,1] - еще один основной управляющий параметр алгоритма DE, который определяет долю индивидуального варианта Vi (t + 1) в сгенерированном тестовом индивидууме Ui (t + 1). k - коэффициент, соответствующий i-му индивидууму, который обычно представляет собой целое число, случайно выбранное из последовательности [1, 2,…, D], чтобы гарантировать, что по крайней мере один размерный компонент кандидата индивидуума Ui (t + 1) появится из индивидуального варианта Vi (t + 1).

4. Выберите операцию (выживает сильнейший).
Вставьте описание изображения сюда

Во-вторых, исходный код

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)

Три, беговые результаты

Вставьте описание изображения сюда

Четыре, примечания

Добавьте QQ912100926 для полного кода или записи.
Предыдущий обзор >>>>>>
[Планирование пути] Алгоритм оптимизации роя частиц для трехмерного планирования пути БПЛА [Matlab 012]
[Планирование пути] Генетический алгоритм для планирования пути открытого транспортного средства для нескольких логистических центров [Matlab 013]
[Планирование пути] Планирование пути сетки роботов на основе алгоритма роя частиц [Matlab 014]
[Планирование пути] Алгоритм муравьиной колонии для определения кратчайшего пути [Matlab 015]
[Планирование пути] Иммунный алгоритм для выбора местоположения логистического центра [Matlab 016]
[Планирование пути] Три- пространственное планирование пути для дронов
на основе искусственной пчелиной семьи [Matlab 017] [Планирование пути] Генетический алгоритм планирования пути робота на основе карты сетки [Matlab 018]
[Планирование пути] Алгоритм муравьиной колонии для нескольких дронов Планирование атак [Matlab 019]
[Путь планирование] Генетический алгоритм, основанный на сеточной карте, планирование оптимального пути робота [Matlab 020]
[Планирование пути] Генетический алгоритм для моделирования распределения кооперативных целей с несколькими БПЛА с учетом порядка распределения [Выпуск Matlab 021]
[планирование пути] Алгоритм многоцентровой vrp муравьиной колонии проблема [Matlab 022]
[планирование пути] алгоритм колонии муравьев для решения многоцентровой VRP с временным окном [Matlab 023 проблема]
[планирование пути] многие генетические алгоритмы Центральное решение VRP [Matlab 024]
[Планирование пути] Имитация отжига для решения VRP проблема [Matlab 025]
[Планирование пути] Планирование пути звездной сетки [Matlab 026]
[Планирование пути] На основе двустороннего перекрестного фактора Планирование пути оптимальной карты роя частиц [Matlab 027]
[Планирование пути] [TSP] Алгоритм колонии муравьев для решения проблемы TSP с графическим интерфейсом [Matlab 028]
[Планирование пути] Алгоритм колонии муравьев для планирования пути растровой карты [Matlab 029]
[Планирование пути] Генетический алгоритм для коммивояжера TSP [Matlab Issue 030 ]
[Планирование пути] Коммивояжер TSP Проблема имитации алгоритма отжига [Matlab 031]
[Планирование пути] Алгоритм планирования пути интеллектуального автомобиля для колонии муравьев [Matlab 032]
[Планирование пути] Huawei Cup: БПЛА на основе Matlab Оптимизированное приложение для аварийно-спасательных и помощь при стихийных бедствиях [Matlab 033]
[Планирование пути] Задача расчета минимальной стоимости и максимального потока MATLAB [Matlab 034]
[Планирование пути] A * алгоритм для решения задачи трехмерного планирования пути [Matlab 035]
[Планирование пути] Планирование пути людей алгоритм колонии рабочих пчел [Matlab036 период]
[Планирование пути] Планирование пути алгоритма искусственной пчелиной семьи [Matlab 037]
[Планирование пути] Алгоритм муравьиной колонии для задачи MTSP продаж в нескольких поездках [Matlab 038]
[Планирование пути] На основе планирования пути БПЛА с муравьями по алгоритму роя [Matlab 039]

[[Планирование пути] Генетический алгоритм для решения множества проблем VRP [Matlab 040]] (https://blog.csdn.net/m0_54742769/article/details/113091004
[VRP] Генетический алгоритм для задачи маршрутизации транспортных средств с временным окном [Matlab 041 период]
[Планирование пути] Трехмерное планирование пути, основанное на алгоритме колонии муравьев [Matlab 042]
[Планирование пути] Оптимизация роя частиц, колония муравьев для определения кратчайшего пути [Matlab 043]

рекомендация

отblog.csdn.net/m0_54742769/article/details/113104923