Концепция и возможности акторно-ориентированной системы имитационного моделирования «Actor Pilgrim»

№ 6 (42) 2012

А. А. Емельянов, докт. экон. наук, профессор Национального исследовательского

университета «МЭИ», г. Москва

Концепция и возможности акторно-ориентированной системы имитационного моделирования «Actor Pilgrim»

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

Часть I

В настоящее время в абстрактном моделировании социальных, экономико-конкурентных, политических, военных и правовых процессов, а также в областях, где построение формализованных моделей затруднительно, нашли применение акторы и теория акторных сетей (англ. actor networks theory — ANT). В последние несколько лет акторный подход использовался автором для развития новой парадигмы имитационного моделирования, которая представлена в данной работе. Практическая реализация подхода потребовала создания оригинальной системы имитационного моделирования, включающей средства системного (структурного) анализа, макетирования и создания имитационных моделей. В статье описаны концепция и возможности этих средств.

Введение

Имитационное моделирование представляет собой наиболее эффективный метод системного анализа, а часто и единственный практически доступный метод получения информации о поведении системы, особенно на этапе ее создания (проектирования технической системы, создания или реинжиниринга экономической системы и др.).

В состав основных задач системного анализа входят задачи декомпозиции, анализа и синтеза [1]:

• задача декомпозиции означает представление системы в виде подсистем, состоящих из более мелких элементов;

• задача анализа состоит в нахождении различного рода свойств системы или среды, окружающей систему. Целью анализа может быть определение закона преобразования информации, задающего поведение системы. В последнем случае речь идет и об агрегации (композиции) системы в один-единственный элемент;

• задача синтеза системы противоположна задаче анализа. Необходимо по описанию закона преобразования построить систему, фактически выполняющую это преобразование по алгоритму. При этом должен быть предварительно определен класс элементов, из которых строится искомая система, реализующая алгоритм функционирования.

Основным преимуществом имитационного моделирования по сравнению с аналитическим является возможность решения более сложных задач. Имитационные модели позволяют достаточно просто учитывать такие факторы, как наличие дискретных и непрерывных элементов, нелинейные характеристики элементов системы, многочисленные случайные воздействия и др. Классиче-

№ 6 (42) 2012

ским примером экономического процесса, который практически не поддается математической аналитике, но все задачи системного анализа которого решаются на имитационной модели, является процесс реализации инвестиционного проекта [3, 4, 6].

Исторический экскурс: от аналогового вычислителя до программного симулятора

Вычислительная техника позволяет повысить наглядность и скорость моделирования благодаря особым методам, которые основаны на особых кибернетических свойст-| вах вычислительных устройств и позволяют осуществлять действия, объединяемые об-£ щим названием «аналоговое моделирова-§ ние»1. Методология аналогового моделиро-^ вания основывается на применении анало-=§ гий различных уровней. При моделировании § достаточно простых объектов наивысшим ^ уровнем является полная аналогия. В моде-Ц лях сложных систем используются аналогии * нескольких уровней, когда нужен разносто-| ронний анализ функционирования объекта. | Современное аналоговое моделирование ¡| основано на применении аналогий, реали-! зуемых в вычислительном устройстве и от-з ражающих реальные процессы: | • алгоритмических аналогий, реализуете мых на компьютере с помощью специальных программ-симуляторов2;

%

со о

ïg 1 Иногда аналоговое моделирование связывают

¡1 только с аналоговыми вычислительными машинами, что

i в принципе неверно. Аналоговые вычислительные машины когда-то внесли большой вклад в развитие мето-

£ дов аналогового моделирования, но они представляют

* собой только одну из ветвей развития инструменталь-

<3 ных средств [1, 8].

=с 2

2 Автор применяет это название для специальной

§ управляющей программы, являющейся ядром системы

¡g имитационного моделирования. Термин «симулятор»

sis в толковых словарях по кибернетике и вычислитель-

js ной технике отсутствует, однако часто применяется

[g в профессиональном жаргоне (например, среди чле-

=с нов Национального общества имитационного модели-

¿с рования).

• электронных аналогий, собираемых и выполняемых с помощью электронных аналоговых вычислителей.

Моделирование на основе алгоритмических аналогий основано на применении цифровых компьютеров с высоким быстродействием и специальных программных комплексов — систем имитационного моделирования. Это один из самых мощных инструментов для подготовки и проверки эффективности управленческих решений, обоснования достоверности ожидаемых результатов, а также реализации математического обеспечения профессиональных тренажеров.

Моделирование с применением электронных аналогий появилось раньше имитационного моделирования и требует использования довольно специфичного в настоящее время класса аналоговых вычислительных машин (АВМ) или аналоговых вычислительных комплексов — электронных устройств, которые большинству компьютерных пользователей известны только понаслышке. В последние 30 лет этот вид моделирования используется для решения специальных задач, о которых будет сказано ниже. Так, сложно формализуемые модели линейного программирования в экономике, модели циркуляции крови в сердечнососудистой системе человека и некоторые другие задачи решаются гораздо эффективнее и нагляднее на аналоговых вычислительных машинах, поэтому в XX в. аналоговые машины успешно использовались наряду с цифровыми.

Электронная аналоговая вычислительная машина [7] — вычислительное устройство для воспроизведения (моделирования) определенных соотношений между непрерывно изменяющимися машинными переменными, которые являются физическими аналогами соответствующих переменных решаемой задачи. В качестве таких аналогов используются электрические напряжения и токи (а искомые соотношения моделируются физическими процессами, протекающими в электрических цепях элек-

№ 6 (42) 2012

тронных устройств) и даже механические процессы.

Основные решающиме элементы в аналоговых вычислителях — электронные операционные усилители. В 40-50 гг. XX в. выпускались операционные усилители на электронных ламповых триодах, в 6070 гг. — на полупроводниковых транзисторах, а в 80-е появились миниатюрные прецизионные усилители в виде интегральных схем.

Первая американская электронная аналоговая вычислительная машина появилась в 1944 г. Первые отечественные аналоговые вычислители — в 1948 г. В то время цифровые вычислительные машины были очень медленными (использовались в основном счетно-перфорационные машины в банковском деле). Именно операционные усилители, работающие по принципу систем автоматического регулирования с глубокой отрицательной обратной связью, позволили осуществлять довольно точное моделирование математических операторов (в том числе интегрирование) и параллельную обработку информации в реальном времени при решении систем дифференциальных уравнений.

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

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

тельствами. За последние 20 лет произошла | колоссальная универсализация цифровой г§ вычислительной техники и микроминиатю- 5 ризация ее элементной базы. Стоимость со- ^ временных компьютеров невысока. Увеличи- ^ лась доступность их использования широкому кругу рядовых пользователей, не являющихся специалистами в области Computer Science.

В XXI веке аналоговые вычислительные устройства, в основном, используются в следующих сферах [8]:

• в некоторых крупных математических исследовательских лабораториях;

• в заводских лабораториях и технических вузах (простые и компактные аналоговые вычислительные комплексы для технических экспериментов и в учебном процессе специалистов в области автоматики);

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

Миниатюризация и успехи в развитии цифровых компьютеров позволили к настоящему времени практически отказаться от АВМ как вычислительных машин общего назначения и просто встраивать в системы управления аналоговые вычислительные схемы, выполняющие определенные действия для решения конкретных задач. Например, корпорация «Аналоговые Устройства» успешно снабжает крупнейшие авиаконструкторские и авиастроительные предприятия аналоговыми вычислителями высокой точности в виде микросхем (чипов), работающими с цифровыми каналами, для бортовых систем управления3.

Рассмотрим пример использования операционных усилителей. Обычно на схемах они обозначаются треугольниками (рис. 1).

3 Analog Devices, Inc., Norwood, Massachusetts, USA. URL: www.analog.com/en/index.html.

№ 6 (42) 2012

.6 С

CL ^

S и

I

S

СО

0

!

1

О

0

И

is

1

I

I

и

S

СО

0

t

1

о

!

<0

is

U

0

!

§

со =£

1

U,

и„

и

К,

1

к

п

и,.

Цс — начальные условия

Рис. 1. Исторический экскурс: дифференцирующий усилитель

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

Uout = K

dUn dt

= -RC

d U in dt

где К — коэффициент;

Я — электрическое сопротивление

(омы);

С — электрическая емкость конденсатора (фарады);

ЯС — постоянная времени дифференцирующего усилителя (сек.).

2. Интегрирующий усилитель (рис. 1б). В данном случае входное и выходное напряжения связаны соотношением

' 1 ' иои, = к | = -—| цпл,

0 ЯС 0 где смысл обозначений К, Я, С и произведения ЯС тот же, что и в дифференцирующем усилителе.

3. Условное обозначение суммирующего интегратора на основе операционного усилителя показано на рис. 1в. Интегратор выполняет функцию

п (' ^ иои, =1 К \ Ц.

'=1 V0 )

Простота программирования на аналоговой машине, которое фактически заключается в макетировании, давала возможность специалисту — системному аналитику создать масштабную модель, с помощью которой удобно проводить исследования характера работы и взаимодействия процессов и систем. С помощью аналоговых машин можно быстро проверить новые идеи и гипотезы, например, создать модель движения управляемой ракеты на базе системы дифференциальных уравнений [10].

Преимущества аналоговых вычислителей заключались в их высоком быстродействии: интегрирование дифференциального уравнения с помощью миниатюрного электронного устройства — операционно-

52

№ 6 (42) 2012

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

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

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

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

• генератор заявок — жители поселка — клиенты (1);

• механизм формирования очереди — комната ожидания (2);

• обслуживающее устройство — парикмахер (3);

• терминатор заявок — допустим для простоты, что это касса (4) на выходе из парикмахерской, принимающая оплату за нулевой интервал времени, причем после оплаты работы клиентом заявка исчезает.

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

Жители Комната

поселка ожидания Парикмахер Касса

/ л

3

\ У

Рп

М 4

коном распределения; если на случайную длину очереди нет ограничений, то процесс обслуживания описывается следующей системой уравнений: —

—Ро(0=-^Ро(0+№1(0, для П=0, d

—Рп(0=Хрп_Ю - +црп+1(0, для п >1

где рп — вероятность того, что в системе, состоящей из очереди и обслуживающего устройства, находится п заявок в момент времени ?, п = 0, 1, 2, 3, ...; X — интенсивность входного потока заявок (штук в ед. времени);

т — интенсивность обслуживания заявок (штук в ед. времени).

Причем п — величина, не ограниченная сверху, 0 < ? < ^ время ? ^^, оно также не ограничено сверху.

Аналитическое решение для определения средней задержки в очереди до начала обслуживания существует и для установившегося режима имеет вид:

w =

ts Р

1-Р'

Рис. 2. Модель одноканальной системы массового обслуживания

где w — средняя длительность задержки в очереди;

= 1 / т — среднее время обслуживания одной заявки;

р = X/ т — загрузка системы.

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

0

1

53

№ 6 (42) 2012

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

Возникает естественный вопрос: нель-| зя ли создавать аналоги, позволяющие избежать решения дифференциальных урав-£ нений, с помощью цифровой вычислитель-§ ной техники? Ответ положительный. ^ Впервые для решения задач системно-g го анализа имитационное моделирование § в качестве мощного компьютерного инст-^ румента на цифровых вычислительных маЦ шинах IBM применил Джеффри Гордон —

* создатель первого моделирующего пакета | GPSS. Опыт, полученный при моделирова-| нии на аналоговых вычислителях, и «заслуге ги» последних он охарактеризовал следую! щим образом: «В разработке GPSS были з неосознанные попытки использовать опыт ! аналогового моделирования, приобретение ный мною при изучении управляемых ракет

в исследовательской лаборатории компании ;§ General Electric в Англии. Более того, я уве-^ рен, что под влиянием предшествующего Sc опыта моделирования на аналоговых вы-^ числителях появилось представление диа-i грамм моделей в виде блок-схем, сформи-^ ровалась выразительность языка моделиро-<§ вания, и создан программно реализованный £ алгоритм симуляции для цифровой вычисли-| тельной машины, что сделало GPSS доступ-Si ным в большей степени для системных ана-§ литиков, чем для программистов» [10].

* Это высказывание можно дополнить сле-=| дующим авторским утверждением: техно-Ц логия имитационного моделирования на со-¿е временном этапе должна быть упрощена

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

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

Алгоритмы управления таймером виртуального времени

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

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

№ 6 (42) 2012

без использования методов теории массового обслуживания и без натурного эксперимента, связанного с наблюдениями и хронометражем в реальной парикмахерской. Нарисуем узлы модели процесса массового обслуживания: генератор «Жители поселка», очередь «Комната ожидания» и узел обслуживания «Парикмахер» (рис. 3).

Заготовим бумажные фишки (8 штук) для имитации заявок, проходящих через модель. Поименуем каждую фишку фамилией жителя поселка и предусмотрим на ней место для отметок значений моделируемых отрезков времени, которые в начальный момент времени равны 0. Нарисуем на этом же листе поле «Запас подготовленных фишек» (далее — запас) и сложим в случайном порядке на поле фишки, одну над другой, предварительно перемешав. Во время моделирования фишки будут по определенным правилам поступать в генератор. Генератор и запас фишек — это источник заявок. Запас

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

Для сбора фишек, выходящих из модели, нарисуем поле «Касса — приемник для использованных фишек»; это также узел модели, который ранее назвался терминатором.

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

Фишки соответствуют восьми клиентам парикмахерской. Они образуют множество

А = {1, 2, 3, 4, 5, 6, 7, 8},

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

1 ¡1

Интервалы поступления:

42 36 50 49 05 10 18 14

Интервалы обслуживания: 12 08 42 22 44 28 16 20

Жители поселка к = 2

Комната ожидания

к= 3

ч

8 m

Запас подготовленных фишек к = 1

Парикмахер к = 4

ч §

-О

m

Касса (терминатор-приемник для использованных фишек) к =5

Таймер виртуального времени

t = 0

Рис. 3. Макет симулятора

55

№ 6 (42) 2012

.6 »2 Г?

cl ^

S u

I

S

CO

0

!

1

0 §

is

H

1

I

n

s

CO

0

t

1

0

1

<0

u

0

!

§

CO =s

1

поскольку фамилиями жителей пользоваться неудобно. Для определенности полагаем, что в начальный момент верхняя фишка имеет цифровой идентификатор 1, следующая 2 и т. д. (хотя это не принципиально, могут быть и другие алфавитно-цифровые индикаторы). Множество A является счетным. Поле фишки I для отметок отрезков моделируемого времени обозначим как а, I = 1, 2, ..., 8.

Два узла моделируемой системы — вре-мяемкие процессы: генератор (к = 2) и узел обслуживания (к = 4). Они должны иметь механизмы установки интервалов времени задержки для каждой поступающей в них фишки:

к = 2 — интервала поступления заявки-клиента в парикмахерскую (времени между двумя последующими входами);

к = 4 — интервала обслуживания (времени, которое затрачивается на конкретного клиента).

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

очередной задержки времени, будем обозначать Як.

Простейший способ получения длительностей интервалов — использование перечня их значений, заготовленного заранее по каким-либо соображениям (например, если известно, что Демидова парикмахер обслужит за 14 мин.) или на основании хронометража моментов входа клиентов относительно начала рабочего дня. В более сложных случаях можно использовать таблицы значений случайных величин из учебника по теории вероятностей. В нашем случае для упрощения используется первый вариант.

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

Порядок входа и фамилии клиентов содержатся в столбце 1. Время входа — в столбце 2. Время входа к мастеру на обслуживание (столбец 3) регистрируется в процессе моделирования. Оно определяется как момент времени перехода из ком-

Таблица 1

Регистрация виртуального времени в аналоговом симуляторе, мин.

Порядок и фамилия клиента Время входа (отсчет с 9.00) Время входа к мастеру Интервал поступления Интервал обслуживания Задержка в комнате ожидания

1 2 3 4 5 6

1. Демидов 14 14 14 20 0

2 . Иванов 32 34 18 16 2

3 . Волков 42 50 10 28 8

4 . Петров 47 78 5 44 31

5.Соколов 96 122 49 22 26

6 . Жарков 146 146 50 42 0

7 . Романов 182 188 36 8 6

8 . Зайцев 224 224 42 12 0

Среднее значение 28,000 24,000 9,120

Среднеквадратичное отклонение 19,740 12,370 11,590

Квадрат коэффициента вариации 0,497 0,265 1,615

56

№ 6 (42) 2012

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

Интервалы поступления (столбец 4) ограничены моментами входа в парикмахерскую одного клиента и клиента, зашедшего перед ним. Они могут зависеть от разных обстоятельств: переменчивых вкусов самого клиента (от самой заявки), внешнего вида других известных клиентов (от других соседних заявок), времени года (от внешней среды), рекламы парикмахерской или вообще быть случайными и независимыми. В нашем примере первый клиент — это Демидов, который вошел в комнату ожидания в 9.14.

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

Задержка в очереди (столбец 6) определяется в процессе моделирования как разность между показаниями в столбцах 3 и 2 для конкретного клиента I.

Если элементы табл. 2 обозначить как Е1 (I, Д где I — номер фишки (клиента), а } — номер столбца, то задержка в очереди вычисляется как

Е1 (I, 6) = Е1 (I, 3) - Е1 (I, 2).

На момент начала моделирования известны данные только для столбцов 1, 2, 4 и 5. Столбцы 3 и 6 заполняются данными, регистрируемыми во время моделирования.

Симуляция дискретных процессов. Перейдем к рассмотрению алгоритма управления имитационной моделью во время эксперимента4. Введем понятие событие — это

4 Алгоритм симулятора является авторской разработкой. Впервые с некоторыми изменениями описание приведено в [5].

факт перехода фишки из одного узла мо- | дели в другой (в примере 4 узла). Время пе- г§ редвижения фишки будем считать пренеб- ,2 режимо малым. События связаны с фиш- ^ ками. ^

События делятся на два типа — текущие и будущие:

• событие называется текущим, если оно связано с фишкой I, в которой отмечено нулевое значение отрезка времени: а1 = 0;

• событие называется будущим, если оно связано с фишкой I, в которой отмечено ненулевое значение отрезка времени: а1 > 0. Каждое событие неявно планируется при определении возможности продвижения фишки из одного узла в другой, но четко регистрируется при ее перемещении.

Определим две основные группы действий, поочередно используемые в макете для имитации массового обслуживания, предполагая, что в начальный момент времени t = 0. Подробно алгоритм симуляции представлен на рис. 4.

Группа 1. Последовательность действий, относящуюся к этой группе, назовем продвижением.

Во всех узлах модели, к = 1, 2, 3, 4, 5, нужно обнаружить фишку п с нулевым интервалом ап = 0 и попытаться продвинуть ее дальше по узлам схемы (по направлению стрелок) до тех пор, пока это продвижение не остановится по одной из трех причин:

1. Фишка п попала во времяемкий процесс (в узел генерации или обслуживания), после чего в ней проставляется очередной интервал задержки ап = Як, и она задерживается в узле до его истечения.

2. Продвижению фишки п мешают другие, и она остановлена. Существуют три разновидности остановки:

Первая: фишка п должна перейти в логический узел, который закрыт до тех пор, пока в другом узле, где находится другая фишка I, I ф п, не выполнится некое условие для его открытия.

Вторая: фишка попала в узел типа очередь, и дальнейшее продвижение невозможно по одной из причин:

№ 6 (42) 2012

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

б) в очереди нет других фишек, но в разгружающем узле обслуживания нет свободного места (узел обслуживания), и нет возможностей прервать обслуживание фишки, уже находящейся в узле;

в) в очереди нет других фишек, но разгружающий логический узел закрыт.

Третья: фишка заблокирована в узле, не являющимся очередью, и занимает в нем место, поскольку не может перейти в другой узел по причине а) или б).

Следует отметить три обстоятельства: • обычно, в том числе в случаях а) и б), очередь открыта для продвижения в нее очередной фишки;

Начало модельного эксперимента

.6 С

CL

s

и

I

S

СО

0

!

1

0 §

а Е

и

1

I

и

S

СО

0

t

1

0

1

<0

U

0

!

§

со =s

1

Во всех узлах модели нужно обнаружить фишку т, те А, которая имеетат = 0 и последующий узел для нее свободен. Двигаем ее по схеме до тех пор, пока продвижение не остановится по одной из трех причин

о s

ч X  5

1 Q-m

о. о

с m

к

* s

э

S

8-

а> 5

о т

m S.

Нет

В множестве А сравнить все фишки с ненулевыми временами и найти среди них такую фишку д, в которой проставлено наименьшее время.

х = ад= тт{ап}, п е А.

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

Г

В найденной фишке проставить 0: ад = 0

> г

Уменьшить ненулевые времена во всех фишках: а = а- х, п ф д

> Г

Увеличить Hi значение мо таймера: t = а величину х цельного + х

Модификация

Рис. 4. Алгоритм действий симулятора

58

№ 6 (42) 2012

• если фишка заблокирована в узле, как в случае в), то в этот узел нельзя продвинуть другую фишку, если в нем нет дополнительного места;

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

3. Эксперимент можно прекратить по одной из типовых причин:

а) все фишки, заготовленные для эксперимента, включая последнюю продвигаемую, попали в терминатор, и эксперимент на этом завершился;

б) закончилось время, отведенное для эксперимента.

Кроме указанных причин можно формализовать и другие возможности для завершения эксперимента.

Далее повторно выполняется действие продвижение, и так продолжается до тех пор, пока не будут обнаружены и продвинуты все ждущие фишки.

Если все фишки с нулевым интервалом ап = 0 продвинуты и нет причин для прекращения эксперимента, происходит переход ко второй группе действий.

Группа 2. Последовательность действий, относящуюся к этой группе, назовем модификацией.

Когда движение фишек в модели остановилось, нужно просмотреть все процессы и выполнить следующие действия:

1. Во множестве A выявить все фишки числом п с ненулевыми временами ап > 0, сравнить времена между собой и найти фишку д с наименьшим временем:

т = ад = 1гнп{ап}, п е A.

п

Если найдено несколько фишек п с одинаковыми временами ап, то в качестве д выбирается та из них, которая наиболее продвинута (дальше других продвинулась от генератора). Иначе в качестве д берется первая из найденных.

2. В найденной фишке д проставить зна- §

д ¡5

3. Уменьшить ненулевые времена во всех ,2

