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

Билетная касса железнодорожного вокзала. Моделирование СМО

13.05.2015, 21:44. Показов 3057. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться с логикой.
Условие задачи: "На железнодорожном вокзале имеется 3 кассы: 2 обычные и 1 для военных. Пассажиры появляются через каждые A±B минут. Время обслуживания в кассах зависит от обстоятельств и составляет Ck±Dk минут, где k — номер кассы. 10% пассажиров — военные, которые идут обслуживаться в военную кассу. Гражданские пассажиры обслуживаются в двух других кассах, но если военная касса пуста, то они могут обслуживаться в ней в порядке очереди. Если появляется военный, то он обслуживается вне очереди, но только в военной кассе. Проанализировать работу касс в течение 8 часов."
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
GENERATE 5,2    ; Генерация потока людей
    TRANSFER .10,ludi,vetera    ; Распределение людей на простых людей
            ; и военных
            
 ludi     ASSIGN type,1 ; Присвоение 1 типа для простых людей
    QUEUE  ludihPRIHOD  ; Постановка в очередь простых людей
    DEPART ludihPRIHOD  ; Освобождение очереди простых людей
            TRANSFER ,pri   ; Отправка простых людей к метке pri
 
 vetera   ASSIGN type,2 ; Присвоение 2 типа для военных
            QUEUE  veterahPRIHOD    ; Постановка в очередь военных
    DEPART veterahPRIHOD    ; Освобождение очереди военных
            TRANSFER ,t02   ; Отправка военных к метке t02
 
*----------------------------------------------------------------------------
* Метка распределения потока гражданских пассажиров
*----------------------------------------------------------------------------
 pri      TRANSFER ALL,t01,t02,6    ; Выбор незанятой кассы
*----------------------------------------------------------------------------
* Обслуживающие устройства
*----------------------------------------------------------------------------
* Касса 1 
*----------------------------------------------------------------------------
 t01      SEIZE       cassa1    ; Занять кассу 1
            ADVANCE     16,4    ; Обслуживание в кассе 1
            QUEUE       ludiCassa1  ; Постановка в очередь 
            DEPART      ludiCassa1  ; Освобождение очереди 
        RELEASE     cassa1  ; Освобождение кассы 1
        TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Касса 2 
*----------------------------------------------------------------------------
            SEIZE       cassa2  ; Занять кассу 2
            ADVANCE     14,3    ; Обслуживание в кассе 2
            QUEUE       ludiCassa2  ; Постановка в очередь 
            DEPART      ludiCassa2  ; Освобождение очереди 
            RELEASE     cassa2  ; Освобождение кассы 2
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Касса 3 
*----------------------------------------------------------------------------
 t02      SEIZE       cassaveteran  ; Занять кассу 3
            TEST E P$type,2,neveter ; Проверка типа
            TRANSFER    ,veter  ; Если тип не соответствует условию то 
            ; отправить к метке neveter
 neveter  PRIORITY    1 ; Установление приоритета иному типу
            QUEUE       ludiCassa3  ; Постановка в очередь 
            DEPART      ludiCassa3  ; Освобождение очереди 
            TRANSFER    ,adva   ; Отправка к метке adva
 veter    PRIORITY    2 ; Установление приоритета 2-ому типу
            QUEUE       veterans    ; Постановка в очередь
            DEPART      veterans    ; Освобождение очереди 
 adva     ADVANCE     20,4  ; Обслуживание в кассе 3
            RELEASE     cassaveteran    ; Освобождение кассы 3
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Генерация 8-ми часового рабочего дня
*----------------------------------------------------------------------------
 fin      TERMINATE 0   ; Удаление транзакта
 
            GENERATE  480   ; Генерация времени (8 часов) 
            TERMINATE 1 ; Удаление транзакта
          START     1   ; Начать с 1
второй вариант реализации модели
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    GENERATE 5,2    ; Генерация потока людей
    TRANSFER .10,ludi,vetera    ; Распределение людей на простых людей
            ; и военных
            
 ludi     ASSIGN type,1 ; Присвоение 1 типа для простых людей
    QUEUE  ludihPRIHOD  ; Постановка в очередь простых людей
    DEPART ludihPRIHOD  ; Освобождение очереди простых людей
            TRANSFER ,pri   ; Отправка простых людей к метке pri
 
 vetera   ASSIGN type,2 ; Присвоение 2 типа для военных
            QUEUE  veterahPRIHOD    ; Постановка в очередь военных
    DEPART veterahPRIHOD    ; Освобождение очереди военных
            TRANSFER ,t02   ; Отправка военных к метке t02
 
*----------------------------------------------------------------------------
* Метка pri
*----------------------------------------------------------------------------
 pri      TRANSFER ALL,t01,t02,6    ; Выбор незанятой кассы
*----------------------------------------------------------------------------
 t01      SEIZE       cassa1    ; Занять кассу 1
            ADVANCE     16,4    ; Обслуживание в кассе 1
            QUEUE       ludiCassa1  ; Постановка в очередь 
            DEPART      ludiCassa1  ; Освобождение очереди 
        RELEASE     cassa1  ; Освобождение кассы 1
        TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
            SEIZE       cassa2  ; Занять кассу 2
            ADVANCE     14,3    ; Обслуживание в кассе 2
            QUEUE       ludiCassa2  ; Постановка в очередь 
            DEPART      ludiCassa2  ; Освобождение очереди 
            RELEASE     cassa2  ; Освобождение кассы 2
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
 t02      TEST E P$type,2,neveter   ; Проверка типа
            TRANSFER    ,veter  ; Если тип не соответсвует условию то 
            ; отправить к метке neveter
 neveter  PRIORITY    1 ; Установление приоритета иному типу
            QUEUE       ludiCassa3  ; Постановка в очередь 
            DEPART      ludiCassa3  ; Освобождение очереди 
            TRANSFER    ,adva   ; Отправка к метке adva
 veter    PRIORITY    2 ; Установление приоритета 2-ому типу
            QUEUE       veterans    ; Постановка в очередь
            DEPART      veterans    ; Освобождение очереди 
 adva     QUEUE       ochered3
    SEIZE       cassaveteran    ; Занять кассу 3
    DEPART      ochered3
    ADVANCE     20,4    ; Обслуживание в кассе 3
            RELEASE     cassaveteran    ; Освобождение кассы 3
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
 
 fin      TERMINATE 0   ; Удаление транзакта
 
            GENERATE  480   ; 
            TERMINATE 1 ;
            START     1 ;
Отличие кода в работе 3 кассы. По моему мнению, в работе 3 кассы не учитывается приоритет (по 1 варианту кода).
Возникает вопрос, а правильно ли начинает работать блок "pri TRANSFER ALL,t01,t02,6 ; Выбор незанятой кассы"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2015, 21:44
Ответы с готовыми решениями:

Система массового обслуживания - билетная касса с тремя окошками
Проблема такая. Написал код на GPSS. Вроде бы всё правильно но в отчете получается ср. длина очередей 0.066 для каждой из трех. В теории...

Билетная касса
Помогите с простенькой с задачей.Мне нужно,чтобы значение переменных film и cinema выводилось в "".Вывод должен выглядеть так: ...

Реализовать автоматизированную информационную систему железнодорожного вокзала (динамические структуры данных)
Задание работы: Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего...

2
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
14.05.2015, 08:04
Два подвоха, которые я здесь вижу
1.
Гражданские пассажиры обслуживаются в двух других кассах, но если военная касса пуста, то они могут обслуживаться в ней в порядке очереди.
Это скорее всего означает, что если в очереди 1 есть 1 чел, в очереди2 есть 1 чел (например), а тут БАЦ и касса ветеранов обслужилась !!! Первый чел, который ждёт в очереди к кассе 1 или 2, он идёт на обслуживание в военную.

2.
Если появляется военный, то он обслуживается вне очереди, но только в военной кассе.
Вне очереди, то есть у военного не относительный приоритет? а Абсолютный? раз он без очереди. значит нужны прерывания по приоритету PREEMPT - RETURN (вместо SEIZE RELEASE).

Добавлено через 2 минуты
Хотя возможно это заведомое усложнение модели.

Цитата Сообщение от asheulov_t Посмотреть сообщение
"pri TRANSFER ALL,t01,t02,6 ; Выбор незанятой кассы"
Нормально работает.
0
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 2
14.05.2015, 17:23  [ТС]
Да, вчера еще разобрался. Обе модели не учитывают прибытие военных (не учитывается не приоритет, и ветераны не идут без очереди а ожидают (в TRANSFER)).
Вот адекватная модель (по-моему мнению конечно ):
P.S. Ну и подсчет статистики ведется по-человечески а не через QUEUE-DEPART
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
    GENERATE 5,2    ; Генерация потока людей
    SAVEVALUE Passajiri+,1  ; Подсчет пассажиров
    TRANSFER .10,ludi,voennie   ; Распределение людей на гражданских
            ; и военных
            
 ludi     ASSIGN type,1 ; Присвоение 1 типа для простых людей
    SAVEVALUE Grajdanskie+,1    ; Подсчет гражданских пассажиров
    PRIORITY 1  ; Установка приоритета
            TRANSFER ,pri   ; Отправка простых людей к метке pri
 
 voennie  ASSIGN type,2 ; Присвоение 2 типа для военных
          SAVEVALUE Voennie+,1  ; Подсчет военных пассажиров
    PRIORITY 2  ; Установка приоритета
            TRANSFER ,t02   ; Отправка военных к метке t02
 
*----------------------------------------------------------------------------
* Метка распределения потока гражданских пассажиров
*----------------------------------------------------------------------------
 pri      TRANSFER ALL,t01,t02,5    ; Выбор незанятой кассы
*----------------------------------------------------------------------------
* Обслуживающие устройства
*----------------------------------------------------------------------------
* Касса 1 
*----------------------------------------------------------------------------
t01       SEIZE       cassa1    ; Занять кассу 1
            ADVANCE     16,4    ; Обслуживание в кассе 1
            SAVEVALUE   Cassa1+,1   ; Подсчет обслуженных пассажиров в кассе 1
        RELEASE     cassa1  ; Освобождение кассы 1
        TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Касса 2 
*----------------------------------------------------------------------------
            SEIZE       cassa2  ; Занять кассу 2
            ADVANCE     14,3    ; Обслуживание в кассе 2
          SAVEVALUE   Cassa2+,1 ; Подсчет обслуженных пассажиров в кассе 2
            RELEASE     cassa2  ; Освобождение кассы 2
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Касса 3 
*----------------------------------------------------------------------------
t02       TEST E P$type,2,nevoennie ; Проверка типа
    
    PREEMPT       cassavoennie  ; Захват кассы 3
    ADVANCE     20,4    ; Обслуживание в кассе 3
    RETURN        cassavoennie  ; Восстановить работу кассы 3
    SAVEVALUE   Cassa3Voenie+,1; Подсчет обслуженных гражданских в кассе 3
    TRANSFER    ,fin    ; Отправка к метке fin            
 
nevoennie SEIZE       cassavoennie  ; Занять кассу 3
    SAVEVALUE   Cassa3Grajd+,1  ; Подсчет обслуженных военных в кассе 3
            ADVANCE     20,4    ; Обслуживание в кассе 3
            RELEASE     cassavoennie    ; Освобождение кассы 3
            TRANSFER    ,fin    ; Отправка к метке fin
*----------------------------------------------------------------------------
* Генерация 8-ми часового рабочего дня
*----------------------------------------------------------------------------
 fin      TERMINATE 0   ; Удаление транзакта
 
            GENERATE  480   ; Генерация времени (8 часов) 
            TERMINATE 1 ; Удаление транзакта
          START     1   ; Начать с 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2015, 17:23
Помогаю со студенческими работами здесь

Составить схему (сначала только схему) информационной системы железнодорожного вокзала
Доброго времени суток!!! :) суть вот в чем: мне нужно составить схему(сначала только схему) информационной системы железнодорожного...

Моделирование СМО
Доброго времени суток,я в ступоре...есть условие казалось бы легкое...4 генератора создают заявки с (интервалами)...

Моделирование СМО
#include<stdio.h> // Функции потокового ввода - вывода #include<conio.h> // Формирование экракна ...

Моделирование СМО
Смотрел другие форумы НО ни че не получается((( У меня( Помогите! Заявки поступают в систему массового обслуживания через...

Моделирование СМО
Моделирую такую систему(смотри вложение). Но при симуляции на каждом этапе there are no transactions . Плохо знаком с gpss, не могу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru