- •Учебное пособие
- •Оглавление
- •2. Элементы линейной алгебры 21
- •3. Линейное программирование 48
- •4. Теория двойственности в линейном программировании 100
- •5. Целочисленные модели исследования операций 140
- •6. Экономические задачи, сводящиеся к транспортной модели 163
- •Введение в исследование операций
- •1.1 Основные определения
- •Этапы исследования операций
- •Домашнее задание №1
- •Время, требуемое на обработку каждой модели в каждом цехе
- •2. Элементы линейной алгебры
- •2.1. Алгебра матриц
- •2.1.1. Виды матриц
- •2.1.2. Действия над матрицами
- •Домашнее задание №2
- •2.2. Вычисление определителей
- •Домашнее задание №3
- •2.3. Решение систем алгебраических уравнений
- •2.3.1. Основные понятия и определения
- •2.3.2. Формулы крамера и метод обратной матрицы
- •2.3.3. Метод жордана-гаусса
- •Домашнее задание №5
- •2.4. Векторное пространство
- •2.4.2. Размерность и базис векторного пространства
- •Домашнее задание №6
- •2.5. Решение задач линейной алгебры с помощью ms excel
- •3. Линейное программирование
- •3.1. Постановки задачи линейного программирования
- •3.1.1. Общая постановка задачи линейного программирования
- •3.1.2. Основная задача линейного программирования
- •3.1.3. Каноническая задача линейного программирования
- •3.2. Графический метод решения злп
- •Домашнее задание №7
- •Домашнее задание №8
- •3.3. Анализ решения (модели) на чувствительность
- •Домашнее задание №9
- •3.4. Решение линейных моделей симплекс-методом.
- •Переход от одной к-матрицы злп к другой к-матрице
- •Алгоритм симплекс-метода
- •Домашнее задание №10
- •3.4. Двойственный симплекс-метод (р-метод)
- •Определение р-матрицы злп
- •Условия перехода от одной р-матрицы злп к другой
- •Алгоритм р-метода
- •Решение задач р-методом
- •Домашнее задание №11
- •Домашнее задание №12
- •3.5. Решение злп двухэтапным симплекс-методом
- •Первый этап - решение вспомогательной задачи
- •Второй этап - решение исходной задачи
- •Домашнее задание №13
- •4. Теория двойственности в линейном программировании
- •4.1. Определение и экономический смысл двойственной злп
- •4.2. Основные положения теории двойственности
- •Получение оптимального плана двойственной задачи на основании теоремы 4
- •На первой итерации получен оптимальный план злп (4.24).
- •4.3. Решение злп с помощью Ms Excel
- •4.4. Анализ решения злп на основе отчетов ms excel
- •5. Целочисленные модели исследования операций
- •5.1. Метод ветвей и границ решения целочисленных задач линейного программирования (цзлп)
- •X1, х2 0, целые.
- •Подробное описание метода
- •5.2. Задача коммивояжера
- •Применение метода ветвей и границ для решения задачи коммивояжера
- •Ветвление
- •Построение редуцированных матриц и и вычисление оценок снизу
- •Формирование списка кандидатов на ветвление
- •6. Экономические задачи, сводящиеся к транспортной модели
- •6.1.Транспортная задача линейного программирования
- •Методы составления первоначальных опорных планов
- •Метод потенциалов решения транспортной задачи
- •Проверка выполнения условия оптимальности для незанятых клеток
- •Выбор клетки, в которую необходимо поместить перевозку
- •Построение цикла и определение величины перераспределения груза
- •Проверка нового плана на оптимальность
- •Определение оптимального плана транспортных задач, имеющих некоторые усложнения в их постановке
- •6.2.Экономические задачи, сводящиеся к транспортной модели
- •Оптимальное распределение оборудования
- •Формирование оптимального штата фирмы
- •Задача календарного планирования производства
- •Модель без дефицита
- •Модель с дефицитом
- •6.3.Задача о назначениях
- •Венгерский алгоритм
- •Оптимальное исследование рынка
- •Оптимальное использование торговых агентов
Построение редуцированных матриц и и вычисление оценок снизу
Положим:
Искомая редуцированная матрица получается из с помощью описанной выше процедуры редуцирования. Сумма констант редуцирования равна при этом , а величина
= d(Х1) +
является оценкой снизу для целевой функции F(x) на множестве .
Рассмотрим теперь множество . Все маршруты из этого множества содержат дугу (r,s). Найдем максимальный связанный путь, который принадлежит всем маршрутам множества Х1 и содержит дугу (r,s). Пусть этот путь начинается в городе m и заканчивается в городе t (может быть, m = r или t = s, или то и другое одновременно). Чтобы запретить подцикл, начинающийся и заканчивающийся в m, положим (t,m) = +∞. Остальные элементы матрицы полагаем равными соответствующим элементам матрицы , при этом строку, соответствующую городу r и столбец, соответствующий городу s, в матрицу не включаем, поскольку все маршруты из содержат дуги (r,s).
Редуцированная матрица расстояний для вершины получается из матрицы с помощью операции редуцирования. При этом оценка снизу для функции F(x) на множестве вычисляется по формуле
= d(Х1) + ,
где – сумма констант редуцирования.
Формирование списка кандидатов на ветвление
После вычисления каждой из оценок (i = 1,2) следует проверить, не состоит ли множество из единственного маршрута. Если в каждой строке и в каждом столбце матрицы оказалось лишь по одному элементу, отличному от + , то множество содержит единственный маршрут, длина которого равна . В этом случае верхняя граница (наименьшее из уже вычисленных значений F(x) полагается равной минимуму из предыдущего значения Z0 и , т.е.
Z0 = min {Z0, }.
Если содержит более одного маршрута и меньше текущего значения Z0, то множество включается в число кандидатов на ветвление. Остановка производится, если наименьшая из оценок снизу кандидатов на ветвление не меньше текущего значения Z0.
Пример 5.2.. Решить методом ветвей и границ задачу коммивояжера с матрицей
Возьмем в качестве произвольного допустимого маршрута:
x0 = {(1,2), (2,3), (3,4), (4,5), (5,1)}.
Тогда F(x0) = 10 + 10 + 20 + 15 + 10 = 65 – текущее значение Z0 – (верхняя граница длин всех маршрутов).
Получим редуцированную матрицу .
0 0 9 12 0
Нижняя граница d(x) = 10 + 1 + 8 + 10 + 8 + 9 + 12 = 58. Данное значение является нижней границей длин всех маршрутов. Заметим, что в идеальном случае поиск решения заключался бы в выборе ровно одного нулевого элемента в каждой строке и каждом столбце. Другими словами, если бы такой маршрут нулевой длины бы быть найден, то длина оптимального маршрута равнялась бы 58. Исходя из верхней и нижней границ, можно заключить, что 58 ≤ F(x*) ≤ 65.
Выберем дугу (r,s) с помощью вычисления значений функции (,).
(1,2) = 0, (2,1) = 0, (3,1) = 0, (4,2) = 4, (1,5) = 1, (2,3) = 5, (3,4) = 2, (5,2) = 2.
Следовательно, (r,s) = (2,3). Осуществим разбиение (ветвление). Правое подмножество X2 будет содержать все маршруты, которые исключают дугу (2,3). Поэтому C2 (2,3) = +∞.
=
Оценка снизу для правого подмножества X2 определяется следующим образом:
d(X2) = d(X) + Θ(2,3) = 58 + 5 = 63 < Z0.
Левое подмножество X1 будет содержать маршруты, которые всегда включают дугу (2,3), и поэтому вторая строка и третий столбец в матрицу C1 не включаются. В результате будем иметь матрицу на единицу меньшего размера. Далее необходимо положить C1 (3,2) = +∞, чтобы запретить подцикл {(2,3),(3,2)}. В результате получим матрицу
C1 = =.
Оценка снизу для левого подмножества:
d(X1) = d(X) + = 58 + 0 = 58 < Z0,
где – константа приведения матрицы С1
В списке кандидатов на ветвление множества X1 и X2. Так как d(X1) < d(X2), будем производить ветвление множества X1. Выберем дугу (r,s) с помощью значений функции (,) для матрицы.
(1,2) = 0, (1,5) = 2, (3,1) = 2, (3,4) = 3, (4,2) = 4, (5,2) = 2.
Следовательно, (r,s) = 4, (r,s) = (4,2).
Правая подматрица:
C4 = = .
Оценка снизу для правого подмножества:
d(X4) = d(X1) + Θ(4,2) = 58 + 4 = 62 < Z0.
Левая подматрица. Левое подмножество X3 будет содержать маршруты, которые всегда включают дугу (4,2), и поэтому четвертая строка и второй столбец в матрицу C3 не включаются. В результате будем иметь матрицу на единицу меньшего размера. Далее необходимо положить C3 (3,4) = +∞, чтобы запретить подцикл {(4,2),(2,3),(3,4)}. В результате получим матрицу
C3 = = .
d(X3) = d(X1) + = 58 + 5 = 63 < Z0.
В списке кандидатов на ветвление множества X3, X4, X2.
Минимальная нижняя оценка оказалась у множества X4, следовательно, для дальнейшего разбиения выбираем множество X4.
Определим дугу (r,s) с помощью значений функции (,) для матрицы .
(1,2) = 0, (1,5) = 1, (3,1) = 0, (3,4) = 3, (4,1) = 1, (5,2) = 2.
Следовательно, (r,s) = 3, (r,s) = (3,4).
Правая подматрица.
C6 = = .
Оценка снизу для правого подмножества:
d(X6) = d(X4) + Θ(3,4) = 62 + 3 = 65 = Z0.
Следовательно, множество X6 исключаем из списка.
Левая подматрица. Левое подмножество X5 будет содержать маршруты, которые всегда включают дугу (3,4), и поэтому третья строка и четвертый столбец в матрицу C5 не включаются. В результате будем иметь матрицу на единицу меньшего размера. Далее необходимо положить C5 (4,2) = +∞, чтобы запретить подцикл {(2,3), (3,4), (4,2)}, однако это условие оказалось уже выполненным. В результате получим матрицу:
C5 = = .
Оценка снизу для левого подмножества:
d(X5) = d(X4) + = 62 + 0 = 62 < Z0.
В списке кандидатов на ветвление множества X3, X5, X2.
Минимальная нижняя оценка оказалась у множества X5, следовательно, для дальнейшего разбиения выбираем множество X5. Определим дугу (r,s) с помощью значений функции (,) для матрицы .
(1,2) = 0, (1,5) = 1, (4,1) = 3, (5,2) = 2.
Следовательно, (r,s) = 3, (r,s) = (4,1).
Правая подматрица:
C8 = = .
Оценка снизу для правого подмножества:
d(X8) = d(X5) + Θ(4,1) = 62 + 3 = 65 = Z0.
Следовательно, множество X8 исключаем из списка.
Левая подматрица. Левое подмножество X7 будет содержать маршруты, которые всегда включают дугу (4,1), и поэтому четвертая строка и первый столбец в матрицу C7 не включаются. В результате будем иметь матрицу на единицу меньшего размера. Далее необходимо положить C7 (1,2) = +∞, чтобы запретить подцикл {(2,3), (3,4), (4,1), (1,2)}.
C7 = = .
Оценка снизу для левого подмножества:
d(X7) = d(X5) + = 62 + 0 = 62 < Z0.
В списке кандидатов на ветвление множества X3, X7, X2. Множество X7 содержит единственный маршрут с минимальной нижней оценкой, поэтому задача решена. X1 = = X*;
Z0= F(x*) = 10 + 8 + 10 + 20 + 14 = 62.
Представим процесс решения в виде дерева (см. рис. 5.2.).
Рис. 5.2.
Домашнее задание №16
Решите методом ветвей и границ следующую задачу коммивояжера:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.