Методы решения задачи коммивояжера

1. метод ветвей и границ (алгоритм Литтла или исключения подциклов). Пример решения методом ветвей и границ;

2. венгерский метод. Пример решения венгерским методом.

ПРИМЕР. В качестве начального маршрута выбирается любой, например, X0 = (1,2);(2,3);(3,4);(4,5);(5,6);(6,1). Оценка для этого маршрута равна F(X0) = 43 + 65 + 73 + 22 + 8 + 80 = 291. Для определения нижней границы множества используют операцию редукции, для чего в каждой строке матрицы D находят минимальный элемент: di = min(j) dij

i j             di
  M            
    M          
      M        
        M      
          M    
            M  


Затем вычитают di из элементов рассматриваемой строки. Поэтому во вновь полученной матрице в каждой строке будет как минимум один ноль.

i j            
  M          
    M        
      M      
        M    
          M  
            M


Такую же операцию редукции проводят по столбцам: dj = min(i) dij

i j            
  M          
    M        
      M      
        M    
          M  
            M
dj            


После вычитания минимальных элементов получаем полностью редуцированную матрицу, где величины di и djназываются константами приведения.

i j            
  M          
    M        
      M      
        M    
          M  
            M


Сумма констант приведения определяет нижнюю границу H = ∑di + ∑dj = 9+52+13+17+8+10+0+20+0+5+0+0 = 134. Элементы матрицы dij соответствуют расстоянию от пункта i до пункта j. Длина маршрута определяется выражением: F(Mk) = ∑dij. Причем каждая строка и столбец входят в маршрут только один раз с элементом dij.

Затем в ходе последующих итераций, определяется ребро ветвлений. Все множество маршрутов относительно этого ребра разбивается на два подмножества (i,j) и (i*,j*).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: