пустых ячеек, зарезервированных под размещение искомых переменных задачи (плана перевозок).
Рис. 67. Ввод целевой функции транспортной задачи
Условия транспортной задачи вводятся в диалоговую форму надстройки Поиск решения, вызываемой из меню Сер-
вис (рис. 68). В окно Установить целевую ячейку вводится ад-
рес функции цели щелчком левой кнопки мышки по ячейке, содержащей математическое выражение для подсчёта общих затрат на перевозки. Направление поиска экстремума целевой функции устанавливается соответствующим минимальному значению. В окно Изменяя ячейки вводятся адреса искомых значений переменных (B9:Е12).
135
Рис. 68. Заполнение диалоговой формы Поиск решения
Ограничения задачи добавляются, изменяются и удаляются после нажатия соответствующей кнопки. В двух последних случаях предварительно необходимо выделить требуемую строку в окне Ограничения.
Рис. 69. Заполнение диалоговой формы Добавление ограничения
В левом окне формы Добавление ограничения (рис. 69)
вводятся адреса левой части ограничений – суммы объёмов перевозок от поставщиков и суммы объёмов перевозок к потребителям. Знак ограничения устанавливается в виде знака равенства “ = “. В правом окне формы Добавление ограничения вводятся адреса правой части ограничений – числовые значения предложения и спроса.
136
Нажав кнопку Параметры, следует поставить «галки»,
выделив пункты: Линейная модель, Неотрицательные значения и Автоматическое масштабирование (рис. 70).
Рис. 70. Заполнение диалоговой формы Параметры
Оптимальный план перевозок представлен на рис. 71. Так, от первого поставщика третьему потребителю перевозится 30 единиц груза, от второго поставщика второму потребителю – 70 единиц груза. Третий поставщик обеспечивает поставки первому потребителю в объёме 20 единиц груза и третьему потребителю – 30 единиц груза. Поставки из четвёртого пункта отправления осуществляются по трём маршрутам: второму потребителю – 20 единиц груза, третьему потребителю – 10 единиц груза, третьему – 70 единиц груза. Общие затраты на перевозки составят 350 ден.ед.
137
Рис. 71. Результаты решения транспортной задачи
Метод потенциалов
Для решения транспортной задачи можно использовать метод потенциалов. Пусть задан опорный план задачи, тогда каждому пункту отправления Аi приписывается некоторое число Ui, а каждому пункту назначения Вj – число Vj. Эти числа называют потенциалами, они подбираются так, чтобы для каждой базисной клетки (i, j) выполнялось равенство
Ui + Vj = Cij.
Таким образом, получаем m + n – 1 простых уравнений с m + n неизвестными Ui и Vj. В таком случае, когда система состоит из числа уравнений, меньшего, чем число неизвестных, появляется свободная неизвестная величина, которой мы можем придать любое значение. Все остальные неизвестные можно найти из системы уравнений.
138
После того, как будут найдены все потенциалы Ui и Vj, для каждой свободной клетки (i, j) определяют числа ij = Cij–
– (Ui + Vj). Далее поступаем так же, как и в распределительном методе: находим наибольшее по модулю отрицательное
число i0 j0 (т.е. самое малое из отрицательных) и делаем
сдвиг по соответствующему циклу пересчета. Таким образом, в методе потенциалов для нахождения чисел ij не нужно искать циклы пересчета для всех свободных клеток. Надо найти только один цикл пересчета, соответствующий наименьшему
отрицательному i0 j0 .
Пример решения задачи методом потенциалов:
|
V1 = 5 |
V2 = 4 |
V3 = 2 |
V4 = 1 |
|
Для занятых |
||
|
5 |
|
4 |
2 |
5 |
|
клеток |
|
U1 = 0 |
20 |
|
10 |
|
|
30 |
||
|
|
|
U1 + V1 = 5, |
|||||
|
|
|
|
|
|
|
|
|
|
|
6 |
|
1 |
1 |
3 |
|
|
|
|
|
|
U1 + V2 = 4, |
||||
U2 = -3 |
|
|
|
70 |
|
|
70 |
|
|
|
|
|
|
|
U2 + V2 = 1, |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U3 + V2 = 3, |
|
|
2 |
|
3 |
1 |
8 |
|
|
U3 = -1 |
|
|
|
10 |
40 |
|
50 |
U3 + V3 = 1, |
|
|
|
|
|
||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
U4 + V3 = 2, |
|
U4 = 0 |
6 |
|
3 |
2 |
1 |
|
||
|
|
|
|
30 |
70 |
100 |
U4 + V4 = 1. |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
90 |
70 |
70 |
|
|
|
|
|
|
|
|
|
|
|
|
Положим U1 = 0, тогда учитывая занятые клетки
V1 = 5, V2 = 4, U2 = –3, U3 = –1, V3 = 2, U4 = 0, V4 = 1. |
||||
Подсчитаем ij для свободных клеток: |
||||
13 = 2 – (0 + 2) = 0, |
14 |
= |
5 |
– (0 + 1) = 4, |
21 = 6 – (–3 + 5) = 4, |
23 = 1 – (–3 + 2) = 2, |
|||
24 = 3 – (–3 + 1) = 5, |
|
|
|
|
31 = 2 – (–1 + 5) = –2, |
34 = 8 – (–1 + 1) = 8, |
|||
41 = 6 – (0 + 5) = 1, |
42 |
= 3 |
– (0 + 4) = –1. |
|
|
139 |
|
|
|