чение времени, равное 0: ag = 0.

остальных фишках п с ненулевыми временами ап > 0:

ап = ап-т, п ф д.

4. Увеличить на величину т значение модельного таймера:

? = ? + т.

Далее происходит переход к действиям продвижение.

Эксперимент с макетом. Представляем исследование по рассмотренному выше алгоритму.

Продвижение. В начальный момент все фишки находятся в запасе. Продвинуть можно только первую фишку т = 1 (Демидов), которая попадает в генератор — времяемкий процесс. Там в ней устанавливается интервал поступления а^ = Я2 = 14 — первое значение из заготовленного перечня, отмеченное рамкой. Ситуация показана на рис. 3.

Модификация. Имеется всего одна фишка с ненулевыми значениями ап — это фишка д = 1 (Демидов) со значением т = ад = = а^ = 14. Проставим а^ = 0. Увеличим значение таймера на т = 14: ? = 0 + 14 = 14.

Продвижение. Фишка т = 1 (Демидов) продвигается из генератора в очередь, далее переходит в узел обслуживания — времяемкий процесс. Там в ней проставляется интервал обслуживания а^ = Я4 = 20.

Отмечаем время входа к парикмахеру на обслуживание в столбце 3: ? = 14. Далее сразу определим задержку в очереди для фишки т = 1 (Демидов):

Е1 (1,6) = Е1 (1,3) — Е1 (1,2) = 14-14 = 0,

где Е1 (1,3) — время входа к парикмахеру (третий столбец табл. 1); Е1 (1,2) — время входа в парикмахерскую (второй столбец табл. 1).

Фишка т = 2 (Иванов) из запаса перемещается в генератор. В ней проставляется интервал поступления а2 = Я2 = 18.

59

-ч ПРИКЛАДНАЯ ИНФОРМАТИКА

№ 6 (42) 2012 ' -

.«а

Е ^

S и

I

S

СО

0

!

1

О

0

и

is

И

1

I

и

iS

СО

0 £

1

I

0

1

«О

is

U

0

!

is

со =£

1

Далее движения нет, в модели застряли две фишки: Демидов (а1 = 20) и Иванов (а2 = 18).

Модификация. Имеются всего две фишки с ненулевыми значениями ап (Демидов и Иванов). Фишка д = 2 (Иванов) имеет минимальное значение т = ад = а2 = 18. Проставим а2 = 0. Уменьшим ненулевое время в фишке п = 1 (Демидов): а1 = 20 - 18 = 2. Увеличим значение таймера на т = 18 : t = = 14 + 18 = 32.

Продвижение. Фишка т = 2 (Иванов) продвигается из генератора в очередь. Там она и останавливается, так как узел обслуживания занят фишкой 1 (Демидов). На освободившееся место в генератор продвигается фишка т = 3 (Волков). В ней проставляется интервал поступления а3 = = Я2 = 10.

Модификация. Имеются всего две фишки с ненулевыми значениями ап (Демидов и Волков). Выбираем фишку д = 1 (Де-

Интервалы поступления: 42 36 5оГ

49

05 10 18 14 -----------

мидов), находящуюся на обслуживании и имеющую минимальный интервал т = ад = = а1 = 2. Проставим а1 = 0. Уменьшим ненулевое время в фишке п = 3 (Волков): а3 = = 10 - 2 = 8. Увеличим на т = 2 значение таймера: t = 32 + 2 = 34.

Продвижение. Фишка т = 1 (Демидов) продвигается из узла обслуживания в терминатор (ее участие в эксперименте закончилось).

Фишка т = 2 (Иванов) переходит из очереди в узел обслуживания. В ней проставляется интервал обслуживания а2 = Я4 = 16.

Отмечаем время входа в узел обслуживания в столбце 3: t = 34. Далее сразу определим задержку в очереди для фишки 2 (Иванов):

Е1 (2,6) = Е1 (2,3) — Е1 (2,2) = 34-32 = 2 мин.

Модификация. Имеются всего две фишки с ненулевыми значениями ап (Иванов и Волков). Выбираем фишку д = 3 (Волков) в ге-

Интервалы обслуживания: 12 08 42 22 44 28

16

20

Жители поселка к = 2

Комната ожидания

к= 3

Парикмахер к = 4

Рис. 5. Имитационное моделирование на макете симулятора

60 у

№ 6 (42) 2012

нераторе: т = ад = а3 = 8. Проставим а3 = 0. Уменьшим ненулевое время в фишке п = 2 (Иванов): а2 = 16 - 8 = 8. Увеличим значение таймера на т = 8 : t = 34 + 8 = 42.

Продвижение. Фишка т = 3 (Волков) переходит в очередь, но дальше на обслуживание не попадает: место занято фишкой 2 (Иванов).

На ее место из запаса поступает фишка т = 4 (Петров). В ней проставляется интервал поступления а4 = Я2 = 5.

Модификация. Имеются всего две фишки с ненулевыми значениями ап (Иванов и Петров). Выбираем фишку д = 4 (Петров) в генераторе: т = ад = а4 = 5. Проставим а4 = 0. Уменьшим ненулевое время в фишке п = 2 (Иванов): а2 = 8 - 5 = 3. Увеличим значение таймера на т = 5: t = 42 + 5 = 47.

