Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1053

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
733.85 Кб
Скачать

Пример 4.2. Пусть задана следующая транспортная задача (рис. 4.16):

.

 

 

 

 

 

 

Ai

 

5

4

3

1

2

20

 

3

6

2

4

3

8

 

2

4

5

3

1

7

 

1

2

3

4

5

10

Bj

12

9

8

5

6

 

Рис. 4.16

4

5

 

Задача несбалансированна, так как Ai = 45 > Bj = 40

. Поэтому необ-

i=1

j=1

 

ходимо добавить столбец с целевыми коэффициентами, равными нулю, и

B6 = 45 40 = 5 (рис. 4.17).

 

 

 

 

 

 

 

Ai

 

5

4

3

1

2

0

20

 

3

6

2

4

3

0

8

 

2

4

5

3

1

0

7

 

1

2

3

4

5

0

10

Bj

12

9

8

5

6

5

 

Рис. 4.17

Задача решается методом потенциалов (рис. 4.18).

Vj

3

4

3

1

2

0

Ui

 

 

 

 

 

 

0

-2

9

0

5

1

5

-1

-1

-3

8

-4

-2

-1

-1

2

-1

-3

-3

5

-1

-2

 

0

-2

-5

-5

-2

Рис. 4.18

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

 

 

9

 

0

 

5

 

1

Ai

 

 

 

 

 

20

 

 

 

 

8

 

 

 

 

8

 

2

 

 

 

 

5

 

 

7

 

10

 

 

 

 

 

 

 

10

Bj

12

9

 

8

 

5

 

6

 

 

 

 

 

Рис. 4.19

 

 

41

Из рис. 4.19 видим, что у первого поставщика осталось пять единиц невывезенной продукции.

Вычисляем значение целевой функции:

C(x) = 9×4 +0×3+5×1+1×2+8×2+ 2×2+5×1+10×1= 78.

Пример 4.5.2. Имеемнесбалансированнуютранспортнуюзадачу(рис. 4.20).

 

 

 

 

 

 

Ai

 

5

4

3

1

2

20

 

3

6

2

4

3

8

 

2

4

5

3

1

7

 

1

2

3

4

5

10

Bj

12

15

10

8

5

 

Рис. 4.20

 

 

 

 

4

 

 

 

5

 

 

Задача несбалансированна, так как

Ai = 45 < Bj = 50

. Добавляем стро-

 

 

 

 

i=1

 

 

j=1

 

ку с целевыми коэффициентами, равными нулю, и A5

= 50 45 = 5. Получаем

следующую задачу (рис. 4.21):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ai

 

 

 

5

4

3

1

2

 

 

20

 

 

 

3

6

2

4

3

 

 

8

 

 

 

2

4

5

3

1

 

 

7

 

 

 

1

2

3

4

5

 

 

10

 

 

Bj

0

0

0

0

0

5

12

15

10

8

5

 

 

 

Рис. 4.21

 

 

Задача решается методом потенциалов (рис. 4.22).

Vj

3

 

4

3

1

2

Ui

 

 

 

 

 

 

 

0

-

 

10

2

8

0

-1

-

 

-

8

-

-

-1

2

 

-

-

-

5

-2

10

 

0

-

-

-

-3

0

 

5

0

-

-

Рис. 4.22

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

щий (рис. 4.23):

42

 

 

 

 

 

 

Ai

 

 

10

2

8

0

20

 

 

 

8

 

 

8

 

2

 

 

 

5

7

 

10

 

 

 

 

10

Bj

12

15

10

8

5

 

Рис. 4.23

Потребность второго потребителя не удовлетворена на пять единиц. Оп-

тимальное значение целевой функции

C(x) =10×4+ 2×3+8×1+ 0×2+8×2+ 2×2+5×1+10×1= 89 .

Лабораторная работа № 6

Даны матрица С размером (4×5), количество продуктов i-го поставщика Аi и потребность потребителя Bj (рис. 4.24).

Ai

5

4

3

1

2

 

3

6

2

4

3

 

2

4

5

3

1

 

1

2

3

4

5

 

Bj

Рис. 4.24

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

1.Сбалансировать задачу.

