Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Построение имитационной модели
Построение имитационной модели следует начинать с создания заголовка модели, который может быть представлен, например, в таком виде: ; GPSSW Peshehod.GPS ************************************** * Моделирование пешеходного перехода * ************************************** Сначала сформируем поток машин, пересекающих переход, – первый сегмент программы: *************************************** * Моделирование потока машин * *************************************** Это можно сделать с помощью оператора GENERATE, который в нашей задаче запишем в таком виде: GENERATE 20, 10 В поле операнда A указывается среднее время поступления (обязательно) требования (машины) на обслуживание (проезд через переход), в поле операнда B – отклонение от среднего времени поступления требования (не обязательно). Далее введем пару операторов: сначала QUEUE, а затем через несколько операторов и DEPART с одним и тем же именем (числовым или символьным) в поле операнда А для сбора статистической информации по очереди машин перед переходом. Эта очередь образуется во время занятости пешеходного перехода или из за красного сигнала на светофоре. Условно назовем эту очередь именем Ocher1. Сначала зафиксируем вход в очередь автомобиля с помощью оператора QUEUE. Это будет выглядеть так: QUEUE Ocher1 Когда сигнал светофора зеленый (значение 0) для автомобилей и пешеходный переход не занят, тогда значение стандартного числового атрибута, оценивающего возможность проезда автомобиля через пешеходный переход, принимается равным 0. Это означает, что автомобиль может пересекать пешеходный переход. Эти условия должны быть протестированы блочным оператором TEST. Когда сигнал светофора красный (значение 100) или переход не свободен от пешеходов, тогда значению стандартного числового атрибута, оценивающего возможность проезда, возвращается значение, равное 1. Это можно записать так: TEST E X$Svet_Avtom, F$Perehod В операторе TEST использован логический оператор E (Equal – Равно). Как можно заметить, поле операнда С пусто, следовательно, требование не может войти в блок TEST, пока заданное условие числовых атрибутов, приведенных в полях операндов А и В, не выполнится. В поле операнда А находится сохраняемая величина по имени Svet_Avtom, а в поле В – стандартный числовой атрибут, характеризующий содержимое канала обслуживания – наличие пешеходов на переходе. Когда сигнал светофора зеленый – сохраняемая величина по имени Svet_Avtom равна 0 – и пешеходный переход не занят – стандартный числовой атрибут по имени F$Perehod равен 0, – тогда машина (требование) может пересекать переход. Далее введем пару операторов: сначала SEIZE, а затем через несколько операторов и RELEASE с одним и тем же именем (числовым или символьным) в поле операнда А для сбора статистической информации по каналу обслуживания – переходу: SEIZE Perehod Если канал обслуживания освобожден, то требование может покинуть очередь, используя оператор DEPART: DEPART Ocher1 Далее автомобиль пересекает пешеходный переход, затрачивая на это время, равное 10±2 с. Это действие моделируется оператором ADVANCE: ADVANCE 10, 2 В поле операнда A указывается среднее время пересечения перехода автомобилем (обязательно), в поле операнда B – отклонение от среднего времени пересечения перехода автомобилем (не обязательно). Далее вводится оператор RELEASE, сообщающий об освобождении канала обслуживания: RELEASE Perehod Далее используется оператор TERMINATE для завершения моделирования в первом сегменте программы: TERMINATE 1 После этого создаем другой сегмент программы, в котором формируется второй поток – поток пешеходов: *************************************** * Моделирование потока пешеходов * *************************************** Он очень похож на первый сегмент программы. Оператор GENERATE генерирует поток пешеходов с временем подхода пешеходов к переходу, равным 30±10 с: GENERATE 30, 10 Далее введем пару операторов: сначала QUEUE, а затем через несколько операторов и DEPART с одним и тем же именем (числовым или символьным) в поле операнда А для сбора статистической информации по очереди пешеходов. Эта очередь создается во время занятости пешеходного перехода машинами или изза красного сигнала на светофоре. Условно назовем эту очередь Ocher2. Сначала зафиксируем вход в очередь автомобиля с помощью оператора QUEUE. Это будет выглядеть так: QUEUE Ocher2 Когда сигнал светофора зеленый (значение 0) для пешехода, тогда значение стандартного числового атрибута, оценивающего возможность прохода пешеходом перехода, принимается равным 0. Это означает, что пешеход может пересекать улицу. Эти условия должны быть протестированы блочным оператором TEST. Когда сигнал светофора красный (значение 100) или переход занят автомобилем, тогда стандартному числовому атрибуту, оценивающему возможность перехода, возвращается значение, равное 1. Это можно записать так: TEST E X$Svet_Pesheh, F$Perehod В поле операнда А находится сохраняемая величина по имени Svet_Pesheh, а в поле В – стандартный числовой атрибут, характеризующий содержимое канала обслуживания – наличие автомобилей на пешеходном переходе. Когда сигнал светофора зеленый – сохраняемая величина по имени Svet_ Pesheh равна 0 – и пешеходный переход не занят – стандартный числовой атрибут по имени F$Perehod равен 0, – тогда пешеход (требование) может пойти по переходу. Далее введем пару операторов: сначала SEIZE, а затем через несколько операторов и RELEASE с одним и тем же именем (числовым или символьным) в поле операнда А – Perehod – для сбора статистической информации по каналу обслуживания: SEIZE Perehod Если канал обслуживания – переход – разрешен и свободен от автомобилей, то требование может покинуть очередь, используя оператор DEPART: DEPART Ocher2 Далее пешеход пересекает переход, затрачивая на это время, равное 10±2 с. Это действие моделируется оператором ADVANCE: ADVANCE 10, 2 В поле операнда A указывается среднее время прохода перехода пешеходом (обязательно), в поле операнда B – отклонение от среднего времени прохода перехода пешеходом (не обязательно). Далее вводится оператор RELEASE, сообщающий об освобождении канала обслуживания (перехода): RELEASE Perehod Затем используется оператор TERMINATE для завершения моделирования во втором сегменте программы: TERMINATE 1 Переходим к созданию третьего сектора программы – моделирования работы светофора: ************************************** * Моделирование работы светофора * ************************************** GENERATE,,, 1 Оператор GENERATE генерирует одно требование (транзакт), обеспечивающее работу светофора. Для этого в поле операнда D вводится значение 1. Далее используется сохраняемая величина под именем Svet_Pesheh для указания цвета сигнала светофора со стороны пешеходов – Krasn (Красный): Begin1 SAVEVALUE Svet_Pesheh, Krasn Затем используется сохраняемая величина под именем Svet_Avtom для указания цвета сигнала светофора со стороны автомобилей – Zelen (Зеленый): SAVEVALUE Svet_Avtom, Zelen Далее моделируется время включенного состояния зеленого сигнала с использованием оператора ADVANCE. В поле A оператора ADVANCE вводится имя переменной Zelen_time, в которой хранится информация о продолжительности зеленого сигнала светофора: ADVANCE Zelen_time Затем используется сохраняемая величина под именем Svet_Pesheh для указания в ней цвета сигнала светофора со стороны пешеходов – Zelen: SAVEVALUE Svet_Pesheh, Zelen Потом используется сохраняемая величина под именем Svet_Avtom для указания в ней цвета сигнала светофора со стороны автомобилей – Krasn: SAVEVALUE Svet_Avtom, Krasn Далее моделируется время включенного состояния зеленого сигнала с использованием оператора ADVANCE. В поле A оператора ADVANCE вводится имя переменной Krasn_time, в которой хранится информация о продолжительности зеленого сигнала светофора: ADVANCE Krasn_time Затем все повторяется сначала. Для этого используется оператор TRANSFER в режиме безусловного перехода к оператору с символической меткой Begin1: TRANSFER, Begin1 И наконец, используемым ранее переменным присваиваются конкретные числовые значения. Это можно записать так: Zelen_time EQU 200 Zelen EQU 0 Krasn EQU 100 Krasn_time EQU 300 В окончательном виде модель, имитирующая движение на пешеходном переходе, будет выглядеть так, как показано на рис. 3.22 и 3.23. Рис. 3.22. Первая часть имитационной модели пешеходного перехода
Рис. 3.23. Вторая часть имитационной модели пешеходного перехода
|