Разработка объектно-ориентированного программного комплекса имитационного моделирования систем массового обслуживания | Вестник Томского государственного университета. 2004. № 284.

Разработка объектно-ориентированного программного комплекса имитационного моделирования систем массового обслуживания

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

Developing of the object-oriented simulation modeling program complex.pdf На сегодняшний день существует множество систем,специализирующихся на построении моделей только од-ного типа (производственных, экономических, системуправления запасами и т.п.). При этом разработчик мо-дели зачастую может управлять только параметрамимодели, но не ее поведением.С другой стороны, существуют языки имитацион-ного моделирования, которые обеспечивают наиболь-шую гибкость моделирования, однако процесс разра-ботки моделей занимает длительное время, и эти моде-ли труднее модифицировать и использовать.И, наконец, существуют универсальные среды(Arena, AutoMod, AweSim, Extend, ProModel, Simplex3,Taylor ED), позволяющие разрабатывать различныемодели, предоставляющие средства для написания кодав процессе разработки моделей, однако их стоимостьсоставляет тысячи долларов [2].В этой связи разработка системы имитационного мо-делирования на основе новых технологий программиро-вания представляется авторам довольно актуальной за-дачей, тем более что многие особенности в реализациисистем имитационного моделирования СМО позволяютдостаточно успешно применять для их разработки мето-ды объектно-ориентированного анализа и проектирова-ния [1]. Основным требованием, предъявляемым к такойсистеме, будем считать предоставление пользователюнаибольшей гибкости при разработке моделей.СТРУКТУРА МОДЕЛИРассмотрим, что представляет собой написание кодав процессе разработки модели и как оно может повыситьгибкость системы имитационного моделирования.Первой и наиболее простой составляющей можносчитать возможность задавать и изменять глобальныепеременные (например, время моделирования) и пара-метры объектов (например, параметры закона распре-деления, максимальная длина очереди и т.д.) перед за-пуском модели. Следующей составляющей будем счи-тать возможность использования математическихфункций и выражений. И, наконец, третьей, и самойглавной (в смысле гибкости), составляющей являетсявозможность изменять значения переменных в моментизменения состояния имитационной модели [3].При этом первые две возможности реализованы вовсех системах, а вот третьей - создавать определяемыепользователем переменные и управлять изменением ихзначений в определенных состояниях модели - так нехватает во многих средах имитационного моделирова-ния. В этой связи целесообразно рассмотреть следую-щий подход к разработке имитационных моделей.Модель состоит из нескольких компонентов. Каж-дый из компонентов может использоваться либо повтор-но (т.е. берется уже существующий компонент, разра-ботчик изменяет необходимые параметры и включаетего в модель), либо может быть разработан с нуля. Вобоих случаях необходимо приложение, позволяющееработать с этими компонентами. В качестве примера нарис.1 приведено графическое представление компонен-та и основных его элементов.Рис. 1. Вид модельного компонентаКаждый компонент может включать в себя константы,переменные и порты. Константы и переменные могутпринимать значения различных типов, основные из кото-рых - целочисленный (Integer), вещественный (Double)и логический (Boolean). У переменных есть ещеодин дополнительный тип - времени (Time), которыйиспользуется для расчета времени наступления следую-щего события. Значения констант не меняются в процессевыполнения имитационной модели. Значения перемен-ных изменяются при наступлении событий по законам,определяемым разработчиком модели. Для удобства ре-дактирования свойств элементов, входящих в компонент,желательно реализовать дерево и инспектор элементов(рис. 2 и 3) подобно тому, как это сделано в современныхсредах разработки (Delphi, Visual C++, Visual Basic и т.п.).Рис. 2. Дерево элементовРассмотрим свойства переменных:− BehaviorType - способ изменения переменной(непрерывно/дискретно);− DataType − тип переменной (Integer/Double/Boolean/Time);− Name - имя переменной;− Value - начальное значение переменной.Рис. 3. Инспектор элементовРассмотрим свойства переменных:− BehaviorType - способ изменения переменной(непрерывно/дискретно);DataType − тип переменной (Integer/Double/Boolean/Time);− Name - имя переменной;− Value - начальное значение переменной.Свойства констант:− DataType - тип константы (Integer/Double/Boolean/Time);− Name - имя константы;− Value - значение константы.Свойства портов: − Name - имя порта.СОБЫТИЯОсновой имитационного моделирования являютсясобытия - нечто, происходящее в системе, изменяющееее состояние. В общем случае событие можно записатьв следующей форме: On do , но всеже целесообразней различать события двух видов [5]:1) событие типа DoOnce, выполняющееся в тот мо-мент, когда условие становится истинным;2) событие типа DoAlways, выполняющееся все-гда, когда условие истинно.Для получения списка событий необходимо выб-рать вкладку «События» в инспекторе элементов. Каж-дое событие имеет свое название, события можно до-бавлять, редактировать и удалять.Для создания и редактирования событий необходимаотдельная форма, позволяющая выбирать тип события(DoOnce или DoAlways), записывать комплексныеусловия, истинность которых влечет собой наступлениесобытия, и тело события в виде последовательностиоператоров, записанных на внутреннем языке системы.Заметим, что в теле события можно также исполь-зовать случайные переменные. Например, допустимаконструкция Var2:=Var2+R, при этом переменная R,в отличие от переменной состояния, обладает дополни-тельными свойствами Distribution и Parameters,которые позволяют задать для нее закон распре-деления с требуемыми параметрами. В этом случаекаждое обращение к этой переменной будет вызыватьзапуск соответствующей процедуры, генерирующейслучайные числа в соответствии с заданным законом.Рис. 4. Редактор событийПРИМЕР 1.СОБЫТИЯ В ПРОСТЕЙШЕЙ МОДЕЛИ СМОДля начала определим необходимые переменные.Переменные состояния:− TArrive (Time) - время прибытия заявки;− TService (Time) - время окончания обслужи-вания заявки;− EntitiesInServer (Integer) - число зая-вок в устройстве обслуживания;− EntitiesInQueue (Integer) - число заявокв очереди.Случайные переменные:− ArriveTime (Double) - интервал между заяв-ками;− ServiceTime (Double) - время обслуживания.Теперь запишем события.Событие 1. Поступление заявки;On (T >= TArrive) Do AlwaysEntitiesInQueue: = EntitiesInQueue + 1;TArrive: = T + ArriveTime;Событие 2. Начало обслуживания:On (EntitiesInServer = 0) and(EntitiesInQueue > 0)Do AlwaysEntitiesInQueue: = EntitiesInQueue - 1;EntitiesInServer: = EntitiesInServer+ 1;TService: = T + ServiceTime;Событие 3. Окончание обслуживания:On (T >= TService) and(EntitiesInServer = 1) Do AlwaysEntitiesInServer: = 0;Можно заметить, что переменная T ни в одном из со-бытий не изменяется. Но вспомним, что переменные TArriveи TService имеют тип Time. Это означает, что Tпосле выполнения всех событий (или невыполнения, еслиусловие окажется ложным) будет всегда принимать мень-шее из этих значений (метод модельных событий).ПРИМЕР 2.МОДЕЛЬ СТРАХОВОЙ КОМПАНИИДля начала определим необходимые константы ипеременные.Константы:− N - верхний предел количества клиентов в компании.Переменные состояния:− TArrive (Time) - время прибытия нового клиента;− TInsuranceEvent (Time) - время наступле-ния страхового случая;− TLeave (Time) - время выхода клиента из компании;− K (Integer) - количество клиентов в компании;− S (Double) - капитал компании.Случайные переменные:− AT (Double) - чистая интенсивность процессаприбытия клиентов;− IET (Double) - чистая интенсивность наступле-ния страховых случаев;− LT (Double) - чистая интенсивность выхода кли-ентов из компании;− SPlus (Double) - размер «скачка вверх» капитала;− SMinus (Double) - размер «скачка вниз» капитала.Теперь запишем события.Событие 1. Прибытие нового клиента.On (T >= TArrive) Do AlwaysK: = K + 1;S: = S + SPlus;TArrive: = T + F (AT, N, K);Событие 2. Наступление страхового случая.On (T >= TInsuranceEvent) and(S > 0) Do AlwaysS: = S - SMinus;TInsuranceEvent: = T + F (IET, K);Событие 3. Выход клиента из компании.On (T >= TLeave) Do AlwaysK: = K - 1;TLeave: = T + F (LT, K);ЗАКЛЮЧЕНИЕОбъектно-ориентированная технология позволяетстроить довольно гибкие системы. Это касается и по-строения систем имитационного моделирования. В дан-ной статье изложен возможный подход к построениюобъектно-ориентированного комплекса имитационногомоделирования систем массового обслуживания.

Ключевые слова

Авторы

ФИООрганизацияДополнительноE-mail
Змеев Олег АлексеевичТомский государственный университеткандидат технических наук, доцент кафедры прикладной информатики факультета информатикиzoa@fpmk.tsu.ru
Приступа Андрей ВикторовичТомский государственный университетаспирант кафедры прикладной информатики факультета информатикиandreypr@mail.ru
Всего: 2

Ссылки

 Разработка объектно-ориентированного программного комплекса имитационного моделирования систем массового обслуживания | Вестник Томского государственного университета. 2004. № 284.

Разработка объектно-ориентированного программного комплекса имитационного моделирования систем массового обслуживания | Вестник Томского государственного университета. 2004. № 284.

Полнотекстовая версия