пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Физика
» ИСО

Ебаный билет 3

ЕБАНЫЙ ВОПРОС 1.


1.7. Транспортная задача

Математическая модель транспортной задачи (ТЗ) имеет вид:

Транспортная задача — задача о поиске оптимального распределения поставок однородного товара от поставщиков к потребителям при известных затратах на перевозку (тарифах) между пунктами отправления и назначения. Является задачей линейного программирования специального вида. Транспортная задача может быть записана в виде прямоугольной таблицы. Пример подобной таблицы приведен ниже:

Цена перевозки (например, в рублях за 1 килограмм груза) Cij записывается в ячейки таблицы на пересечении соответствующего потребителя и поставщика (цена может быть и отрицательной — в этом случае она представляет собой прибыль).[1]:296 Неизвестной (искомой) величиной в задаче являются такие объемы перевозки xij от поставщиков к потребителям, чтобы минимизировать общие затраты на транспортировку.[2]:185[3]:87. В табличной записи цены отделяют от объемов перевозки косой чертой или квадратным уголком, в этой статье из соображений лучшей доходчивости они подписаны. При решении транспортной задачи единственными необходимыми арифметическими действиями являются сложение и вычитание.[1]:304 Для поиска начального решения применяют метод северо-западного угла,[⇨] метод минимальных тарифов [⇨] или метод Фогеля, [⇨] а для окончательной оптимизации — метод потенциалов. [⇨] В то же время, транспортная задача является подмножеством задач линейного программирования и может решаться симплекс-методом.[⇨][1]:296 Транспортную задачу можно решать также в Excel.

Решение транспортной задачи методом потенциалов

Метод потенциалов позволяет за несколько шагов (итераций) найти полностью оптимальное решение транспортной задачи. Перед решением задачи этим методом нужно найти допустимое начальное решение одним из методов, описанных в разделе выше. [⇨] Поскольку у нас нет ограничений на черно-белую полиграфию, для большей ясности ячейки транспортной таблицы в этой статье отмечены разными цветами.
[править]
1. Проверка правильности распределения объемов

Эта проверка не входит в алгоритм метода потенциалов, но может потребоваться для исключения арифметических ошибок (при ручном расчете на бумаге) или самопроверки алгоритма при компьютерных вычислениях. Особенностью распределения груза по транспортной таблице является совпадение суммы объемов по строкам с запасами соответствующего поставщика, а суммы объемов по столбцам — с потребностями соответствующих потребителей. [20][1]:297

В показанном выше примере,
Для 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 кг

2. Вычисление общей стоимости транспортировки

Этот шаг также не входит в сам алгоритм метода потенциалов, но он полезен для распечатки результатов и показа, что алгоритм движется в правильном направлении, уменьшая на каждом (или не на каждом) шаге общую себестоимость перевозки. Для всех ячеек цена умножается на объем перевозки и полученный результат суммируется.

В нашем примере, сумма затрат на перевозку груза составляет

2×20 + 3×10 + 2×20 + 5×20 + 2×10 + 6×10 = 290 руб.


3. Разделение ячеек на базисные и свободные

Ячейки (клетки) транспортной таблицы с ненулевыми перевозками называются базисными, а клетки с нулевыми объемами перевозки — свободными.

4. Проверка плана на вырожденность

→ Вырожденность в транспортной задаче

Базисных (см. выше) ячеек таблицы должно быть не менее m+n−1, где m и n — соответственно, число поставщиков и потребителей, иначе
решение считается вырожденным и требует введения в базис одной из ячеек с нулевой перевозкой[16]:120 (чтобы алгоритм не впал в бесконечный цикл, эта ячейка должна быть случайной).[1]:312 Для исключения ситуаций с вырожденностью к объемам потребления добавляют небольшие возмущения — числа, заведомо ничтожные при перевозках (такие как 0.00001), при этом к объему поставки одного из поставщиков добавляют их сумму (или наоборот).


5. Вычисление потенциалов

Каждому поставщику Ai соответствует потенциал Ui, а каждому потребителю Bj соответствует потенциал Vj. Данциг называет потенциалы Ui и Vj симплекс-множителями или неявными ценами.[1]:300,305 Чтобы определить эти потенциалы, полагают, что U1=0, а остальные потенциалы вычисляют из соотношения

Ui + Vj = Cij

для всех занятых (базисных) ячеек таблицы (отмечены зеленым).

U1+V1=2. Поскольку U1=0, 0+V1=2, следовательно, V1=2 руб./кг

U1+V2=3. Поскольку U1=0, 0+V2=3, следовательно, V2=3 руб./кг

U2+V2=2. Поскольку V2=3, U2+3=2, следовательно, U2=–1 руб./кг

U2+V3=5. Поскольку U2=–1, –1+V3=5, следовательно, V3=6 руб./кг