Продвижение. Фишка т = 4 (Петров) выходит из генератора, попадает в очередь и становится на второе место после фишки т = 3 (Волков), которая уже находится в очереди. На освободившееся место в генератор продвигается фишка т = 5 (Соколов). В ней проставляется интервал поступления а5 = Я2 = 49. Эта ситуация показана на рис. 5: для завершения обслуживания фишки т = 2 (Иванов) остается 3 мин, а в терминале-приемнике находится только одна фишка т = 1 (Демидов).

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

Анализ результатов. Используя две вышеуказанные группы действий очень просто получить полезные и, главное, корректно рассчитанные по правилам теории вероятностей и математической статистики результаты, соответствующие конкретным исходным данным:

• среднее время задержки в очереди ш;

• среднеквадратичное отклонение этого времени ош;

• коэффициент вариации сш = / ш

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

Например, на какой-то момент модельного времени известно среднее время задержки в очереди ш = (первый момент), измеренное на основе прохождения п фишек через эту очередь. Но спустя некоторое время через эту очередь прошла фишка п + 1, и она задержалась в ней на время qr¡ + 1. Затем значение ш будет скорректировано в соответствии с простейшим соотношением, на которое время процессора практически не тратится — по сравнению с решением системы дифференциальных уравнений, и не нужно дополнительной памяти:

ш •п+qr+1

п+1 п +1 '

после чего п = п + 1, соответственно ш = = и моделирование продолжается.

Так же вычисляется второй момент времени задержки и, соответственно, среднеквадратичное отклонение времени задержки (через второй момент). Таким образом, получено решение задачи массового обслуживания без применения экономико-математических методов, без составления и решения системы дифференциальных уравнений. Более того, при тех значениях квадрата коэффициента вариации в исходных данных, которые были заданы, применение аналитических формул теории массового обслуживании приведет к существенной методической погрешности, иногда до 100% и более. Что касается вычислений, то их меньше, чем при численном решении задач массового обслуживания.

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

61

№ 6 (42) 2012

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

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

с ¿а

^ Реализация симулятора. Что мощнее:

| транзакт или актор?

^

=§ Необходимо решить вопрос о том, что та-

§ кое фишка и узел в симуляторе, являющие-

^ ся ядром моделирующей программы.

Ц Транзактно-блочное решение. В сис-

* теме GPSS основным было следующее ре-| шение:

| • каждый узел, представляющий некий ¡| псевдопроцесс, имеет название «блок» Ц и в памяти компьютера отображается в вига де таблицы, т. е. структуры данных, в кото-| рой содержится информация о типе узла, § его правилах поведения и накапливаются измеренные в процессе моделирования па-;§ раметры общего моделируемого процесса; ^ • каждая фишка, переходящая от одного узла к другому, имеет название «транзакт», ^ и тоже представляет собой таблицу (структуру данных), в которой находится уникаль-^ ная информация об этой фишке, идентифи-<§ катор, в какой момент виртуального време-£ ни она появилась в модели (дата рождения), | ее приоритет, другие многочисленные свой-§ ства и данные, необходимые для конкрет-§ ной модели;

* • симулятор модели по сути является ин-=| терпретатором, к которому адресами-указа-Ц телями прикреплены все блоки, к блокам, ¿е в свою очередь, адресами-указателями при-

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

Алгоритм работы GPSS с событиями несколько сложнее, чем тот, который представлен на рис. 4. Дело в том, что список текущих и будущих событий — это два разных списка [9]. Поэтому симулятор реализует два алгоритма: работы с текущими и будущими событиями. В GPSS какое-либо специальное программное обеспечение для симуляции не требуется. Сама модель и каждый ее блок при создании описывается на языке GPSS (типа ассемблера). Блоки и таблицы GPSS создает автоматически на основе этих описаний.

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

Такое простое внутреннее устройство, а также накопленное за полвека огромное количество моделей и методических разработок по созданию моделей позволяет пакету GPSS World (современная версия GPSS) быть одним из лидеров среди прочих инструментальных средств, применяемых в настоящее время системными аналитиками.

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

5 Gensum Corp., Austin, Texas, USA. URL: www. gensym.com, www.ntpdubna.ru/rethink.shtml.

№ 6 (42) 2012

ным временем моделирования с использованием аппарата динамических структур. Однако, по данным автора и специалистов НП «Национальное общество имитационного моделирования» (Санкт-Петербург), в России в большинстве случаев используются GPSS World и другие моделирующие системы [2].

Акторно-процессное решение. Рассмотренный выше алгоритм симуляции дискретных процессов применяется в системе Actor Pilgrim [5], в которой единый список текущих и будущих событий включен в общую структуру оперативной информации (это будет рассмотрено далее). Представим принципиально новое решение, заключающееся в отказе от транзакта как динамической единицы имитационной модели в пользу актора — специальной агентной программы.

Решение заключается в следующем:

• каждый узел модели имеет название «процесс» и является реальным вычислительным процессом, выполняемым программой этого узла в памяти компьютера, имеющим дескриптор (как и все вычислительные процессы), в котором содержится информация о типе узла, накапливаются измеряемые в процессе моделирования параметры общего моделируемого процесса;

• каждая фишка, переходящая от одного узла к другому, имеет название «актор». Актор является агентной программой, переходящей из одного процесса в другой благодаря мультипроцессным свойствам симу-лятора, причем продвижение на входе узла прекращается, когда симулятор закрывает продвижение с помощью логического семафора (понятно, что агентной программе тоже необходим дескриптор);

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

Посредством закрытия или открытия семафоров в зависимости от логики узлов

и вычисляемых условий программы-акторы | переключаются от узла к узлу, и сразу после г§ входа актора в узел выполняются функцио- ¿g нальные программы этого узла. Поскольку ^ при такой программной архитектуре режим ^ интерпретации отсутствует, диагностирование и отладка модели выполняются с помощью специально созданной программы-отладчика (debugger), кроме того, необходим компилятор моделирующих программ.

Замена режима интерпретации в моделях, где время процессорного счета велико, существенно уменьшает время выполнения модели. Имеются иные — функциональные особенности акторного подхода по сравнению с транзактным, которые будут рассмотрены позднее. Далее осветим только вопросы акторно-процессного моделирования с использованием системы Actor Pilgrim.

Общая структура оперативной информации. Выше были представлены основные объекты модели: узлы и акторы. Однако события — это тоже объекты модели, хотя они и возникают автоматически. Кроме них существуют такие объекты модели, как ресурсы, пространства (на плоскости — декартовы, на эллипсоиде — географические) и функциональные окна. Все объекты модели имеют дескрипторы для хранения функционально-оперативной информации, которые первоначально создаются симулятором с помощью оператора new. Используем следующие обозначения:

kcb — блок управления узлом; acb — блок управления актором; ecb — блок управления событием; rcb — блок управления ресурсом. Общая структура оперативной информации в симуляторе показана на рис. 6. Узлы имеют один или несколько каналов обслуживания: если, например, nc = 2, то в узле 2 канала обслуживания. Акторы имеют приоритеты: если, например, pr = 2, то актору присвоен приоритет 2. Все события отмечены временем, оставшимся до выхода из узла: если ct = 0, то событие текущее, а если ct > 0, то событие будущее, и чем больше значение ct, тем дольше событие

№ 6 (42) 2012

не произойдет. Список событий управляется с использованием рассмотренного выше алгоритма симуляции.

Адреса-указатели имеют уникальные символические обозначения: ^ — указатель узла; st — адрес актора; ev — указатель события, связанного с конкретным узлом; ec — прямая цепочка событий; гс — обратная цепочка событий; ^ — указатель в очереди акторов; пЬ — указатель узла, обслуживающего очередь; chbeg — начало цепочки блоков управления ресурсами для конкретного актора; ^ — цепочка управления ресурсами конкретного актора.

Для увеличения скорости работы симуля-тора планируемые события хранятся в виде двунаправленного списка.

Механизм планирования событий единый: как для дискретных, так и для дискретно-непрерывных моделей. В процессе моделирования в памяти компьютера образуются управляющие структуры данных. На фазе инициализации для каждого узла в памяти компьютера выделяется блок управления узлом ^Ь, который уничтожается при завершении моделирования. Если во время прогона модели появляется новый актор, то на все время его существования образу-

js

С CL

а

U

I

S

0

!

1

S

0

s

а

is

1

Ï

IS

'S

I

ÎS

0

il

1

I

0

1

«О

u

0

!

is «

=s

1

pr = 4 Ct>

oil

acb 5 4 st ecb 6

Акторы tcb 4 и tcb5 в каналах узла serve

T

Ct>g5c

^st

T rc

kn

ecb 5

,ec

ï rc

kn serve* —

с1>0 эег

pr = 2

kcb 2

acb 4 4 st ecb 4

kn

,ev

st

ecb 9 acb 8

ec

ct > Ov

chbeg

rcb 4

pr = 2

st

ecb 8 acb 7

ct>oTl

'St ecb 3

Планируемый переход

ее

nb = &

.rc

kn

т te

T

acb 1

T

et = g5C ^st

ecb 1

kn

te

pr = 0| tcb 2

Начало списка событий

chbeg

rcb 3

acb 3 ^ st ecb 2 i kcb 1 ecb 7 st acb 6

<-

chbeg

rcb 2

ch

jL

rcb 1

Фрагмент Список очереди: узел планируемых queue(kcb 1) событий Узлы: serve, queue и др. Стек прерванных неприоритетных акторов

Рис. 6. Общая структура оперативной информации

64

№ 6 (42) 2012

ется блок управления актором ае^ При входе актора в узел создается блок управления событием ecb, который уничтожается после выхода актора из узла. Если актор захватывает некоторое количество единиц ресурса определенного типа, то к нему присоединяется блок управления ресурсом rcb с идентификатором ресурса; в блоке отмечается используемое количество единиц. Если ресурс полностью освобожден, то блок rcb уничтожается.

В действительности блоки а^, ecb и rcb не уничтожаются, а переводятся в соответствующие списки отработанных структур, откуда будут извлечены вновь при возникновении новых акторов и событий. Такой способ оказывается быстрым по сравнению с повторным использованием оператора new. По окончании одного прогона модели все блоки kcb, а^, ecb и rcb, включая отработанные, будут уничтожены специальной программой — «мусорщиком».

Число управляющих структур а^ и ecb в любой конкретный момент случайно. Конфигурация взаимосвязей kcb, а^ и ecb также изменяется от события к событию. Алгоритм планирования интервала времени (t, t + d) между двумя ближайшими событиями можно пояснить на примере (рис. 6).

Актор, вошедший в узел, получает (или уже имеет) информацию о том, в какой следующий узел он должен перейти. При вхождении образуется блок ecb, в котором проставляется значение интервала времени задержки актора в данном узле (переменная ct типа double, ct > 0). Все блоки ecb планируемых событий сцеплены в список, упорядоченный по возрастанию величины ct.

События, у которых ct = 0, готовы к наступлению, если выполнены и другие условия, кроме этого: например, если узел, в который актор должен перейти (узел-приемник), не занят.

В узле типа queue (очередь) может произойти только одно событие после того, как все акторы покинут очередь. При входе нового актора в пустую очередь будет образован новый блок ecb.

