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

Моделирование морского порта

22.03.2014, 02:39. Показов 5548. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем приветик! Надо решить задачку, а я не понимаю как, но очень хочу разобраться! Плиизз помогите решить!
А ещё лучше объяснить! Буду очень благодарна!
Всем привет! Начал изучал изучать имитационное моделирование систем массового обслуживания. Для этого необходимо уметь писать программы в среде GPSS (GPSS World). А вот с этим у меня туговато... Хотелось бы научится этому делу. В универе задали домашку. Не знаю как решить. Хотелось бы попросить помощи у тех к то уже умеет програмировать, написать программу к этой задачи:

Порт с гаванью имеет три причала: 1, 2 и 3. В любое время причал BERTH1 может принять два малых или один средний корабль. Причалы BERTH2 и BERTH3 могут каждый принять один большой, два средних или четыре малых судна.

Время между прибытиями судов в среднем составляет 26 часов, распределенных по экспоненциальному закону, а малые, средние и большие суда находятся в пропорции 5: 3: 2 соответственно. Очередь к причалам организована по принципу первый прибывший обслуживается первым за исключением того, что средние и малые суда не могут проходить к причалу, когда большое судно ожидает в очереди, а средние суда имеют более высокий приоритет по сравнению с малыми.

Время разгрузки судов распределено по экспоненциальному закону

со следующими средними временами: малые суда – 15 часов, средние суда – 30 часов и большие суда – 45 часов. Время погрузки следующее:

- малые суда 24 ± 6 часов с равномерным распределением;

- средние суда 36 ± 10 часов с равномерным распределением;

- крупные суда 56 ± 12 часов с равномерным распределением.

Задание:

1) прогоните модель за 500 дней;

2) определите распределение времени прохождения в порту для каждого типа судов;

3) определите коэффициент использования трех причалов.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2014, 02:39
Ответы с готовыми решениями:

Модель морского порта с двумя типами кораблей
Помогите пожалуйста по GPSS В порту с равномерно распределенным интервалом 20+-8 час.Появляются корабли двух типов.Корабли первого типа...

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

Моделирование работы порта
Вот такая простая задачка. НО! В программе принципиальная ошибка: после прихода судов в порт уничтожаются транзакты (суда) – получается,...

16
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
22.03.2014, 07:52
Добрый день. Советую начать знакомство с GPSS с анализа простых программок, описание которых предложено в книге Кудрявцев имитационное моделирование на gpss.

Итоговое решение задачи потребует знания базовых из книги блоков + многоканальные устройств ENTER LEAVE (каждый корабль будет занимать своё количество ресурса от порта (мест), в книге есть примеры), также нужно будет познакомиться с параметрами каждой входящей заявки (с помощью параметров можно заявке задть размер корабля и т.д. - от этого будет зависеть время обслуживания) и др. Главное начните с книги, с начала!
1
Эксперт GPSS
 Аватар для SergProgC++
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,723
22.03.2014, 10:19
Можем обсудить
0
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
22.03.2014, 16:40  [ТС]
Вот ещё одно требование:
Большие корабли могут прийти и уйти только во время прилива. Отлив длится 3 часа, прилив- 10 часов.

Добавлено через 1 минуту
А скажите, надо ли начать с блока STORAGE? Как разобратся с этой вместимостью?
0
Эксперт GPSS
 Аватар для SergProgC++
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,723
22.03.2014, 16:41
Удалено

да можно через STORAGE
0
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
22.03.2014, 17:08  [ТС]
Что-то вроде этого:
Prch1 STORAGE 1mid or 2sm
Prch2 STORAGE 1big,2mid or 4sm
Prch3 STORAGE 1big,2mid or 4sm

prch-pri4al
0
Эксперт GPSS
 Аватар для SergProgC++
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,723
22.03.2014, 17:18
это чего за я язык? в gpss так нельзя
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
22.03.2014, 17:18
Лучший ответ Сообщение было отмечено Dukalys как решение

Решение

PRIСHAL1 STORAGE 2 - ёмкость причала номер 1 = 2 малых корабля
это ёмкость многоканального устройства

в самой программе, вы используете эти места следующим образом.
например приходит средний корабль
ENTER PRICHAL1,2 - корабль требует 2 места (2 ресурса из 2 общих) от причала 1, если они свободны - он заходит в блок и идёт дальше по коду - обслуживается.

