Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
транспортная задача1.doc
Скачиваний:
2
Добавлен:
23.09.2019
Размер:
1.81 Mб
Скачать

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

Имеется ряд пунктов производства с объемами производства в единицу времени (месяц, квартал), равными соответственно и пункты потребления потребляющие за тот же промежуток времени соответственно продукции. В случае, если решается закрытая (сбалансированная) задача, сумма объемов производства на всех т пунктах-поставщиках равна сумме объемов потребления на всех n пунктах-получателях:

Кроме того, известны затраты по перевозке единицы продукта от каждого поставщика к каждому получателю — эти величины обозначаются В качестве неизвестных величин выступают объемы продукта, перевозимого из каждого пункта производства в каждый пункт потребления, соответственно обозначаемые .

Тогда наиболее рациональным прикреплением поставщиков к потребителям будет такое, при котором суммарные затраты на транспортировку будут наименьшими:

При этом каждый потребитель получает нужное количество продукта:

и каждый поставщик отгружает весь произведенный им продукт:

Как и во всех подобных случаях, здесь также оговаривается неотрицательность переменных: поставка от какого-то пункта производства тому или иному пункту потребления может быть равна нулю, но отрицательной, т. е. следовать в обратном направлении, быть не может.

Поскольку принято, что затраты на перевозки растут здесь пропорционально их объему, то перед нами задача линейного программирования — одна из задач распределения ресурсов.

Несбалансированную (открытую) транспортную задачу приводят к виду, показанному выше, искусственно: в модель вводятся так называемые фиктивный поставщик или фиктивный потребитель, которые балансируют спрос и потребление.

В настоящее время разработано множество различных алгоритмов решения транспортной задачи: распределительный метод, метод потенциалов, дельта-метод, венгерский метод, метод дифференциальных рент, различные сетевые методы и т. д. Они относительно просты, по ним составлены десятки программ для вычислительных машин. Задачи эти часто усложняются разного рода дополнительными условиями: например, в них включается расчет не только себестоимости перевозок, но и себестоимости производства продукции (производственно-транспортная задача), оптимизируется совместно доставка взаимозаменяемых видов продукции (скажем, различных кровельных материалов), оптимизируется доставка грузов с промежуточными базами (складами). Кроме того, следует учитывать, что математическая модель транспортной задачи позволяет описывать множество ситуаций, весьма далеких от проблемы перевозок, в частности, находить оптимальное размещение заказов на производство изделий с разной себестоимостью.

Задача :

У поставщиков A1 , A2 , A3 , A4 , A5 , находится соответственно 100 , 150 , 350 , 200 , 200 единиц однотипной продукции, которая должна быть доставлена потребителям B1 , B2 , B3 , B4 , B5 в количествах 100 , 200 , 200 , 300 , 200 единиц соответственно.

Стоимость доставки единицы продукции от поставщика A1 к указанным потребителям равна 4 , 3 , 5 , 2 , 3 ден.ед.

Стоимость доставки единицы продукции от поставщика A2 к указанным потребителям равна 7 , 1 , 2 , 3 , 1 ден.ед.

Стоимость доставки единицы продукции от поставщика A3 к указанным потребителям равна 9 , 2 , 4 , 5 , 6 ден.ед.

Стоимость доставки единицы продукции от поставщика A4 к указанным потребителям равна 1 , 3 , 6 , 4 , 10 ден.ед.

Стоимость доставки единицы продукции от поставщика A5 к указанным потребителям равна 5 , 8 , 15 , 6 , 15 ден.ед.

Требуется найти оптимальное решение доставки продукции от поставщиков к потребителям, миниминизирующие стоимость доставки.

Решение :

Для разрешимости транспортной задачи необходимо, чтобы суммарные запасы продукции у поставщиков равнялись суммарной потребности потребителей. Проверим это условие.

В нашем случае, потребность всех потребителей - 1000 единиц продукции равна запасам всех поставщиков .

Что мы будем делать? Найдем начальное решение методом минимального элемента. Если начальное решение окажется оптимальным, то задача решена. Если начальное решение окажется неоптимальным, используя метод потенциалов, будем последовательно получать решение за решением, причем каждое следующее, как минимум, не хуже предыдущего. И так, до тех пор, пока не получим оптимальное решение.

Согласно условию задачи составим таблицу. (тарифы cij располагаются в нижнем правом углу ячейки)

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

-

  

2  

-

  

3  

100

A 2

-

  

7  

-

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

-

  

2  

-

  

4  

-

  

5  

-

  

6  

350

A 4

-

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A2B2 и равен 1, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A2 к потребителю B2 наиболее рентабельный.

Запасы поставщика A2 составляют 150 единиц продукции. Потребность потребителя B2 составляет 200 единиц продукции.

От поставщика A2 к потребителю B2 будем доставлять min = { 150 , 200 } = 150 единиц продукции.

Разместим в ячейку A2B2 значение равное 200

Мы полностью израсходoвали запасы поставщика A2. Вычеркиваем строку 2 таблицы, т.е исключаем ее из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

-

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

-

  

2  

-

  

4  

-

  

5  

-

  

6  

350

A 4

-

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A4B1 и равен 1, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A4 к потребителю B1 наиболее рентабельный.

Запасы поставщика A4 составляют 200 единиц продукции. Потребность потребителя B1 составляет 100 единиц продукции.

От поставщика A4 к потребителю B1 будем доставлять min = { 200 , 100 } = 100 единиц продукции.

Разместим в ячейку A4B1 значение равное 100

Мы полностью удовлетворили потребность потребителя B1. Вычеркиваем столбец 1 таблицы, т.е исключаем его из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

-

  

2  

-

 

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

-

  

2  

-

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A1B4 и равен 2, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A1 к потребителю B4 наиболее рентабельный.

Запасы поставщика A1 составляют 100 единиц продукции. Потребность потребителя B4 составляет 300 единиц продукции.

