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 RE­MAINDER (СУММАРНЫЙ ОСТАТОК) = 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