Cамарский государственный аэрокосмический
университет имени академика С. П. Королева
Международный институт рынка
МЕТОДИЧЕСКИE УКАЗАНИЯ
к лабораторной работе N6
М Е Т О Д Н А З Н А Ч Е Н И Й
по курсу
"Принятие проектных решений в задачах производственного и операционного менеджмента"
Самара 1996
Метод назначений: Метод. указания к выполнению
лабораторных и самостоятельных работ / Самар. госуд. аэрокосм.
ун-т, Междунар. инст-т рынка;
Cост.В.И. Дровянников. М.А. Кораблин, Е.В. Симонова;
Самара. 1996. 20с.
Методические указания содержат краткие теоретические сведения о
методе назначений, относящемся к числу методов линейного
программирования, а также варианты заданий для выполнения
самостоятельных и лабораторных работ.
Предназначены для использования при изучении курса
"Принятие решений в задачах производственного и операционного
менеджмента".
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ О МЕТОДЕ НАЗНАЧЕНИЙ
Метод назначений - это один из методов линейного программирования, который предназначен для оптимального подбора n "предложений" к n "потребностям", например, для назначения вида работы машине, назначения вида работы производственному отделу, назначения человека на должность и т.д.
Метод назначений применяется при решении задач, имеющих следующие характеристики:
1. Имеется n "предметов", которые должны быть распределены по n "пунктам назначения".
2. Каждый "предмет" должен быть назначен единственному "пункту назначения". В понятие "предмет" и "пункт назначения" может вкладываться различное смысловое значение, определяемое конкретной задачей менеджмента. Так в качестве предмета может выступать определенный вид деятельности (работы), должность, человек и т.д.
3. Оптимальный подбор назначений должен быть достигнут за счет максимизации или минимизации определенной меры эффективности назначения: прибыли или стоимости. Для каждого потенциального назначения оценивается мера эффективности. Если мерой эффективности является прибыль, то в процессе решения задачи о назначениях она максимизируется, если мерой эффективности является стоимость, она минимизируется.
Например, пусть имеются четыре должности, на которые необходимо назначить четырех кандидатов, которые в этом случае становятся работниками. Каждому работнику может быть назначена единственная должность. Заметим, что количество должностей равно количеству работников. Необходимо составить матрицу, чтобы показать все возможные взаимосвязи между четырьмя должностями и четырьмя работниками. Работники представляются строками матрицы, а должности - столбцами, как показано в таблице 1. 16 ячеек матрицы содержат стоимости каждой возможной комбинации должность-работник. Например, стоимость назначения должности 2 работнику 2 составляет $19. Содержимое ячеек матрицы определяет интегральную меру эффективности, которая должна минимизироваться, поскольку является стоимостью. Если содержимое ячеек матрицы представляет собой прибыль, мера эффективности должна максимизироваться.
Таблица 1. Матрица назначений работников на должности
Должности | |||||
1 | 2 | 3 | 4 | ||
Канди- | 1 | 16 | 9 | 14 | 17 |
даты | 2 | 7 | 19 | 8 | 14 |
3 | 15 | 6 | 9 | 10 | |
4 | 19 | 17 | 11 | 4 |
Замечание: Содержимое ячеек - стоимости соответствующих комбинаций должность-работник. Cтоимость в этом примере может зависеть от квалификации потенциального работника, его опыта и т.п.
Одно из возможных решений приведенной выше задачи выглядит следующим образом:
Назначить должность 1 работнику 2 - стоимость: $ 7
Назначить должность 2 работнику 3 - стоимость: $ 6
Назначить должность 3 работнику 1 - стоимость: $14
Назначить должность 4 работнику 4 - стоимость: $ 4
Общая стоимость этих назначений $31. Является ли эта стоимость наименьшей? Может быть, да, а может быть, и нет. В этом примере существует 24 возможных назначения (4!). Процедура, используемая в компьютерной модели, должна определять минимальную суммарную стоимость. Приведенная выше задача может быть сформулирована как задача линейного программирования и решена с использованием модуля линейного программирования. Однако, легче и эффективнее для решения задач подобного типа использовать метод назначений, который состоит из следующих четырех шагов.
1. В каждой строке найти наименьшее значение и вычесть его из содержимого всех ячеек этой строки матрицы. (Получится по крайней мере один нуль в каждой строке.)
2. В столбце, не содержащем нулевых ячеек, найти наименьшее значение и вычесть его из содержимого всех ячеек этого столбца матрицы.
3. "Линейный тест". В матрице назначений провести минимальное число линий (горизонталей (по строкам) и/или вертикалей (по столбцам)), вычеркивающих все нулевые ячейки матрицы. Если минимальное число вычеркнутых строк и столбцов равно n, оптимальное решение найдено, т.к. назначения должны быть произведены в "пункты", соответствующие нулевым ячейкам матрицы. В противном случае, если минимальное число вычеркнутых строк и столбцов< n, перейти к шагу 4.
4. Среди невычеркнутых строк и столбцов найти ячейку с наименьшим значением. Вычесть это значение из содержимого всех невычеркнутых ячеек и добавить это значение к содержимому всех ячеек, находящихся на пересечении линий. Повторить шаг 3.
Проиллюстрируем этот алгоритм на примере решения задачи о назначении 5 видов работ любой из 5 машин (n=5). Матрица стоимостей каждой комбинации работа/машина приведена в таблице 2-1.
Таблица 2-1. Матрица назначений, содержащая затраты на выполнение работ каждой машиной
Машины | |||||
Работа | A | B | B | D | E |
1 | $5 | $6 | $4 | $8 | $3 |
2 | $6 | $4 | $9 | $8 | $5 |
3 | $4 | $3 | $2 | $5 | $4 |
4 | $7 | $2 | $4 | $5 | $3 |
5 | $3 | $6 | $4 | $5 | $5 |
Процедура решения задачи приведена в таблице 2-2.
Таблица 2-2. Процедура решения задачи о назначениях
Шаг 1: приведение строк - наименьшее значение вычитается из содержимого всех ячеек в строке матрицы
Машины | |||||
Работы | A | B | B | D | E |
1 | $2 | $3 | $1 | $5 | $0 |
2 | $2 | $0 | $5 | $4 | $1 |
3 | $2 | $1 | $0 | $3 | $2 |
4 | $5 | $0 | $2 | $3 | $1 |
5 | $3 | $6 | $4 | $5 | $5 |
Шаг 2: приведение столбцов - наименьшее значение вычитается из содержимого всех ячеек в столбце матрицы
Машины | |||||
Работы | A | B | C | D | E |
1 | $2 | $3 | $1 | $3 | $0 |
2 | $2 | $0 | $5 | $2 | $1 |
3 | $2 | $1 | $0 | $1 | $2 |
4 | $5 | $0 | $2 | $1 | $1 |
5 | $0 | $3 | $1 | $0 | $2 |
Шаг 3: выполнение "линейного теста" - число линий, вычеркивающих все нулевые ячейки, равно 4; т.к.n=5, перейти к шагу 4.
Машины | |||||
Работы | A | B | C | D | E |
1 | $2 | $3 | $1 | $3 | $0 |
2 | $2 | $0 | $5 | $2 | $1 |
3 | $2 | $1 | $0 | $1 | $2 |
4 | $5 | $0 | $2 | $1 | $1 |
5 | $0 | $3 | $1 | $0 | $2 |
Шаг 4: Наименьшее значение среди содержимого невычеркнутых ячеек равно 1, 1 вычитается из содержимого всех невычеркнутых ячеек матрицы, 1 добавляется к содержимому ячеек, находящихся на пересечении линий
Машины | |||||
Работы | A | B | C | D | E |
1 | $1 | $3 | $0 | $2 | $0 |
2 | $1 | $0 | $4 | $1 | $1 |
3 | $2 | $2 | $0 | $1 | $3 |
4 | $4 | $0 | $1 | $0 | $1 |
5 | $0 | $4 | $1 | $0 | $3 |
Оптимальное решение, найденное с помощью "линейного" теста
Машины | |||||
Работы | A | B | C | D | E |
1 | $1 | $3 | $0 | $2 | $0 |
2 | $1 | $0 | $4 | $1 | $1 |
3 | $2 | $2 | $0 | $0 | $3 |
4 | $4 | $0 | $1 | $0 | $1 |
5 | $0 | $4 | $1 | $0 | $3 |
Оптимальные назначения и их стоимости
работа 1 - машине E $3 работа 4 - машине D $5
работа 2 - машине B $4 работа 5 - машине A $3
работа 3 - машине C $2 Суммарная стоимость $17
Нематематическое логическое обоснование метода назначения - минимизировать потери прибыли. Например, при назначении работы 1 машине A вместо машины E убыток составит $2 ($5-$3). Программа, реализующая метод назначений, эффективно выполняет сравнения стоимостей для всего множества альтернативных назначений посредством приведения строк и столбцов.
Метод решения задачи назначений требует, чтобы количество должностей и кандидатов было равным. Если это условие не выполняется, компьютер должен увеличить матрицу так, чтобы она стала квадратной. Например, если 5 работников претендуют на 4 должности, компьютер дополнит матрицу до размера 5*5 за счет введения фиктивной должности. Все значения стоимостей для фиктивной должности должны полагаться равными нулю, как показано в таблице 3. Заметим, что стоимость назначения работника 5 должна быть определена и включена в соответствующие ячейки матрицы.
Если имеется больше должностей, чем работников (кандидатов), компьютер также должен увеличить матрицу, чтобы она стала квадратной. Предположим, что имеется 6 должностей и только 4 работника (кандидата). Компьютер дополнит матрицу до размера 6*6, как показано в таблице 4. Заметим, что работники 5 и 6 являются фиктивными и стоимости назначений для фиктивных работников полагаются равными нулю.
Таблица 3. Расширенная матрица назначений - 4 должности для 5 кандидатов
Должности | ||||||
1 | 2 | 3 | 4 | 5 | ||
1 | 16 | 9 | 14 | 17 | 0 | |
Канди- | 2 | 7 | 19 | 8 | 14 | 0 |
даты | 3 | 15 | 6 | 9 | 10 | 0 |
4 | 19 | 17 | 11 | 4 | 0 | |
5 | 14 | 11 | 18 | 16 | 0 |
Замечание: Ячейки содержат стоимости назначений.
Таблица 4. Расширенная матрица назначений - 6 должностей для 4 кандидатов
Должности | |||||||
1 | 2 | 3 | 4 | 5 | 6 | ||
1 | 16 | 9 | 14 | 17 | 8 | 11 | |
Канди- | 2 | 7 | 19 | 8 | 14 | 13 | 18 |
даты | 3 | 15 | 6 | 9 | 10 | 17 | 5 |
4 | 19 | 17 | 11 | 4 | 9 | 14 | |
5 | 0 | 0 | 0 | 0 | 0 | 0 | |
6 | 0 | 0 | 0 | 0 | 0 | 0 |
ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ ПОДСИСТЕМЫ "МЕТОД НАЗНАЧЕНИЙ" ПРОГРАММЫ DSSPOM
ПРИМЕР 1 - ЗАДАЧА НАЗНАЧЕНИЯ РАБОТНИКОВ НА ДОЛЖНОСТИ
В этом примере используется программа назначений для решения задачи назначения работника на должность. Цель - назначить четыре должности четырем работникам так, чтобы минимизировать суммарную стоимость назначений. Стоимости назначений для этой задачи представлены в таблице 1.
Загрузите программу DSSPOM в компьютер и выберите Assignment Method в главном меню. Через несколько секунд компьютер загрузит программу назначений и высветит Assignment Menu. Передвиньте указатель на опцию INPUT и нажмите клавишу <ENTER>. Программа приступит к вводу данных, запрашивая ввод заголовка задачи. Выберите заголовок, который Вы считаете подходящим, м введите его в поле заголовка задачи. Нажмите <ENTER>, чтобы ввести следующий параметр.
Следующим входным параметром является "тип цели". Так как задача состоит в назначении должностей работникам и поэтому содержит стоимости, целью является минимизация стоимости. Напечатайте MIN и нажмите <ENTER> для продолжения. Заметим, что в это поле программа может принять только "MIN" или "MAX". Никакие другие значения не принимаются и поэтому программа в случае неправильного ввода не сможет продолжить выполнение. Во время ввода данных при помощи нажатия клавиши "Стрелка вверх" можно вернуться к предыдущему полю, чтобы исправить его значение.
Для продолжения ввода данных нажмите клавишу "Стрелка вправо" и напечатайте "4" для количества кандидатов. Нажмите <ENTER>, чтобы ввести количество должностей. Нажмите клавишу "Стрелка вправо", напечатайте "4" и нажмите <ENTER>. Максимальная размерность задачи - 30 на 30, стоимости назначений должны быть в диапазоне от 0 до 9999. Заполненный экран исходных данных показан ниже.
Problem title: JOB CONTRACT |
Objective type (MIN/MAX): MIN |
Number of candidates (rows): 4 |
Number of jobs (columns): 4 |
Enter problem parametrs as requested. Press RETURN to accept, or ESC to exit. Maximum problem size is 30 by 30 assignment costs should be within 0 and 9999. |
Затем программа продолжит выполнение, запрашивая, хотите ли Вы ввести стоимости назначений.
Continue with assignment costs (Y/N) Y |
После нажатия <Y> на экране появится отформатированная таблица для ввода стоимостей назначений. Заполненная таблица исходных данных показана ниже.
B1 | Job1 | ||||
A | B | C | D | E | |
1 | Job1 | Job2 | Job3 | Job4 | |
2 | Candid1 | 16 | 9 | 14 | 17 |
3 | Candid2 | 7 | 19 | 8 | 14 |
4 | Candid3 | 15 | 6 | 9 | 10 |
5 | Candid4 | 19 | 17 | 11 | 4 |
Если Вы хотите использовать более содержательные имена для работников (отличные от Candid1, Candid2 и т.д.), переместите указатель в колонку A таблицы и выполните ссответствующие изменения. Вы можете также поместить указатель в первую строку и изменить названия должностей. После завершения процесса ввода нажмите <F10> для запоминания данных и выхода из табличного редактора.
Теперь Вы можете распечатать входные данные, для этого необходимо установить указатель на опцию PRINT и нажать <ENTER>. Предварительно проверьте готовность принтера к работе. Вы можете также сохранить задачу на диске для будущих обращений. Для этого установите указатель на опцию FILE и выберите подопцию "Save current file", опуская подсвеченный прямоугольник на одну строку. Нажмите <ENTER>. Программа высветит название текущего устройства и директории и попросит Вас ввести имя файла. Введите имя файла в соответствии с соглашениями DOS.
Теперь все готово для решения задачи. Установите указатель на опцию SOLVE и выберите под-опцию "Display output". Через несколько секунд программа выдаст оптимальное назначение, как показано ниже.
Problem Title: JOB CONTRACT |
Optimal Solution: Objective value = 29 |
Candid1 assigned to Job2 |
Candid2 assigned to Job1 |
Candid3 assigned to Job3 |
Candid4 assigned to Job4 |
Полученное оптимальное назначение (минимальной стоимости) предписывает назначить работника 1 на должность 2, работника 2 на должность 1, работника 3 на должность 3 и работника 4 на должность 4. Общая стоимость этого назначения $29.
ПРИМЕР 2 - ЗАДАЧА НАЗНАЧЕНИЯ РАБОТНИКОВ НА ДОЛЖНОСТИ (НЕСБАЛАНСИРОВАННАЯ)
Предположим, что имеется дополнительный работник, но должностей по прежнему четыре. Стоимости назначений представлены в таблице 3.
Этот тип задачи назначения называется "несбалансированной задачей". Для решения несбалансированной задачи, компьютер добавляет дополнительные фиктивные должности (или кандидатов), чтобы привести матрицу к квадратной форме. Стоимости назначений для фиктивных должностей (или работников) полагаются равными нулю.
Установите указатель на опцию EDIT и нажмите <ENTER> для изменения условий задачи. Программа начнет процесс редактирования с установки указателя в поле названия задачи. Измените название задачи на EXAMPLE 2 и нажмите <ENTER>. Снова нажмите <ENTER>, чтобы сохранить тип цели. Измените количество кандидатов на 5. Для этого передвиньте указатель на одну позицию, напечатайте "5" нажмите <ENTER>. Нажмите <ENTER>, чтобы сохранить существующее значение количества должностей. Заполненный экран исходных данных показан ниже.
Problem Title: EXAMPLE 2 |
Objective type (MIN/MAX): MIN |
Number of candidates (rows): 5 |
Number of jobs (columns): 4 |
Continue with assignment costs (Y/N) Y |
Нажмите <ENTER> для внесения изменений в таблицу стоимостей назначения. Заметим, что новая таблица содержит дополнительного кандидата, стоимости назначения которого равны нулю. Установите указатель на последнюю строку (Candid 5) и введите стоимости назначения в стобцы B - E. Заполненная таблица показана ниже.
E6 | 16 | ||||
A | B | C | D | E | |
1 | Job1 | Job2 | Job3 | Job4 | |
2 | Candid1 | 16 | 9 | 14 | 17 |
3 | Candid2 | 7 | 19 | 8 | 14 |
4 | Candid3 | 15 | 6 | 9 | 10 |
5 | Candid4 | 19 | 17 | 11 | 4 |
6 | Candid5 | 14 | 11 | 18 | 16 |
После завершения ввода данных для нового кандидата нажмите <F10>, чтобы сохранить исходные данные и выйти из табличного редактора.
Теперь все готово для решения задачи. Установите указатель на опцию SOLVE и выберите подопцию "Display output". Через несколько секунд программа выдаст сообщение о несбалансированности задачи и о добавлении дополнительного фиктивного столбца.
Since there are fewer columns than rows, additional dummy |
columns will be added with zero value in each cell |
Нажмите <ENTER>, чтобы продолжить процесс решения. Оптимальное решение будет выглядеть следующим образом.
Problem Title: EXAMPLE 2 |
Optimal Solution: Objective value = 29 |
Candid1 assigned to Job2 |
Candid2 assigned to Job1 |
Candid3 assigned to Job3 |
Candid4 assigned to Job4 |
Candid5 assigned to Dummy 5 |
Полученное оптимальное назначение такое же, как в примере 1 и имеет такую же стоимость $29. Отличие состоит только в том, что новый работник должен быть назначен на фиктивную должность 5. Это означает, что новому работнику не предоставляется ни одна из существующих четырех должностей.
ПРИМЕР 3 - ЗАДАЧА НАЗНАЧЕНИЯ РАБОТНИКОВ НА ДОЛЖНОСТИ: НОВЫЕ ОГРАНИЧЕНИЯ
Теперь предположим, что по некоторым причинам дополнительный (пятый) работник должен быть назначен на реальную, а не на фиктивную должность. Как решить эту задачу? Одно из возможных решений - точно так же ввести фиктивную должность и определить стоимость назначения пятого работника самыми большими. Стоимости назначения остальных четырех работников на эту должность полагаются равными нулю.
Установите указатель на опцию EDIT и нажмите <ENTER> для изменения условий задачи. Программа начнет процесс редактирования с установки указателя в поле названия задачи. Измените название задачи на EXAMPLE 3 и нажмите <ENTER>. Нажмите <ENTER> дважды, чтобы установить указатель на поле "количество должностей". Измените значение на "5", чтобы добавить дополнительную должность, и нажмите <ENTER> для сохранения нового значения. Заполненный экран исходных данных показан ниже.
Problem Title: EXAMPLE 3 |
Objective type (MIN/MAX): MIN |
Number of candidates (rows): 5 |
Number of jobs (columns): 5 |
Continue with assignment costs (Y/N) Y |
Нажмите <Y> для ввода стоимостей назначения. Заметим, что добавлена новая фиктивная должность (номер 5) со стоимостями назначения, равными нулю. Установите указатель на ячейку F6, представляющую стоимость назначения работника 5 на фиктивную должность и измените значение на 1000. Эта большая стоимость назначения предотвратит назначение кандидата 5 на фиктивную должность. Заполненная таблица показана ниже.
F6 | 1000 | |||||
A | B | C | D | E | F | |
1 | Job1 | Job2 | Job3 | Job4 | Dummy5 | |
2 | Candid1 | 16 | 9 | 14 | 17 | 0 |
3 | Candid2 | 7 | 19 | 8 | 14 | 0 |
4 | Candid3 | 15 | 6 | 9 | 10 | 0 |
5 | Candid4 | 19 | 17 | 11 | 4 | 0 |
6 | Candid5 | 14 | 11 | 18 | 16 | 1000 |
Нажмите <F10>, чтобы сохранить исходные данные и выйти из табличного редактора. Теперь все готово для решения задачи назначений с ограничениями. Установите указатель на опцию SOLVE и выберите подoпцию "Display output" для того, чтобы решить задачу и получить результаты, которые приведены ниже.
Problem Title: EXAMPLE 2 |
Optimal Solution: Objective value = 29 |
Candid1 assigned to Dummy |
Candid2 assigned to Job1 |
Candid3 assigned to Job3 |
Candid4 assigned to Job4 |
Candid5 assigned to Job2 |
Это решение отличается от решения, полученного в примере 2. Работник (или кандидат 1) назначен на фиктивную должность. Кандидат 2 назначен на должность 1, кандидат 3 - на должность 3, кандидат 4 - на должность 4 и работник 5 - на должность 2. Суммарная стоимость этого нового решения $31, что несколько больше стоимости, полученной ранее ($29).
ЗАДАНИЯ К ЛАБОРАТОРНОМУ ПРАКТИКУМУ
... выше задача может быть сформулирована как задача линейного программирования и решена с использованием модуля линейного программирования. Однако, легче и эффективнее для решения задач подобного типа использовать метод назначений, который состоит из следующих четырех шагов. 1. В каждой строке найти наименьшее значение и вычесть его из содержимого всех ячеек этой строки матрицы. (Получится по ...
... цикла наибольшую сложность составляет определение t мо. Значение остальных составляюших определяется сравнительно легко. Литература: Козловский В.А. и др. Производственный и операционный менеджмент. Учебник – СПб: «Специальная Литература», 1998. с. 276 6. Управление проектами Планирование, расписание и контроллинг проектов Управление большими проектами включает три фазы: 1) ...
... от темпов роста совокупных активов, что свидетельствует о торможении развития предприятия и ухудшении его финансового состояния в этот период. 5. МЕТОДИЧЕСКИЕ РЕКОММЕНДАЦИИ ПО ПРИНЯТИЮ УПРАВЛЕНЧЕСКИХ РЕШЕНИЙ НА ОСНОВАНИИ ФИНАНСОВОГО АНАЛИЗА 5.1 Анализ кредитоспособности ОАО «ММК им. Ильича» Предприятия часто прибегают к услугам коммерческих банков, чтобы покрыть свою дополнительную ...
... обязан планировать структуру тьюториалов, используя особые плановые инструменты. Они должны действовать так, чтобы студенты: · знали назначение, цели и проблемы конкретного тьюториала (желательно связанные с целями студентов) _________________________ _______________________________________________________________; · знали заранее, что они собираются достичь, выполняя то или иное задание/ ...
0 комментариев