маленькие корабли будут требовать по 1 месту
ENTER PRICHAL1,1
и смогут быть вдвоём на причале. (займут 2/2 ресурса)
0
Эксперт GPSS
 Аватар для SergProgC++
552 / 411 / 105
Регистрация: 02.07.2010
Сообщений: 1,723
22.03.2014, 17:18
вы хоть одну книгу почитали?
0
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
23.03.2014, 02:46  [ТС]
Есть такая идея:
PRICHLA1 STORAGE 2
PRICHAL2 STORAGE 4
PRICHAL3 STORAGE 4
GENERATE(exponential(1,0,26))
QUEUE SMALL
ENTER PRICHAL1,1
DEPART SMALL
ADVANCE(exponential(1,0,15))
ADVANCE 26,6
LEAVE PRICHAL1
GENERATE(exponential(1,0,26))
QUEUE MIDLE
ENTER PRICHAL1,2
DEPART SMALL
ADVANCE(exponential(1,0,30))
ADVANCE 36,10
LEAVE PRICHAL1
GENERATE(exponential(1,0,26))
QUEUE BIG
ENTER PRICHA2,4
DEPART BIG
ADVANCE(exponential(1,0,45))
ADVANCE 56,12
LEAVE PRICHAL1
??
?
GENERATE 12000
START1


И как вписать пропорцию? Дать приоритет большим кораблям?? и как задать условия с приливами и отливами?
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
23.03.2014, 08:33
Используя GENERATE(exponential(1,0,26)) несколько раз, получается что корабли поступаю не 1 раз в 26 часов, а несколько раз в 26 часов что нарушет условия. должен быть 1 generate!

после этого generate вы должны назначить входящей заявке-кораблю - его размер, например 1 - будет мелкий 2- средний 3 - большой - это просто номера.
нам известны вероятности(доли) появления кораблей 5-3-2, поэтому заводим функцию которая будет нам возвращать случайный тип корабля

TIP FUNCTION RN1,D3 ; разберитесь с функциями!
0.5,1/0.8,2/1,3

теперь когда объявлена функция определения типа корабля - можем её использовать в программе сразу после generate

ASSIGN 1,FN$TIP ; в параметр№1 (P1) вошедшей заявки записываем тип корабля (1-3)
далее в программе мы знаем тип корабля и можем в зависимости от этого типа построить обслуживание.

для управления ходом заявок будем использовать блок TEST:
TEST E P1,1,SREDNII ; если P1=1 то заявка идёт ниже, иначе по метке SREDNII (метка указывается перед нужным блоком)

Дать приоритет большим кораблям
вот как раз блоком test проверяете тип корабля, и если тип = средний или какой там, то устанавливаете приоритет
PRIORITY 1
lk всех других кораблей приоритет не нужен (установлен авт.0)

Добавлено через 1 минуту
Да, и пишите комментарии к каждой строчке вашего кода - сами лучше осознаете что к чему, и нам проще вам будет подсказать где не верно думаете.
например ENTER PRICHAL1,2 ; корабль пытается встать на причал1, при этом требует 2е единицы места, если места нет, ожидает в очереди.


кстати, если разобрались с выше-описанным, то

TIP FUNCTION RN1,D3 ; разберитесь с функциями!
0.5,1/0.8,2/1,3

тип корабля 3 можно заменить на 4, тогда!!! получается полное совпадение ТИПА корабля 1,2,4 - с количеством занимаемых им мест на причале.
тогда можно будет писать ENTER PRICHAL,P1 ; напомним, что в P1 как раз лежит значение функции FN$TIP
0
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
23.03.2014, 20:50  [ТС]
А как добавить условие к этому требованию?: Большие корабли могут прийти и уйти только во время прилива. Отлив длится 3 часа, прилив- 10 часов.
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
24.03.2014, 08:35
Нужно сделать дополнительный сегмент модели, который будет функционировать параллельно во времени - короче одновременно с основным
Code Скопировано
1
2
3
4
5
6
GENERATE ,,,1  ; формируем 1у управляющую заявку
PO_NOVOI SAVEVALUE 1,0  ; сохраняемая величина X1=0 - отлив
ADVANCE 3
SAVEVALUE 1,1  ; сохраняемая величина X1=1 - прилив
ADVANCE 10   ; 10 часов
TRANSFER ,PO_NOVOI
Всё теперь в вашем основном сегменте можете с помощью блока TEST проверять значение X1
=0 - отлив и т.д.
1
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
24.03.2014, 11:33  [ТС]
а как это относится именно к большим кораблям??? Если их обозначить как 4.
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
24.03.2014, 12:54
Сначала проверяете большой ли корабль
TEST E P1,4,HE_BOLbWOI ; если P1=4 (большой), то транзакт идёт ниже по коду, иначе (если не большой корабль) в метку HE_BOLbWOI

итак, ниже идёт большой корабль - теперь необходима проверка, прилив или отлив

TEST E X1,1,HE_PRILIV ; вместо HE_PRILIV можно использовать туже метку HE_BOLbWOI если тудаже нужно отправить в случае если отлив ...
тут действие если X1=1 (прилив)



HE_BOLbWOI .... ваш код - продолжение
0
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 7
24.03.2014, 18:08  [ТС]
Пишу так:
PRICHLA1 STORAGE 2; ёмкость причала номер 1
PRICHAL2 STORAGE 4; ёмкость причала номер 2
PRICHAL3 STORAGE 4;ёмкость причала номер 3
GENERATE(exponential(1,0,26)); Прибытие кораблей
TIP FUNCTION RN1,D3; Прибытие того или иного вида корабля
0.5,1/0.8,2/1,4; вероятностные значения
ASSIGN1,FN$TIP;тип корабля
TEST EP1,1,SREDNII; определяем тип корабля
PRIORITY 4; задаём приоритет большому кораблю
PRIORITY 2,1;????? нужно задать приоритет средним по отношению к малым кораблям


Вопрос а как давать команды ENTER и LEAVE?

ENTER PRICHAL1,1; малый в первый причал
ENTER PRICHAL1,2; средний во второй причал
ENTER PRICHAL2,1;и тд
ENTER PRICHAL2,2;
ENTER PRICHAL2,4;
ENTER PRICHAL3,1;
ENTER PRICHAL3,2;
ENTER PRICHAL3,4;
0
 Аватар для Dukalys
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
24.03.2014, 21:08
TIP FUNCTION RN1,D3; Прибытие того или иного вида корабля
0.5,1/0.8,2/1,4; вероятностные значения
это же объявление функции - лучше в верх программы кинуть чтобы глаза не мозолила функция.

ASSIGN1,FN$TIP;тип корабля
TEST EP1,1,SREDNII; определяем тип корабля
пробелы!!!

PRIORITY 2,1;????? нужно задать приоритет средним по отношению к малым кораблям
с помощью TEST проверяете какой это тип и соответственно выставляете для него приоритет
PRIORITY 2 допустим

Вопрос а как давать команды ENTER и LEAVE?
А вот тут нужно осознать дисциплину выбора причала кораблём?
приходит корабль - как он выбирает причал? случайно? в определённом порядке проверяет который свободен? или тупо встаёт случайным образом в очередь??? От этого будет зависеть его ход.


И всегда - разрабатывайте простую модельку - которую можно было бы запустить и исправить на ней ошибки. модель разрастётся и вы не сможете исправить там ошибки!!!
Уже на данном этапе я рекомендую вам остановиться - поправить ошибки и запустить - разобраться с результатами моделирования - сколько куда заявок прошло и т.д. (результаты расшифровываются в Кудрявцеве).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2014, 21:08
Помогаю со студенческими работами здесь

Моделирование работы порта. Потоки прибытия и разгрузки
Извините что трачу ваще время но нужна маленькая консультация, всего 1 вопрос. Суда прибывают в гавань, и время между прибытиями,...

Моделирование работы морского порта
Ребят,столкнулась с таким проектом.Нужно реализовать,100500 раз прочитала условие,и ничего не понимаю...Кто может помочь разобраться и все...

Моделирование работы морского порта
Ребят,столкнулась с таким проектом.Нужно реализовать,100500 раз прочитала условие,и ничего не понимаю...Кто может помочь разобраться и все...

ИС мониторинг акватории морского порта
Мне нужно сделать ИС мониторинг акватории морского порта. Я в порту бывала только как пассажир. Я делаю её пока (чтобы самой понять) в MS...

Моделирование COM порта в виртуалке
Имеется устройство спроектированное еще в 90-х годах прошлого века. Там есть обмен по COM порту. Устройство проверяется и сдается с помощью...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер