
- •1.Теоретическая часть
- •1.1 Линейное программирование
- •1.2 Общий вид задач линейного программирования
- •1.3 Транспортная задача
- •1.3.1 Общий вид транспортной задачи
- •1.3.2 Опорный план транспортной задачи
- •1.3.3 Метод северо- западного угла
- •1.3.4 Минимальной стоимости по строке
- •1.3.5 Минимальной стоимости по столбцу
- •1.4 Распределительный метод оптимального плана
- •1.5 Метод потенциалов.
- •1.5.1Формулировка транспортной задачи
- •1.5.2 Алгоритм решения метода потенциалов
- •1.5.3 Вычисление общей стоимости транспортировки
- •1.5.4 Разделение ячеек на базисные и свободные
- •1.5.5 Проверка плана на вырожденность
- •1.5.6 Вычисление потенциалов
- •1.5.7 Проверка решения на оптимальность
- •1.5.8 Построение цикла
- •1.5.9 Перераспределение поставок по циклу
- •1.5.10 Зацикливание решения
- •1.6 Пример решения задачи
- •2. Практическая часть
- •2.1 Постановка задачи
- •2.2 Аналитическое решение задачи
- •2.3 Алгоритм решения транспортной задачи
- •2.3.1 Построение опорного плана методом северо-западного угла
- •2.3.2 Построение опорного плана методом Фогеля
- •2.3.3 Построение оптимального плана методом потенциалов
- •2.4 Программная реализация задачи
- •Заключение
- •Список литературы
- •Приложения
1.5 Метод потенциалов.
Метод потенциалов является модификацией симплекс-метода решения задачи линейного программирования применительно к транспортной задаче. Он позволяет, отправляясь от некоторого допустимого решения, получить оптимальное решение за конечное число итераций.
Метод потенциалов позволяет за несколько шагов (итераций) найти полностью оптимальное решение транспортной задачи. Перед решением задачи этим методом нужно найти допустимое начальное решение одним из методов, описанных в разделе выше.
1.5.1Формулировка транспортной задачи
Пусть
—
пункты производства/потребления,
— дуги перевозок,
—
цены провоза по дугам
,
—
набор базисных столбцов.
Задача
формулируется как найти
при
условиях
где
—
стоимости провоза по дугам,
—
производство (+) / потребление (-)
—
решение
Матрица ограничений
транспортной задачи состоит из столбцов
,
содержащих всего два ненулевых элемента —
+1 для производителя и −1 для потребителя.
Алгоритм
Метод
потенциалов является модификацией
симплекс-метода, в котором базисная
матрица
представлена
в виде дерева.
Двойственные переменные симплекс-метода для транспортной задачи называются потенциалами.
Потенциалы
вычисляются
по формуле
,
что эквивалентно
Для дуги
потенциалы
дуг связаны формулой
.
Таким образом, потенциал потребителя равна потенциалу производителя + стоимость перевозки. С экономической точки зрения это можно трактовать как стоимость продукта в точке потребления.
Проверка
оптимальности плана
легко
трактуется с экономической точки
зрения — если стоимость продукта в
точке потребления больше стоимости в
точке производства + цена перевоза, по
этой дуге следует везти.
Величина
называется невязкой
дуги.
Добавление дуги приводит к возникновению цикла в дереве. Увеличение провоза по вводимой дуге приводит к пересчету потоков в цикле, провоз по одной из дуг при этом уменьшится до нуля. Дугу с нулевым потоком удаляем из базиса, при этом базисный граф остается деревом (цикл разрывается).
Остается только пересчитать потенциалы — добавить (или вычесть — зависит от направления дуги) ко всем вершинам «повисшей ветки» величину невязки
Процесс завершается, когда для всех дуг условие оптимальности выполняется для всех дуг.
1.5.2 Алгоритм решения метода потенциалов
Эта проверка не входит в алгоритм метода потенциалов, но может потребоваться для исключения арифметических ошибок (при ручном расчете на бумаге) или самопроверки алгоритма при компьютерных вычислениях. Особенностью распределения груза по транспортной таблице является совпадение суммы объемов по строкам с запасами соответствующего поставщика, а суммы объемов по столбцам — с потребностями соответствующих потребителей.
В показанном выше примере,
Для 1-й строки: 30 кг = 20 + 10 кг
Для 2-й строки: 40 кг = 20 + 20 кг
Для 3-й строки: 20 кг = 10 + 10 кг
Для 1-го столбца: 20 кг = 20 кг
Для 2-го столбца: 30 кг = 10 + 20 кг
Для 3-го столбца: 30 кг = 20 + 10 кг
Для 4-го столбца: 10 кг = 10 кг
1.5.3 Вычисление общей стоимости транспортировки
Этот шаг также не входит в сам алгоритм метода потенциалов, но он полезен для распечатки результатов и показа, что алгоритм движется в правильном направлении, уменьшая на каждом (или не на каждом) шаге общую себестоимость перевозки. Для всех ячеек цена умножается на объем перевозки и полученный результат суммируется.
|
B1, 20 кг |
B2, 30 кг |
B3, 30 кг |
B4, 10 кг |
A1, 30 кг |
С11=2 руб./кг, X11=20 кг |
С12=3 руб./кг, Х12=10 кг |
С13=2 руб./кг |
С14=4 руб./кг |
A2, 40 кг |
С21=3 руб./кг |
С22=2 руб./кг, Х22=20 кг |
С23=5 руб./кг, Х23=20 кг |
С24=1 руб./кг |
A3, 20 кг |
С31=4 руб./кг |
С32=3 руб./кг |
С33=2 руб./кг, Х33=10 кг |
С34=6 руб./кг, Х34=10 кг |
В нашем примере, сумма затрат на перевозку груза составляет
2×20 + 3×10 + 2×20 + 5×20 + 2×10 + 6×10 = 290 руб.