U3+V3=2. Поскольку V3=6, U3+6=2, следовательно, U3=–4 руб./кг

U3+V4=6. Поскольку U3=–4, –4+V4=6, следовательно, V4=10 руб./кг

При компьютерной реализации удобно использовать рекурсию: взаимный вызов двух функций, которые отрабатывают алгоритм, соответственно, по строкам и по столбцам. Если на предыдущем шаге 4 (в разделе «Проверка плана на вырожденность») [⇨] в базис была введена случайная не занятая ячейка (без проверки ее на ацикличность), то вычисление u и v может дать сбой, и в этом случае случайный выбор вводимой в базис нулевой ячейки на предыдущем шаге 4 следует повторить.

6. Проверка решения на оптимальность

Для всех не занятых ячеек (с нулевым объемом перевозки) вычисляют оценки клеток распределительной таблицы Δij по формуле Δij = Сij – Ui – Vj, где Ui и Vj берутся из вычислений, выполненных в разделе выше (здесь они вписаны в заголовки таблицы).[3]:89

Для всех занятых ячеек (с ненулевыми объемами перевозки, отмечены зеленым цветом) полагают Δij=0, поскольку на следующем шаге нам потребуется значение с минимальной оценкой в незанятых ячейках.

Если в получившейся таблице нет отрицательных значений Δij, то план перевозок оптимален и задача решена (переход к шагу 10).

В нашем примере есть отрицательные значения. Наличие отрицательных значений Δij означает, что решение не оптимально.

Наименьшее отрицательное значение Δ24=–8 (начальная вершина для цикла перераспределения поставок, о котором см. ниже)[3]:89 отмечено красным цветом. Если одинаковых отрицательных значений несколько, то берется любое

7. Псотроение уебка-цикла.

Цикл перераспределения поставок представляет собой замкнутую ломаную линию, которая соединяет начальную вершину (отмечена красным цветом) и занятые (отмеченные в нашем примере зеленым цветом) ячейки транспортной таблицы по определенным правилам.[3]:89
Все вершины, кроме начальной, находятся в занятых ячейках таблицы (ячейки с ненулевыми перевозками или «введенные в базис» на шаге 4 (в разделе «Проверка плана на вырожденность» ячейки с нулевой перевозкой — здесь они отмечены в примерах зеленым цветом), при этом охвачены циклом могут быть не все, а лишь некоторые занятые ячейки.[3]:89
В каждой вершине цикла встречаются ровно два звена ломаной линии, причем одна из них находится по строке, а другая — по столбцу.[23]:238 Иначе говоря, они пересекаются под прямым углом.[3]:90
Линия может пересекать занятые ячейки, не включая их в цикл (включение их в цикл не допускается).[3]:90 Другими словами, никакие три последовательные вершины не могут находиться в одной и той же строке или одном и том же столбце.[23]:238
Линия может пересекать саму себя, при этом точка пересечения не включается в цикл (исходя из п.2).[23]:239

Вершины цикла в этом примере помечены звездочкой (*). Горизонтальные и вертикальные линии, соединяющие вершины, в этом примере не показаны. По вершинам цикла нужно перераспределить объемы, чтобы получить следующее приближение к оптимальному решению задачи, как это показано далее.

При компьютерной реализации построения цикла удобно использовать рекурсию, то есть взаимный вызов двух функций, которые строят линии цикла по строкам и по столбцам, соответственно.[24]

8. Перераспределение поставок по циклу

«Красной» ячейке цикла присваиваем знак (+), следующей по циклу (начать двигаться можно в любом направлении) — знак (–), следующей ячейке цикла — опять (+) и так далее. Находим минимальную поставку по отмеченным знаком (–) вершинам цикла и обозначаем ее θ. Эта вершина цикла Х34=10 кг помечена желтым цветом. Значение θ вычитаем из вершин цикла, которые помечены знаком (–) и прибавляем его к вершинам цикла, которые помечены знаком (+).[3]:93[23]:242

9. Зацикливание решения

Поскольку алгоритм является циклическим (итерационным), переходим к пункту 1. [⇨]

Примечание: есть опасность, что алгоритм впадет в бесконечный цикл из-за вырожденности или каких-либо ошибок реализации, поэтому полезно предусмотреть проверку на максимальное число шагов или максимальное время, которое будет исполняться программа (например, при поиске решения в Microsoft Excel эти параметры вынесены в пользовательские настройки). Впрочем, по мнению Данцига, те меры, которые можно предпринять для исключения вырожденности (см. Вырожденность в транспортной задаче) приводят к успеху в 100 % случаев. Для подстраховки можно применить метод Фогеля, который не склонен «впадать» в бесконечные циклы, и выдает более или менее приближенное к оптимальному решение за ограниченное число шагов.
10. ?????
11. PROFIT


хиты: 149
рейтинг:0
Точные науки
математика
исследование операций
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь