|
|
5. Распечатка программы
|
6. Выходные данные
|
7. Обсуждение. Логика моделирования. Как указывалось в постановке задачи, перед тем, как пассажир попытается сесть в автобус, должно быть выполнено несколько условий: на остановку должен прийти автобус и должна подойти очередь этого пассажира на посадку. Тем не менее, в модели используется только один логический переключатель. Положение этого переключателя управляется обоими сегментами модели. Во 2-м сегменте модели транзакт-автобус может установить логический переключатель, тем самым открыв BUS и указав на то, что автобус прибыл и можно начинать посадку. Транзакт-автобус может также “сбросить” переключатель BUS, что будет означать, что на остановке автобуса больше нет. Однако BUS не остается открытым на протяжении всего времени стоянки автобуса. В 1-м сегменте модели транзакт-пассажир, начавший посадку в автобус, «сбрасывает» переключатель, закрывая тем самым вход и заставляя других пассажиров ждать своей очереди. Аналогичным образом, транзакт-пассажир может «установить» переключатель, открывая тем самым доступ и указывая на то, что следующему пассажиру в очереди пора пытаться производить посадку. Конечно, транзакт-пассажир не может управлять переключателем до тех пор, пока автобус не прибыл на остановку. Логика задачи такова, что состоянием единственного логического переключателя можно описывать сложное условие.
Необходимо сделать замечание относительно условий, при которых автобус покидает остановку. Было бы ошибкой сделать так, чтобы автобус мог уехать, как только очередь опустеет. Причина этого заключается в том, что человеку, совершающему посадку, требуется для этого ненулевое время. Выход из очереди на посадку еще не означает, что посадка совершена. Поэтому во 2-м сегменте модели транзакт-автобус сначала ждет в блоке «TEST Е Q$LINE,0», пока не опустеет очередь, а в следующем блоке проверяет, не находится ли последний пассажир в процессе посадки. Только после того, как очередь пуста и последний пассажир сел, автобус может уезжать с остановки. (В задачах следующего параграфа будет предложено дальнейшее исследование этого вопроса.)
Распечатка результатов. (Общее время моделирования на ЭВМ IBM 360/67 составило 4,6 с.) На рис. 5Е. З, а приведена статистика для очереди. Всего было 288 вхождений в очередь. (Ожидаемое значение было чуть более 300.) Наибольшее число людей, находившихся в очереди одновременно и ожидавших посадки в автобус, равнялось 16. Один человек имел нулевое время пребывания в очереди.
На рис. 5Е. З, б показано распределение времени пребывания в очереди. Среднее время ожидания составило 889 с, или около 15 мин. Однако 42 пассажира ждали от 25 до 30 мин. Обе части статистики согласуются с данными, указанными в постановке задачи.
На рис. 5Е. З, б дано распределение людей, не обслуженных остановившимся автобусом. Все желающие имели возможность сесть в автобус в 21 случае из 25, т. е. в 84% случаев. Ни разу не было так, чтобы необслуженным остался один человек. В трех случаях не смогли сесть в автобус двое и в одном случае — трое.
Моделирование процесса выдачи книг в библиотеке
1. Постановка задачи. Рассмотрим библиотеку без открытого доступа. В такой библиотеке любой желающий получить книгу должен представить библиотекарю, работающему у стола выдачи, листок запроса. После этого библиотекарь идет в книгохранилище, ищет там книгу и возвращается с ней к столу. Затем происходит процедура выдачи, после чего посетитель уходит с книгой.
Если обслуживания ожидают несколько человек, то библиотекарь часто экономит время, необходимое для хождения от стола выдачи до хранилища, забирая листки запроса сразу у нескольких читателей. Поскольку число книг, которое библиотекарь может нести одновременно, ограничено, то и число листков, забираемых библиотекарем одновременно, будет ограничено.
Построить GPSS-модель для имитации процедуры выдачи книг в библиотеке при следующих условиях.
1. Лица, желающие получить книги, приходят к столу по закону Пуассона со средней интенсивностью 30 человек в час.
2. Каждый хочет получить ровно одну книгу. Более того, требуемая книга всегда имеется.
3. Число библиотекарей, работающих у стола выдачи, должно быть переменным.
4. Как только библиотекарь освобождается, он может взять листки запроса не более чем у четырех человек одновременно (если такое число людей ожидает обслуживания).
5. В модели приняты следующие временные характеристики.
а). Время, затрачиваемое на передачу листков запроса, несущественно.
б). Время, необходимое на прохождения в один конец от стола выдачи до хранилища, равно 1 ± 0,5 мин.
в). Время, необходимое на поиск одной, двух, трех или четырех книг, распределено по нормальному закону со средним соответственно 3, 6, 9 и 12 мин и стандартным отклонением, равным 20% от среднего.
г). После возвращения библиотекаря из хранилища время, требуемое на завершение процедуры выдачи, составляет 2 ±1 мин на человека.
6. Листки запросов берут в порядке поступления. По возвращении библиотекаря из хранилища завершение процедуры выдачи осуществляется по этому же принципу.
7. Если свободны два или более библиотекарей и прибывает посетитель, то его обслуживает тот, кто был свободен дольше других.
8. Если свободны два или более библиотекарей и обслуживания ожидают два или более посетителей, то библиотекари не делят работу поровну между собой. Вместо этого, один библиотекарь берет столько листков, сколько сможет (но не более четырех); затем, если остаются еще посетители с листками, то следующий библиотекарь также берет столько листков, сколько сможет, и т. д.
В модели следует определить распределение случайных величин «время, проведенное каждым читателем у стола выдачи» и «число листков, забираемых библиотекарем». Необходимо найти также нагрузку библиотекарей. Получить требуемую информацию для случаев трех, четырех и пяти библиотекарей, работающих у стола выдачи. Для каждого случая продолжать моделирование до тех пор, пока не будут полностью обслужены 100 человек.
|
2. Метод построения модели. По сравнению с упрощенной моделью библиотеки на рис.6.4 в более сложной постановке в настоящем примере существуют пять дополнительных специальных обстоятельств, которые необходимо учесть.
1. Следует найти способ, с помощью которого библиотекарю запрещалось бы брать листки более чем у четырех посетителей одновременно. (В этом состоит отличие от модели рис.6.4, где библиотекарь забирал листки у всех ожидающих, независимо от их числа.)
2. Каждый библиотекарь должен как образом узнать, сколько у него имеется листков, когда он идет в хранилище. (Это необходимо для того, чтобы сделать выборку из распределения времени поиска. Знание числа листков используется также потом, когда библиотекарь должен определить, скольким посетителям необходимо вручить принесенные книги после возвращения из хранилища.) Метод использования счетчика содержимого блока, как на рис. 6.4, в примере неприемлем, поскольку в общем случае какие-то посетители ожидают возвращения первого библиотекаря, другие ожидают (в том же блоке) возвращения второго библиотекаря и т. д.
3. Поскольку у стола выдачи работают несколько библиотекарей, посетители должны иметь возможность опознать именно того, который взял их листки, чтобы впоследствии узнать, что он вернулся из хранилища, и закончить процедуру получения.
4. Поскольку несколько посетителей могут ожидать возвращения из хранилища нескольких различных библиотекарей, библиотекарям необходимо иметь возможность опознать тех посетителей, чьи книги они принесли. Затем библиотекари должны указать свои посетителям, что для них процедура выдачи завершена.
5. Любой библиотекарь завершает процедуру выдачи одновременно только для одного посетителя. Посетители могут уходить от стола выдачи только поодиночке (в отличие от модели на рис. 6.4, где процедура выдачи заканчивалась одновременно для всех посетителей, у которых были взяты листки запроса). Ниже для каждого обстоятельства приведен метод, используемый для его обеспечения
Обстоятельство 1: ограничении числа листков, забираемых библиотекарем. Когда условия модели приводят к событию взятия листков, библиотекарь открывает клапан SLIP. Затем библиотекарь помещается в буфер, вызывая новый просмотр цепи текущих событий интерпретатором. Обрабатываемый транзакт-посетитель, имеющий более высокий приоритет, проходит через открытый клапан и входит в блок SAVEVALUE, увеличивающий сохраняемую величину на единицу. (Сразу перед открытием клапана SLIP транзакт-библиотекарь обнуляет сохраняемую величину. Сохранеяемая величина последовательно подсчитывает число листков, забираемых библиотекарем.) Затем транзакт-посетитель переходит в блок TEST, где вычисляется булевская переменная, определяющая, является ли истиной одно из двух условий: 1) или библиотекарь уже взял четыре листка и 2) или посетителей, желающих отдать свой листок, больше нет. Если булевская переменная имеет значение “истина”, то транзакт-посетитель сам закрывает клапан SLIP; в противном случае посетитель обходит блок LOGIC, закрывающий этот клапан. При этом транзакт-посетитель останавливается у другого клапана (соответствующего клапану BOOK модели на рис. 6.4), где и будет ожидать, пока библиотекарь не вернется из хранилища и не закончит процедуру выдачи. Между тем интерпретатор GPSS, продолжая просмотр ЦТС, либо пропустит еще несколько транзактов-посетителей через клапан SLIP (если он еще открыт), либо оставит их заблокированными у клапана SLIP (если он был закрыт предыдущим транзактом-посе-тителем).
В модели на рис. 6.4 клапан SLIP закрывает библиотекарь. Это отличается от модели настоящего примера, где клапан SLIP закрывает транзакт-посетитель.
Обстоятельство 2: как узнать, сколько у библиотекаря листков. Как указывалось при рассмотрении обстоятельства 1, транзакты-посетители подсчитывают число листков, забираемых библиотекарем, с помощью сохраняемой величины. Как только транзакт-библиотекарь выходит из блока BUFFER, он поступает в блок ASSIGN, записывающий значение этой сохраняемой величины во второй параметр. Это все, что требуется библиотекарю для того, чтобы знать, сколько у него листков.
Обстоятельство 3: обеспечение индивидуальности каждому библиотекарю. В начале, когда
каждый транзакт-библиотекарь поступает в модель, он входит в блок ASSIGN, где его первому параметру назначается значение 1, 2, 3 и т. д. в зависимости от того, является ли он первым, вторым, третьим библиотекарем и т. д. Это означает, что транзакты-библиотекари отличаются один от другого значением своего первого параметра.
Для того чтобы сказать посетителям, кто их обслуживает, транзакт-библиотекарь начинает обслуживание входом в блок «SAVEVALUE CLERK, P1», записывая тем самым свой отличительный номер в сохраняемую величину CLERK. Затем транзакт-библиотекарь открывает клапан SLIP и помещается в буфер. После того, как транзакт-посетитель во время нового просмотра проходит через клапан, он поступает в блок «ASSIGN 1,X$CLERK», помещая таким образом номер библиотекаря в первый параметр. Таким образом, каждый транзакт-посетитель с помощью величины своего первого параметра знает, какой библиотекарь его обслуживает.
Рассмотрим теперь часть модели, логически соответствующую клапану BOOK в модели на рис. 6.4. Поскольку в этой модели у стола выдачи работал только один библиотекарь, там требовался только один клапан BOOK. В данной модели для каждого библиотекаря требуется эквивалентный клапан BOOK. Поскольку у транзактов-посетителей, ожидающих книг, в Р1 записан отличительный номер библиотекаря, то в качестве клапана BOOK для каждого библиотекаря может служить единственный блок «GATE LS Р1». Число необходимых клапанов равно числу значений, которое может принимать первый параметр транзакта-посетителя. Оно, в свою очередь, равно числу библиотекарей, работающих у стола выдачи.
Рассмотрим, например, транзакта-посетителя, величина Р1 которого равна 2. Это означает, что его книгу ищет второй библиотекарь. Когда второй библиотекарь готов вручить ему книгу, он может проинформировать об этом, поместив логический переключатель 2 в положение «установлено». Это вызовет открытие клапана для транзакта-посетителя, который теперь может пройти через блок «GATE LS Р1». С точки зрения транзактов-посетителей с величинами Р1, равными 1, 3, 4 и т. д., клапан продолжает быть закрытым (если, конечно, их библиотекарь не вернулся из хранилища и не открыл их клапан).
Обстоятельство 4: как библиотекарю узнать своих посетителей. Библиотекарю просто отличить своих посетителей, поскольку в их первом параметре записан его номер. Вспомним, что у транзакта-библиотекаря также записан его номер в качестве величины Р1. Когда транзакт-библиотекарь заканчивает поиск, он информирует об этом посредством входа в блок «LOGIC S Р1», после чего открывается его клапан BOOK (а именно, логический переключатель, номер которого равен величине Р1 этого транзакта, переходит в положение «установлено»). Затем транзакт-библиотекарь помещается в буфер, давая возможность интерпретатору GPSS попытаться продвинуть дальше в модели транзакты-посетители. Для того чтобы продвинуться через блок «GATE LS Pl», транзакт-посетитель должен иметь соответствующий номер библиотекаря в качестве величины Р1. Только тот транзакт, который обслуживается данным библиотекарем, может пройти через этот клапан.
Обстоятельство 5: как обеспечить однократное завершение процедуры выдачи. После того, как транзакт-библиотекарь возвращается из хранилища, он входит в блок ADVANCE, где задерживается на время, необходимое для того, чтобы закончить процедуру выдачи для одного посетителя. Затем транзакт-библиотекарь открывает свой клапан BOOK и помещается в буфер, позволяя интерпретатору подвинуть транзакт-посетитель, для которого процедура закончена, через этот клапан. Затем сам транзакт-посетитель входит в блок «LOGIC R Р1», закрывая тем самым этот клапан за собой. Это предотвращает продвижение других транзак-тов-посетителей (если они есть), обслуживаемых этим же библиотекарем, через клапан BOOK, соответствующий этому библиотекарю. (Они еще по логике модели не могут пройти через этот клапан, поскольку процедура выдачи для них не закончилась.) После этого транзакт-посетитель табулирует свое время, проведенное у стола выдачи, и покидает модель. По мере продолжения просмотра вновь обрабатывается помещенный в буфер транзакт-библиотекарь. Выйдя из блока BUFFER, библиотекарь входит в следующий блок LOOP, где определяет, ждет ли его хотя бы еще один посетитель, чтобы закончить процедур выдачи. Если это так, то библиотекарь идет назад в блок ADVANCE, где имитируется следующее время завершения выдачи; если нет, то библиотекарь переходит назад для определения, есть ли посетители, ожидающие сдачи своих листков запроса, и т. д. В модели на рис 6.4 клапан BOOK закрывал транзакт-библиотекарь. Это отличается от модели примера, где транзакт-посетитель закрывает тот клапан BOOK, который соответствует его библиотекарю.
Теперь следует изучить блок-схему, приведенную на рис. 6В.1. Затем нужно вновь просмотреть только что сделанные замечания, причем в процессе их чтения следует смотреть почаще смотреть на блок-схему. Необходимо понять, что модель, приведенная на рис. 6В.1, несмотря: на свою кажущуюся вначале сложность, является просто логическим расширением модели, приведенной на рис. 6.4.
3. Таблица определений. Единица 1 с.
Таблица 6В.1. Таблица определений примера моделирования 6В
Элемент GPSS | Интерпретация |
Транзакты: 1-й сегмент модели 2-й сегмент модели | Посетитель у стола выдачи: Р1 — номер, определяющий библиотекаря, который обслуживает этого посетителя Библиотекарь, работающий у стола выдачи: Р1 — номер, определяющий этого библиотекаря; Р2 — вначале число листков, которое взял этот библиотекарь; затем число посетителей, которым еще необходимо закончить процедуру выдачи |
Функции: SNORM XPDIS | Функция нормированного нормального распределения Функция экспоненциального распределения |
Логические переключатели: 1, 2, 3 и т. д. SLIP | Связаны с 1, 2, 3-м и т. д. библиотекарем; каждый библиотекарь использует свой логический переключатель для информации своих посетителей о том, что его книга найдена. Каждый посетитель соответственно проверяет логический переключатель своего библиотекаря, чтобы определить, готова ли его книга Используется библиотекарем для информации о том, что он готов начать собирать листки; для этой цели все библиотекари используют один и тот же логический переключатель |
Сохраняемые величины: CLERK COUNT | Полнословная сохраняемая величина, используемая в качестве канала связи между отличительным номером библиотекаря и посетителями, чьи листки этот библиотекарь забрал Полнословная сохраняемая величина, используемая для подсчета числа листков, взятых библиотекарем на этапе сбора листков |
Многоканальные устройства: BUSY | Используется для подсчета нагрузки библиотекаря |
Таблицы: DELAY SLIPS | Используется для нахождения распределения времени, проводимого посетителями у стола выдачи Используется для нахождения распределения числа листков, забираемых библиотекарем |
4. Блок-схема


5. Распечатка программы
|
6. Выходные данные программы
|
7. Обсуждение. Логика моделирования. Среди всего прочего модель должна быть приспособлена для оценки распределения времени пребывания посетителей у стола выдачи. Одним из способов достичь этого является табулирование величины Ml транзактов-посетителей непосредственно перед их уходом из модели. Другим способом могло быть использование Q-таблицы, что потребовало бы прохождения транзактов-посетителей через блок QUEUE в момент их поступления и через блок DEPART в момент их ухода. В представленной модели был выбран первый способ.
Таким образом, нет смысла вводить в модель блоки QUEUE—DEPART. Заметим, однако, что в 1-м сегменте модели на рис. 6.4 присутствовала пара блоков QUEUE—DEPART; более того, число транзактов, ожидающих в блоке QUEUE, указывало на число транзактов-посетителей, ожидающих, чтобы у них взяли листок. Чтобы получить такую же статистику в модели примера 6В, в 1-м сегменте моде модели используется пустой блок ADVANCE. Этот блок, расположенный сразу же после блока GENERATE для транзактов-посетителей, имеет два назначения: 1) он позволяет транзактам-посетителям немедленно выходить из блока GENERATE, что необходимо для того, чтобы не нарушать последовательность времени между поступлениями; 2) подобно блоку QUEUE, приведенному на рис. 6.4, текущий счетчик числа транзактов в этом блоке равен числу транзактов-посетителей, ожидающих обслуживания. Поля А и В этого блока ADVANCE оставлены пустыми; это означает, что транзакты-посетители задерживаются в этом блоке только в том случае, если следующий за ним клапан SLIP закрыт (см. упражнение 2, а, параграфа 6.7).
Обратим внимание на метод последовательной нумерации транзактов-библиотекарей в первом параметре. Их блок GENERATE имеет имя. В следующем блоке величине первого параметра дается значение счетчика числа поступлений в блок GENERATE. Поскольку транзакты-библиотекари входят в модель через блок GENERATE один за другим, счетчик этого блока последовательно принимает значения 1, 2, 3 и т. д. Таким образом, эта величина является подходящим счетчиком, который можно использовать для пометки транзактов-библиотекарей определяющими их номерами 1, 2, 3 и т. д.
Условие 6 постановки задачи утверждает, что библиотекарь забирает листки на основании принципа «первым пришел — первым обслужен». Затем библиотекарь отдает найденные книги посетителям в том же порядке, в котором он забирал листки. Для обеспечения свойств такого обслуживания в порядке поступления не требуется дополнительных средств; это происходит как естественное следствие автоматического порядка просмотра с начала до конца цепи текущих событий (см. упражнение 2, в параграфа 6.7).
Условие 7 в модели говорит о том, что тот библиотекарь, который был свободен дольше всех, должен начать обслуживание первым. И в этом случае нет необходимости в специальных средствах для обеспечения этого правила. Транзакты, представляющие свободных библиотекарей, расположены в цепи текущих событий с начала до конца в порядке, соответствующем возрастанию времени, прошедшего с момента освобождения. В момент прибытия посетителя первый библиотекарь из этой группы открывает клапан BOOK и продолжает обслуживание посетителя.
Условие 8 утверждает, что когда библиотекарь начинает обслуживание, он берет сразу до четырех листков даже в том случае, если имеется другой свободный библиотекарь, вообще не имеющий листков. Это условие также выполняется естественным путем, поскольку именно так работает интерпретатор GPSS. Когда транзакт-библиотекарь открывает клапан SLIP и затем помещается в буфер, через этот клапан пройдет столько транзактов-посетителей, сколько возможно (но не более четырех), и только после этого интерпретатор GPSS вновь при просмотре перейдет к транзакту-библиотекарю. Если имеется несколько свободных библиотекарей, то они в цепи текущих событий будут находиться позади «работающего» библиотекаря. Они даже не будут рассматриваться интерпретатором GPSS при осмотре ЦТС до тех пор, пока первый библиотекарь не отправится в хранилище с листками запросов.
Использование модели. Логические переключатели 1, 2, 3 и т. д. используются в качестве клапанов BOOK для библиотекарей, пронумерованных цифрами 1, 2, 3 и т. д. Номера этих переключателей везде в модели задаются косвенным путем с помощью первого параметра как библиотекарей, так и транзактов-посетителей. Таким образом, поскольку в модели должен быть логический переключатель с символическим именем SLIP, следует принять меры предосторожности, чтобы интерпретатор не присвоил символу SLIP числовое значение, равное единице. В модели это обеспечивается путем задания эквивалентности (карта 5 на рис. 6В.2). Логическому переключателю с символическим именем SLIP присваивается числовое значение, равное 10, и тем самым устраняется возможность эквивалентности между SLIP и логическим переключателем, используемым первым библиотекарем для управления продвижением посетителей, которых он обслуживает.
Распечатка результатов. (Общее время занятости процессора при моделировании на ЭВМ IBM 360/67 составило 6,8 с.) На рис. 6В. З показана часть распечаток результатов, соответствующих случаю трех библиотекарей, работающих у стола выдачи. На рис. 6В. З, а приведен результат распределения времени, проводимого посетителями у стола выдачи. Среднее время для 100 посетителей составило примерно 1065 с, или 17 мин. Этот результат можно сравнить с минимальным средним временем выдачи, составляющим 6 мин. Минимум ожидаемого времени соответствует случаю немедленного обслуживания посетителя. Величина, равная 6 мин, складывается из 1 мин, необходимой для ухода библиотекаря в хранилище, 2 мин, необходимых для поиска книги, 1 мин, соответствующей возвращению библиотекаря, и 2 мин, требуемых для завершения процедуры выдачи. Заметим, что в соответствии с UPPER LIMIT (ВЕРХНИМ ПРЕДЕЛОМ), равным 360 (секунд) в таблице DELAY, два посетителя из 100 действительно провели у стола выдачи 6 мин (или менее). Кроме того, результат для UPPER LIMIT, равного 1500 (секунд), в этой таблице показывает, что 17% посетителей [CUMULATIVE REMAINDER (СУММАРНЫЙ ОСТАТОК) = 17,0] провели у стола выдачи более 25 мин. Далее, в строке OVERFLOW (ПЕРЕПОЛНЕНИЕ) указано, что семь посетителей находились у стола выдачи более 30 мин.
На рис. 6В.3.б показано распределение числа листков, забираемых библиотекарем. Среднее число забираемых листков составило 1,94. Более чем в 60% случаев библиотекарь забрал только один листок. В 11 случаях он взял сразу четыре листка.
В табл. 6В.2 приведены результаты для прогона всех трех случаев. Характер результатов в этой таблице согласуется со здравым смыслом. Заметим, что увеличение числа библиотекарей на 66% (т. е. с трех до пяти) уменьшает среднее время ожидания посетителя на 50% (т. е. с 1065 до 532 с). В случае пяти библиотекарей посетители имеют существенно лучшее обслуживание. Они ждут всего 532 с, тогда как минимальное время ожидания при идеальных условиях равно 6 мин, или 360 с.
Таблица 6В.2. Сравнение результатов, полученных в примере моделирования 6В
Число библиотекарей | Время, проведенное посетителем у стола выдачи, с | Число забираемых листков | Нагрузка библиотекаря |
3 | 1065 | 1,94 | 0,938 |
4 | 667 | 1,32 | 0,745 |
5 | 532 | 1,14 | 0,673 |
Моделирование движения на пешеходном переходе
1. Постановка задачи. Пешеходный переход оборудован светофором. Автомобили подъезжают к переходу с обеих сторон с интервалом времени 15±5 с, а пешеходы, желающие пересечь улицу по переходу, прибывают к нему с интервалом 30±10 с (также с каждой стороны). Автомобили выстраиваются в очередь перед переходом, если для них горит красный свет. После включения зеленого света светофора они пересекают переход по одному. Время проезда автомобиля через переход: 10±2 с. Пешеходы также ожидают разрешающего сигнала светофора, а затем переходят через переход “всей гурьбой”. Время пересечения дороги пешеходом составляет 120±60 с.
Время горения красного сигнала для машин равно 300 с, время горения зеленого сигнала для машин – 200 с.
Требуется:
· определить среднее время ожидания у перехода для машин и для людей при указанных исходных данных;
· путем моделирования подобрать такие времена горения сигналов светофора, которые создадут наиболее благоприятную обстановку на дороге.
2. Метод построения модели. В модели предусмотрим шесть сегментов. В двух из них транзакты изображают машины, которые подъезжают соответственно слева и справа. Другие два сегмента определяют путь движения пешеходов (справа и слева от перехода). Пятый сегмент изображает светофор. Шестой сегмент - таймер окончания процесса моделирования.
Для моделирования светофора будем использовать логический переключатель (ключ) с именем MASH. Если MASH=1, то могут проезжать машины (зеленый для машин, красный для пешеходов). Если MASH=0, то могут проходить люди (красный для машин, зеленый для пешеходов). Переключается значение ключа с помощью блока
LOGIC O A
Где O – оператор условия, который может принимать значения:
S – “set” (включено);
R – “reset” (выключено);
I – “invert” (инвертировать);
A – имя ключа.
В сегменте, который соответствует светофору, будет циркулировать один транзакт (он вводится в модель блоком GENERATE,,,1). Продвигаясь в модели, он устанавливает ключ MASH в положение “включен” (зеленый свет для машин) блоком LOGIC S MASH. Затем выполняется задержка на время горения зеленого света (это время зададим в начале программы константой ZELEN_TIME). Далее происходит переключение света на красный для машин (зеленый для пешеходов): LOGIC R MASH, и выдерживается время горения красного света (константа KRAS_TIME). После этого транзакт блоком TRANSFER отправляется в начало сегмента для повторения описанных действий.
В сегменте транзактов-машин после регистрации в очереди транзакты пытаются пройти в блок GATE. Формат этого блока
GATE O A, B
Где O – оператор условия, который для ключа может принимать значения
LS – ключ в положении “set” (включен)
LR – ключ в положении “reset” (выключен)
Текст программыZELEN_TIME EQU 200
KRASN_TIME EQU 300
PEOPLEV STORAGE 1000
PEOPPRAV STORAGE 1000
*Светофор
GENERATE,,,1
BEG LOGIC S MASH
ADVANCE ZELEN_TIME
LOGIC R MASH
ADVANCE KRASN_TIME
TRANSFER, BEG
*Машины с левой стороны
GENERATE 15,5
QUEUE QMASHLEV
GATE LS MASH
SEIZE MASHLEV
DEPART QMASHLEV
ADVANCE 10,2
RELEASE MASHLEV
TERMINATE
*Машины с правой стороны
GENERATE 15,5
QUEUE QMASHPRAV
GATE LS MASH
SEIZE MASHPRAV
DEPART QMASHPRAV
ADVANCE 10,2
RELEASE MASHPRAV
TERMINATE
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |









