Наша практическая деятельность всюду связана с системными задачами, включающими проектирование, создание, эксплуатация и совершенствование объектов различного назначения и сложности. Методологической и методической основой для решения этих задач служит прикладной системный анализ, ставший научной парадигмой и инструментарием для выработки, принятия и реализации проектных, плановых и управленческих решений.
Бурное развитие вычислительной техники, методов моделирования, оптимизации и искусственного интеллекта позволило широко внедрить в практику анализа и синтеза систем методы машинного моделирования (машинной имитации) для целей описания, объяснения и предсказания поведения проектируемых или подлежащих совершенствованию систем и их компонентов, проведения структурной, алгоритмической и параметрической оптимизации.
Приведенные в данном разделе работы иллюстрируют эту возможность применительно к системам обслуживания, функционирующим в обычном и замкнутом режимах, а также в режиме разделения времени (РРВ).
Методы математического моделирования (аналитического или имитационного) нашли широкое применение в современных системных исследованиях в связи с проектированием, созданием, эксплуатацией и совершенствованием систем различного назначения и их компонентов.
В контексте решения задач системного анализа и синтеза эти методы позволяют описать и объяснить процессы и явления в интересующих нас технических и/или организационных системах, поставить полноценные машинные эксперименты, сопоставить и оценить различные плановые, проектные или управленческие решения с целью выбора наиболее предпочтительного из них.
В тех случаях, когда исследуемые объекты подвержены воздействию случайных факторов внутреннего или внешнего происхождения, неоценимую помощь оказывают методы статистического моделирования. Основная идея этих методов заключается в том, что с помощью так называемых псевдослучайных чисел (ПCЧ) моделируются случайные факторы различного происхождения (непрерывные и дискретные случайные величины, процессы, события и т.д.) с заданными вероятностными характеристиками (обычно, плотностью распределения вероятностей и функцией вероятности), затем эти же факторы используются для моделирования, синтеза и анализа систем и их компонентов.
Особенно плодотворно методы статистического (или вероятностного) моделирования применяются к классу объектов, которые характеризуются процессами обслуживания. К ним, в частности, относятся телефонные системы, сети передачи данных, ремонтные мастерские, транспортные системы, вычислительные системы коллективного пользования , другие объекты.
Характерной особенностью этих разнородных по содержанию систем является то, что на их вход поступают определенные потоки «заявок», которые нуждаются в обслуживании, и имеется ряд обслуживающих станций (приборов, каналов и т.д.), которые обслуживают эти заявки. В условиях реальной работы либо станции простаивают, либо заявки долго ждут своего обслуживания. И то, и другое состояние связаны с нежелательными потерями (издержками), поэтому важной задачей моделирования и исследования таких объектов является выбор стратегии обслуживания, которая минимизирует совокупные системные издержки, т.е. обеспечит более эффективное их функционирование в конкретных ситуациях.
В настоящее время нашли широкое применение для машинного моделирования процесса функционирования различных динамических систем, к числу которых относятся и системы массового обслуживания (СМО), такие языки имитационного моделирования (ЯИМ), как DYNAMO, MIMIC, SIMULA, SIMSCRIPT, SOL, SLENG, CSH, BOSS, GPSS, GASP.
С помощью этих моделирующих средств создается удобство программирования на ЭВМ процесса функционирования проектируемой или подлежащей совершенствованию системы, что играет весьма важную роль при проведении машинных имитационных экспериментах с моделями систем. С другой стороны, появляется концептуальная направленность языка на класс систем, необходимая на этапе построения модели системы и выборе общего направления исследования на основе планирования и проведения машинного эксперимента [1].
Все работы данного раздела выполнены в среде процедурного языка многоцелевого назначения GPSS (General Purpose Simulating System), поэтому в следующем разделе приводятся необходимые сведения об этом языке и его функциональных возможностях. Более подробную информацию о системе GPSS и возможностях программирования в ее среде дискретных динамических систем с вероятностным поведением можно найти в работах [4 - 6, 11].
3.1. Система GPSS и технология имитационного моделирования в ее среде
GPSS представляет собой интерпретирующую языковую систему, предназначенную для описания и обработки пространственного и временного движения объектов – транзактов (термин «транзакция» означает «то, что обрабатывается»), являющихся конкретными элементами потока (процесса). В процессе имитации транзакты создаются, проходят через машинную модель объекта, воздействуя на ее блоки, и уничтожаются. При этом, функциональный аппарат языка образуют блоки, описывающие логику модели путем сообщения транзактам, куда им двигаться и что делать дальше. Переход транзактов приписывается к определенному моменту системного времени, что вызывает изменение состояния модели в пространстве и во времени.
В концептуальном плане взаимодействие элементов GPSS как сложной системы и технология моделирования систем происходит следующим образом [2]:
а) сущности системы моделируются (описываются и обрабатываются) с помощью некоторых атрибутов языка;
б) атрибуты взаимодействуют с процессами, адекватными реально протекающим явлениям в моделируемой системе;
в) процессы требуют конкретных условий, определяющих логическую основу и последовательность взаимодействия этих процессов во времени;
г) условия влияют на события, имеющие место внутри объекта моделирования и при взаимодействии с внешней средой;
д) события изменяют состояния модели в пространстве и во времени.
Эта логика свойственна всем языкам имитационного моделирования, в том числе и GPSS.
По своим возможностям и пользовательским предпочтениям GPSS уступает лишь SIMULA и SIMSCRIPT, а по простоте даже доминирует над ними.
Модель в GPSS создается из отдельных элементов, которые называются объектами. Выделяются семь классов GPSS - объектов:
1) динамические объекты (транзакты или сообщения), которые создаются, вводятся в модель, обслуживаются, задерживаются, накапливаются, уничтожаются, и т.д.;
2) статические объекты (оборудования);
3) статистические объекты (таблицы, очереди);
4) вычислительные объекты (переменные, функции);
5) операционные блоки, выполняющие различные операции над транзактами;
6) объекты для ссылок (ячейки и матрицы ячеек);
7) списки (например, пользователей, группы).
Динамические объекты (транзакты) имитируют различные объекты реального мира, требующие обслуживание. В процессе моделирования они входят в модель в случайные моменты времени (иногда и в фиксированные моменты) в соответствии с логикой работы. Далее они перемещаются между различным блоками, задерживаются в них (ожидание в очереди, обслуживание прибором и т.д.), изменяют направление движения, выводятся из модели после обслуживания. Как и другие объекты GPSS, динамические объекты имеют числовые характеристики, называемые стандартными числовыми атрибутами.
С помощью статических объектов имитируются обслуживающие транзактов оборудования: одноканальные устройства – приборы, многоканальные устройства (накопители или памяти) и логические ключи.
Статистические объекты – очереди позволяют получить информацию о длине очереди, времени ожидания и т.д. Другая группа объектов – таблиц позволяет получить необходимое отображение результатов, например, в виде гистограммы.
Особую важность представляет моделирование времени, точнее – вывод масштаба времени в GPSS – модели. Масштаб изображения времени выбирается пользователем и сохраняется во всей модели. В GPSS – модели используются два таймера: абсолютное модельное время и относительное модельное время (АС1 и АС2 соответственно как стандартные числовые атрибуты). Они изменяются системой автоматически. Индикатор абсолютного времени содержит общее время моделирования и устанавливается в ноль с помощью оператора языка CLEAR. Второй индикатор содержит текущее значение относительного времени после начала моделирования или после последнего сброса в ноль, что осуществляется с помощью операторов RESET или CLEAR.
Все объекты GPSS имеют свои специфические изображения со стандартными числовыми атрибутами.
Приведем краткое описание управляющих операторов языка:
START [A, B, C, D] служит для запуска процесса моделирования. Операнд А задает значение счетчика завершения, определяющего момент окончания моделирования, В выводит или блокирует вывод статистики. Операнд С обычно не используется, а D определяет необходимость вывода содержимого списков текущих и будущих событий. Моделирование продолжается до обнуления счетчика завершения, содержимое которого уменьшается блоком TERMINATE;
END завершает работу модели и возвращает управление операционной системе;
INITIAL используется для задания начальных значений ячеек, элементов матриц и логических ключей;
RESET используется для сброса в ноль статистики и некоторых атрибутов системы, устанавливает в ноль значение абсолютного момента времени и счетчики блоков для обработки транзактов, изменения направления их движения;
CLEAR сбрасывает в ноль всю статистику, устанавливает в ноль все счетчики, содержимое блоков, системное время, содержимое всех ячеек, матриц и таблиц. Приборы, накопители и логические ключи приводятся в начальное состояние занятости и доступности, удаляются из модели все транзакты;
RMULT задает начальные значения множителей для датчиков случайных чисел с целью получения в процессе моделирования некоррелированных друг с другом последовательностей случайных чисел;
SIMULATE ограничивает реальное время моделирования, задаваемое в минутах (реальное время моделирования), после чего работа модели останавливается;
EQU присваивает числовые значения тем символьным именам (переменным), которые использовались в модели.
В системе GPSS предусмотрен процесс активного диалога пользователя с (*), который начинается непосредственно после запуска файла GPSSPC.EXE. Диалог осуществляется с помощью таких средств системы, как
- редактор исходных текстов на языке GPSS;
- редактор выходной статистики;
- команды GPSS.PC;
- виртуальные окна;
- микроокна.
Создание и внесение изменений в тексты уже существующих программ осуществляется с помощью редактора исходных текстов в окне данных DATA WINDOW. В этом же окне отображается информация, связанная с работой ряда команд GPSS. Окно данных открывается либо командой WINDOW DATA, либо одновременным нажатием клавиш [ALT] и [D].
Необходимо обратить внимание на порядок введения информации с клавиатуры. Каждая командная строка разбивается на отдельные поля, и редактор текстов выдает в начале каждого поля строки специальную подсказку. Начало строки отмечается символом «>», поле метки – символом «L», а поле операции – символом «V». Поля операндов отмечаются символами ряда (A, B, C, D, E, F, G, H). Символами «X», «Z» и «O» отмечаются внутренние операнды оператора, если они имеются, поле описания функций в операторах описания функций, и поле описания логических указателей или операторов отношений соответственно. Переход к очередному полю происходит с помощью клавиши SPACE (пробел). Функциональная клавиша ENTER (ввод) позволяет перейти к следующей команде. Команда SAVE <имя программы> позволяет сохранить в памяти созданную программу, а команда EDIT <номер строки>позволяет отредактировать любую строку. Формат этих команд имеет вид, например, SAVE EXPON.GPS и EDIT 50 соответственно. Запуск любой программы на исполнение можно также в окне данных с помощью команды @<имя программы>, например, @EXPON.GPS. С помощью команды DELETE можно уничтожить любую строку программы.
Доступ к другим окнам и данным осуществляется следующим образом.
Окно блоков BLOKS WINDOW служит для графического отображения блок – схемы (логической схемы) модели, войти в которое можно одновременным нажатием клавиш [ALT] и [B]. В этом же окне можно вызвать строку трассировки (клавиши [ALT], [L]). Повторное нажатие клавиш [ALT] и [L] отменяет трассировку.
Окно устройств FACILITIES WINDOW предназначено для графического отображения состояния приборов обслуживания: отображается имя прибора, его загрузка, очередь к нему и статистика: Ut – коэффициент использования; Q – число задержанных транзактов; индикатор доступа (Avail) и занятости (Busy); Av.Time – среднее время пребывания в приборе; Owner – номер транзакта, занимающего прибор. Доступ к данному окну осуществляется с помощью клавиш [ALT] и [F].
Окно многоканальных устройств (накопителей) содержит информацию об индикаторе доступности (Available), проценте загрузки накопителя Part Used и загрузке накопителя в текущий момент Content. Окно доступно при нажатии клавиш [ALT] и [S].
Окно матриц MATRICES WINDOW содержит лишь информацию об одной матрице. Если она имеет большие размеры, можно ее листать с помощью клавиш [PgUp] и [PgDn]. Доступ в окно происходит клавишами [ALT] и [M].
Окно таблиц TABLES WINDOW служит для отображения выходных данных в виде гистограммы, которая становится доступной с помощью клавиш [ALT] и [T].
После завершения процесса моделирования формируется файл отчета и появляется сообщение «reporting-…», в момент выдачи которого недопустимо вмешательство с клавиатуры.
Редактор выходной статистики создает отчет в файле GPSSREPT.EXE, загрузка которого возможна только после выхода из выполненной GPSS – программы. Сама первая строка этого файла имеет вид <START TIME, END TIME, BLOKS FACILITIES, STORAGES FREE MEMORY>. Первые два параметра строки отображают абсолютное модельное время в момент начала моделирования и абсолютное время в момент обнуления счетчика завершений. Далее следуют: количество блоков, использованных в текущей модели к моменту завершения (BLOKS); количество используемых приборов (FACIITIES); количество используемых накопителей (STORAGES); количество свободных байтов памяти (FREE MEMORY).
Следующая страница файла содержит информацию об именах, просматриваемых системой GPSS.PC в ходе моделирования в виде <NAME, VALUE, TYPE>, где NAME – имена, содержащиеся в модели, VALUE – численные значения этих имен, TYPE – параметр, нулевое значение которого означает, что значение имен задается пользователем, значение 2 означает, что значение имени задает система, а 3 означает, что это есть имя блока.
Блоки текущей модели описываются в виде <LINE, LOC, BLOCK TIPE, ENTRY COUNT, CURRENT COUNT, RETRY>. В этой строке: LINE – имя строки в рабочей модели; LOC – имя или номер блока, BLOCK TIPE – тип блока, ENTRY COUNT – число транзактов, вошедших в данный блок, CURRENT COUNT – число транзактов, находящихся в блоке в конце моделирования, RETRY – число транзактов, ожидающих специальных условий, которые зависят от состояния данного блока. Далее следует информация о состоянии имеющихся в модели приборов, очереди, накопителей.
Информация о таблицах имеет формат <TABLE, NAME, STD.DEV., RETRY, RANGE, FREQUENCY, CUM%>. В этой строке: TABLE – имя или номер таблицы; NAME – среднее взвешенное значение табулируемого аргумента; STD.DEV.
– взвешенное среднеквадратическое отклонение; RANGE – верхний и нижний пределы частотных классов; FREQUENCY – суммарная величина, которая формируется при попадании аргумента в указанные границы; CUM% - величина частоты в процентах к общему количеству значений табулируемого аргумента. Для выхода из данного файла необходимо просмотреть его до конца, листая с помощью клавиши «ПРОБЕЛ», затем нажать на «ВВОД».