От поставщика A1 к потребителю B4 будем доставлять min = { 100 , 300 } = 100 единиц продукции.

Разместим в ячейку A1B4 значение равное 300

Мы полностью израсходoвали запасы поставщика A1. Вычеркиваем строку 1 таблицы, т.е исключаем ее из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

-

  

2  

-

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A3B2 и равен 2, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A3 к потребителю B2 наиболее рентабельный.

Запасы поставщика A3 составляют 350 единиц продукции. Потребность потребителя B2 составляет 50 единиц продукции.

От поставщика A3 к потребителю B2 будем доставлять min = { 350 , 50 } = 50 единиц продукции.

Разместим в ячейку A3B2 значение равное 50

Мы полностью удовлетворили потребность потребителя B2. Вычеркиваем столбец 2 таблицы, т.е исключаем его из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

50

  

2  

-

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A3B3 и равен 4, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A3 к потребителю B3 наиболее рентабельный.

Запасы поставщика A3 составляют 300 единиц продукции. Потребность потребителя B3 составляет 200 единиц продукции.

От поставщика A3 к потребителю B3 будем доставлять min = { 300 , 200 } = 200 единиц продукции.

Разместим в ячейку A3B3 значение равное 200

Мы полностью удовлетворили потребность потребителя B3. Вычеркиваем столбец 3 таблицы, т.е исключаем его из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

-

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A4B4 и равен 4, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A4 к потребителю B4 наиболее рентабельный.

Запасы поставщика A4 составляют 100 единиц продукции. Потребность потребителя B4 составляет 200 единиц продукции.

От поставщика A4 к потребителю B4 будем доставлять min = { 100 , 200 } = 100 единиц продукции.

Разместим в ячейку A4B4 значение равное 200

Мы полностью израсходoвали запасы поставщика A4. Вычеркиваем строку 4 таблицы, т.е исключаем ее из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A3B4 и равен 5, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A3 к потребителю B4 наиболее рентабельный.

Запасы поставщика A3 составляют 100 единиц продукции. Потребность потребителя B4 составляет 100 единиц продукции.

От поставщика A3 к потребителю B4 будем доставлять 100 единиц продукции.

Разместим в ячейку A3B4 значение равное 100

Мы полностью израсходoвали запасы поставщика A3. Вычеркиваем строку 3 таблицы, т.е исключаем ее из дальнейшего рассмотрения.

Мы полностью удовлетворили потребность потребителя B4. Вычеркиваем столбец 4 таблицы, т.е исключаем его из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Минимальный элемент матрицы тарифов находится в ячейке A5B5 и равен 15, т.е. из незадействованных маршрутов, маршрут доставки продукции от поставщика A5 к потребителю B5 наиболее рентабельный.

Запасы поставщика A5 составляют 200 единиц продукции. Потребность потребителя B5 составляет 200 единиц продукции.

От поставщика A5 к потребителю B5 будем доставлять 200 единиц продукции.

Разместим в ячейку A5B5 значение равное 200

Мы полностью израсходoвали запасы поставщика A5. Вычеркиваем строку 5 таблицы, т.е исключаем ее из дальнейшего рассмотрения.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

-

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

200

  

15  

200

Потребность

100

200

200

300

200

Заполненные нами ячейки будем называть базисными, остальные - свободными.

Для решения задачи методом потенциалов, количество базисных ячеек (задействованных маршрутов) должно равняться m + n - 1, где m - количество строк в таблице, n - количество столбцов в таблице.

Количество базисных ячеек равно 8. Требуется, чтобы было 9.

В свободную ячейку A2B5 запишем ноль, как в ячейку не образующую цикл (понятие цикл см. ниже) с базисными ячейками и имеющую наименьший тариф. Будем считать, что от поставщика A2 к потребителю B5 доставляем 0 единиц продукции.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

0

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

200

  

15  

200

Потребность

100

200

200

300

200

Количество базисных ячеек (задействованных маршрутов) равно 9, что и требовалось.

Мы нашли начальное решение, т.е израсходовали все запасы поставщиков и удовлетворили все потребности потребителей.

S0 = 2 * 100 + 1 * 150 + 2 * 50 + 4 * 200 + 5 * 100 + 1 * 100 + 4 * 100 + 15 * 200 = 5250 ден. ед.

Общие затраты на доставку всей продукции, для начального решения , составляют 5250 ден. ед. .

Дальнейшие наши действия будут состоять из шагов, каждый из которых состоит в следующем:

 Находим потенциалы поставщиков и потребителей для имеющегося решения.

 Находим оценки свободных ячеек. Если все оценки окажутся неотрицательными - задача решена.

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

 Находим новое решение, как минимум, не хуже предыдущего.

 Вычисляем общую стоимость доставки всей продукции для нового решения.

Шаг 1

ПРОИЗВЕДЕМ ОЦЕНКУ ПОЛУЧЕННОГО РЕШЕНИЯ.

Каждому поставщику Ai ставим в соответствие некоторое число - ui, называемое потенциалом поставщика.

Каждому потребителю Bj ставим в соответствие некоторое число - vj, называемое потенциалом потребителя.

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

(ui + vj = cij, где cij - тариф клетки AiBj)

Посколько, число базисных клеток - 9, а общее количество потенциалов равно 10, то для однозначного определения потенциалов, значение одного из них можно выбрать произвольно.

Примем v4 = 0.

v4 + u1 = c14

v4 + u1 = 2

u1 = 2 - 0 = 2

v4 + u3 = c34

v4 + u3 = 5

u3 = 5 - 0 = 5

v4 + u4 = c44

v4 + u4 = 4

u4 = 4 - 0 = 4

v2 + u3 = c32

v2 + u3 = 2

v2 = 2 - 5 = -3

v3 + u3 = c33

v3 + u3 = 4

v3 = 4 - 5 = -1

v1 + u4 = c41