Узел типа serve (обслуживающий при- | бор) может принять в себя столько акто- г§ ров, сколько он имеет обслуживающих ка- 5 налов. Если такому узлу дать возможность ^ приоритетного обслуживания, то более при- ^ оритетные акторы будут входить в каналы, вытесняя менее приоритетные в стек (пару ecb ^ tcb), который для узла создается динамически. После обслуживания приоритетного актора пара ecb ^ tcb возвращается в список планируемых блоков ecb с сохранением упорядоченности списка.

Очередь на рис. 6 содержит три актора (ecb 2 и tcb 1, tcb 2, tcb 3), а обслуживающий прибор, имеющий два канала (nc = 2), содержит два актора с приоритетами pr = 4 и pr = 3, в то время как в стек вытеснены три актора с прерыванием их обслуживания (pr = 2, pr = 2 и pr = 0), которые, кроме прочего, успели захватить некоторые ресурсы.

Планирование времени в дискретно-непрерывной модели. Непрерывные компоненты модели выполняются в том же виртуальном времени, что и дискретные компоненты, и могут синхронизироваться по событиям. Неуправляемые непрерывные компоненты (например, моделирующие окружающую внешнюю среду) запускаются с помощью оператора network. Для запуска управляемых непрерывных компонент используется узел типа produce.

Симулятор использует следующие правила для определения актора, который надо перевести из одного узла в другой, а также для завершения соответствующего события и активизации на время d непрерывной компоненты модели объекта.

1. Начиная с первого блока ecb в списке планируемых событий, выбирается первый актор, который можно продвинуть в следующий узел; в соответствующем блоке ecb этого актора ct = 0. Когда такой актор найден, определено и очередное событие.

2. Если среди всех блоков ecb, имеющих ct = 0, не нашлось актора, который можно продвинуть дальше, то в списке планируемых событий выбирается первый блок ecb, у которого ct > 0. Далее величине d при-

№ 6 (42) 2012

сваивается значение с^ величина С в данном блоке есЬ получает нулевое значение, а у всех последующих в списке блоков есЬ значения С уменьшаются на величину d. После этого производятся обращения к моделям непрерывных компонентов с передачей им параметра d, а показание общего модельного таймера увеличивается на величину d. Далее делается попытка продвинуть актор, связанный с этим есЬ, в следующий узел. Пункт 2 выполняется до тех пор, пока не будет выбран актор для продвижения либо симулятор не сделает вывод о том, что по какой-то причине все узлы заблокированы, и моделирование не может быть продол-| жено.

В результате неправильно проведенного <£ разработчиком структурного анализа на эта-§ пе создания модели может возникать блоки-^ ровка. В целях устранения последствий та-=§ ких ошибок симулятор содержит специаль-1 ные средства. Разработчик моделей имеет ^ возможность автоматической проверки соЦ стояний интересующих его узлов и в случае * необходимости их разблокирования. | Приведенное выше описание только по-| ясняет логику автоматического управления ¡| событиями. В реальной же системе работает Ц быстрый алгоритм управления временем. з На шуточный вопрос заголовка подраз-| дела (что мощнее: транзакт или актор?) от-§ вет будет дан скорее в пользу актора, нежели транзакта. Мощностью, как известно, ;§ называется способность выполнять работу ^ определенной величины в единицу времени, поэтому при сравнении следует учиты-^ вать следующие аспекты реализации каждого из подходов. ^ 1. Способ продвижения динамического | объекта, в качестве которого используются £ соответственно:

| • интерпретация (сводящаяся к целена-§ правленному перебору «кучи» транзактов); § • «самостоятельное выполнение» про* грамм-акторов (накладные расходы на управ-=| ление синхронизацией с помощью семафо-Ц ров оказываются намного ниже расходов ¿е на интерпретацию).

2. Функциональные возможности, которые соответственно:

• фактически не изменяемы;

• практически не ограничены.

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

Список литературы

1. Анфилатов В. С., Емельянов А. А., Кукушкин А. А. Системный анализ в управлении / под ред. А. А. Емельянова. М.: Финансы и статистика, 2009. — 368 с.

2. Девятков В. В. Мир имитационного моделирования: взгляд из России // Прикладная информатика. 2011. № 4. С. 9-29

3. Емельянов А. А. Имитационное моделирование экономической динамики // Прикладная информатика. 2010. № 1. С. 105-118.

4. Емельянов А. А. Расширение парадигмы имитационного моделирования дискретных процессов // Всероссийская научно-практическая конференция по имитационному моделированию социально-экономических систем (ВКИМСЭС). Труды конференции (ВЗФЭИ, 15 мая 2012 г.). М.; Невель: Принт-Сервис, 2012. С. 34-38.

5. Емельянов А. А., Власова Е. А., Дума Р. В., Емельянова Н. З. Компьютерная имитация экономических процессов / под ред. А. А. Емельянова. М.: Маркет ДС, 2010. — 464 с.

6. Емельянов А. А., Власова Е. А., Емельянова Н. З., Прокимнов Н. Н. Имитационное моделирование инвестиционных процессов // Прикладная информатика. 2012. № 2 (38). С. 93-99.

7. Корн Г., Корн Т. Электронные аналоговые и аналого-цифровые вычислительные машины. Т. 1-2. М.: Мир, 1967-1968.

8. Теория систем и системный анализ в управлении организациями: Справочник / под ред. В. Н. Волковой и А. А. Емельянова. М.: Финансы и статистика, 2012. — 840 с.

9. Шрайбер Т. Дж. Моделирование на GPSS. М.: Машиностроение, 1979. — 592 с.

10. Gordon G. A general purpose systems simulator // IBM Systems Journal, Vol. 1. Issue 1. September, 1962. Р. 18-32. IBM Corp. Riverton. NJ, USA (Общецелевой системный симулятор).

66 у