Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

GPSS/H Studio

Программная среда разработки, трансляции и статистического анализа результатов дискретно-событийного имитационного моделирования на базе компилятора Wolverine GPSS/H.


1. Аннотация и назначение системы

GPSS/H Studio представляет собой специализированную кроссплатформенную интегрированную среду разработки (IDE), оптимизированную для проведения вычислительных имитационных экспериментов над системами массового обслуживания (СМО). Программный комплекс разработан с использованием языка Python 3 и графического фреймворка PySide6 (Qt for Python).

Среда обеспечивает сквозной цикл математического моделирования: от позиционно-ориентированного редактирования исходного текста модели до автоматизированного синтаксического анализа файлов листинга (.lis) с представлением агрегированных статистических показателей функционирования системы в виде структурированных матричных таблиц.


2. Архитектура и функциональные подсистемы

Комплекс спроектирован по модульному принципу и включает в себя следующие основные подсистемы:

+-----------------------------------------------------------------------------------+
|                                  GPSS/H Studio                                    |
+----------------------------------------+------------------------------------------+
|          Модуль редактирования         |             Модуль анализа               |
|  +----------------------------------+  |  +------------------------------------+  |
|  | LabelGutter (Колонка меток/тегов)|  |  | Сводка для отчёта (QTabWidget)     |  |
|  | GPSSCodeEditor (Код модели)      |  |  |  - Сводка общая (Время, такты)     |  |
|  | GPSSHighlighter (Подсветка синт.)|  |  |  - Устройства (Facilities)         |  |
|  +----------------------------------+  |  |  - Очереди (Queues)                |  |
|                                        |  |  - Памяти (Storages)               |  |
|  +----------------------------------+  |  |  - Блоки (Block executions)        |  |
|  | Подсистема трансляции            |  |  |  - Системные ресурсы               |  |
|  |  - Генерация "model.gps"         |  |  +------------------------------------+  |
|  |  - Диспетчер процесса gpssh.exe  |  |  | Полный листинг (.lis) (Viewer)     |  |
|  |  - Захват STDOUT / STDERR        |  |  +------------------------------------+  |
|  +----------------------------------+  |  | Консоль вывода (Raw Output)        |  |
+----------------------------------------+--+---------------------------------------+

2.1. Подсистема редактирования исходного кода

  • Позиционное форматирование: Рабочая область редактора разделена на выделенную колонку меток и модификаторов (LabelGutter, фиксированная ширина 2 знакоместа) и текстовое поле блоков модели (GPSSCodeEditor). Входной код автоматически форматируется со смещением оператора в третью позицию строки в соответствии со стандартами Wolverine GPSS/H.
  • Синтаксический анализатор реального времени: Модуль GPSSHighlighter выполняет контекстную подсветку операторов, числовых констант, выражений операндов и строк комментариев.
  • Манипуляция блоками кода: Реализовано интеллектуальное позиционирование курсора (Smart Home), многострочная блочная табуляция и детабуляция (шаг 2 пробела), перемещение строк без использования системного буфера обмена, а также дублирование активных строк.

2.2. Диспетчер трансляции и исполнения

  • Автоматическая генерация стандартизованного входного файла модели model.gps с сохранением позиционных соответствий колонок меток и мнемоник операторов.
  • Асинхронное исполнение бинарного модуля gpssh.exe посредством подсистемы межпроцессного взаимодействия subprocess.
  • Перехват и буферизация стандартных потоков вывода (STDOUT) и ошибок (STDERR) с регистрацией кодов возврата процесса.

2.3. Синтаксический анализатор выходного листинга (GPSSListingParser)

  • Парсинг неструктурированного текстового протокола моделирования (model.lis), формируемого компилятором Wolverine GPSS/H.
  • Определение абсолютных и относительных значений системного модельного времени.
  • Извлечение и параметризация таблиц состояний одноканальных приборов обслуживания, многоканальных накопителей, накопителей очередей, а также счетчиков входов транзактов по блокам.
  • Механизм кросс-ссылочной навигации: прямой переход из агрегированных табличных данных к ассоциированной строке листинга по двойному клику либо комбинации Ctrl + Click.

3. Системные требования и программные зависимости

Компонент Минимальные требования Функциональное назначение
Операционная система Microsoft Windows 7 / 8 / 10 / 11 Среда исполнения бинарного компилятора gpssh.exe
Интерпретатор Python Версия 3.8 или выше Базовый вычислительный рантайм среды
Графический фреймворк PySide6 (Qt 6.x) Графический интерфейс, диспетчер событий и отрисовка
Ядро моделирования gpssh.exe (Wolverine Software) Транслятор и расчетное ядро дискретно-событийного моделирования

4. Порядок развертывания и инициализации

  1. Установите библиотеку PySide6 в используемую среду Python:
pip install PySide6
  1. Разместите исполняемый файл компилятора gpssh.exe в корневом каталоге проекта рядом со скриптом gpss-studio.py.

  2. Запустите приложение:

python gpss-studio.py

Note

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


5. Структура интерфейса и организация рабочего пространства

Главное окно приложения разделено горизонтальным разделителем (сплиттером) на две функциональные панели. Начальные геометрические параметры окна по умолчанию составляют 1440x780 пикселей при фиксированной начальной ширине левого блока в 320 пикселей:

5.1. Левая панель (Редактор исходного кода)

  • Колонка меток (Label Gutter): Хранит символьные метки строк (до 2 символов в компактном представлении) либо символ * для строк комментариев. Редактирование значения осуществляется по нажатию клавиши F2 либо двойному клику левой кнопкой мыши.
  • Поле операторов модели: Позволяет вводить синтаксические конструкции языка без необходимости ручного выравнивания отступа первого операнда.

5.2. Правая панель (Аналитический модуль)

Состоит из трех основных вкладок:

  1. Сводка для отчёта: Набор структурированных таблиц:
    • Сводка: Модельное время, общее число выполненных блоков и скорость моделирования.
    • Устройства: Статистические показатели одноканальных устройств (Facilities).
    • Очереди: Характеристики динамики очередей (Queues).
    • Памяти: Характеристики использования емкости многоканальных накопителей (Storages).
    • Блоки: Распределение транзактов по блокам модели (Current / Total).
    • Система: Параметры распределения памяти компилятора и кодовых сегментов.
  2. Полный листинг (.lis): Окно просмотра исходного листинга компилятора с нумерацией строк и интегрированным модулем контекстного поиска.
  3. Вывод консоли: Непосредственный поток текстовых сообщений стандартных дескрипторов ввода-вывода процесса gpssh.exe.

6. Спецификация извлекаемых статистических метрик

Синтаксический анализатор автоматически извлекает из выходного файла листинга следующие числовые характеристики:

6.1. Одноканальные приборы обслуживания (Facility)

Параметр таблицы Обозначение Физический смысл и расчетное выражение
Устройство Facility Имя или порядковый номер устройства обслуживания
Загрузка (Util) $\rho$ Коэффициент использования: доля времени занятости прибора
Входов (Entries) $N_{entries}$ Количество транзактов, захвативших устройство (SEIZE)
Среднее время/заявку $\bar{t}_{srv}$ Средняя длительность обслуживания одной заявки: $\bar{t}{srv} = \frac{T{busy}}{N_{entries}}$
Статус Status Состояние доступности прибора на момент останова (AVAIL / UNAVAIL)
% готовности $%_{avail}$ Доля модельного времени, в течение которой прибор находился в состоянии готовности
Захвативший Xact Xact Идентификатор транзакта, удерживающего прибор в текущий момент времени
Вытеснивший Xact Preempt Xact Идентификатор транзакта, прервавшего обслуживание текущей заявки

6.2. Накопители очередей (Queue)

Параметр таблицы Обозначение Физический смысл и расчетное выражение
Очередь Queue Имя или номер анализируемой очереди
Макс. длина $Q_{max}$ Максимальное число транзактов, единовременно находившихся в очереди
Средняя длина $\bar{Q}$ Интегральная средняя длина очереди во времени: $\bar{Q} = \frac{1}{T} \int_{0}^{T} Q(t),dt$
Всего заявок $N_Q$ Полное количество входов транзактов в очередь (QUEUE)
Нулевых входов $N_0$ Количество заявок, покинувших очередь с нулевой задержкой
% нулевых $%_0$ Доля заявок, обслуженных без ожидания: $(N_0 / N_Q) \times 100%$
Среднее время $\bar{t}_w$ Среднее время ожидания по всем транзактам: $\bar{t}w = \frac{1}{N_Q} \sum{i=1}^{N_Q} t_i$
$Среднее время $\bar{t}_{w, \neq 0}$ Среднее время ожидания только для задержанных транзактов: $\bar{t}{w, \neq 0} = \frac{1}{N_Q - N_0} \sum{t_i > 0} t_i$
Текущая длина $Q_{cur}$ Количество транзактов в очереди на момент окончания моделирования

6.3. Многоканальные накопители (Storage)

Параметр таблицы Обозначение Физический смысл и расчетное выражение
Память Storage Идентификатор многоканального накопителя
Ёмкость $C$ Номинальная емкость накопителя, заданная оператором STORAGE
Среднее содерж. $\bar{S}$ Интегральное среднее число занятых единиц емкости во времени
Коэф. загрузки $\rho_S$ Коэффициент использования емкости: $\rho_S = \frac{\bar{S}}{C}$
Число входов $N_S$ Суммарное количество единиц емкости, запрошенных операторами ENTER
Среднее время $\bar{t}_S$ Среднее время удержания одной единицы емкости накопителя
Текущая занятость $S_{cur}$ Количество занятых единиц емкости на момент завершения прогона
Пик (Max) $S_{max}$ Максимальное число одновременно занятых единиц емкости

7. Позиционный формат входных данных GPSS/H

В компиляторе Wolverine GPSS/H используется строгий колоночный синтаксис. При формировании промежуточного файла model.gps среда автоматически обеспечивает позиционирование лексем:

Позиция:  1  2  3  4 ...
Символ:  [М][Т]   [ОПЕРАТОР] [ОПЕРАНДЫ...]
Пример 1: G  E     GENERATE   10,2
Пример 2: *        Текст комментария строки
Пример 3:          SEIZE      CPU

7.1. Правила синтаксической совместимости

  • Условие завершения расчета: Прогон модели детерминированно задается числом завершаемых транзактов в управляющей команде START (например, START 500) и завершается обязательной терминальной директивой END.

8. Справочник комбинаций горячих клавиш

Комбинация клавиш Область действия Описание операции
F5 Глобальная Запуск процесса трансляции и исполнения имитационной модели
Ctrl + S Глобальная Сохранение текущего файла модели
Ctrl + Shift + S Глобальная Сохранение модели в новый файл (Save As)
Ctrl + O Глобальная Открытие существующего файла модели (.gps, .dat, .txt)
Ctrl + N Глобальная Инициализация новой модели
Ctrl + F Контекстная Открытие интерактивной панели поиска в активном компоненте
Ctrl + G Редактор Безусловный переход к указанному номеру строки
Home / Shift + Home Редактор Переход к началу значащего текста / в нулевую позицию строки
Tab / Shift + Tab Редактор Инкремент / декремент блочного отступа (шаг 2 пробела)
Alt + ↑ / Alt + ↓ Редактор Перемещение текущей строки вверх / вниз
Ctrl + D Редактор Дублирование текущей строки
Ctrl + / Редактор Инвертирование признака комментария (*) в колонке меток
F2 Редактор Активация редактирования метки/флага текущей строки
Ctrl + 1 Навигация Переход на вкладку «Сводка для отчёта»
Ctrl + 2 Навигация Переход на вкладку «Полный листинг (.lis)»
Ctrl + 3 Навигация Переход на вкладку «Вывод консоли»
Ctrl + + / Ctrl + = Редактор/Листинг Увеличение размера шрифта
Ctrl + - Редактор/Листинг Уменьшение размера шрифта
Ctrl + 0 Редактор/Листинг Сброс масштаба шрифта к исходному значению

9. Формируемые артефакты и экспорт результатов

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

  1. model.gps — результирующий позиционный файл модели для подачи на вход компилятора.
  2. model.lis — файл протокола моделирования, содержащий текст модели с номерами блоков, диагностику и стандартные статистические таблицы GPSS/H.

9.1. Экспорт в научно-технические отчёты

Кнопка «Скопировать таблицу» выполняет экспорт содержимого активной статистической таблицы в системный буфер обмена в формате TSV (значения, разделенные знаком табуляции). Данный формат позволяет осуществлять непосредственный перенос расчетных данных в табличные процессоры (Microsoft Excel, LibreOffice Calc) и документы LaTeX/Word для формирования отчетов по лабораторным и научно-исследовательским работам.

About

A lightweight, dedicated desktop IDE and simulation runner for Wolverine Software GPSS/H, built with Python and PySide6.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages