- •Оглавление
- •Введение
- •Работа №1. Графический метод решения задачи линейного программирования
- •Работа №2. Решение задачи линейного программирования симплекс-методом
- •Работа 3. Задача коммивояжера (метод ветвей и границ)
- •Матрица стоимостей (условные единицы)
- •Редукция строк
- •Редукция столбов
- •Значения АiиВj
- •Значения Фij
- •Преобразованная матрица стоимости
- •Вторая матрица решений
- •Третья матрица решений
- •Матрица стоимости возврата
- •Работа №4. Транспортная задача
- •Работа №5. Нелинейное программирование
- •Работа №6. Планирование рабочей силы
- •Работа №7. Оптимизация замены оборудования на предприятии
- •Варианты задания для выполнения работы
- •Работа №8. Задачи упорядочевания (алгоритм джонса)
- •Алгоритм джонсона для решения задачи упорядочения nх2
- •Варианты для задания №1
- •Варианты для задания №2
- •Вопросы к лабораторной работе №1
- •Список литературных источников
- •«Оптимизация инженерных решений»
- •400131, Г. Волгоград, пр. Им. В. И. Ленина, 28. Корп. 1
Редукция строк
-
Узел
1
2
3
4
5
6
Сi
1
∞
11
27
0
14
10
16
2
6
∞
15
0
29
29
1
3
20
13
∞
35
5
0
0
4
5
0
9
∞
2
2
16
5
7
41
22
43
∞
0
5
6
18
0
0
4
0
∞
5
Таблица 3.3
Редукция столбов
-
Узел
1
2
3
4
5
6
Ci
1
∞
11
27
0
14
10
16
2
6
∞
15
0
29
29
1
3
20
13
∞
35
5
0
0
4
5
0
9
∞
2
2
16
5
7
41
22
43
∞
0
5
6
18
0
0
4
0
∞
5
Qj
5
0
0
0
0
0
H=48
Строка
Qj
содержит вычитаемые константы для
каждого столбца при редукции столбцов.
Значение нижней границы для всех
маршрутов в рассматриваемой задаче
ровно Н
– сумме всех вычитаемых констант:
i+
j=48.
Теперь выберем оптимальный маршрут. Если бы в каждой строке и каждом столбце было бы ровно по одному нулевому элементу, оптимальная стоимость проезда равнялась бы Н.
Однако нулевые элементы не единственные в строках и столбцах. Вместо того чтобы одновременно определять все звенья оптимального маршрута с помощью текущей матрицы стоимости, воспользуемся алгоритмом, на каждом шаге которого по матрице стоимости строится одно звено оптимального маршрута. Естественно вначале выбрать звено нулевой длины, а затем последовательно добавить звенья нулевой и минимальной длины. Если выбрать звено (i, j), то решение не должно содержать других звеньев, соответствующих элементам i-й строки и j-го столбца; если звено (i, j) можно не рассматривать при выполнении последующих операций. Следовательно, для каждого звена достаточно рассмотреть следующие два случая: в первом случае звено включают в текущее и все последующие решения до определения оптимального решения; во втором – звено исключают из дальнейшего рассмотрения. В нашем примере мы уже получили начальный узел дерева ветвления, соответствующий множеству всех маршрутов с нижней границей стоимости всех маршрутов с Н=48, и верхней, равной ɀв(T)=73.
На следующем шаге процедуры выберем звено, на котором будет базироваться ветвление. Так как в каждой строке и каждом столбце не единственный элемент сij=0,то надо рассмотреть маршруты, не содержащие звено (i, j), должен содержать звеноА, у которого стоимость не меньше минимального элемента в i-й строки, не считая сij=0. Стоимость звенаА обозначим Аi.. Таким образом, чтобы Аi.равно нулю, в строке должно быть не менее двух нулевых элементов. Аналогично, чтобы в пункт jможно было бы попасть из некоторого другого города, маршрут, не содержащий узел (i, j),должен содержать звеноВ, у которого стоимость не меньше минимального элемента j-ого столбца, не считая сij=0. Обозначим стоимость проезда по звенуВ через Вj, а сумму величин Аi.и Вjчерез Фij. Величина Фijназывается вторичным штрафом, и она равна минимальному штрафу, которому мы подвергаемся, если не включаем звено (i, j) в оптимальны маршрут. Если штраф за неиспользование звена вычислить для всех звеньев, у которых сij=0, то можно сравнить соответствующее значение Фijи включить в текущий маршрут звено (i, j),за неиспользование которого мы заплатили бы максимальный штраф, т.е. включая звено (i, j),мы получаем выигрыш в стоимости, равный максимальному значению Фij. Нижняя граница для соответствующей ветви должна быть выбрана таким образом, чтобы она не превосходила стоимости ни одного из маршрутов, не содержащих звена (i, j). Данное требование будет выполнено, если значение новой нижней границы положить равным сумме значений текущей нижней границы и максимального штрафа за неиспользование звена (i, j). Для определения максимального значения Фijбудем использовать все элементы сij=0; при сij≠0 величина Фij=0. Данное утверждение справедливо в силу того, что если положить сij=∞, а затем провести редукцию i-й строки и j-го столбца, то сумма вычитаемых констант будет равна Фij. Для нашего случая Аiи Вj, приведены в таблице 3.13, а значение Фij для узлов, соответствующих сij=0, - в табл. 3.14. Максимальное значение Фij=10 соответствует звену (1, 4). Следовательно, в качестве базового звена ветвления выбираем звено (1, 4).
Нижняя граница для маршрутов, не включающих звено (1, 4), равна Н+Ф14=48+10=58. Чтобы определить новую нижнюю границу для маршрутов, включающих звено (1, 4), необходимо преобразовать матрицу стоимости. Если мы включили в маршрут некоторое звено (k, l), то в дальнейшем мы не рассматриваем k-ю строку и l-й столбец. Кроме того, звено (k, l) является тогда звеном некоторого ориентированного цикла и не может принадлежать этому же маршруту. Последнее условие можно выполнить, положив сlk=∞.
Таблица 3.4
