Условие Сii=∞ принимается для того, чтобы исключить возможность появления в оптимальном решении значений Xii=I, не имеющих смысла.
Наилучшие результаты при решении поставленной задачи были получены при использовании метода ветвей и границ.
Существует несколько модификаций метода ветвей и границ. Здесь рассмотрим метод «задания маршрутов», так как для его применения нет необходимости решать предварительную задачу линейного программирования о назначениях. Для определения нижней оценки оптимального значения целевой функции применяется метод, основанный на том, что расстояние должно быть, по крайней мере, равно сумме Cij при Xij=1 плюс сумма наименьших Cij в остальных случаях.
Алгоритм определения оптимального цикла, реалиизующий метод задания маршрутов, имеет вид: Сформировать список задач и для каждой задачи из этого списка проделать следующие шаги.
Шаг 1.
Прекратить вычисления, если основной список пуст. В противном случае выбрать одну задачу и вычеркнуть ее из основного списка.
Шаг 2.
Определить нижнюю оценку целевой функции для любого цикла, порождаемого выбранной задачей. Если же нижняя оценка больше или равна X0t, то принять X0t+1 и вернуться к шагу 1. В противном случае перейти к шагу 3.
Шаг 3.
Если текущее решение определяет цикл, то зафиксировать его, принять X0t+1 равным соответствующему значению целевой функции и вернуться к шагу 1. В противном случае перейти к шагу 4.
Шаг 4.
При наличии возможности выбрать переменную Хhk, не входящую в текущее решение, такую, что Сhk<∞ при условии, что Хhk=1 не приводит к образованию подцикла на переменных, уже вошедших в решение. При таком выборе внести в основной список задач две задачи.
Рис. 3.17.
Каждую из этих задач принять идентичной задаче, выбранной на шаге 1, за исключением лишь того, что в одну из них ввести изменение Сhk=∞, а в другую – условие Хhk=1 и изменение Сkh=∞. Принять X0t+1= X0t и вернуться к шагу 1.
По приведенному алгоритму была составлена программа и проведен ряд экспериментов на электронно-вычислительной машине. Результаты экспериментов показали большую эффективность программы в смысле нахождения оптимального цикла, но при этом очень быстро возрастает время счета с увеличением размерности задачи.
На рис. 3.17 представлена траектория, сформированная с помощью этого алгоритма, для изображенной детали.