2.Найти начальное допустимое решение методом: а) северо-западного угла, б) минимального элемента.

3.Допустимое решение, найденное методом минимального элемента, проверить на оптимальность.

4.Если решение в (3) неоптимальное, то найти оптимальное решение с помощью метода потенциалов.

5.Если в (3) доказана оптимальность, то найти оптимальное решение методом потенциалов, начиная с допустимого решения, найденного методом се- веро-западного угла.

6.Для оптимального решения найти значение целевой функции.

Значения Ai и Bj для различных вариантов приведены в табл. 4.1

43

Таблица 4.1

Номер

A1

A2

A3

A4

B1

B2

B3

B4

B5

варианта

 

 

 

 

 

 

 

 

 

 

1

15

9

7

11

12

8

10

9

6

2

16

8

8

10

15

9

7

6

8

3

21

13

12

9

14

11

10

8

7

4

20

10

8

13

13

10

7

9

8

5

18

12

10

12

16

13

9

8

10

6

19

11

9

10

17

12

10

8

7

7

17

8

16

15

15

10

13

9

12

8

22

10

11

9

18

11

12

8

7

9

14

8

7

13

9

10

6

7

8

10

17

10

11

16

14

9

13

6

10

11

11

9

15

7

12

8

10

9

6

12

8

16

8

10

15

9

6

7

8

13

21

12

13

9

11

14

10

8

7

14

10

8

20

13

13

10

9

7

8

15

18

12

10

12

13

10

9

8

16

16

11

19

9

10

17

10

12

8

7

17

17

8

15

16

10

15

12

9

13

18

11

10

9

22

18

11

12

8

7

19

14

7

8

13

9

10

7

6

8

20

16

11

10

17

14

9

10

6

13

5.Теория расписаний

5.1.Общие положения

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

Вкачестве «приборов» могут фигурировать станки, железнодорожные пути, учебные помещения, компьютеры и тому подобное. В качестве «требований» – обрабатываемые детали, поезда, группы студентов, программы и тому подобное. Поскольку природа «приборов» и «требований» для нас безразлична, пронумеруем их числами 1,2,..., Ì и 1,2,...,n соответственно и в дальнейшем бу-

44

(i) j
N ={1,2,...,n} системой,

дем говорить об обслуживании требований множества состоящей из М приборов: 1,2,..., Ì .

Обычно каждому требованию i N сопоставляется некоторое множество Ì (i) {1,2,..., M} приборов, каждый из которых может или должен обслуживать это требование. Если каждое требование i может быть обслужено любым прибором L M (i) , то обслуживающая система называется одностадийной (с одним или несколькими параллельными приборами).

В многостадийных системах процесс обслуживания требования i включает li стадий. При этом каждому требованию i N и каждой стадии j (1 j li ) его обслуживания сопоставляется некоторое множество M (ji) M (i) приборов. Требо-

вание i на стадии j может быть обслужено любым из приборов L M , но не

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

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

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

него времени обслуживания требований.

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

Если многостадийная система состоит из М последовательных приборов

ис одинаковым их порядком прохождения для всех требований, то такая сис-

тема называется системой конвейерного типа.

Всистеме конвейерного типа номер прибора, как правило, совпадает с номером стадии. В зарубежной литературе она известна под названием flow shop.

Заметим, что в конвейерной системе, для того чтобы задать расписание, нужно задать очередность обслуживания требований, то есть если имеется N требований, которые должны быть обслужены, то расписание можно задать в виде перестановки из N элементов:

45

σ = (i1,i2 ,i j ,...,iN ),

где i j – номер требования стоящего в расписании на месте j.

5.2.Задача о назначениях

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

Вербальная модель

Пусть имеется n – приборов (станков) и n – требований (деталей). Каждое требование может обслуживаться (каждая деталь может обрабатываться) на любом из приборов.

tij – длительность обслуживания i-го требования на приборе j.

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

Математическая модель

Введем

 

(5.2.1)

xij ={0,1}

 

xij =1, если i-е требование обслуживается j-м прибором;

 

xij = 0, если i-е требование не обслуживается.

 

 

Ограничения:

 

 

