СИСТЕМА SEGMENTAL GPSS
Автор - к.т.н., доцент Королёв Анатолий Георгиевич.
Анонсируется система Segmental GPSS.
Система позволяет строить модели в стиле GPSS на языке Object Pascal. Модель создаётся в виде исполняемого модуля, с которым можно проводить эксперименты и получать отчёты о моделировании.
Кроме очевидного, того, что в модели доступны все возможности базового языка Object Pascal, такие как использование массивов объектов, текстовых файлов, переменных, записей, таблиц и тому подобного, моя система обеспечивает гибкое управление будущими событиями для заявок.
Система обеспечивает доступность, как для записи, так и для чтения P – параметров любой неактивной в данное время заявки, если известен её номер. Она обеспечивает построение графиков и гистограмм таблиц, как во время прогона модели, так и позднее, в конце прогона.
Важно, что в системе не предусмотрено использование списков задержки для очередей к устройствам, а вместо этого, если нужно, следует использовать списки пользователя. Для этого, в частности, существенно расширены возможности блока Unlink в смысле отбора извлекаемых заявок, и в смысле перенаправления их на желаемые блоки. Это, на мой взгляд, заставит более ответственно относиться к оптимизации времени выполнения модели, а не полагаться на встроенные возможности, которые в иных случаях могут стать проблемой на пути к созданию полноценной модели.
До сих пор мало кто обращал внимание, что концепция будущего, заложенная в GPSS, очень консервативна, и напоминает директивное планирование в тоталитарных государствах. Я имею в виду, что заявки, отбывающие свой срок в Advance практически не доступны системе для переопределения их будущего. Исключение составляют одиночные заявки, по которым, так или иначе, известен их номер. В системах типа GPSS, отсутствуют средства для работы с заявками из списка будущих событий, как с массовым явлением.
В этой связи, в системе Segmental GPSS, список будущих событий рассматривается как наследник списка пользователя, а поэтому управление заявками из списка будущих событий становится таким же простым и естественным, как и заявками из списка пользователя. Собственно говоря, в модели на Segmental GPSS возможно использование нескольких списков будущих событий, что обеспечивает бо’льшую гибкость при построении моделей.
Известно, что в GPSS довольно сложно полноценно использовать технику построения моделей по частям, или технику работы с процедурами, которая доказала свою эффективность в других сферах создания программного обеспечения.
Отсутствие в GPSS полноценных средств отображения модели по частям ярко подтверждается тем фактом, что большие модели на GPSS не пишутся руками, а генерируются специальными программами – оболочками.
В GPSS нельзя разрабатывать части модели «впрок», с тем, чтобы применять их в будущих моделях по мере надобности.
В системе Segmental GPSS конечная модель может строиться из отдельно описанных и даже скомпилированных сегментов модели. Один сегмент является главным и инициирует, если нужно, готовность к работе других сегментов. Все сегменты модели имеют потенциально одинаковую структуру и возможности. Единственным исключением является план моделирования, который должен располагаться только в главном сегменте.
Для перехода заявки из сегмента в сегмент используется блок
Jump(номер_сегмента_модели, точка_входа, параметры_для_запоминания_места_возврата). Параметры для возврата не обязательны, если команда просто выполняет возврат из сегмента.
Место возврата запоминается в P – параметрах как номер сегмента и точка возврата в сегмент.
То есть, заявки могут переходить из сегмента в сегмент и возвращаться обратно в точку вызова.
Как правило, значения, необходимые для корректной работы сегмента с перешедшей в него заявкой передаются как P – параметры этой заявки. Тут могут быть заданы как числовые значения, так и ссылки на нужные объекты: устройства, очереди, таблицы, процедуры, функции, и так далее.
При построении модели часть сегментов можно скомпилировать заранее, тогда автор модели может не знать и не видеть, как именно реализован тот или иной вид специфического обслуживания заявок. Это позволяет разрабатывать и распространять сегменты модели как библиотеки, расширяющие и облегчающие разработку новых моделей. Пользователь системы может и сам создавать новые сегменты, которые позволят быстрее и эффективнее разрабатывать и модернизировать модели. Это крайне важно, когда приходится часто дорабатывать модели в связи с изменениями в предметной области.
В отличие от других систем, поддерживающих иерархическое создание моделей, например, системы Arena, данная система обеспечивает сбор статистики по блокам для всех сегментов, если необходимость этого задано в самом сегменте.
Я надеюсь, что моя система заинтересует как научное сообщество, так и потребителей программных продуктов типа GPSS.
Всех, кого заинтересовала данная система, и, особенно, тех, кто имеет критические замечания по ней, прошу писать по адресу:
В теме письма обязательно укажите слово gpss, иначе ваше письмо будет удалено, как спам.