8. Перераспределение поставок по циклу
«Красной»
ячейке цикла присваиваем знак (+),
следующей по циклу (начать двигаться
можно в любом направлении) — знак
(–), следующей ячейке цикла — опять
(+) и так далее. Находим минимальную
поставку по отмеченным знаком (–)
вершинам цикла и обозначаем ее θ.
Эта вершина цикла Х34=10 кг
помечена желтым цветом. Значение θ вычитаем
из вершин цикла, которые помечены знаком
(–) и прибавляем его к вершинам цикла,
которые помечены знаком (+).
|
B1,
20 кг
|
B2,
30 кг
|
B3,
30 кг
|
B4,
10 кг
|
A1,
30 кг
|
X11=20
кг
|
Х12=10
кг
|
|
|
A2,
40 кг
|
|
Х22=20
кг
|
(–)
Х23=20
кг
|
(+)
|
A3,
20 кг
|
|
|
(+)
Х33=10
кг
|
(–)
Х34=10
кг
|
9. Зацикливание решения
Поскольку
алгоритм является циклическим
(итерационным), переходим к пункту 1.
Примечание:
есть опасность, что алгоритм впадет в
бесконечный цикл из-за вырожденности
или каких-либо ошибок реализации, поэтому
полезно предусмотреть проверку на
максимальное число шагов или максимальное
время, которое будет исполняться
программа. Впрочем, по мнению Данцига,
те меры, которые можно предпринять для
исключения вырожденности приводят к
успеху в 100 % случаев. Для подстраховки
можно применить метод Фогеля, который
не склонен «впадать» в бесконечные
циклы, и выдает более или менее приближенное
к оптимальному решение за ограниченное
число шагов.