v1 + u4 = 1

v1 = 1 - 4 = -3

v2 + u2 = c22

v2 + u2 = 1

u2 = 1 - ( -3 ) = 4

v5 + u2 = c25

v5 + u2 = 1

v5 = 1 - 4 = -3

v5 + u5 = c55

v5 + u5 = 15

u5 = 15 - ( -3 ) = 18

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

u 1 = 2

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

0

  

1  

u 2 = 4

A 3

-

  

9  

50

  

2  

200

  

4  

100

  

5  

-

  

6  

u 3 = 5

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

u 4 = 4

A 5

-

  

5  

-

  

8  

-

  

15  

-

  

6  

200

  

15  

u 5 = 18

V i

v 1 = -3

v 2 = -3

v 3 = -1

v 4 = 0

v 5 = -3

Найдем оценки свободных ячеек следующим образом (в таблице они располагаются в нижнем левом углу ячейки):

11 = c11 - ( u1 + v1 ) = 4 - ( 2 + ( -3 ) ) = 5

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  5

4  

-

  4

3  

-

  4

5  

100

  

2  

-

  4

3  

u 1 = 2

A 2

-

  6

7  

150

  

1  

-

  -1

2  

-

  -1

3  

0

  

1  

u 2 = 4

A 3

-

  7

9  

50

  

2  

200

  

4  

100

  

5  

-

  4

6  

u 3 = 5

A 4

100

  

1  

-

  2

3  

-

  3

6  

100

  

4  

-

  9

10  

u 4 = 4

A 5

-

  -10

5  

-

  -7

8  

-

  -2

15  

-

  -12

6  

200

  

15  

u 5 = 18

V i

v 1 = -3

v 2 = -3

v 3 = -1

v 4 = 0

v 5 = -3

12 = c12 - ( u1 + v2 ) = 3 - ( 2 + ( -3 ) ) = 4

13 = c13 - ( u1 + v3 ) = 5 - ( 2 + ( -1 ) ) = 4

15 = c15 - ( u1 + v5 ) = 3 - ( 2 + ( -3 ) ) = 4

21 = c21 - ( u2 + v1 ) = 7 - ( 4 + ( -3 ) ) = 6

23 = c23 - ( u2 + v3 ) = 2 - ( 4 + ( -1 ) ) = -1

24 = c24 - ( u2 + v4 ) = 3 - ( 4 + 0 ) = -1

31 = c31 - ( u3 + v1 ) = 9 - ( 5 + ( -3 ) ) = 7

35 = c35 - ( u3 + v5 ) = 6 - ( 5 + ( -3 ) ) = 4

42 = c42 - ( u4 + v2 ) = 3 - ( 4 + ( -3 ) ) = 2

43 = c43 - ( u4 + v3 ) = 6 - ( 4 + ( -1 ) ) = 3

45 = c45 - ( u4 + v5 ) = 10 - ( 4 + ( -3 ) ) = 9

51 = c51 - ( u5 + v1 ) = 5 - ( 18 + ( -3 ) ) = -10

52 = c52 - ( u5 + v2 ) = 8 - ( 18 + ( -3 ) ) = -7

53 = c53 - ( u5 + v3 ) = 15 - ( 18 + ( -1 ) ) = -2

54 = c54 - ( u5 + v4 ) = 6 - ( 18 + 0 ) = -12

Среди оценок свободных ячеек есть отрицательные, следовательно решение не является оптимальным.

Из свободных ячеек (незадействованных маршрутов), имеющих отрицательные оценки, остановим свой выбор на ячейке A5B4 ( 54 =-12).

Построим цикл для выбранной ячейки:

Поставьте курсор мыши в выбранную свободную ячейку A5B4. Используя горизонтальные и вертикальные перемещения курсора, соедините непрерывной линией базисные ячейки так, чтобы вернуться в исходную ячейку A5B4. Базисные ячейки, расположенные в вершинах построенной ломаной линии, образуют цикл для выбранной нами ячейки. Он единственный. Направление обхода не имеет значения.

Ячейки образующие цикл для свободной ячейки A5B4 :

A5B4 , A5B5 , A2B5 , A2B2 , A3B2 , A3B4

Пусть ячейка A5B4, для которой мы строили цикл, имеет порядковый номер один.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

0

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

1100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  -12

6  

200

  

15  

200

Потребность

100

200

200

300

200

Среди ячеек цикла A5B5 , A2B2 , A3B4 , номера которых четные, найдем ячейку, обладающую найменьшим значением.

min = { 200, 150, 100 } = 100

В данном случае, это ячейка A3B4.

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

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150

  

1  

-

  

2  

-

  

3  

0

  

1  

150

A 3

-

  

9  

50

  

2  

200

  

4  

100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

-

  -12

6  

200

  

15  

200

Потребность

100

200

200

300

200

От ячеек цикла с четными номерами отнимает 100. К ячейкам с нечетными номерами прибавляем 100.

Что мы делаем?

Мы вводим новый маршрут доставки продукции от поставщика A5 к потребителю B4. По данному маршруту доставим 100 единиц продукции, по цене доставки 6 за единицу продукции. Общие затраты увеличатся на 6 * 100 ден. ед.

Сократим поставку от поставщика A5 к потребителю B5 на 100 единиц продукции, по цене доставки 15 за единицу продукции. Общие затраты уменьшатся на 15 * 100 ден. ед.

От поставщика A2 к потребителю B5 дополнительно поставим 100 единиц продукции, по цене доставки 1 за единицу продукции. Общие затраты увеличатся на 1 * 100 ден. ед.

Сократим поставку от поставщика A2 к потребителю B2 на 100 единиц продукции, по цене доставки 1 за единицу продукции. Общие затраты уменьшатся на 1 * 100 ден. ед.

От поставщика A3 к потребителю B2 дополнительно поставим 100 единиц продукции, по цене доставки 2 за единицу продукции. Общие затраты увеличатся на 2 * 100 ден. ед.

По маршруту от поставщика A3 к потребителю B4 мы полностью перестаем доставлять продукцию.

Общие затраты уменьшатся на 5 * 100 ден. ед.

Данные преобразования не изменят баланс между поставщиками и потребителями. Все поставщики израсходуют все свои запасы, а все потребители получат необходимое им количество продукции.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

150 - 100

  

1  

-

  

2  

-

  

3  

0 + 100

  

1  

150

A 3

-

  

9  

50 + 100

  

2  

200

  

4  

100 - 100

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

+ 100

  -12

6  

200 - 100

  

15  

200

Потребность

100

200

200

300

200

Что в итоге?

Общие расходы на доставку продукции от поставщиков к потребителям изменятся на

6 * 100 - 15 * 100 + 1 * 100 - 1 * 100 + 2 * 100 - 5 * 100 = ( 6 - 15 + 1 - 1 + 2 - 5 ) * 100 = -12 * 100   ден. ед.

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

ГЛАВНОЕ : В тот момент, когда мы нашли ячеку с наименьшим значением (среди ячеек, номера которых четные в цикле), мы уже могли сказать, что общие затраты изменятся на 54 * 100 = -12 * 100 = -1200 ден. ед.

Общие затраты на доставку всей продукции, для данного решения, составляют S0 = 5250 + ( - 1200 ) = 4050 ден. ед. .

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

Воспользовавшись таблицей, в которой мы находили оценки свободных ячеек, вы можете убедиться, что в случае выбора:

  • ячейки A2B3, общая стоимость доставки всей продукции изменилась бы на 23 * 150 = -1 * 150 = -150 ден. ед.

  • ячейки A2B4, общая стоимость доставки всей продукции изменилась бы на 24 * 100 = -1 * 100 = -100 ден. ед.

  • ячейки A5B1, общая стоимость доставки всей продукции изменилась бы на 51 * 100 = -10 * 100 = -1000 ден. ед.

  • ячейки A5B2, общая стоимость доставки всей продукции изменилась бы на 52 * 150 = -7 * 150 = -1050 ден. ед.

  • ячейки A5B3, общая стоимость доставки всей продукции изменилась бы на 53 * 150 = -2 * 150 = -300 ден. ед.

Ячейка A3B4 выйдет из базиса, мы перестали доставлять продукцию от поставщика A3 к потребителю B4

Ячейка A5B4 станет базисной, мы ввели новый маршрут доставки продукции от поставщика A5 к потребителю B4 .

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

100

  

6  

100

  

15  

200

Потребность

100

200

200

300

200

Шаг 2

ПРОИЗВЕДЕМ ОЦЕНКУ ПОЛУЧЕННОГО РЕШЕНИЯ.

Каждому поставщику Ai ставим в соответствие некоторое число - ui, называемое потенциалом поставщика.

Каждому потребителю Bj ставим в соответствие некоторое число - vj, называемое потенциалом потребителя.

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

(ui + vj = cij, где cij - тариф клетки AiBj)

Посколько, число базисных клеток - 9, а общее количество потенциалов равно 10, то для однозначного определения потенциалов, значение одного из них можно выбрать произвольно.

Примем v4 = 0.

v4 + u1 = c14

v4 + u1 = 2

u1 = 2 - 0 = 2

v4 + u4 = c44

v4 + u4 = 4

u4 = 4 - 0 = 4

v4 + u5 = c54

v4 + u5 = 6

u5 = 6 - 0 = 6

v5 + u5 = c55

v5 + u5 = 15

v5 = 15 - 6 = 9

v5 + u2 = c25

v5 + u2 = 1

u2 = 1 - 9 = -8

v1 + u4 = c41

v1 + u4 = 1

v1 = 1 - 4 = -3

v2 + u2 = c22

v2 + u2 = 1

v2 = 1 - ( -8 ) = 9

v2 + u3 = c32

v2 + u3 = 2

u3 = 2 - 9 = -7

v3 + u3 = c33

v3 + u3 = 4

v3 = 4 - ( -7 ) = 11

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  

3  

u 1 = 2

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

u 2 = -8

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

u 3 = -7

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

u 4 = 4

A 5

-

  

5  

-

  

8  

-

  

15  

100

  

6  

100

  

15  

u 5 = 6

V i

v 1 = -3

v 2 = 9

v 3 = 11

v 4 = 0

v 5 = 9

Найдем оценки свободных ячеек следующим образом (в таблице они располагаются в нижнем левом углу ячейки):

11 = c11 - ( u1 + v1 ) = 4 - ( 2 + ( -3 ) ) = 5

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  5

4  

-

  -8

3  

-

  -8

5  

100

  

2  

-

  -8

3  

u 1 = 2

A 2

-

  18

7  

50

  

1  

-

  -1

2  

-

  11

3  

100

  

1  

u 2 = -8

A 3

-

  19

9  

150

  

2  

200

  

4  

-

  12

5  

-

  4

6  

u 3 = -7

A 4

100

  

1  

-

  -10

3  

-

  -9

6  

100

  

4  

-

  -3

10  

u 4 = 4

A 5

-

  2

5  

-

  -7

8  

-

  -2

15  

100

  

6  

100

  

15  

u 5 = 6

V i

v 1 = -3

v 2 = 9

v 3 = 11

v 4 = 0

v 5 = 9

12 = c12 - ( u1 + v2 ) = 3 - ( 2 + 9 ) = -8

13 = c13 - ( u1 + v3 ) = 5 - ( 2 + 11 ) = -8

15 = c15 - ( u1 + v5 ) = 3 - ( 2 + 9 ) = -8

21 = c21 - ( u2 + v1 ) = 7 - ( -8 + ( -3 ) ) = 18

23 = c23 - ( u2 + v3 ) = 2 - ( -8 + 11 ) = -1

24 = c24 - ( u2 + v4 ) = 3 - ( -8 + 0 ) = 11

31 = c31 - ( u3 + v1 ) = 9 - ( -7 + ( -3 ) ) = 19

34 = c34 - ( u3 + v4 ) = 5 - ( -7 + 0 ) = 12

35 = c35 - ( u3 + v5 ) = 6 - ( -7 + 9 ) = 4

42 = c42 - ( u4 + v2 ) = 3 - ( 4 + 9 ) = -10

43 = c43 - ( u4 + v3 ) = 6 - ( 4 + 11 ) = -9

45 = c45 - ( u4 + v5 ) = 10 - ( 4 + 9 ) = -3

51 = c51 - ( u5 + v1 ) = 5 - ( 6 + ( -3 ) ) = 2

52 = c52 - ( u5 + v2 ) = 8 - ( 6 + 9 ) = -7

53 = c53 - ( u5 + v3 ) = 15 - ( 6 + 11 ) = -2

Среди оценок свободных ячеек есть отрицательные, следовательно решение не является оптимальным.

Из свободных ячеек (незадействованных маршрутов), имеющих отрицательные оценки, остановим свой выбор на ячейке A1B5 ( 15 =-8).

Построим цикл для выбранной ячейки:

Поставьте курсор мыши в выбранную свободную ячейку A1B5. Используя горизонтальные и вертикальные перемещения курсора, соедините непрерывной линией базисные ячейки так, чтобы вернуться в исходную ячейку A1B5. Базисные ячейки, расположенные в вершинах построенной ломаной линии, образуют цикл для выбранной нами ячейки. Он единственный. Направление обхода не имеет значения.

Ячейки образующие цикл для свободной ячейки A1B5 :

A1B5 , A1B4 , A5B4 , A5B5

Пусть ячейка A1B5, для которой мы строили цикл, имеет порядковый номер один.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  -8

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

100

  

6  

100

  

15  

200

Потребность

100

200

200

300

200

Среди ячеек цикла A1B4 , A5B5 , номера которых четные, найдем ячейку, обладающую найменьшим значением.

min = { 100, 100 } = 100

В данном случае, таких ячеек 2. Остановим свой выбор на ячейке A5B5, как обладающую наибольшим тарифом (15 ден.ед) среди 2.

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

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100

  

2  

-

  -8

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

100

  

6  

100

  

15  

200

Потребность

100

200

200

300

200

От ячеек цикла с четными номерами отнимает 100. К ячейкам с нечетными номерами прибавляем 100.

Что мы делаем?

Мы вводим новый маршрут доставки продукции от поставщика A1 к потребителю B5. По данному маршруту доставим 100 единиц продукции, по цене доставки 3 за единицу продукции. Общие затраты увеличатся на 3 * 100 ден. ед.

Сократим поставку от поставщика A1 к потребителю B4 на 100 единиц продукции, по цене доставки 2 за единицу продукции. Общие затраты уменьшатся на 2 * 100 ден. ед.

От поставщика A5 к потребителю B4 дополнительно поставим 100 единиц продукции, по цене доставки 6 за единицу продукции. Общие затраты увеличатся на 6 * 100 ден. ед.

По маршруту от поставщика A5 к потребителю B5 мы полностью перестаем доставлять продукцию.

Общие затраты уменьшатся на 15 * 100 ден. ед.

Данные преобразования не изменят баланс между поставщиками и потребителями. Все поставщики израсходуют все свои запасы, а все потребители получат необходимое им количество продукции.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

100 - 100

  

2  

+ 100

  -8

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

100 + 100

  

6  

100 - 100

  

15  

200

Потребность

100

200

200

300

200

Что в итоге?

Общие расходы на доставку продукции от поставщиков к потребителям изменятся на

3 * 100 - 2 * 100 + 6 * 100 - 15 * 100 = ( 3 - 2 + 6 - 15 ) * 100 = -8 * 100   ден. ед.

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

ГЛАВНОЕ : В тот момент, когда мы нашли ячеку с наименьшим значением (среди ячеек, номера которых четные в цикле), мы уже могли сказать, что общие затраты изменятся на 15 * 100 = -8 * 100 = -800 ден. ед.

Общие затраты на доставку всей продукции, для данного решения, составляют S0 = 4050 + ( - 800 ) = 3250 ден. ед. .

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

Воспользовавшись таблицей, в которой мы находили оценки свободных ячеек, вы можете убедиться, что в случае выбора:

  • ячейки A1B2, общая стоимость доставки всей продукции изменилась бы на 12 * 50 = -8 * 50 = -400 ден. ед.

  • ячейки A1B3, общая стоимость доставки всей продукции изменилась бы на 13 * 50 = -8 * 50 = -400 ден. ед.

  • ячейки A2B3, общая стоимость доставки всей продукции изменилась бы на 23 * 50 = -1 * 50 = -50 ден. ед.

  • ячейки A4B2, общая стоимость доставки всей продукции изменилась бы на 42 * 50 = -10 * 50 = -500 ден. ед.

  • ячейки A4B3, общая стоимость доставки всей продукции изменилась бы на 43 * 50 = -9 * 50 = -450 ден. ед.

  • ячейки A4B5, общая стоимость доставки всей продукции изменилась бы на 45 * 100 = -3 * 100 = -300 ден. ед.

  • ячейки A5B2, общая стоимость доставки всей продукции изменилась бы на 52 * 50 = -7 * 50 = -350 ден. ед.

  • ячейки A5B3, общая стоимость доставки всей продукции изменилась бы на 53 * 50 = -2 * 50 = -100 ден. ед.

Ячейка A5B5 выйдет из базиса, мы перестали доставлять продукцию от поставщика A5 к потребителю B5

Ячейка A1B5 станет базисной, мы ввели новый маршрут доставки продукции от поставщика A1 к потребителю B5 .

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

0

  

2  

