5.П.1. Распределение аудиторов по фирмам
Постановка задачи
Менеджер-координатор аудиторской фирмы должен распределить аудиторов для работы на следующий месяц.
Есть заявки от 10 клиентов на 75 аудиторов. В 4 конторах фирмы 90 аудиторов, 15 аудиторов можно отправить
на плановую учебу. Аудиторы различаются по квалификации и опыту работы. Прежде чем приступить к аудиту
конкретной фирмы, они должны затратить определенное время на подготовку и консультации. Менеджер-координатор,
учитывая опыт работы аудиторов каждой конторы, оценил время, необходимое в среднем аудитору каждой
конторы для подготовки к аудиту конкретного клиента. Результаты - в таблице. Знаки вопроса в клетках
таблицы означают, что аудиторы данной конторы не имеют опыта аудита в отрасли, к которой относится данный
клиент, и их не должны к нему посылать. Распределить аудиторов так, чтобы суммарные временные затраты на
подготовку были минимальны.
конторы\клиенты | К1 | К2 | К3 | К4 | К5 | К6 | К7 | К8 | К9 | К10 | ресурсы |
А1. ГААПвилл | 8 | 21 | 15 | 13 | 9 | 17 | 18 | 7 | 26 | 9 | 35 |
А2. Финанстаун | 14 | 18 | 17 | 19 | 12 | 6 | 0 | 15 | 24 | 13 | 20 |
А3. ИСАбург | 9 | 15 | 18 | 16 | 16 | 15 | 11 | 13 | 21 | 19 | 25 |
А4. Нью-Баланс | 11 | ? | 14 | 7 | 23 | 9 | 6 | 18 | ? | 7 | 10 |
Заявки | 4 | 9 | 2 | 12 | 7 | 6 | 9 | 3 | 18 | 5 | |
В реальной практике обычно требуют, чтобы аудиторы не все были из одной конторы. Попробуйте выполнить
это условие и не слишком ухудшить решение.
Решение задачи
Параметры задачи приведены в таблице в постановке задачи. Мы добавили перед названием конторы ее
условное обозначение (А1,...,А4), которое будем использовать в дальнейшем.
Для решения задачи можно использовать следующую модель.
Ресурсы аудиторской фирмы (тип "Приобретение") поступают в Распределение (тип "Производство"), где
происходит распределение аудиторов по клиентам. Распределение передается в Заказ (тип "Сбыт").
В Распределении используется по одному процессу на каждое возможное распределение, т.е. создается
процесс для каждой пары (контора, клиент). Название процесса образуется соединением обозначения конторы и
обозначения клиента, например, А2К5 для пары контора = А2, клиент = К5. Для учебы добавляются процессы
вида А1У, А2У,... Это может показаться неудобным и громоздким, но данные по каждой паре все равно
куда-то должны вводиться. Если построить модель с меньшим количеством процессов, в ней все равно где-то
будет список со всеми парами и соответствующими им данными. Поэтому, эта громоздкость - только кажущаяся,
неизбежная. Для каждого процесса задается его цена - издержки из параметров задачи.
При реальной практической работе с полнофункциональной версией GEM все данные извлекались бы из внешней
базы данных, а имена процессов создавались бы автоматически. В данном примере мы делаем это вручную.
Для пар, для которых в таблице стоит вопросительный знак, можно было бы не создавать процесс. Но в
дальнейшем ситуация может измениться, вместо вопросительного знака появится число. Чтобы не менять модель,
процесс создается, но его цена делается очень высокой, настолько, что процесс не может войти в решение.
Для дополнительной уверенности для этого процесса можно задать Мах(ед) = 0.
Вставим в модель объект типа "Приобретение" с именем "Ресурсы", объект типа "Производство" с
именем "Распределение", объект типа "Сбыт" с именем "Заказ". Проведем связи-потоки из Ресурсов в
Распределение и из Распределения в Заказ.
В Ресурсах, в таблице закупок, введем материалы - конторы А1,...,А4. Зададим для них Мах кол-во
из параметров задачи.
В Заказ, в таблицу продаж, введем 11 продуктов: клиентов К1,...,К10 и Учебу. Зададим для них
Min кол-во = Мах кол-во = заказу из параметров задачи.
В Распределение, в процессах, добавим 44 процесса-пары: АiKj и АiУ, где i=1,...,4, j=1,...,10. Во
входящих материалах для каждого из процессов-пар введем материал - начало пары, потребление = 1. В
исходящих материалах для каждого процесса введем продукт - конец пары (Для АiУ - Учеба), выход = 1.
Решим модель. Общие затраты = 842.
Зададим условие, что к любому клиенту должны идти аудиторы не менее, чем из двух контор. В
Распределение, в исходящие материалы, для каждого процесса добавим один продукт-флаг с тем же именем, что
и процесс, с выходом = 1. Этот флаг предназначен, чтобы учитывать процессы распределения. Нам надо, чтобы
флаг принимал значение = 1, если процесс выполнялся, и = 0, если не выполнялся. Чтобы это обеспечить,
добавим объект типа "Хранение" с именем "Управление" и объект типа "Производство" с именем "Счет".
Направим связи из Распределения в Управление и из Управления в Счет. В Управлении, в хранимых материалах,
введем 44 материала-флага, для каждого флага зададим Мах запас = 0. Чтобы избавиться от лишних запасов
флагов, используем Счет: в процессы введем 44 процесса, по одному на флаг, с тем же именем, что флаг. Для
каждого процесса зададим один входной материал - одноименный флаг, с расходом = 1. Т.о., если в Управление
поступит какой-либо флаг в количестве > 1, излишки флага будут переданы в Счет, и там уничтожены
(одноименным процессом). Мы добились того, что для каждого выполнявшегося процесса будет выставлен в
Управлении одноименный флаг в количестве = 1. В выставлении каждого флага участвует одна контора,
поставившая входной материал в процесс (начало названия процесса) и один клиент, принявший продукт из
процесса (конец названия процесса). Т.о., эти флаги образуют 4 группы по 11 - по числу контор, которые
выставляют флаги, и 11 групп по 4 - по числу клиентов, которые эти флаги выставляют. Нам надо, чтобы в
каждой из 11 клиентских групп было не менее двух единичных флага. Чтобы это обеспечить, добавим объект
типа "Ресурсы" с именем "Учет", направим из него связь в Управление. В Учет, в таблицу ресурсов, введем
11 ресурсов с названиями клиентов. в Управление, в потребление ресурсов остатками, введем все 44 флага,
для каждого флага укажем потребление = 1 того ресурса-клиента, который выставляет флаг (конец имени флага).
Теперь из Учета потребляется столько каждого ресурса, сколько флагов выставлено в клиентской группе, т.е.
столко, сколько контор направило аудиторов этому клиенту. Зададим в Учете, в таблице ресурсов, Min кол-во
= 2 для каждого ресурса-клиента. Этим мы обеспечим, что к каждому клиенту попадут аудиторы не менее, чем
из двух контор.
Решим модель. Получим временные затраты = 884 (Чистая прибыль = -884). Для удобства просмотра, какая
контора какому клиенту скольких аудиторов направила, в модель добавлена панель данных, с которой
пользователю предлагается познакомиться самостоятельно.