n

 

 

xij =1, i =

 

 

,

(5.2.2)

1,n

j=1

каждое требование обслуживается ровно одним прибором.

n

 

 

 

 

xij =1,

j =

 

,

(5.2.3)

1,n

i=1

 

 

 

 

каждый прибор обслуживает ровно одно требование.

 

Целевая функция имеет вид

m n

 

 

 

f (x) =

1 ∑∑tij xij min .

 

 

n i=1 j=1

 

Замечание. Так как коэффициент 1 не влияет на положение оптималь-

 

n

 

ной точки, то целевую функцию можно заменить на функцию

 

m

n

 

c(x) = ∑∑cij xij min,

(5.2.4)

i=1 j=1

где cij = tij .

5.2.2. Способ задания задачи о назначениях и ее анализ

Как видно из математической модели (5.2.1)-(5.2.4), задача о назначениях является транспортной задачей с квадратной матрицей C = (cij ) , в которой для

всех i и j, ai = bj =1, поэтому, чтобы задать задачу о назначениях, достаточно только задать квадратную матрицу С.

46

Заметим, что задача о назначениях является транспортной задачей, если ограничение (5.2.2) заменить ограничением xij 0. Возникает вопрос, если ис-

правленную задачу решить методом потенциалов, то будет ли решение удовлетворять ограничению (5.2.2).

Однако известно, что транспортная задача с целыми правыми частями имеет целочисленное решение. Правые части задачи о назначениях равны единице, то есть целым числам, значит, и все xij также целые числа, при этом из

(5.2.2)-(5.2.3) следует, что все xij 1, следовательно, они могут принимать зна-

чения только ноль и единица.

Отсюда любое допустимое решение задачи о назначениях может быть представлено в виде квадратной матрицы Х, в которой в каждом столбце и каждой строке имеется по одной единице. Все остальные элементы матрицы равны нулю. Например, матрица Х может иметь вид (рис. 5.1).

 

1

Х=

1

1

 

1

Рис. 5.1

То есть матрица Х имеет ровно n ненулевых элементов. Если решать задачу методом потенциалов, то базисное решение х должно иметь (2n-1) базисную компоненту, и так как число единиц равно n, то базисное решение должно быть дополнено (n-1) нулем. Отсюда следует, что базисное решение является сильно вырожденным, а это является существенной помехой для использования метода потенциалов (θ часто будет равно нулю). Поэтому для решения задачи о назначениях может быть предложен другой метод, существенно использующий тот факт, что ненулевые компоненты решения равны единице. В этом случае матрицу Х можно вообще не задавать, а на матрице С пометить (крышкой) элементы, которым соответствуют единичные компоненты матрицы Х. Тогда значение целевой функции будет равно

C(x) = cij .

Рассмотрим свойства матрицы С.

Свойство 1. Если из всех элементов одной строки или одного столбца матрицы С вычесть одно и то же число а, то оптимальное решение новой зада-

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

C í (x* ) = C(x* ) à .

Свойство 2. Без ограничения общности мы можем считать, что cij 0.

47

Свойство 3. Пусть все cij 0 и существуют cij = 0, тогда, если удается найти допустимое решение x* такое, что все xij* = 1 соответствуют cij = 0, то

полученное допустимое решение оптимально.

Определение 1. Пусть все элементы матрицы С больше или равны нулю и существуют cij = 0. Нули матрицы С называются независимыми, если они сто-

ят в разных строках и столбцах матрицы С.

Так как любое допустимое решение задачи о назначениях имеет n единиц, стоящих в разных строках и столбцах, то, как следует из Свойства 3, для того, чтобы могло быть найдено оптимальное решение задачи о назначениях, надо, чтобы матрица С имела n независимых нулей. Отсюда следует, что для нахождения оптимального решения необходимо воспользовавшись свойством 1, путем вычитания из строк и столбцов некоторых чисел, получить новую матрицу С, имеющую n независимых нулей. Этот метод называется Венгерским методом.

5.2.3. Венгерский метод

Венгерский метод состоит из четырех этапов: Этап 1. Приведение матрицы.

Этап 2. Подсчет k – числа независимых нулей.

Этап 3. Преобразование матрицы С с целью получения новых нулей. Этап 4. Поиск независимых нулей и получение оптимального решения.

Блок-схема последовательности выполнения этапов Венгерского метода приведена на рис. 5.2

 

 

 

 

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этап 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этап 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

да

Этап 3

 

 

 

 

 

k = n

 

 

 

Этап 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

Рис.5.2. Блок-схема выполнения этапов Венгерского метода

Рассмотрим каждый этап подробно.

48

Этап 1. Приведение матрицы

Определение 2. Матрица С называется приведенной, если она имеет в каждой строке и в каждом столбце, по крайней мере, один ноль.

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

Алгоритм выполнения первого этапа

Шаг 0. S = 0.

Шаг 1. В каждой строке определяется ai = min cij .

j

Шаг 2. Для всех cij полагают cij = cij ai .

n

Шаг 3. S = S + ai .

i=1

Шаг 4. Для каждого j полагают bj = min cij .

i

Шаг 5. Для всех cij полагают cij = cij bj .

m

Шаг 6. S = S + bj .

j=1

Шаг 7. Переход ко второму этапу.

Этап 2. Подсчет k – числа независимых нулей

Пусть мы хотим вычеркнуть независимые нули горизонтальными или вертикальными линиями. Заметим, что никакие два независимых нуля нельзя вычеркнуть одной горизонтальной или вертикальной линией, так как они стоят в разных столбцах и строках. То есть если мы хотим вычеркнуть все независимые нули горизонтальными и (или) вертикальными линиями, то число этих линий будет совпадать с числом независимых нулей. Отсюда следует, что для того чтобы определить, сколько независимых нулей имеет матрица С, достаточно все нули матрицы С вычеркнуть минимально возможным числом горизонтальных и (или) вертикальных линий.

Рассмотрим следующую матрицу (рис. 5.3):

0

0

0

0

0

 

 

 

0

 

 

 

0

 

 

 

 

Рис. 5.3

 

Эта матрица является приведенной, так как в каждой строке и в каждом столбце имеется, по крайней мере, один ноль. При этом все нули могут быть вычеркнутыми двумя линиями: вертикальной и горизонтальной, - то есть эта матрица имеет всего два независимых нуля (рис. 5.4).

49

0

0

0

0

0

 

 

 

0

 

 

 

0

 

 

 

Рис. 5.4

Отсюда сформулируем алгоритм второго этапа.

Алгоритм выполнения второго этапа Шаг 1. Отыскивается строка, содержащая один ноль. Этот ноль вычерки-

вается вертикальной линией. Процесс продолжается, пока может быть найдена строка, содержащая один ноль.

Шаг 2. Отыскивается столбец, содержащий один ноль. Этот ноль вычеркивается горизонтальной линией. Процесс продолжается, пока может быть найден столбец, содержащий один ноль.

Шаг 3. Просматриваются невычеркнутые элементы матрицы С. Шаг 4. Если среди невычеркнутых сij имеются cij = 0, то переход

к Шагу 7.

Иначе Шаг 5.

Шаг 5. Подсчитывается число линий k.

Шаг 6. Если k = n , то переход к четвертому этапу. Если k < n , то пере-

ход к третьему этапу.

 

 

 

 

 

Шаг

7.

Просматриваются

строки

матрицы

С

и

подсчитывается

k1 = min ki , где ki – число невычеркнутых нулей в i-й строке (k1 2).

Шаг

8.

Просматриваются

столбцы

матрицы

С

и

подсчитывается

k2 = min k j , где k j – число невычеркнутых нулей в j-м столбце.

Шаг 9. Если k1 k2 , то выбирается строка, содержащая k1 нулей, и все нули вычеркиваются вертикальными линиями. Переход к Шагу 1.

Шаг 10. Если k2 k1 , то выбирается столбец, содержащий k2 , невычерк-

нутых нулей и все нули вычеркиваются горизонтальными линиями. Переход к

Шагу 2.

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

Этап 3. Преобразование матрицы С с целью получения новых нулей

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

так, чтобы получить новые нули. Пометим через сijте элементы матрицы С,

50