100

  

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Шаг 3

ПРОИЗВЕДЕМ ОЦЕНКУ ПОЛУЧЕННОГО РЕШЕНИЯ.

Каждому поставщику Ai ставим в соответствие некоторое число - ui, называемое потенциалом поставщика.

Каждому потребителю Bj ставим в соответствие некоторое число - vj, называемое потенциалом потребителя.

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

(ui + vj = cij, где cij - тариф клетки AiBj)

Посколько, число базисных клеток - 9, а общее количество потенциалов равно 10, то для однозначного определения потенциалов, значение одного из них можно выбрать произвольно.

Примем v4 = 0.

v4 + u1 = c14

v4 + u1 = 2

u1 = 2 - 0 = 2

v5 + u1 = c15

v5 + u1 = 3

v5 = 3 - 2 = 1

v5 + u2 = c25

v5 + u2 = 1

u2 = 1 - 1 = 0

v4 + u4 = c44

v4 + u4 = 4

u4 = 4 - 0 = 4

v4 + u5 = c54

v4 + u5 = 6

u5 = 6 - 0 = 6

v2 + u2 = c22

v2 + u2 = 1

v2 = 1 - 0 = 1

v2 + u3 = c32

v2 + u3 = 2

u3 = 2 - 1 = 1

v3 + u3 = c33

v3 + u3 = 4

v3 = 4 - 1 = 3

v1 + u4 = c41

v1 + u4 = 1

v1 = 1 - 4 = -3

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

0

  

2  

100

  

3  

u 1 = 2

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

u 2 = 0

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

u 3 = 1

A 4

100

  

1  

-

  

3  

-

  

6  

100

  

4  

-

  

10  

u 4 = 4

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

u 5 = 6

V i

v 1 = -3

v 2 = 1

v 3 = 3

v 4 = 0

v 5 = 1

Найдем оценки свободных ячеек следующим образом (в таблице они располагаются в нижнем левом углу ячейки):

11 = c11 - ( u1 + v1 ) = 4 - ( 2 + ( -3 ) ) = 5

12 = c12 - ( u1 + v2 ) = 3 - ( 2 + 1 ) = 0

13 = c13 - ( u1 + v3 ) = 5 - ( 2 + 3 ) = 0

21 = c21 - ( u2 + v1 ) = 7 - ( 0 + ( -3 ) ) = 10

23 = c23 - ( u2 + v3 ) = 2 - ( 0 + 3 ) = -1

24 = c24 - ( u2 + v4 ) = 3 - ( 0 + 0 ) = 3

31 = c31 - ( u3 + v1 ) = 9 - ( 1 + ( -3 ) ) = 11

34 = c34 - ( u3 + v4 ) = 5 - ( 1 + 0 ) = 4

35 = c35 - ( u3 + v5 ) = 6 - ( 1 + 1 ) = 4

42 = c42 - ( u4 + v2 ) = 3 - ( 4 + 1 ) = -2

43 = c43 - ( u4 + v3 ) = 6 - ( 4 + 3 ) = -1

45 = c45 - ( u4 + v5 ) = 10 - ( 4 + 1 ) = 5

51 = c51 - ( u5 + v1 ) = 5 - ( 6 + ( -3 ) ) = 2

52 = c52 - ( u5 + v2 ) = 8 - ( 6 + 1 ) = 1

53 = c53 - ( u5 + v3 ) = 15 - ( 6 + 3 ) = 6

55 = c55 - ( u5 + v5 ) = 15 - ( 6 + 1 ) = 8

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  5

4  

-

  0

3  

-

  0

5  

0

  

2  

100

  

3  

u 1 = 2

A 2

-

  10

7  

50

  

1  

-

  -1

2  

-

  3

3  

100

  

1  

u 2 = 0

A 3

-

  11

9  

150

  

2  

200

  

4  

-

  4

5  

-

  4

6  

u 3 = 1

A 4

100

  

1  

-

  -2

3  

-

  -1

6  

100

  

4  

-

  5

10  

u 4 = 4

A 5

-

  2

5  

-

  1

8  

-

  6

15  

200

  

6  

-

  8

15  

u 5 = 6

V i

v 1 = -3

v 2 = 1

v 3 = 3

v 4 = 0

v 5 = 1

Среди оценок свободных ячеек есть отрицательные, следовательно решение не является оптимальным.

Из свободных ячеек (незадействованных маршрутов), имеющих отрицательные оценки, остановим свой выбор на ячейке A4B2 ( 42 =-2).

Построим цикл для выбранной ячейки:

Поставьте курсор мыши в выбранную свободную ячейку A4B2. Используя горизонтальные и вертикальные перемещения курсора, соедините непрерывной линией базисные ячейки так, чтобы вернуться в исходную ячейку A4B2. Базисные ячейки, расположенные в вершинах построенной ломаной линии, образуют цикл для выбранной нами ячейки. Он единственный. Направление обхода не имеет значения.

Ячейки образующие цикл для свободной ячейки A4B2 :

A4B2 , A4B4 , A1B4 , A1B5 , A2B5 , A2B2

Пусть ячейка A4B2, для которой мы строили цикл, имеет порядковый номер один.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

0

  

2  

100

  

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  -2

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Среди ячеек цикла A4B4 , A1B5 , A2B2 , номера которых четные, найдем ячейку, обладающую найменьшим значением.

min = { 100, 100, 50 } = 50

В данном случае, это ячейка A2B2.

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

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

0

  

2  

100

  

3  

100

A 2

-

  

7  

50

  

1  

-

  

2  

-

  

3  

100

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

-

  -2

3  

-

  

6  

100

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

От ячеек цикла с четными номерами отнимает 50. К ячейкам с нечетными номерами прибавляем 50.

Что мы делаем?

Мы вводим новый маршрут доставки продукции от поставщика A4 к потребителю B2. По данному маршруту доставим 50 единиц продукции, по цене доставки 3 за единицу продукции. Общие затраты увеличатся на 3 * 50 ден. ед.

Сократим поставку от поставщика A4 к потребителю B4 на 50 единиц продукции, по цене доставки 4 за единицу продукции. Общие затраты уменьшатся на 4 * 50 ден. ед.

От поставщика A1 к потребителю B4 дополнительно поставим 50 единиц продукции, по цене доставки 2 за единицу продукции. Общие затраты увеличатся на 2 * 50 ден. ед.

Сократим поставку от поставщика A1 к потребителю B5 на 50 единиц продукции, по цене доставки 3 за единицу продукции. Общие затраты уменьшатся на 3 * 50 ден. ед.

От поставщика A2 к потребителю B5 дополнительно поставим 50 единиц продукции, по цене доставки 1 за единицу продукции. Общие затраты увеличатся на 1 * 50 ден. ед.

По маршруту от поставщика A2 к потребителю B2 мы полностью перестаем доставлять продукцию. Общие затраты уменьшатся на 1 * 50 ден. ед.

Данные преобразования не изменят баланс между поставщиками и потребителями. Все поставщики израсходуют все свои запасы, а все потребители получат необходимое им количество продукции.

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

0 + 50

  

2  

100 - 50

  

3  

100

A 2

-

  

7  

50 - 50

  

1  

-

  

2  

-

  

3  

100 + 50

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

+ 50

  -2

3  

-

  

6  

100 - 50

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Что в итоге?

Общие расходы на доставку продукции от поставщиков к потребителям изменятся на

3 * 50 - 4 * 50 + 2 * 50 - 3 * 50 + 1 * 50 - 1 * 50 = ( 3 - 4 + 2 - 3 + 1 - 1 ) * 50 = -2 * 50   ден. ед.

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

ГЛАВНОЕ : В тот момент, когда мы нашли ячеку с наименьшим значением (среди ячеек, номера которых четные в цикле), мы уже могли сказать, что общие затраты изменятся на 42 * 50 = -2 * 50 = -100 ден. ед.

Общие затраты на доставку всей продукции, для данного решения, составляют S0 = 3250 + ( - 100 ) = 3150 ден. ед. .

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

Воспользовавшись таблицей, в которой мы находили оценки свободных ячеек, вы можете убедиться, что в случае выбора:

  • ячейки A2B3, общая стоимость доставки всей продукции изменилась бы на 23 * 50 = -1 * 50 = -50 ден. ед.

  • ячейки A4B3, общая стоимость доставки всей продукции изменилась бы на 43 * 50 = -1 * 50 = -50 ден. ед.

Ячейка A2B2 выйдет из базиса, мы перестали доставлять продукцию от поставщика A2 к потребителю B2

Ячейка A4B2 станет базисной, мы ввели новый маршрут доставки продукции от поставщика A4 к потребителю B2 .

Поставщик

Потребитель

Запас

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

50

  

2  

50

  

3  

100

A 2

-

  

7  

-

  

1  

-

  

2  

-

  

3  

150

  

1  

150

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

350

A 4

100

  

1  

50

  

3  

-

  

6  

50

  

4  

-

  

10  

200

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

200

Потребность

100

200

200

300

200

Шаг 4

ПРОИЗВЕДЕМ ОЦЕНКУ ПОЛУЧЕННОГО РЕШЕНИЯ.

Каждому поставщику Ai ставим в соответствие некоторое число - ui, называемое потенциалом поставщика.

Каждому потребителю Bj ставим в соответствие некоторое число - vj, называемое потенциалом потребителя.

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

(ui + vj = cij, где cij - тариф клетки AiBj)

Посколько, число базисных клеток - 9, а общее количество потенциалов равно 10, то для однозначного определения потенциалов, значение одного из них можно выбрать произвольно.

Примем v4 = 0.

v4 + u1 = c14

v4 + u1 = 2

u1 = 2 - 0 = 2

v5 + u1 = c15

v5 + u1 = 3

v5 = 3 - 2 = 1

v5 + u2 = c25

v5 + u2 = 1

u2 = 1 - 1 = 0

v4 + u4 = c44

v4 + u4 = 4

u4 = 4 - 0 = 4

v4 + u5 = c54

v4 + u5 = 6

u5 = 6 - 0 = 6

v1 + u4 = c41

v1 + u4 = 1

v1 = 1 - 4 = -3

v2 + u4 = c42

v2 + u4 = 3

v2 = 3 - 4 = -1

v2 + u3 = c32

v2 + u3 = 2

u3 = 2 - ( -1 ) = 3

v3 + u3 = c33

v3 + u3 = 4

v3 = 4 - 3 = 1

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  

4  

-

  

3  

-

  

5  

50

  

2  

50

  

3  

u 1 = 2

A 2

-

  

7  

-

  

1  

-

  

2  

-

  

3  

150

  

1  

u 2 = 0

A 3

-

  

9  

150

  

2  

200

  

4  

-

  

5  

-

  

6  

u 3 = 3

A 4

100

  

1  

50

  

3  

-

  

6  

50

  

4  

-

  

10  

u 4 = 4

A 5

-

  

5  

-

  

8  

-

  

15  

200

  

6  

-

  

15  

u 5 = 6

V i

v 1 = -3

v 2 = -1

v 3 = 1

v 4 = 0

v 5 = 1

Найдем оценки свободных ячеек следующим образом (в таблице они располагаются в нижнем левом углу ячейки):

11 = c11 - ( u1 + v1 ) = 4 - ( 2 + ( -3 ) ) = 5

12 = c12 - ( u1 + v2 ) = 3 - ( 2 + ( -1 ) ) = 2

13 = c13 - ( u1 + v3 ) = 5 - ( 2 + 1 ) = 2

21 = c21 - ( u2 + v1 ) = 7 - ( 0 + ( -3 ) ) = 10

