Форум программистов, компьютерный форум, киберфорум
GPSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 3

Очередь

25.03.2013, 22:12. Показов 3829. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем!

Совсем не давно начал изучать язык gpss, прорешивал различные задания и запнулся на совершенно элементарном моменте - не получается создать очередь. Но всё по порядку.

Задание для моделирование звучит следующим образом:

Переговорный пункт имеет одно помещение с тремя кабинами для переговоров. Если посетитель застает свободной хотя бы одну кабину, то он оплачивает будущий разговор в кассе, затем ждет соединения и ведет переговоры, после чего покидает переговорный пункт. Если посетитель застает все кабины занятыми, он ждет освобождения одной из них у входа в переговорный пункт.
Интервал времени между приходами посетителей – случайный, распределенный по равномерному закону, составляет 1,5±0,4 мин. Время ожидания соединения – 3,5±1,1 мин., время разговора посетителя по телефону – 4,4±1,35 мин. Длительность разговора и время ожидания соединения – случайные величины, подчиняются равномерному распределению.

У меня в целом вроде бы получилось создать адекватную модель, кроме одной вещи - второй очереди, в тот момент, когда посетитель ожидает когда какая-нибудь переговорная кабинка освободится, модель почему то игнорирует мои попытки создания этой очереди. Объясните почему это происходит и как это можно исправить.

Код прилагается, заранее спасибо.
Вложения
Тип файла: txt код программы.txt (1.5 Кб, 41 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2013, 22:12
Ответы с готовыми решениями:

Перенаправление в очередь
Voch TEST L CH$OCH,150,met7;Если очередь больше 150 то в кафе TEST L CH$OCH,100,met8;Если очередь больше 100 то в кафе TEST L...

Система массового обслуживания, 2 однородных устройства, общая очередь
Решаю задачу, не могу понять где ошиблась, подскажите пожалуйста. Текст задачи: Система массового обслуживания состоит из 2...

Очередь S1 не ограничена по содержимому, но время ожидания обслуживания не может превышать 20 секунд
Задание: Очередь S1 не ограничена по содержимому, но время ожидания обслуживания не может превышать 20 секунд. Заявки, время ожидания...

3
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
26.03.2013, 07:12
1. Нужно перейти к модельному времени в секундах, удобнее будет+ точнее результаты будут+ с дробями компьютеру тяжелее работать чем с целыми цифрами.
Пример:
Интервал времени между приходами посетителей – случайный, распределенный по равномерному закону, составляет 1,5±0,4 мин.
Code
1
GENERATE 90,24            ;90+-24 секунды

2.
Если посетитель застает все кабины занятыми, он ждет освобождения одной из них у входа в переговорный пункт.
Т.е. насколько я понимаю, посетитель ждёт в очереди, возможно необходимо собрать статистику по этой очереди. Поэтому давайте вкрячим очередь перед входом.
Code
1
2
3
QUEUE NAME
      ENTER Punkt                ; войти на переговорный пункт 
DEPART NAME
3.
Code
1
2
3
4
5
     QUEUE Ocher_kassir   ; включение в очередь
     SEIZE Kassir                ; обращение к кассиру
     DEPART Ocher_kassir      ; выход из очереди
     ADVANCE 1.5,0.4      ; оплата за разговор
     RELEASE Kassir   ; освобождение кассира
В условиях НИЧЕГО не сказано про очередь к кассиру, про время его обслуживания, это ваша так сказать Фантазия, которая не имеет отношения к условиям задачи, но имеет место в реалиях жизни.

4.
Code
1
ADVANCE 4.4,1.35      ; время разговора посетителей
Перед тем, как посетитель начинает разговаривать, он ожидает соединения, у вас в модели почемуто наоборот!!! (т.е. у вас ожидание, после разговора )

5.
Code
1
ENTER Cabinka
У вас в модели не объявлена ёмкость устройства Кабинка, оно здесь и ненужно вовсе! Т.е. Вы сделали переговорный Punkt на 3 кабинки, всё больше никаких кабинок не нужно, т.е. в этих кабинках будут в параллель обслуживаться посетители.

6.
в тот момент, когда посетитель ожидает когда какая-нибудь переговорная кабинка освободится, модель почему то игнорирует мои попытки создания этой очереди.
Code
1
2
3
4
5
6
7
ENTER Cabinka
     QUEUE Ocher_telefon  ; включение в очередь
     SEIZE Cabinka
     DEPART Ocher_telefon ; выход из очереди
Zanyt    ADVANCE 3.5,1.1 ; время ожидания освобождения телефона
              
     TRANSFER ,Povtor     ; переход к оператору с меткой Povtor
Ну я сказал, что этот блок вообще ни к чему, ну да ладно, какие здесь ошибки.
Название Enter и Seize одинаковые - Cabinka
Seize не имеет закрытия Release, поэтому всегда занято и не пускает больше 1 заявки.
TRANSFER ,Povtor ; переход к оператору с меткой Povtor
В условиях нет никакой регулировки потока, вы создали какуюто полу-замкнутую систему, поток посетителей - ДАЖЕ ОБСЛУЖЕННЫХ направляете снова на повторный разговор, а если они не хотят больше разговаривать?
По условию:
Интервал времени между приходами посетителей – случайный, распределенный по равномерному закону, составляет 1,5±0,4 мин.
После того, как посетитель обслуживается, он выходит из модели TERMINATE

7.
Code
1
2
3
4
; Задание времени моделирования
     GENERATE 480     ; время работы модели
     TERMINATE 1      ; уменьшение общего времени моделирования на 1 мин
     START 1                 ; пропускаются по одному посетителю
Комментарии не верные. Для понимания:
GENERATE 480 - в момент времени 480 минут (отсчёт в GPSS от 0) через блок GENERATE в модели появится 1 заявка.
START 1 - счётчик числа заявок, которые должны покинуть модель, чтобы моделирование ЗАВЕРШИЛОСЬ
TERMINATE 1 - из счётчика START вычитается единица 1, когда старт=0, то моделирование заканчивается.

Вот и получается, что в момент времени 480 у вас модель завершит работу!

Добавлено через 8 минут
8. КАСАЕМО п6. Только сейчас разглядел у вас TERMINATE в модели
Code
1
2
3
LEAVE Punkt              ; оставить переговорный пункт
     TABULATE Transit     ; табулировать переговорный пункт
     TERMINATE               ; уход посетителей
Получается, что
Code
1
2
3
4
ENTER Cabinka
     QUEUE Ocher_telefon  ; включение в очередь
     SEIZE Cabinka
     DEPART Ocher_telefon ; выход из очереди
Вообще никогда не работает, т.е. туда не заходят транзакты.
0
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 3
26.03.2013, 22:48  [ТС]
Dukalys, спасибо за развёрнутые объяснения и комментарии! Исправил все что я там "намоделировал" и модель заработала!
Согласен со всеми замечаниями, кроме одного, по поводу пункта 4.

Code
1
 Zanyt    ADVANCE 3.5,1.1 ; время ожидания освобождения телефона
Оператор GATE, с логическим ключом SNF, проверяет, какой случай имеет место в данной реализации. Если число присутствующих посетителей меньше трех, то вновь прибывший идет к кассе для оплаты. Если нет, то переходит к этой строчке, выполняет её и вновь возвращается при помощи оператора TRANSFER к оператору GATE. Как по другому это можно реализовать я не знаю..

В любом случае ещё раз спасибо за помощь!

Добавлено через 12 минут
В целом не совсем корректно вывел кусок программы. Исправляюсь:

Code
1
2
Zanyt    ADVANCE 3.5,1.1   ; время ожидания освобождения телефона
TRANSFER ,Povtor           ; переход к оператору с меткой Povtor
Две эти строчки выполняются лишь при условии, что посетителей переговорного пункта больше трёх.
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
27.03.2013, 06:35
Ага, я понял логику которую вы реализовали. Просто условие интерпритирую по другому,
Время ожидания соединения – 3,5±1,1 мин.
ключевое мне кажется слово СОЕДИНЕНИЕ, т.е. перед тем как разговаривать по телефону (УЖЕ В КАБИНКЕ), должно установиться соединение. А вы интерпритируете как время ожидания в очереди, прежде чем повторить попытку доступа к кабинке - получается что клиент зашедший ПОЗЖЕ, может проскочить РАНЬШЕ клиента, который ждёт в очереди 3 минуты - не по честному получается, да и в РЕАЛЕ такое довольно таки редко происходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2013, 06:35
Помогаю со студенческими работами здесь

Две телефонистки на междугородней станции обслуживают общую очередь заказов. Смоделировать процесс
Две телефонистки на междугородней станции обслуживают общую очередь заказов. Очередной заказ обслуживает та телефонистка, которая первая...

Как можно заблокировать очередь и как ее очистить и терять поступающие заявки?
Уважаемый администратор Сергей, господа посетители форума! Не поможете ли разобраться с тем как можно очистить очередь и как можно ее...

Сформировать односвязную очередь из элементов, которые входят в очередь Q1, но не входят в очередь Q2
Составить программу обработки динамической структуры данных: сформировать односвязную очередь Q из элементов, которые входят в очередь Q1,...

Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете
Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете. В каждый момент времени происходит одно из событий:...

Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
Помогите пожалуйста написать очередь. Есть Температура double и ее тип int ну и нужно сделать очередь, чтобы добавляло, удаляло, читало....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru