
- •0. Лекция: Введение
- •1. Лекция: Понятие модели и моделирования:
- •1.1. Общее определение модели
- •1.2. Классификация моделей и моделирования
- •1.2.1. Классификация моделей и моделирования по признаку "характер моделируемой стороны объекта"
- •1.2.2. Классификация моделей и моделирования по признаку "характер процессов, протекающих в объекте"
- •1.2.3. Классификация моделей и моделирования по признаку "способ реализации модели"
- •1.3. Этапы моделирования
- •1.4. Адекватность модели
- •1.5. Требования, предъявляемые к моделям
- •2.1. Дискретные марковские процессы
- •2.2. Моделирование по схеме непрерывных марковских процессов
- •2.3. Схема гибели и размножения
- •2.4. Элементы смо, краткая характеристика
- •2.5. Моделирование смо в классе непрерывных марковских процессов
- •2.5.1. Многоканальная смо с отказами
- •2.5.2. Многоканальная смо с ожиданием
- •2.5.3. Одноканальная смо с ограниченной очередью
- •2.5.4. Одноканальная замкнутая смо
- •2.5.5. Одноканальная смо с конечной надежностью
- •2.6. Метод динамики средних. Сущность и содержание метода
- •2.7. Принцип квазирегулярности
- •2.8. Элементарные модели боя
- •2.8.1. Модель высокоорганизованного боя
- •2.8.2. Высокоорганизованный бой с пополнением группировок
- •2.8.3. Высокоорганизованный бой с упреждением ударов
- •2.8.4. Модель боя с неполной информацией
- •2.8.5. Учет запаздывания в переносе и открытии огня
- •3. Лекция: Статистическое моделирование:
- •3.1. Сущность имитационного моделирования
- •3.2. Общая характеристика метода имитационного моделирования
- •3.3. Статистическое моделирование при решении детерминированных задач
- •3.4. Моделирование равномерно распределенной случайной величины
- •3.5. Моделирование случайной величины с произвольным законом распределения
- •3.6. Моделирование единичного события
- •3.7. Моделирование полной группы несовместных событий
- •3.8. Моделирование совместных независимых событий
- •3.8.1. Определение совместных исходов по жребию
- •3.8.2. Последовательная проверка исходов
- •3.9. Моделирование совместных зависимых событий
- •3.10. Классификация случайных процессов
- •3.11. Способы продвижения модельного времени
- •3.12. Модель противоборства двух сторон
- •3.13. Модель противоборства как процесс блуждания по решетке
- •3.14. Типовая схема имитационной модели с продвижением времени по событиям
- •3.15. Имитационная модель системы массового обслуживания
- •4. Лекция: Планирование экспериментов
- •4.1. Сущность и цели планирования эксперимента
- •4.2. Элементы стратегического планирования экспериментов
- •4.3. Стандартные планы
- •4.4. Формальный подход к сокращению общего числа прогонов
- •4.5. Элементы тактического планирования
- •4.6. Точность и количество реализаций модели при определении средних значений параметров
- •4.6.1. Определение оценки матожидания
- •4.6.2. Определение оценки дисперсии
- •4.7. Точность и количество реализаций модели при определении вероятностей исходов
- •4.8. Точность и количество реализаций модели при зависимом ряде данных
- •4.9. Проблема начальных условий
- •5. Лекция: Обработка результатов имитационного эксперимента
- •5.1. Характеристики случайных величин и процессов
- •5.2. Требования к оценкам характеристик
- •5.3. Оценка характеристик случайных величин и процессов
- •5.4. Гистограмма
- •5.4. Элементы дисперсионного анализа. Критерий Фишера
- •5.6. Критерий Вилькоксона
- •5.7. Однофакторный дисперсионный анализ
- •5.8. Выявление несущественных факторов
- •5.9. Сущность корреляционного анализа
- •5.10. Обработка результатов эксперимента на основе регрессии
- •6. Лекция: Моделирование в gpss World
- •6.1. Основы построения и принципы функционирования языка имитационного моделирования
- •6.2. Построение моделей с устройствами
- •6.2.1. Организация поступления транзактов в модель и удаления транзактов из нее
- •6.2.1.1. Поступление транзактов в модель
- •6.2.1.2. Удаление транзактов из модели и завершение моделирования
- •6.2.1.3. Изменение значений параметров транзактов
- •6.2.2. Занятие и освобождение одноканального устройства
- •6.2.3. Имитация обслуживания посредством задержки во времени
- •6.2.4. Проверка состояния одноканального устройства
- •6.2.5. Методы сбора статистики в имитационной модели
- •6.2.5.1. Регистратор очереди
- •6.2.5.1. Статистические таблицы
- •6.2.6. Методы изменения маршрутов движения транзактов в модели
- •6.2.6.1. Блок transfer
- •6.2.6.2. Блок displace
- •6.2.7. Прерывание функционирования одноканального устройства
- •6.2.7.1. Прерывание в приоритетном режиме
- •6.2.7.2. Прерывание в режиме "захвата"
- •6.2.7.3. Проверка состояния одноканального устройства, функционирующего в приоритетном режиме
- •6.2.8. Недоступность одноканального устройства
- •6.2.8.1. Перевод в недоступное состояние и восстановление доступности
- •6.2.8.2. Проверка состояний недоступности и доступности одноканального устройства
- •6.2.9. Сокращение машинного времени и изменение дисциплин обслуживания методом применения списков пользователя
- •6.2.9.1. Ввод транзактов в список пользователя в безусловном режиме
- •6.2.9.2. Вывод транзактов из списка пользователя в условном режиме
- •6.2.10. Построение моделей систем с многоканальными устройствами и переключателями
- •6.2.10.1. Занятие многоканального устройства и его освобождение
- •6.2.10.2. Перевод многоканального устройства в недоступное состояние и восстановление его доступности
- •6.2.10.3. Проверка состояния многоканального устройства
- •6.2.10.4. Моделирование переключателей
- •6.3. Решение прямой и обратной задач в системе моделирования
- •6.3.1. Постановка прямой и обратной задач
- •6.3.2. Решение прямой задачи
- •6.3.2.1. Блок-диаграмма модели
- •6.3.2.2. Программа модели
- •6.3.2.3. Ввод текста программы модели, исправление ошибок и проведение моделирования
- •6.3.3. Решение обратной задачи
- •6.4. Пример построения моделей с оку, мку и списками пользователя
- •6.4.1. Модель процесса изготовления изделий на предприятии. Прямая задача
- •6.4.1.1. Постановка задача
- •6.4.1.2. Исходные данные
- •6.4.1.3. Задание на исследование
- •6.4.1.4. Уяснение задачи на исследование
- •6.4.1.5. Блок-диаграмма модели
- •6.4.1.6. Программа модели
- •6.4.2. Модель процесса изготовления изделий на предприятии. Обратная задача
- •6.4.2.1. Постановка задачи
- •6.4.2.2. Программа модели
- •6.5. Уменьшение числа объектов в модели
- •6.5.1. Постановка задачи
- •6.5.2. Исходные данные
- •6.5.3. Задание на исследование
- •6.5.4. Блок-диаграмма модели
- •6.5.5. Программа модели
- •6.6. Применение матриц, функций и изменение версий модели
- •6.6.1. Постановка задачи бизнес-процесса
- •6.6.2. Уяснение задачи
- •6.6.3. Программа модели
- •6.7. Моделирование неисправностей одноканальных устройств
- •6.7.1. Постановка задачи
- •6.7.2. Исходные данные
- •6.7.3. Задание на исследование
- •6.7.4. Уяснение задачи
- •6.7.5. Программа модели
- •6.8. Моделирование неисправностей многоканальных устройств
- •6.8.1. Постановка задачи
- •6.8.2. Программа модели
- •7. Лекция: Организация компьютерных экспериментов
- •7.1. Дисперсионный анализ (отсеивающий эксперимент). Прямая задача
- •7.2. Регрессионный анализ (оптимизирующий эксперимент). Прямая задача
- •7.3. Дисперсионный анализ (отсеивающий эксперимент). Обратная задача
- •7.3.1. Постановка задачи
- •7.3.2. Исходные данные
- •7.3.3. Задание на исследование
- •7.3.4. Уяснение задачи на исследование
- •7.3.5. Программа модели
- •7.3.6. Проведение экспериментов
- •8. Лекция: Разработка имитационных моделей в виде приложений с интерфейсом
- •8.1. Применение текстовых объектов и потоков данных
- •8.1.1. Блок open
- •8.1.2. Блок close
- •8.1.3. Блок read
- •8.1.4. Блок write
- •8.1.5. Блок seek
- •8.2. Разработка модели в gpss World
- •8.2.1. Постановка задачи
- •8.2.2. Программа модели
- •8.3. Создание стартовой формы приложения - имитационной модели
- •8.3 Добавление компонент в стартовую форму имитационной модели
- •8.3.1. Добавление полей редактирования
- •8.3.2. Добавление меток
- •8.3.3. Добавление компонент для ввода и вывода данных, представленных в виде таблиц
- •8.3.4. Добавление командных кнопок
- •8.4. События и процедуры обработки событий
- •8.4.1. События
- •8.4.2. Разработка процедур обработки событий для кнопок
- •8.4.3. Разработка процедур обработки событий для полей редактирования
- •8.4.4. Модификация программы имитационной модели
- •8.5. Работа с приложением
6.2.4. Проверка состояния одноканального устройства
Представим себе, что в какой-либо системе, модель которой вы собираетесь разработать, имеются, например, два канала передачи данных - два ОКУ. Естественно, что если один канал занят, то выясняется: свободен ли второй канал? Если он не занят, надо попытаться передать по этому каналу. Но как проверить состояние каналов в модели?
В GPSS World блок GATE используется для определения состояния устройств без изменения их состояния.
Формат записи:
GATE X A,[B]
Блок GATE работает в двух режимах:
отказа во входе;
разрешении во входе и альтернативном выходе.
При работе в режиме отказа блок GATE не пропускает транзакты, если соответствующий объект не находится в требуемом состоянии. Если же поставленное в блоке GATEусловие удовлетворяется, то активный транзакт входит в него и затем переходит к следующему по порядку блоку. Операнд А определяет имя или номер ОКУ.
Условие задается одним из следующих условных операторов X, связанных с ОКУ:
NU - ОКУ, заданное операндом А, свободно;
U - ОКУ, заданное операндом А, занято.
Как видно, тип проверяемого объекта неявно задается условным оператором (позже мы рассмотрим применение блока GATE для проверки и других объектов аппаратной категории).
Операнд B содержит номер следующего блока для входящего транзакта, когда условный оператор имеет значение "ложь". Операнды А и B могут быть именем, положительным целым числом, выражением в скобках, СЧА, СЧА*параметр. Если операнд B не используется, то проверка проводится в режиме отказа. Если результат этой проверки не будет "истина", то транзакт помещается в список повторных попыток проверяемого объекта. Когда состояние любого из объектов меняется, заблокированный транзакт снова активизируется, повторяется проверка заданного блоком GATE условия. Если это условие выполняется, транзакту разрешается войти в блок GATE и далее перейти к следующему по порядку блоку. Например:
GATE U Zrk
GATE NU (FN$Expert+4)
GATE NU Bat,Oper
В первом примере блок GATE не пропустит транзакт при условии незанятости ОКУ с именем Zrk. Во втором случае - когда занято ОКУ, номер которого определяется как результат вычисления и последующего округления выражения в скобках FN$Expert+4. В третьем примере в случае занятости ОКУ с именем Вat транзакт будет направлен к блоку с именем Oper.
Следует отметить, что несмотря на удобство применения блока GATE, в некоторых случаях это может привести при отсутствии операнда B к увеличению машинного времени за счет проведения проверок для заблокированных транзактов. Уменьшение числа проверок и исключение из проверяемых тех транзактов, для которых вряд ли когда-нибудь результат проверки будет истинным, может быть организовано с помощью блоков LINK и UNLINK. Методы применения этих блоков будут рассмотрены позже.
Для проверки состояния различных объектов, в том числе и ОКУ, можно использовать также булевы переменные и блок TEST.
6.2.5. Методы сбора статистики в имитационной модели
6.2.5.1. Регистратор очереди
В GPSS объекты типа "очередь" вводятся для сбора статистических данных. Эта статистика должна дать ответы на вопросы:
Сколько раз транзакты приходили в очередь?
Сколько пришедших транзактов фактически присоединились к очереди (задержались) и сколько их сразу без задержки заняло ОКУ?
Каково было максимальное значение длины очереди?
Среднее число ожидающих транзактов в очереди?
Каково было среднее время ожидания тех транзактов, которым пришлось ждать?
GPSS обеспечивает возможность сбора такой статистики с помощью средства, называемого регистратором очереди. При использовании регистратора очереди в тех точках модели, где ресурсы ограничены, планировщик начинает автоматически собирать статистику, описывающую ожидание (если оно есть), возникающее в этих точках. Регистраторы очередей различают заданием имен. Условия задания имен те же, что и у устройств. Разработчик вносит регистратор очереди в модель с помощью пары взаимодополняющих блоков QUEUE (стать в очередь) и DEPART (покинуть очередь).
Формат записи блока QUEUE следующий:
QUEUE A,[B]
Блок QUEUE увеличивает длину очереди. Операнд А задает номер или имя очереди, к длине которой добавляются единицы.
Операнд B определяет число единиц, на которое увеличивается текущая длина очереди. Если операнд B не используется, то прибавляется единица.
Рассмотрим примеры записи блока QUEUE.
QUEUE RemQ
Увеличивает длину очереди RemQ на единицу при входе каждого транзакта.
QUEUE Р14,Р1
Увеличивает длину очереди, номер или имя которой задан в параметре Р14 транзакта, на число единиц, заданных в параметре Р1.
Формат записи блока DEPART имеет вид:
DEPART A,[B]
Блок DEPART служит для уменьшения длины очереди. Операнд А задает номер или имя очереди, длину которой надо уменьшить. Операнд B задает число единиц, на которое уменьшается длина очереди. Это число не должно превышать текущую длину очереди. Если операнд B не используется, то по умолчанию длина очереди уменьшается на 1. Операнды А и B в блоках QUEUE и DEPART могут быть именем, положительным целым числом, выражением в скобках, СЧА или СЧА*параметр.
Приведем примеры записи блока DEPART.
DEPART RemQ
Уменьшает длину очереди RemQ на единицу. DEPART V3,(V4+3.7)
Операнды А и B заданы арифметической переменной V3 и выражением в скобках, которое также содержит арифметическую переменную V4. При входе транзакта в блок DEPARTпеременная и выражение в скобках вычисляются и округляются. После этого длина очереди, номер которой есть значение переменной V3, уменьшается на значение выражения в скобках (V4+3.7).
Очереди, как и ОКУ, разрешается записывать вместо операнда А номер без предварительного присвоения его имени командой EQU. Например:
QUEUE 5
…
DEPART 5
Рассмотрим использование блоков QUEUE и DEPART в модели на примере представленной блок-диаграммы. Ожидание может возникнуть ввиду занятости ОКУ с именем Rem1. Для сбора статистики об ожидании введем регистратор очереди и дадим ему имя RemQ.
Если
транзакт вошел в сегмент в момент, когда
ОКУ Rem1 не
занято, транзакт входит в блок QUEUE.
Далее транзакт пытается войти в
блок SEIZE и,
поскольку Rem1 свободно,
эта попытка оказывается успешной.
Состояние Rem1 меняется
на "занято", и далее транзакт сразу
попадает в блок DEPART.
Выполняется соответствующая подпрограмма
и транзакт попадает в блок ADVANCE,
где задерживается на некоторое время,
вычисленное в соответствии с
распределением
.
Предположим теперь, что ОКУ Rem1 находится в занятом состоянии и следующий транзакт входит в сегмент модели. Он проходит в блок QUEUE и получает далее отказ, поскольку Rem1 находится в занятом состоянии. Транзакт перестает двигаться, оставаясь в блоке QUEUE.
Позднее, когда транзакт, находящийся на обслуживании в устройстве, покидает его, ожидающий транзакт опять попытается войти в блок SEIZE. На этот раз попытка окажется успешной. Двигаясь дальше, транзакт войдет в блок DEPART, уменьшая значение счетчика содержимого очереди на 1 (по умолчанию, так как операнд B не используется).
Длина очереди не может быть отрицательной. Если такое произойдет, происходит останов по ошибке "Запрещенная попытка сделать содержимое очереди отрицательным".
Останов по ошибке "Недопустимое отрицательное число в операторе GPSS. Operand B." происходит и тогда, когда при создании очереди делается попытка уменьшить ее длину.
Например:
QUEUE Server,3