22 = c22 - ( u2 + v2 ) = 1 - ( 0 + ( -1 ) ) = 2

23 = c23 - ( u2 + v3 ) = 2 - ( 0 + 1 ) = 1

24 = c24 - ( u2 + v4 ) = 3 - ( 0 + 0 ) = 3

31 = c31 - ( u3 + v1 ) = 9 - ( 3 + ( -3 ) ) = 9

34 = c34 - ( u3 + v4 ) = 5 - ( 3 + 0 ) = 2

35 = c35 - ( u3 + v5 ) = 6 - ( 3 + 1 ) = 2

43 = c43 - ( u4 + v3 ) = 6 - ( 4 + 1 ) = 1

45 = c45 - ( u4 + v5 ) = 10 - ( 4 + 1 ) = 5

51 = c51 - ( u5 + v1 ) = 5 - ( 6 + ( -3 ) ) = 2

52 = c52 - ( u5 + v2 ) = 8 - ( 6 + ( -1 ) ) = 3

53 = c53 - ( u5 + v3 ) = 15 - ( 6 + 1 ) = 8

55 = c55 - ( u5 + v5 ) = 15 - ( 6 + 1 ) = 8

Поставщик

Потребитель

U j

B 1

B 2

B 3

B 4

B 5

A 1

-

  5

4  

-

  2

3  

-

  2

5  

50

  

2  

50

  

3  

u 1 = 2

A 2

-

  10

7  

-

  2

1  

-

  1

2  

-

  3

3  

150

  

1  

u 2 = 0

A 3

-

  9

9  

150

  

2  

200

  

4  

-

  2

5  

-

  2

6  

u 3 = 3

A 4

100

  

1  

50

  

3  

-

  1

6  

50

  

4  

-

  5

10  

u 4 = 4

A 5

-

  2

5  

-

  3

8  

-

  8

15  

200

  

6  

-

  8

15  

u 5 = 6

V i

v 1 = -3

v 2 = -1

v 3 = 1

v 4 = 0

v 5 = 1

Все оценки свободных ячеек положительные, следовательно найдено оптимальное решение.

Ответ:

X опт =

0

0

0

50

50

0

0

0

0

150

0

150

200

0

0

100

50

0

50

0

0

0

0

200

0

Smin = 2 * 50 + 3 * 50 + 1 * 150 + 2 * 150 + 4 * 200 + 1 * 100 + 3 * 50 + 4 * 50 + 6 * 200 = 3150

Общие затраты на доставку всей продукции, для оптимального решения, составляют 3150 ден. ед.

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

9.1. Постановка задачи

Классическая транспортная задача ЛП формулируется следующим образом.

Имеется m пунктов производства (поставщиков) и n пунктов потребления (потребителей) однородного продукта. Заданы величины:  - объем производства (запас) i-го поставщика, i=1, m ;  - объем потребления (спрос) j-го потребителя, i=1, n ; - стоимость перевозки (транспортные затраты) единицы продукта от i-го поставщика к j-му потребителю.

Требуется составить такой план перевозок, при котором спрос всех потребителей был бы выполнен и при этом общая стоимость всех перевозок была бы минимальна.

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

Транспортная задача, в которой суммарные запасы

и суммарные потребности

совпадают, называется закрытой моделью; в противном случае - открытой. Открытая модель решается приведением к закрытой.

В случае, когда суммарные запасы превышают суммарные потребности, т.е.

вводится фиктивный n+1 потребитель, потребности которого

В случае, когда суммарные потребности превышают суммарные запасы, т.е.

,

вводится фиктивный m+1 поставщик, запасы которого

Стоимость перевозки единицы груза как до фиктивного потребителя, так и стоимость перевозки единицы груза от фиктивного поставщика полагают равными нулю, так как груз в обоих случаях не перевозится.

Прежде чем решать транспортную задачу, необходимо проверить, к какой модели она принадлежит, и если необходимо, то привести ее к закрытой модели.

9.2 Основные свойство транспортной задачи

Математические модели любых транспортных задач ЛП обладают общими чертами, а именно,

1) коэффициенты целевой функции неотрицательны (стоимости перевозок не могут быть отрицательными величинами);

2) коэффициенты правых частей ограничений неотрицательны (запасы и потребности продукта);

3) коэффициенты в ограничениях принимают только два значения, это нули и единицы.

В силу этих особенностей транспортная задача обладает следующими свойствами.

Теорема 1. Базисное решение закрытой модели транспортной задачи содержит m+n-1 базисных компонент.

Доказательство. Количество базисных компонент определяется число линейно-независимых ограничений задачи. В транспортной задаче не все m+n ограничений линейно-независимы.

Действительно, сложив первые m ограничений и следующие n ограничений задачи, получим

Но в закрытой модели выполняется балансовое равенство

поэтому получаем, что нетривиальная линейная комбинация строк ограничений (линейная комбинация с ненулевыми коэффициентами) равна нулю. Это означает, что среди ограничений задачи есть линейно-зависимое ограничение. Следовательно, число линейно-независимых ограничений равно m+n-1 и базис задачи состоит из m+n-1 компонент. Теорема доказана

В силу специфики содержательной постановки транспортной задачи допустимое решение называется планом, базисное допустимое решение называется опорным планом, оптимальное решение называется оптимальным планом.

Теорема 2. Оптимальный план закрытой модели транспортной задачи существует всегда.

Доказательство. Оптимальное решение задачи ЛП существует, если, во-первых, существует допустимое решение и, во-вторых, целевая функция ограничена на этом допустимом решении.

Покажем существование допустимого решения. Так как

суммарные запасы

совпадают с суммарными потребностями

то всегда можно найти такой план перевозок, который будет допустимым решением (все запасы вывозятся и все потребности выполняются в силу балансового равенства).

Покажем ограниченность целевой функции.

Так как

следовательно L ограничена снизу нулем для всех допустимых решений. Теорема доказана