Имитационное моделирование экономических процессов
.pdfПараметр рб - номер узла (int), в который направляется уничто жающий транзакт.
Логика функционирования этого узла такова: в узел входит тран закт семейства р4 и находится там до тех пор, пока в него не посту пят р5 транзактов семейства рг й Number ^ рз, которые он должен мгновенно уничтожить (поглотить). Время существования этих транзактов фиксируется в узле delet. Узел получает координаты ка ждого уничтожаемого транзакта, т.е. он перемещается по коорди натной сетке. В общем случае номера семейств pi и рг могут совпа дать с номером рз (но с методической точки зрения такие совпаде ния нежелательны).
Среднее время задержки в данном случае - это среднее время ожидания всех уничтожаемых транзактов или части таких транзак тов, если из состояния ожидания узел delet выводится принудитель но с помощью функции freed. Следует учесть, что обслуживание транзактов в таком узле - это ю^ уничтожение.
Отметим, что если в такой узел так и не поступят pj транзактов, то уничтожающий транзакт будет все время находиться в нем, бло кируя поступление в него других уничтожающих транзактов. По этому имеется средство для изгнания уничтожающего транзакта из узла delet - функция freed(i). Эта функция является сигнальной. Она рассмотрена в разд. 5.5.
В данном случае имеется возможность автоматического под счета:
1) среднего времени жизни уничтожаемьк транзактов (или части транзактов, если из состояния ожидания узел delet выводится прину дительно - вьшолнением функции freed);
2) числа уничтоженных транзактов.
Клапан на пути транза1стов. Функция key(pi,p2) описьшает прохождение транзакта через некий клапан. Когда клапан закрыт, транзакт не может в него войти из другого узла. Если же клапан от крыт, то транзакт проходит через него в узел п без задержки. Сред нее время пребывания такого узла в закрытом состоянии подсчитывается автоматически. Для управления этим клапаном или ключом существуют вспомогательные функции hold и rels.
Среднее время задержки - это среднее время пребывания ключа в закрытом состоянии. Число обслуженных транзактов - это число переключений ключа из закрытого состояния в от1фьггое.
Параметр pi - символическое имя узла: строка длиной до 14 символов, включая пробелы (char).
111
Параметр р2 - номер узла (int), в который передается сгенериро ванный транзакт (узел-приемник).
Транзактно-управляемый процесс Специальная суперфункция моделирования транзактно-управляемого непрерьгоного процесса
рГОС(рьр2,Рз,Р4,Р5,Рб.Р7.р8) объединяет в себе возможности имитации:
1)обслуживание в узле подобно serv с одним каналом;
2)перемещение узла по общему полю данных на координатной
сетке;
3)запуск на время активности функции типа
float p2(d) ,
где d - элементарный интервал активности (float), который определяется сис-
.темой Pilgrim в процессе моделирования и зависит от параметров рз, р4,
Р5. Рб-
Интервал требуемого обслуживания транзакта может бьггь меньше времени пребьшания транзакта в этом узле, так как процесс может быть переведен в состояние «пассивен» или «активен» какимлибо транзактом из другого узла с помощью функций activ и passiv.
Если процесс пассивен, то обслуживание транзакта приостанав ливается, а выполнение функции рг прерьшается до тех пор, пока процесс не будет переведен в активное состояние.
Аргументы имеют следующий смысл.
Параметр pi - |
символическое имя узла: строка длиной до |
14 символов, включая пробелы (char). |
|
Параметр pj - |
имя (адрес) программы, написанной пользовате |
лем, или слово dmnmy, если такой профаммы нет. Эта профамма может моделировать процесс с помощью формуЛ, дифференциаль ного уравнения и т.д.
Параметр рз - номер исходной точки, в которую устанавливает ся узел ргос перед началом моделирования (int).
Параметр р4 - тип функции распределения интервала активности процесса либо возможность работы с координатным пространством (int). Функции распределения обозначаются так: norm -'нормальное распределение, unif - равномерное, expo - экспоненциальное, erln - обобщенное распределение Эрланга, beta - треугольное распределе ние, попе - интервал, являющийся детерминированной величиной. Возможность работы с пространством задается одним из трех спосо бов: earth - поверхность Земли (геофафические координаты широта
112
и долгота), plane - декартова плоскость (прямоугольная система ко ординат), cosmos - произвольное пространство, попе - если нет рас пределений или режим пространственной имитации в данном узле не нужен.
Параметр ps - математическое ожидание интервала времени (float) активности (рд = norm, imif, expo), либо математическое ожи дание одного слагаемого этого интервала (р4=ег1п), либо минималь ное значение интервала обслуживания (p4=beta), либо постоянная величина этого интервала (р4=попе), либо интервал «непрерьгеного» нахождения этого узла в точке на координатной сетке (если Р4 = earth, plane или cosmos).
Параметр ре - параметр интервала активности обслуживания (float), который зависит от значения параметра р4. Это либо средне квадратичное отклонение (р4=погт), либо максимальное отклонение от среднего (р4= imif), либо значение zero (р4=ехро, попе), либо чис ло слагаемых интервала обслуживания (если р4=ег1п, то рб > 0), либо наиболее вероятное значение интервала времени обслуживания транзактов (p4=beta), либо скорость перемещения узла от одной точ ки пространства к другой (если р4=earth, plane или cosmos).
Параметр р7 - величина, также зависящая от типа функции рас пределения (float) интервала активности: либо 'значение zero (p4=norm, xmif, expo, erln, none), либо максимальное значение интер вала времени обслуживания (p4=beta);
Параметр pg - номер узла (int), в который передается сгенериро ванный транзакт (узел-приемник).
Приведенный выше набор свойств и параметров узла типа ргос делает эту суперфункцию чрезвычайно удобной для имитации таких реальных процессов, как:
•запуск процесса (реакции) в реакторе и управление активно стью этого процесса;
•облет на вертолете местности, подвергшейся какому-либо бед ствию;
•перемещение позиционера, доступ и чтение информации с на копителя на магнитном диске в вычислительной системе;
•оперативное управление вертолетами «скорой помощи» с уче том динамически меняющейся ситуации.
Значения параметра р4 обеспечивают дополнительные возмож ности имитации поведения узла ргос в пространстве.
113
Перед входом в узел очередного транзакта координаты узла - это координаты какой-л^о точки А пространства, номер которой нахо дится в параметре этого узла к->кх
Транзакт, который входит в узел, имеет другие координаты - ко ординаты точки В (номер которой помещен в пгфаметр транзакта t->tx). После выхода транзакта из узла автоматически вычисляется длина / отрезка АВ, которая автоматически прибавляется к суммар ному значению пути, пройденного этим узлом. Время обслуживания транзакта определяется в этом случае по формуле
/
'обсл = ~"'"Р5 • Рб
Значения и смысл параметров р5 и рб можно пояснить на сле дующем примере.
Пример 3.2. Допустим, что имеется вертолет «скорой помощи», который вылетает по заявкам-радиограммам в различные населен ные пункты. Во-время полета на борт вертолета могут поступать но вые радиограммы. Здесь радиограммы из заселенных пунктов - это транзакты, а вертолет - узел ргос. Время полета из одного пункта в другой равно
/
'полета' Р,6
а время посещения больного равно pj. При управлении вертолетом можно оптимизировать обслуживание транзактов (уже полученных радиограмм) с помощью оптимизации мгфшрута и, более того, мож но прервать полет к одному пункту для залета в другой, если это приведет к снижению суммарного пути.
Другими словами, полет, длительность которого равна ^полета» подвержен возможному прерьшанию, а обследование больного (вре мя ps) - это непрерываемое нахождение в конкретной точке на коор динатной сетке. Значения ps и рв в даинси* случае - конкретные чис ла. Поэтому, если необходимо все-таки подставить случайные знзг чения, можно использовать датчики псевдослучайных величин, ра бота с которыми рассматривается в разд. 4.1.
Отметим, что в вырожденном случае узел ргос эквивалентен уз лу serv. Например, следующие две функции эквивалентны:
1)5егу("Обслуживание", l^ione,expo,10.0,zero,zero,n);
2)ргосСОбслуживание", dummy,none,expo,10.0,zero,zero,n).
114
Они обеспечивают моделирование одноканальной системы мас сового обслуживания без приоритетов с временем обслуживания, распределенным по экспоненциальному закону с математическим ожиданием 10 единиц.
Практическое применение этот узел нашел в моделях, предна значенных для оперативного управления работами при ликвидации последствий аварии на Чернобыльской АЭС на территории Брян ской области.
Очередь с пространственно-зависимыми приоритетами.
Функция dynam(pi,p2) предназначена для моделирования обслужи вания транзактов в очереди с динамическими пространственнозависимыми приоритетами. Эта функция моделирует оптимальноуправляемую очередь (очередь типа «скорая помощь»), которая на ходится на входе узла типа ргос. Узел имеет два параметра.
Параметр pi - символическое имя узла: строка длиной до 14 символов, включая пробелы (char).
Параметр рг - номер узла (int) типа ргос, в который передается сгенерированный транзакт (узел-приемник); ргос обязательно дол жен использовать свой параметр р4= earth, plane или cosmos.
Задача оптимального расписания для обслуживания транзактов с пространственно-зависимыми приоритетами может возникнуть, например, при моделировании следующих сложных процессов и объектов:
•участка гибкого автоматизированного производства (ГАП) с роботизированньши тележками, «путешествующими» по цеху;
•местности, подверженной какому-либо бедствию, в процессе
ееобследования специальной командой на вертолете и др.
Пример 3.3. Оперативное планирование маршрута вертолета «скорой помощи». Допустим, во время дежурства на вертолет по ступают радиограммы из различньк пунктов. Эти радиограммы - вызовы к больному. Если во время работы скопилось несколько ра диограмм, то путь вертолета должен бьггь минимальным, чтобы уменьшить среднее время ожидания больного. Более того, если по лет из одного пункта к другому уже начался, то при появлении но вой радиограммы из пункта, находящегося не очень далеко от курса вертолета, маршрут может быть изменен в пользу этого вызова, если суммарный путь будет минимален.
В такой интерпретации функция ргос - это вертолет, радиограм мы - транзакты, имеющие координаты населенных пунктов, а функ ция dynam - оптимизатор курса. В модели же оператор dynam - это
115
очередь, обслуживающая входящие транзакты по правилу динами ческих пространственно-зависимых приоритетов. Порядок обслужи вания транзактов в этой очереди пересматривается каждый раз при поступлении в нее (в хвост очереди) нового транзакта и при перехо де первого транзакта (из головы очереди) в узел ргос.
Функция dynam всегда «заглядывает» в узел ргос и анализирует, не следует ли прервать обслуживание находящегося в нем транзакта. Если такое решение будет принято, то вычисляется местонахожде ние текущей точки пространства, в которой находится узел ргос; функция dynam извлекает из этого узла транзакт обратно в свою очередь и посылает в него более выгодный относительно оптимиза ции транзакт.
Оригинальный алг01ипм оптимизации динамического расписа ния - правила построения динамической очереди dynam - описан в главе 2. Он обладает высоким быстродействием и имеет практиче ское применение.
3.4 УПРАВЛЕНИЕ МАТЕРИАЛЬНЫМИ И ДЕНЕЖНЫМИ РЕСУРСАМИ
Моделирование материальных и денежных ресурсов учитьшает подобие их основных х^)актеристик: остаток ресурса похож на по ложительное сальдо, дефицит подобен отрицательному сальдо. Есть и другие аналогии (кроме перечисления денег и бухгалтерских про водок).
Функция запроса ресурсов со склада. Каждый склад ресурсов описывается в имитационной модели в виде узла типа attach. В узле attach образуется очередь транзактов, которая может быть организо вана по приоритетному принципу: чем меньше транзакт запрашива ет единиц, тем более он приоритетен. Соответствующая функция имеет вид:
attach(pi,P2,P3,p4) •
Эта функция включает 4 параметра.
Параметр pi - символическое имя узла-ресурса: строка длиной до 14 символов, включая пробелы (char).
Параметр рг - требуемое число элементов ресурса (long). Параметр рз - работа с приоритетами: prty или попе. Если указа
но prty, то требования на ресурс в случае отсутствия необходимого
116
числа элементов образуют очередь в узле attach, причем соответст вующие транзакты располагаются в порядке убывания значения приоритета (ближе к голове очереди находится самая приоритетная группа транзактов). Внутри приоритетной группы транзакты распо ложены в следующем порядке: чем меньше элементов необходимо транзакту, тем ближе транзакт находится к голове своей приоритет ной группы. Если же требования на число элементов одинаковы, то транзакты расположены в хронологическом порядке (правило fifo): чем раньше транзакт пришел в очередь, тем раньше он обслужен. Когда указано значение попе, работает только правило fifo.
Параметр р4 - номер узла-приемника (int). Таким узлом может быть только узел-менеджер (manage).
Функция имитации менеджера ресурсов. Обслуживанием транзактов занимается узел типа «менеджер» - manage (см. рис. 2.5). Обслуженный транзакт проходит узел manage и «путешествует» с захваченными единицами по графу модели. Транзакт может не сколько раз становиться в очередь к одному и тому же ресурсу, по лучая дополнительные единицы. Соответствующая функция имеет вид
manage(pi,p2) ,
включая два параметра.
Параметр pi - символическое имя узла-менеджера: строка дли ной до 14 символов, включая пробелы (char).
Параметр рг - номер узла-приемника (int). Таким узлом может быть любой узел модели, кроме manage.
Функция имитации бухгалтерской проводки. Основные объ екты системы Pilgrim (узел, транзакт, событие) очень хорошо подхо дят для описания финансовой динамики на счетах бухгалтерского учета предприятия (фирмы). Узлом считается счет (субсчет) бухгал терского учета; предположим, что номер этого узла i. Транзакт, во шедший э узел i, - это запрос на проводку со счета i определенной суммы на какой-то другой счет. Для осуществления проводки не обходимо, чтобы на счете i (т.е. в узле i) была сумма не менее тре буемой. При отсутствии такой суммы транзакт становится в ожида ние момента поступления на счет i достаточных средств. Другими словами, узел с номером i, который формирует запрос на бухгалтер скую проводку, - это специальная очередь транзактов. Описание узла-счета i:
send(pi,p2,p3,P4,Ps) . Этот узел имеет пять параметров.
117
Параметр pi - символическое имя узла-ресурса: строка длиной до 14 символов, включая пробелы (char).
Параметр рг - узел-счет, на который необходимо перевести за данную cyMMy(int);
Параметр рз - размер заданной суммы (double). Единицы изме рения финансовых средств - любые (рубли, доллары и т.д.). После точки обязательно необходимо указывать одно или два числа - доли используемых единиц измерений. Например: 1000000.00 (Один мил лион руб. 00 коп.).
Параметр щ - возможность работы с приоритетами: prty или попе. Если указано prty, то требования на перечисление денег со сче та i в случае отсутствия необходимой суммы образуют очередь в узле send, причем соответствующие транзакты располагаются в по рядке убывания значения приоритета (ближе к голове очереди нахо дится самая приоритетная группа транзактов). Внутри приоритетной группы транзакты расположены в следующем порядке: чем меньше требуемая сумма, тем ближе транзакт находится к голове своей при оритетной группы. Если же суммы одинаковы, то транзакты распо ложены в хронологическом порядке (правило fifo): чем раньше тран закт пришел в очередь, тем раньше он обслужен. Когда указано зна чение попе, работает только правило fifo.
Параметр рз - номер узла типа «финансовый директор» (узла direct), который осуществляет финансовый менеджмент и выполняет проводки по мере необходимости.
Событием в узле типа send является факт выполнения проводки со счета i на счет рг. Момент времени такого собьггия - это момент времени проводки, определяемый вьшодом транзакта из узла send.
В каждом узле типа send имеется внутренний атрибут saldo, ко торый отражает остаток средств на счете i. Дефицит средств на сче тах бухгалтерского учета содержится в другом атрибуте - defic. Если атрибут saldo в узле i имеет нулевое значение и в этом узле имеются транзакты (один или несколько), эадросившие проводки, то суммар ный дефицит затребованных этищ|а$щ(актами сумм автоматически отражается в атрибуте defic.
Имитация работы бухгалтера. Обслуживание очередей типа send возможно с помощью одного или нескольких узлов типа «фи нансовый директор». Описание такого узла:
direct(pi,p2). Эта функция имеет два параметра.
118
Параметр pi - символическое имя узла-ресурса: строка длиной до 14 символов, включая пробелы (char).
Пгфаметр рг - это узел-приемник транзакта, выполнившего про водку. Этот узел может быть любого типа, кроме direct. При модели ровании бизнес-процесса небольшого предприятия достаточно одно го узла типа direct. Однако можно имитировать одновременную ра боту нескольких бухгалтеров, каждый из которых отвечает за свою группу бухгалтерских операций.
Пример работы с материальными и денежн1лми ресзфсами изло жен в главе 8.
3.5 СТРУКТУРНЫЙ АНАЛИЗ:
УПРАВЛЕНИЕ ПЕРЕХОДАМИ МЕЖДУ СЛОЯМИ МОДЕЛИ ПРИ МНОГОУРОВНЕВОЙ ДЕКОМПОЗИЦИИ
Процесс построения графа имитационной модели сопровождает ся структурным анализом исследуемого процесса. При структурном анализе возникает задача перехода между слоями: нижние слои мо дели содержат декомпозицию узлов, расположенных выше. Деком позиция - это детализация одного узла с помощыо совокупности другах узлов.
Существуют четыре разновидности декомпозиции процессов:
1) общий случай декомпозиции сложного процесса с помощью узлов типа down;
2)декомпозиция процессов перечисления денег (платежей, бух галтерских проводок и др.) с П0М0ИЦ.Ю узлов типа pay;
3)декомпозиция процессов выделения ресурсов с помощью уз лов типа rent;
4)абстрактное объединение группы процессов в один псевдо процесс с помощью виртуальн<н^!(мнимого, не существующего в реальности) узла parent без о^)Ш($6№ия нового узла.
Общая схема взаимодействия между слоями модели показана на рис. 2.1. Здесь рассматривается декомпозиция реальных узлов pay, rent и down. Управление переходами между слоями модели при мно гоуровневой декомпозиции основано на применении виртуального узла parent, который будет рассмотрен в главе 5, так как этот узел - атрибут диалогового CASE-конструктора, позволяющего проводить структурный анализ и создавать модели в графическом виде.
119
функция имитации перечисления денежной суммы. Имита ция перечисления денежной суммы с помощью узла pay вьп-лядит гораздо понятнее, чем это делается с помощью запутанных цепочек send=>direct, рассмотренных выше. Однако узел pay подлежит дета лизации на более низком уровне с помощью все тех же узлов send и direct. Функция pay имеет следующий вид:
pay(Pi,P2,p3,P4.P5,p6.P7) •
Для этой функции задаются семь аргументов.
Параметр pi - символическое имя узла pay: строка длиной до 14 символов, включая пробелы (char).
Параметр р2 - номер узла-счета типа send, на который перево дится денежная сумма (int).
Параметр рз - значение денежной суммы (или стоимость). Это переменная типа double.
Параметр р4 - номер узла-счета типа send, с которого переводит ся денежная сумма (int).
Параметр ps - признак работы с приоритетами (prty или попе). Параметр рб - номер узла-приемника на нижнем слое (int). Параметр p^ - номер узла возврата на данном слое модели, где
расположен узел pay (int).
Фунющя имитации получения ресурса со склада. Имитация получения ресурсов со склада внешне похожа на работу с узлом pay. Это делается с помощью узла rent. Но сам узел rent подлежит деком позиции на более низком уровне с помощью attach и manage. Функ ция rent имеет следующий вид:
гет(рьр2,рз,Р4,Р5,Рб) •
Для этой функции существуют шесть аргументов, подобных ар гументам узла pay.
Параметр pi - символическое имя узла rent: строка длиной до 14 символов, включая пробелы (char).
Параметр рг - требование на число элементов ресурса (long). Параметр рз - номер узла-склада ресурсов attach, с которого не
обходимо получить ресурсы (int).
Параметр р4 - признак работы с приоритетами (prty или попе). Параметр ps - номер узла-приемника на нижнем слое модели
(int).
120