Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники_ЭММ_2009.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.69 Mб
Скачать

Вариант 10.

Содержание работ

Обозначение

Предшествую

щие работы

Длительность работ

Заказ на оборудование

а1

-

11

Разработка системы учета спроса

а2

-

13

Отбор товаров и выписка счетов

а3

а1

2

Завоз товара

а4

а3

3

Завоз оборудования

а5

а1

5

Установка оборудования

а6

а5

7

Выкладка товара

а7

а4

6

Учет наличия товара

а8

а4

5

Оформление зала

а9

а6, а7

4

Изучение документов

а10

а2, а8

4

Репетиция

а11

а9, а10

3

Проведение ярмарки

а12

а11

1

Тема №7 Задача об оптимальном назначении.

Пусть имеются n работ и n кандидатов для выполнения этих работ. Назначение кандидата i на работу j связано с затратами (i, j=1,2,…,n). Требуется найти назначения кандидатов на все работы, дающие минимальные суммарные затраты, при этом каждого кандидата можно назначать только на одну работу и каждая работа может быть занята только одним кандидатом. Исходные данные представлены в таблице:

3

7

3

8

2

4

4

5

4

7

2

8

9

7

3

8

Решение.

Введем переменные (i,j=1,2,…,n), имеющие следующий смысл:

=1, если кандидат распределяется на работу ;

=0 — в противном случае.

Так как каждого кандидата можно назначать только на одну работу и каждая работа может быть занята только одним кандидатом, то введенные переменные должны подчиняться двум условиям (ограничениям):

для всех i =1,2,…,n;

для всех j =1,2,…,n.

Критерием оптимизации (целевой функцией) является суммарное время выполнения всех работ Y:

.

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

Для решения будем использовать венгерский метод. Основной принцип его – оптимальность решения задачи о назначении – не нарушается при уменьшении или увеличении элементов строки (столбца) на одну и ту же величину ( ). Решение считается оптимальным, если все измененные искусственно затраты (i,j=1,2,…,n) и можно подобрать такой набор , при котором

.

На основе исходных данных создадим таблицу 1:

Таблица 1

Аi

Bj

ai

di

B1

B2

B3

B4

A1

3

7

3

8

1

3

A2

2

4

4

5

1

2

A3

4

7

2

8

1

2

A4

9

7

3

8

1

3

bj

1

1

1

1

Алгоритм метода включает следующие основные этапы:

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

Таблица 2

Аi

Bj

ai

B1

B2

B3

B4

A1

0

4

0

5

1

A2

0

2

2

3

1

A3

2

5

0

6

1

A4

6

4

0

5

1

bj

1

1

1

1

dj

0

2

0

3

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

Таблица 3

Аi

Bj

ai

B1

B2

B3

B4

A1

0

2

0

2

1

A2

0

0

2

0

1

A3

2

3

0

3

1

A4

6

2

0

2

1

bj

1

1

1

1

1

  1. поиск оптимального решения. Необходимо рассмотреть сначала одну из строк таблицы 3, имеющую наименьшее число нулей. Выделим тот из нулей (тот, которому соответствуют наименьшие затраты времени по таблице 1) этой строки и зачеркнем все остальные нули этой строки и того столбца, в которых находится выделенный нуль. Аналогичные операции последовательно проводят для всех строк. Если назначения, которые получены при всех выделенных нулях, являются полными (то есть число выделенных нулей равно n), то решение оптимальное, в противном случае следует переходить к следующему этапу;

  2. поиск минимального набора строк и столбцов, содержащих нули. Для этого необходимо выделить:

    1. все строки, в которых не имеется ни одного выделенного нуля (строка 4 табл. 3);

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

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

Действия пунктов b) и c) повторяются поочередно до тех пор, пока есть что выделять. После этого необходимо зачеркнуть каждую невыделенную строку и выделенный столбец (цель этого этапа – провести минимальное число горизонтальных и вертикальных прямых, пересекающих, по крайней мере, один раз все нули);

      1. перестановка некоторых нулей. Взять наименьшее число из тех клеток, через которые не проведены прямые (это число 2 табл. 3). Вычесть его из каждого числа не вычеркнутых столбцов и прибавить к каждому числу вычеркнутых строк. Получим таблицу 4:

Таблица 4

Аi

Bj

ai

B1

B2

B3

B4

A1

0

2

2

2

1

A2

0

0

4

0

1

A3

0

1

0

1

1

A4

4

0

0

0

1

bj

1

1

1

1

Эта операция не изменяет оптимального решения, после чего весь цикл расчета начинается с этапа два и продолжается до получения оптимального решения. В нашем случае число выделенных нулей оказалось равным 4, значит, назначение является полным, а решение – оптимальным.

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

(используем затраты времени тех клеток, которым в табл. 4 соответствуют выделенные нули).