Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > GPSS > GPSS |
Автор: Ura2007 06.10.08, 19:23 |
Помогите понять что делает программа.Все команды я понимаю но что сам листинг делает не могу понять. Заранее спасибо за любую помощь!!! |
Автор: TEMENb 06.10.08, 20:36 |
ну эм.. ты имел ввиду листинг или линкинг? если линкинг, то он тама не такой, как скажем в паскале или сях. каждій транзакт движеться индивидуально. т.е. в каждый новый момент времени кажый транзакт проверяет че ему делать дальше. стоять ждать или ити в след блок. как проводиться листинг в жпсс/рс я незнаю. В жпсс/в он проводиться след образом - 1. запускаешь симуляцию, получаешь отчет. 2. клацаешь в главной панели window-> simulation window ->bloks window 3. нажимаешь ctrl+alt+r и быстренько жмешь на кнопочку Halt 4. потом нажимая на кнопочку step можешь смотреть как движуться транзакты прошу заметить, при нажатии на step происходит одно ПЕРЕМЕЩЕНИЕ транзакта от блока к блоку, а вовсе не истечение одной ЕМВ. как меняються ЕМВ прийдеться смотреть в окошке Jornal теперь касаемо программы.... ОХ И НАС№#АЛ =))) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> fun FUNCTION RN1,C13 0,0/0.1,0.104/0.2,0.222/0.3,0.357/0.4,0.511/0.5,0.693/ 0.6,0.915/0.7,1.304/0.8,1.610/0.9,2.303/0.97,3.507/ 0.995,5.298/0.999,7 tab TABLE Mp1,0,60,50 ;незнаю что имел ввиду автор - сделал время пребывания транзакта в системе var1 VARIABLE 3600/X1 var2 VARIABLE 60#X2 GENERATE V$var1,FN$fun mark 1 ;запомнил текущее внемя в первом транзакте QUEUE 1 SEIZE 1 DEPART 1 ADVANCE V$var2,FN$fun RELEASE 1 TABULATE tab TERMINATE 1 INITIAL X1,20 INITIAL X2,1 START 10000 програмку подредактировал в жпсс/в (симулейт и енд лишние) МР1 - разницца между текущим временем и тем, что лежит в первом параметре транзакта (МР2 - во втором, MP$param - в параметре, заданном символьным именем param (блок марк тогда выглядит так - "mark param")) Видишь ли, числовые имена не всегда применимы, а если тебе надо именно числовые имена, то надо делать так.. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> var2 VARIABLE 60#X2 var2 equ 1 и тогда можешь смело обращаться к переменной V1 вовторых символ $ ставиться перед символьным именем, а если используеться числовое имя, то оно пишеться слитно с СЧА. движемся дальше... если ты прокрутишь страничку в самый верх - ты увидишь красный восклиццательный знак возле ссылки GPSS (ru). Очень рекомендую. Если препод деревянный, если хоть дырку ему в голове пропили, а ему надо именно в жпсс/рс, то 1. проставь нумерацию строк как в бейсике 2. ни в коему случае не пользуйся кнопочкой Tab. Форматирование бесспорно получаеться красивое, вот только интерпритатор понимает табулятор как неизвестный символ и выдает ошибку. фух, вроде все ) |
Автор: Ura2007 07.10.08, 10:38 |
Спасибо за объяснения! Начинаю больше понимать! Не знаю где в листинге найти статистические данные о прохождении транзактами блоков модели и не очень понимаю что выдается в некоторых таблицах? Насколько я понял транзакты это абстрактные подвижные элементы,которые могут моделировать различные объекты реального мира. |
Автор: TEMENb 07.10.08, 10:46 |
ну если взять на примере пункта обмена валют, то кассир - это устройство (2 кассира - двухканальное МКУ) человке - это транзакт (каждые N минут заходит в дверь) занимает устройство, юзает его в течении какого то времени, а потом двигает снова в дверь. На его место движет следующий чел.. не совсем понимаю какие именно данные ты ищешь. посути ВСЕ данные отчета показывают статистику движения транзактов по модели ![]() а данные таблиц описаны все на том же ресурсе, выделенном красным восклиццательным знаком. |
Автор: Ura2007 07.10.08, 10:47 |
Закоментировал таблицу не знаю правильно или нет. |
Автор: TEMENb 07.10.08, 10:52 |
TOTAL ENTRIES - всего входов в очередь ZERO ENTRIES - нулевыых входов а так вроде ничего больше слух не режет. |
Автор: Ura2007 07.10.08, 10:58 |
Спасибо! на Gpss.ru в каком разделе можно посмотреть данные таблиц? Мскал пока не нвшёл! |
Автор: TEMENb 07.10.08, 11:06 |
Отчет об эксперименте ссылка с правой стороны - последняя в разделе "документация по OPEN GPSS" Там 4 страниццы (счетчик страниц справа сверху) - сходу хрен увидишь. |
Автор: Ura2007 07.10.08, 12:19 |
Там не все параметры есть.Скажем для последней таблицы почти нету. |
Автор: TEMENb 07.10.08, 12:36 |
там есть абсолютно все параметры. листай страниццы. на вторй страницце начанаються и на третьей заканчиваеться описалово статистики по таблиццам Информация о сохраняемых величинах (SAVEVALUE) - в самом начале четвертой страниццы |
Автор: Ura2007 07.10.08, 19:59 |
Появилось нескоко вопросов. 1)Что значит абсолютное и относительное время (где 1851099). 2) почему в BLOCK COUNTS в 1 блоке 10001 а в остальных 10000. 3) Что означает это строка не нашёл описание параметров TABLE M$1,0,60,50 Заранее огромное спасибо за то что помогаешь!!! |
Автор: TEMENb 08.10.08, 07:55 |
Цитата 1)Что значит абсолютное и относительное время (где 1851099). абсолютное время - время существования модели (AC1), относительно - время существования транзакта (получаем блоком MARK) Цитата 2) почему в BLOCK COUNTS в 1 блоке 10001 а в остальных 10000. в блоке побывало 10001 транзакт, в момент завершения моделирования в блоке остался 1 транзакт. соответственно в остальных побывало 10000 транзактов. Цитата 3) Что означает это строка не нашёл описание параметров TABLE M$1,0,60,50 плохо искал Оператор определения TABLE Что означает M$1 - понятия не имею Цитата MPj Значение времени, равное разности абсолютного модельного времени и содержимого j-го параметра текущего транзакта. MBj Флаг синхронизации: 1, если транзакт в блоке j принадлежит тому же семейству, что и текущий транзакт; 0 - в противном случае. SMj Максимальное содержимое многоканального устройства j. QMj Максимальная длина очереди j. MXj(a,b) Содержимое элемента матрицы ячеек j, расположенного в строке a, столбце b. вот все СЧА, с буквой М. Выбирай сам. |
Автор: Ura2007 08.10.08, 08:03 |
Понятно спасибо большущее!!! А в чем оно измеряется 1851099 это в микросекундах. "в блоке побывало 10001 транзакт, в момент завершения моделирования в блоке остался 1 транзакт. соответственно в остальных побывало 10000 транзактов." Почему же тогда 10001 не в псоледнем блоке не пойму. |
Автор: TEMENb 08.10.08, 08:18 |
Цитата А в чем оно измеряется 1851099 это в микросекундах. В единиццах модельного времени. А там уже приравнивай как хочешь. хочешь 1 ЕМД будет секундой, хочешь - часом. Обычно за ЕМД берут самый маленький рассматриваемвы интервал времени. Цитата "в блоке побывало 10001 транзакт, в момент завершения моделирования в блоке остался 1 транзакт. соответственно в остальных побывало 10000 транзактов." Почему же тогда 10001 не в псоледнем блоке не пойму. транзакт идет последовательно от первого блока к последнему движение транзакта появился транзакт Цитата 1 блок 1 1 2 блок 0 0 3 блок 0 0 перешел к след блоку Цитата 1 блок 1 0 2 блок 1 1 3 блок 0 0 перешел к след блоку (и его там задержали) Цитата 1 блок 1 0 2 блок 1 0 3 блок 1 1 появился новый транзакт Цитата 1 блок 2 1 2 блок 1 0 3 блок 1 1 новый транзакт перешел к след блоку Цитата 1 блок 2 0 2 блок 2 1 3 блок 1 1 первый столбец показывает сколько транзактов побывало в блоке, а второй - сколько транзактов находиться в блоке в данный момент времени. |
Автор: Ura2007 08.10.08, 08:21 |
Еще раз спасибо за объяснение.Теперь вроде понял! |
Автор: dazhdbog 09.10.08, 06:12 |
На сборочный участок цеха предприятия через 10 ± 4 минут поступают партии, каждая из которых состоит из трех деталей. Половина всех поступающих деталей перед сборкой должна пройти предварительную обработку в течение 7 ± 3 минуты. На сборку поступают обработанная и необработанная детали. Процесс сборки занимает 6 ± 2 минут. Смоделировать работу производственного участка в течение 8 часов. вот до чего я дошел только не знаю правильно ли исходя из логики языка. GENERATE 10,4 ; генерируем транзакт SPLIT 3,PARTY ; создаем партию из трех транзактов TERMINATE ; уничтожаем транзакт PARTY TRANSFER 0.5,OBR,SBOR ; половину на обработку OBR QUEUE que_obr ; занятие очереди перед обработкой SEIZE obr1 ; занятие обработки DEPART que_obr ; очищение очереди перед обработкой ADVANCE 7,3 ; обработка RELEASE obr1 ; очищение бработки TRANSFER ,SBOR ; отправление на сборку SBOR QUEUE que_sbor ; занятие очереди перед сборкой ASSEMBLE 2 ; соединение двух транзактов SEIZE sbor1 ; занятие сборки DEPART que_sbor ; очищение очереди перед сборкой ADVANCE 6,2 ; сборка RELEASE sbor1 ; очищение сборки TERMINATE ; уничтожение транзактов GENERATE 480 ; 480 транзактов 8*60=480 TERMINATE 1 ; уничтожаем по одному |
Автор: TEMENb 09.10.08, 06:48 |
а у меня получилось вот что <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;На сборочный участок цеха предприятия через 10±4 минут поступают партии, каждая из которых состоит из трех деталей. ;Половина всех поступающих деталей перед сборкой должна пройти предварительную обработку в течение 7±3 минуты. ;На сборку поступают обработанная и необработанная детали. Процесс сборки занимает 6±2 минут. ;Смоделировать работу производственного участка в течение 8 часов. ;------------------------------------; SBOR STORAGE 2 ; ;------------------------------------; GENERATE ,,,1 ;геним транзакт MET1 ADVANCE 10,4 ;задержка генерации на 10+-4 мин SPLIT 3,MET2 ;клоним 3 транзакта, отправляем их на метку TRANSFER ,MET1 ;отправляем родителя на метку MET2 TRANSFER .5,MET3 ;половину пропускаем, половину отправляем на метку QUEUE OCH1 ;занять очередь 1 SEIZE PREDV ;первичная обработка DEPART OCH1 ;покинуть очередь ADVANCE 7,3 ;задержка на время обработки RELEASE PREDV ;покинуть первичную обработку MET5 MATCH MET3 ;ждать, пока в MET3 прийдет транзакт TRANSFER ,MET4 ;перейти на метку MET3 MATCH MET5 ;ждать, пока в MET5 прийдет транзакт MET4 QUEUE OCH2 ;занять очередь 2 ENTER SBOR ;занять устройство сборки DEPART OCH2 ;покинуть очередь 2 ASSEMBLE 2 ;собрать из двух деталей одну ADVANCE 6,2 ;Задержка на время обработки LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. TERMINATE ;транзакт покидает систему ;------------------------------------; GENERATE (8#60) ;геним транзакт через 8 часов TERMINATE 1 ;из счетчика завершений вычитаем 1 ;------------------------------------; START 1 ; ;------------------------------------; щя гляну-покритикую твое решение )) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;------------------------------------; GENERATE 10,4 ; SPLIT 3,PARTY ;Если генить транзакты таким образом, то они будут из разных семейств => соединяться асемблом не будут TERMINATE ; ;------------------------------------; PARTY TRANSFER 0.5,OBR,SBOR ; OBR QUEUE que_obr ;Желательно, что б имена были не длиннее 5 символов, хотя это не пренципиально SEIZE obr1 ; DEPART que_obr ; ADVANCE 7,3 ; RELEASE obr1 ; TRANSFER ,SBOR ; SBOR QUEUE que_sbor ; ASSEMBLE 2 ;необходимо различать транзакты, какие проходили первичную обработку, а какие нет. иначе будешь склеивать два, которые не проходили первичную, пока третий будет на первичной обработке SEIZE sbor1 ;не пренципиально, но сборка предполагаеться внутри устройства, хотя так тоже можно. DEPART que_sbor ; ADVANCE 6,2 ; RELEASE sbor1 ; TERMINATE ; ;------------------------------------; GENERATE 480 ; TERMINATE 1 ; ;------------------------------------; start 1 ; ;------------------------------------; |
Автор: dazhdbog 09.10.08, 06:58 |
спасибо но ведь они соединялись только действительно там были одни обработанные и необработанные детали, просто в методе про match ничего небыло, и принцип его я чет не догоняю, можно на пальцах объяснить а что он собственно делает |
Автор: TEMENb 09.10.08, 10:30 |
Вырезка из отчета Цитата SBOR 11 QUEUE 139 0 0 12 ASSEMBLE 139 45 0 13 SEIZE 47 0 0 Хорошенькое соединялись. на момент окончания моделирвоания в блоке асембл зависло 45 транзактов из 139. Это треть от всех транзактов, побывавших в модели. Т.е. как я и говорил - два транзакта из партии склеились, а третьему склеиваться нескем, ибо транзактов его семейства в модели больше не осталось. Если увеличишь время моделирования скажем раз в 10.. или 100, то увидишь, что асембл стабильно задерживает ровно треть транзактов. Только ненадо думать, что сборка обрабатывать не успевает. у сборки загрузенность 61%, это почти две трети от идеала. Блок Асембл клеит не все транзакты, а только те, которые пренадлежат к одному семейству. Если на пальцах - транзакты одного семейства - это те, у которых один родитель (самый простой вариант) Как видишь в моем варианте модели все транзакты модели одного семейтсва (один родитель генит все транзакты), а в товем каждая новая партия - новое семейство (из дженерейта выходит новый родитель, к предыдущему транзакту никакого отношения не имеющий). Блок MATCH - синхронизирует два транзакта ОДНОГО семейтсва. В его параметр ложится метка на другой блок MATCH, с которым он синхронизируеться. т.е. транзакт приходит в блок MATCH и ждет, пока в другой блок MATCH прийдет транзакт ТОГО ЖЕ семейства. Когда такой приходит - они оба одновременно покидают блоки MATCH. В данном случае так работают оба блока MATCH, поскольку завязаны друг на друга. Подробнее тут - Блок MATCH, Семейства транзактов З.Ы.: "Полезные ссылки" читать надо. Вверху страниццы выделено красным восклиццательным знаком. |
Автор: TEMENb 10.10.08, 19:36 |
я тут мозгами пораскинул на досуге.. то что я написал раньше - туфта. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;------------------------------------; SBOR STORAGE 2 ; ;------------------------------------; GENERATE ,,,1 ;геним транзакт MET1 ADVANCE 10,4 ;задержка генерации на 10+-4 мин SPLIT 3,MET2 ;клоним 3 транзакта, отправляем их на метку TRANSFER ,MET1 ;отправляем родителя на метку MET2 TRANSFER .5,MET3 ;половину пропускаем, половину отправляем на метку QUEUE OCH1 ;занять очередь 1 SEIZE PREDV ;первичная обработка DEPART OCH1 ;покинуть очередь ADVANCE 7,3 ;задержка на время обработки RELEASE PREDV ;покинуть первичную обработку QUEUE OCH2 ;занять очередь 2 LINK 2,FIFO ;ПОСТАВИТЬ В 2-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET3 QUEUE OCH2 ;занять очередь 2 LINK 1,FIFO ;ПОСТАВИТЬ В 1-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET4 ENTER SBOR ;занять устройство сборки DEPART OCH2 ;покинуть очередь 2 ASSEMBLE 2 ;собрать из двух деталей одну ADVANCE 6,2 ;Задержка на время обработки LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. TERMINATE ;транзакт покидает систему ;------------------------------------; GENERATE ,,,1 ;геним POVT TEST G CH1,0 ;если первый список пользователя больше нуля, то дальше TEST G CH2,0 ;если второй список пользователя больше нуля, то дальше UNLINK 1,MET4,1 ;отправить из 1-го списка пользователя на метку МЕТ4 один транзакт UNLINK 2,MET4,1 ;отправить из 2-го списка пользователя на метку МЕТ4 один транзакт TRANSFER ,POVT ;перейти на метку ;------------------------------------; GENERATE (8#60) ;геним транзакт через 8 часов TERMINATE 1 ;из счетчика завершений вычитаем 1 ;------------------------------------; START 1 ; ;------------------------------------; вот так должно быть. в предыдущем варианте синхронизация не обеспечивала условие, что склеятся именно обработанный с необработанным. Если к примеру через синхронизацию прошло две пары транзактов, то может склеяться два обработанных, а потом два необработанных. хотя на самом деле это вопрос спорный, ибо в очереди действует дисциплина обслуживания ФИФО, первый пришел-первый обслужился, а поскольку синхронизируемые пары транзактов имеют одинаковое время, а пришедшие после пары - другое отличное время.. короче склеиваться должны только пары, которые синхронизировались блоком матч. |
Автор: Ura2007 11.10.08, 18:59 |
Поставил gpss world попробовал сделать то что ты передевылал для меня.Так вот во время симуляции на 2 пункте описания которое ты писал у меня зависает программа.Не знаю в чём дело.Может я что то неправильно делаю! |
Автор: TEMENb 11.10.08, 19:13 |
всмысле на втором пункте? что пишет? |
Автор: Ura2007 11.10.08, 19:18 |
Вот сам листинг который ты писал я его вбил в gpss/world fun FUNCTION RN1,C13 0,0/0.1,0.104/0.2,0.222/0.3,0.357/0.4,0.511/0.5,0.693/ 0.6,0.915/0.7,1.304/0.8,1.610/0.9,2.303/0.97,3.507/ 0.995,5.298/0.999,7 tab TABLE Mp1,0,60,50 ;незнаю что имел ввиду автор - сделал время пребывания транзакта в системе var1 VARIABLE 3600/X1 var2 VARIABLE 60#X2 GENERATE V$var1,FN$fun mark 1 ;запомнил текущее внемя в первом транзакте QUEUE 1 SEIZE 1 DEPART 1 ADVANCE V$var2,FN$fun RELEASE 1 TABULATE tab TERMINATE 1 INITIAL X1,20 INITIAL X2,1 START 10000 В жпсс/в он проводиться след образом - 1. запускаешь симуляцию, получаешь отчет. 2. клацаешь в главной панели window-> simulation window ->bloks window 3. нажимаешь ctrl+alt+r и быстренько жмешь на кнопочку Halt 4. потом нажимая на кнопочку step можешь смотреть как движуться транзакты Так вот после запуска симуляции в панели window программа зависает и выходит. |
Автор: TEMENb 11.10.08, 19:19 |
1. выделяешь текст программы. 2. создаешь текстовый файл 3. кидаешь в него текст программы. 4. стираешь, если там моявилось что то лишнее 5. копируешь текст из блокнота 6. запускаешь ЖПСС 7. копируешь туда текст 8. запускаешь 9. радуешья )) |
Автор: TEMENb 11.10.08, 19:30 |
Цитата Ura2007 @ В жпсс/в он проводиться след образом - 1. запускаешь симуляцию, получаешь отчет. 2. клацаешь в главной панели window-> simulation window ->bloks window 3. нажимаешь ctrl+alt+r и быстренько жмешь на кнопочку Halt 4. потом нажимая на кнопочку step можешь смотреть как движуться транзакты Это если ты хочешь по шагу посмотреть как транзакты движуться.. зачем тебе это? =) -Added Цитата Ura2007 @ Окей,спасибо попробую так! Добавлено быстренько жмешь на кнопочку Halt Это какая кнопка? Где её найти? 2. клацаешь в главной панели window-> simulation window ->bloks window в этом окошке |
Автор: Ura2007 11.10.08, 19:31 |
Всё нормально теперь всё ок.Заработало. |
Автор: TEMENb 11.10.08, 19:36 |
чет не отсылается письмо. давай я тебе по аське перекину |
Автор: Ura2007 11.10.08, 19:36 |
Кстати вот эта функция зачем нужна в программе это точки для графика какого-то распределения? fun FUNCTION RN1,C13 0,0/0.1,0.104/0.2,0.222/0.3,0.357/0.4,0.511/0.5,0.693/ 0.6,0.915/0.7,1.304/0.8,1.610/0.9,2.303/0.97,3.507/ 0.995,5.298/0.999,7 Добавлено Можно залить сюда http://webfile.ru/ я скачаю по ссылке которую тебе дадут |
Автор: TEMENb 11.10.08, 19:57 |
да откуда ж я знаю зачем она нужна? распредиление какое то, в блоке адванс. как то задержка колебаеться в зависимости от значений функции. |
Автор: TEMENb 11.10.08, 22:01 |
пдэфник боева и киев жпсс - оч советую. остальное так.. можно посмотреть rapidshar.come зеркало ifolder.ru зеркало webfile.ru зеркало sharemania.ru |
Автор: artyomst 10.11.08, 18:40 |
из другой темы Цитата Но лучше для этих целей использовать параметры транзакта. Т.к. в этой задаче у вас один транзакт (пакет), а реально в сети их дофига. Маркер должен быть у каждого свой. GENERATE ,,,1 ASSIGN MARKER,1 SMET ASSIGN MARKER+,1 TEST G P$MARKER,5,SMET TERMINATE 1 START 1 и не забудьте звездочку перед терминейт убрать. ато ошибочка малость вылетит. Кроме того, вы задаете значение переменной сразу после генерации транзакта. вообщем то инициализация переменной становиться лишней Дальше.. какой смысл ждать единиццу времени перед генерацией? =) Ждать единицу не нужно, это я так пытаюсь найти причины неработоспособности модели любыми способами. Наверно всё же variable использовать, т к рассказываю смысл задачи: Есть 10 компьютеров и 1 сервер, они объединены в сеть Token Ring. Работает токен ринг так: на всю сеть имеется 1 маркер, он переходит поочередно от одного компа к другому. Компьютер может посылать данные другому комьютеру только в тот момент когда получил маркер, когда он его получил он его преобразует немного, прицепляет данные и передает следующему компьютеру этот кадр, слад компьютер получает и проверяет свой адрес с адресом в кадре, если пододит, то он копирует данные и помечает маркер о копировании, дальше его отправляет следующему компьютеру и т д пока кадр не вернется отправителю, как вернулся так отправитель освобождает маркер и посылает след компу. Вот надо модель сделать, я почти 1ый раз вижу этот ГПСС, а лабораторная по Сетям, а задание сложнее чем на курсовую по Моделированию Систем на ГПСС. Кто чем может помогите, модель должна быть не сложная, но нужно, чтобы присутствовали ошибки в сети - сломался компьютер. Время хранения маркера у одного компьютера не больше 10мс, а посылаемый пакет не болльше 18кбайт |
Автор: TEMENb 11.11.08, 07:41 |
variable - это вычисляемое выражение... Вам же нужна сохраняемая величина (я б сказал переменная, но это вводит в заблуждение))) теперь касаемо вашей задачи <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE ,,,1 SAVAVALUE MARKER,1 SMET SAVEVALUE MARKER+,1 TEST G X$MARKER,5,SMET TERMINATE 1 START 1 следующий момент. это ж получается так, что маркер обходит 5 компов и покидает систему. Разве так должно быть? может вам надо что то типа <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE ,,,1 SAVAVALUE MARKER,1 SMET SAVEVALUE MARKER,((X$MARKER @ 5)+1) ; (остаток от деления на 5) плюс 1 ADVANCE 1 ; что бы снова не зациклиться TRANSFER ,SMET GENERATE 1000000 ;моделируем 1 секунду (если за единиццу модельного времени принять 1 мкс) TERMINATE 1 START 1 собственно получается, что маркер последовательно принимает значения от 1 до 5. дальше. Адрес получателя и адреса отправлителя надо записывать в параметр транзакта. что соответствует действительности. Ведь адрес несет пакет. Вообщем пишите, пробуйте, а будут вопросы - мы подскажем. Это лаба? 0.о Я думал дипломик... |
Автор: Eugen 11.11.08, 17:52 |
Цитата artyomst @ Есть 10 компьютеров и 1 сервер, они объединены в сеть Token Ring. Работает токен ринг так: на всю сеть имеется 1 маркер, он переходит поочередно от одного компа к другому. Если перевести, то получается следующее: 1. скорость сети к примеру 10 мб/с 2. пакеты не более 18кбайт 3. компьютер, обладающий маркером, отправляет пакеты в течении ~10мс 4. каждый пакет содержит адрес компа получателя 5. комп получивший пакет проверяет адреса и при совпадении, помечает пакет как скопированный Процедура передачи маркера на другой комп: 6. определить адрес кандидата на получение маркера управления сетью 7. комп обладающий маркером создает спец. пакет и помечает в него адрес компа-кандидата к которому должен перейти маркер 8. также как и в пункте 5 9. комп обладающий маркером проверяет вернувшийся пакет и если кандидат на получение маркера "отметился" в нем, то передает ему (кандидату) управление сетью. Иначе пункт 7. Кандидата на получение маркера, мож. определить множеством способов: а. сосед слева/справа б. случайно выбранный комп. и усложнения в. с использованием служебной инфы. в каждом сообщении: о работоспособности компа; о том сколько он хочет передать; о его приоритете; о времени выставления заявки на получение маркера и т.п. +тут нужно задать интенсивность поломок и время восстановления. Определить тип поломки: комп не обрабатывает пакеты адресованные ему или вообще не пропускает пакеты и сеть встала Сервер - что это? И снова 2 варианта: ПЕРВЫЙ ВТОРОЙ GPSS задача (20-60$ от реализации) |
Автор: MEGERA 17.11.08, 08:38 |
Ребят! Помогите советом! Задача: В цех сборки поступает три типа деталей: детали первого типа с интервалом 20+-3 минут, детали второго типа с интервалом 16+-5 минут, детали третьего типа с интервалом 20 минут. Как только сборщик получает 3 детали любого типа, он может собрать продукт, что отнимает у него 5 минут. Процент брака на выходе - 15%. Если готовый продукт был поврежден один раз, то он отправляеся на переработку сборщику, если во второй - то в отходы, утилизация которых происходит каждые 10 минут. Небракованый продукт поступает к упаковщику, который может упаковать 5 продуктов за 5 минут. И вот тут проблема: когда деталь идет на переработку в 1 раз или бракуется 2 раз, нужно назначить переменную, скорее всего, которая будет определять, отправлялась ли деталь уже на повторную сборку или пришла только в первый раз. Не знаю, как это организовать... GENERATE ,,,1 SPLIT 1,MM1 SPLIT 1,MM2 SPLIT 1,MM3 MM1 ADVANCE 20,3 \\ детали первого типа SPLIT 1,MM1 TRANSFER ,MET MM2 ADVANCE 16,5 \\ детали второго типа SPLIT 1,MM2 TRANSFER ,MET MM3 ADVANCE 20 \\ детали третьего типа SPLIT 1,MM3 TRANSFER ,MET MET ASSEMBLE 3 \\ сборка 3 деталей QUEUE OCHER1 \\встать в очередь MET3 SEIZE WORKER \\ занять сборщика DEPART OCHER1 \\ покинуть очередь ADVANCE 5 \\ сборка идет минут RELEASE WORKER \\ освободить ресурс TRANSFER 0.15,MET1,MET2 \\ в 15% случаев отправиться по дресу MET2, в 85% - по адресу MET1 MET1 GATHER 5 \\ собрать 5 членов ансамбля QUEUE OCHER2 \\ встать в очередь SEIZE PACKER \\ занять упаковшика DEPART OCHER2 \\ выйти из очереди ADVANCE 5 \\ процесс упаковки длится 5 минут RELEASE PACKER \\ освободить ресурс MET3 PREEMPT WORKER ADVANCE 5 RETURN WORKER TRANSFER ,MET4 MET2 ASSIGN QUANTITY,2 LOOP QUANTITY,MET3 \\в случае, если брак выявлен в 1 раз, направиться в блок MET3, т.е. на повторную сборку, вот здесь, наверно, должно быть что-то типа SAVEVALUE и TEST, но я смутно представляю, как задать условие... QUEUE OCHER3 \\ после второго раза выявления брака пойти в отходы SEIZE WASTES DEPART OCHER3 ADVANCE 10 RELEASE WASTES TERMINATE GENERATE (8#60) TERMINATE 1 START 1 // TEMENb, у тебя был ряд претензий по этой задаче ))) выкладывай! а то так и не научусь задачи нормально решать ))) |
Автор: TEMENb 17.11.08, 09:08 |
Цитата GENERATE ,,,1 SPLIT 1,MM1 SPLIT 1,MM2 SPLIT 1,MM3 MM1 ADVANCE 20,3 \\ детали первого типа SPLIT 1,MM1 TRANSFER ,MET MM2 ADVANCE 16,5 \\ детали второго типа SPLIT 1,MM2 TRANSFER ,MET MM3 ADVANCE 20 \\ детали третьего типа SPLIT 1,MM3 TRANSFER ,MET met terminate Цитата GENERATE ,,,1 SPLIT 1,MM2 SPLIT 1,MM3 MM1 ADVANCE 20,3 \\ детали первого типа SPLIT 1,MM1 TRANSFER ,MET MM2 ADVANCE 16,5 \\ детали второго типа SPLIT 1,MM2 TRANSFER ,MET MM1 ADVANCE 20 \\ детали третьего типа SPLIT 1,MM3 TRANSFER ,MET met terminate найдите отличия ![]() я разве так писал? а касаемо ряда замечаний - у вас логика модели не выдержана. к примеру, зачем вам блок премит? я не вижу у вас в задании слов "абсолютный приоритет". Где у вас "упаковка каждые 5 минут", где "утилизация каждые 10 минут"? скажем так, не щитая ошибки при генерации, до метки МЕТ1 со всем согласен. А вот дальше, простите, белиберда. вот, пожалуйста, повторная сборка Цитата met2 QUEUE OCHER1 \\встать в очередь MET3 SEIZE WORKER \\ занять сборщика DEPART OCHER1 \\ покинуть очередь ADVANCE 5 \\ сборка идет минут RELEASE WORKER \\ освободить ресурс TRANSFER 0.15,MET1,util \\ в 15% случаев отправиться НА УТИЛИЗАЦИЮ, в 85% - НА УПАКОВКУ используйте пользовательские списки для установки в очередь на утилизацию и упаковку Саму утилизацию и упаковку - вынесите в виде отдельных сегментов. ато получается, что вместо "утилизация проходит каждые 10 мин" вы делаете "утилизация каждой детали длиться 10 мин". чуствуете разниццу? |
Автор: MEGERA 17.11.08, 14:37 |
Цитата TEMENb @ Цитата GENERATE ,,,1 SPLIT 1,MM1 SPLIT 1,MM2 SPLIT 1,MM3 MM1 ADVANCE 20,3 \\ детали первого типа SPLIT 1,MM1 TRANSFER ,MET MM2 ADVANCE 16,5 \\ детали второго типа SPLIT 1,MM2 TRANSFER ,MET MM3 ADVANCE 20 \\ детали третьего типа SPLIT 1,MM3 TRANSFER ,MET met terminate Цитата GENERATE ,,,1 SPLIT 1,MM2 SPLIT 1,MM3 MM1 ADVANCE 20,3 \\ детали первого типа SPLIT 1,MM1 TRANSFER ,MET MM2 ADVANCE 16,5 \\ детали второго типа SPLIT 1,MM2 TRANSFER ,MET MM1 ADVANCE 20 \\ детали третьего типа SPLIT 1,MM3 TRANSFER ,MET met terminate найдите отличия ![]() я разве так писал? а касаемо ряда замечаний - у вас логика модели не выдержана. к примеру, зачем вам блок премит? я не вижу у вас в задании слов "абсолютный приоритет". Где у вас "упаковка каждые 5 минут", где "утилизация каждые 10 минут"? В таком случае, я не понимаю, почему у нас отсутствует ММ1? Я сначала подумала, что это описка. Ведь здесь, кажется, объявляется, что spit разбивает ансамбль на ММ1, ММ2 и ММ3. А ММ1 не указывается.... А насчет ряда замечаний... Блок preempt - это просто эксперимент я ставила ![]() |
Автор: TEMENb 17.11.08, 16:46 |
угу, нащет упаковщика не доглядел. Действительно отдельный сегмент на него не нужен. нащет сплит - посудите сами. у вас ведь генерируется три типа деталей. так? =) вот идет транзакт. он проходит через первый сплит, появляется потомок, которого отправляют на метку ММ2, родитель движет дальше. т.е. по прохождении одного сплита получается два транзакта. Далие родитель попадает во второй сплин - потомок идет на ММ3, а родитель - дальше.. а дальше - это мм1 =))) два сплита - три транзакта. все верно =) |
Автор: MEGERA 17.11.08, 17:02 |
ага, действительно ))) правильно все!спасибо за помощь! |
Автор: MissStone 17.11.08, 22:08 |
а вот задача такого плана: даны графы состояния системы...имеется система вероятности состояний. для их получения проделала кучу математики : составлялась матрица интенсивности по указанному графу состояния системы, получаем систему уравнений Колмогорова,решаем методом Крамера, применяем обратное преобразование Лапласа и далее, по полученным преобразованиям, постоена зависимость р(t), где р-стационарная вероятность системы в Маткаде).. и мне осталось постоить модель такой системы в GPSS. ума не приложу как делать это((. ![]() буду очень рада за помошь |
Автор: Veto4ka 20.11.08, 15:01 |
Подскажите,пожалуйста,как узнать время переходного(неустановившегося)режима?!оч нужно! |
Автор: Ююю 20.11.08, 20:50 |
Задан экспоненциальный закон распределения интенсивности поступления клиентов. Почему при построении графика зависимости вероятности отказа от интенсивности поступления в нескольких точках при одинаковой интенсивности поступления и разной интенсивности обслуживания получается одна и та же вероятность отказа? |
Автор: TEMENb 20.11.08, 20:56 |
код в студию |
Автор: makingbeauty 21.11.08, 07:34 |
Помогите пожалуйста решить задачу на MICRO-GPSS (STUDENT VERSION 95-01-01). Задание: На комплексный конвейер сборочного цеха каждые 5+-1 мин. (случайная величина распределена по нормальному закону распределения) поступают 5 изделий первого типа, и каждые 20+-7 мин поступают (случайная величина распределена по экспоненциальному закону распределения) 20 изделий второго типа. Конвейер состоит из секций, вмещаемых по 10 изделий каждого типа. Комплектация начинается только при наличии деталей обоих типов в требуемом количестве и длится 10 мин. При нехватке деталей секция конвейера остается пустой.Смоделировать работу конвейера в течение 8 часов. Также необходимо "Определить вероятность пропуска секции, средние и максимальные очереди по каждому типу изделий. Определить экономическую целесообразность перехода на секции по 20 изделий со временем комплектации 20 мин.", но это уже не главное. Я находила решение этой задачи в Интернете, но не на MICRO-версии, а на обычном GPSS: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> NN1 STORAGE 10 //выделение 10 памяти для NN1 NN2 STORAGE 10 //выделение 10 памяти для NN2 MET1 GENERATE 5,1 //интервал поступления деталей 1-ого типа SPLIT 4 //копирование 4 деталей, 5 деталей идет далее. QUEUE QUE1 //занятие очереди QUE1 ENTER NN1 //вход в накопитель NN1 DEPART QUE1 //освобождение очереди QUE1 SAVEVALUE 1+,1 //увеличивает и сохраняет значение TEST E Q1,10,MET3 //проверяем условие: если Q1=10, то переход к метке MET3 LEAVE NN1,10 //освобождает 10 единиц памяти в накопителе NN1 TERMINATE 9 //уничтожение 9 транзактов MET2 GENERATE 20.7 //интервал поступления деталей 2-ого типа SPLIT 19 //копирование 19 деталей 20 деталей идут далее. QUEUE QUE2 //занятие очереди QUE2 ENTER NN2 //вход в накопитель NN2 DEPART QUE2 //освобождение очереди QUE2 TEST E Q2,10,MET3 //проверяем условие: если Q2=10, то переход к метке MET3 LEAVE NN2,10 //освобождает 10 единиц памяти в накопителе NN2 TERMINATE 9 //уничтожение 9 транзактов MET3 SEIZE KAN //занятие канала KAN ADVANCE 10 //обработка в канале KAN RELEASE KAN //освобождение KAN TERMINATE //уничтожение транзакта GENERATE 480 //время работы конвейера TERMINATE 1 //уничтожение транзакта START 1 END Но мне кажется тут многое неправильно: транзакты генерируются не по заданному закону распределения; в блоке LEAVE почему-то указано 10 транзактов, в то время как в начале моделирования туда придёт только 5 транзактов, следовательно условие "TEST E Q1,10,MET3" не выполнится и будет из памяти удалено 10 транзактов, заместо 5; да и вообще логика программы по-моему не верна в принципе... да и к тому же не для Микро-версии написано. Начала писать свою программу. Сначала пробовала делать при помощи waitif: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> simulate NN1 STORAGE 10 NN2 STORAGE 10 generate 5+fn$snorm*1 split 4,met0 met0 QUEUE que1 enter NN1 waitif NN1=nf waitif NN2=nf goto com3 generate 20*FN$XPDIS+3 split 19,met2 met2 QUEUE que2 enter NN2 waitif NN2=nf waitif NN1=nf goto com3 com3 DEPART que1 DEPART que2 seize que3 advance 10 leave NN1 leave NN2 release que3 ASSEMBLE 20 TERMINATE 19 GENERATE 480 TERMINATE 1 START 1 END Но как-то подряд по два waitif'a вряд ли правильно использовать, наверняка что-то зациклится не как нужно. Да и нужно ли писать ASSEMBLE 20, к тому же в том месте где я его написала, я также не знаю. Так или иначе программа вылетает с ошибкой "Слишком много транзактов в системе" и судя по тому, что выдаёт статистика - мало какие транзакты доходят до метки com3. Решила переделать программу на использование просто if'ов: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> simulate NN1 STORAGE 10 NN2 STORAGE 10 generate 5+fn$snorm*1 split 4,met1 met1 seize que1 enter NN1 release que1 goto com3 generate 20*FN$XPDIS+3 split 19,met2 met2 seize que2 enter NN2 release que2 goto com3 com3 if NN1=NF,exit if NN1=NF,exit assemble 20 seize que3 leave NN1 leave NN2 advance 10 release que3 exit terminate GENERATE 480 TERMINATE 1 START 1 END Тут вроде логика работы программы прозрачней и правильней, но всё равно программа вылетает с ошибкой "Слишком много транзактов в системе". При этом судя по статистике во второй блок IF заходит транзакт всего 1 раз... не знаю почему... В общем у меня складывается ощущение что я концептуально неправильно что-то делаю - помогите пожалуйста бедной девушке - уже третий день сижу вот мучаюсь... ;( |
Автор: TEMENb 21.11.08, 08:43 |
эээээээээээээ......... А что за микроверсия и с чем ее едят? Де можно ее качнуть и есть ли мануалы по ней? Сам я юзаю GPSS/W (Student-Professional вроде отличаются только допустимым колличеством блоков программы) В состоянии коди из GPSS/W переделать в GPSS/PC-GPSS/H, хоть и геморойно, но вполне возможно. А про MICRO-GPSS слышу впервые. Добавлено Цитата makingbeauty @ NN1 STORAGE 10 //выделение 10 памяти для NN1 NN2 STORAGE 10 //выделение 10 памяти для NN2 MET1 GENERATE 5,1 //интервал поступления деталей 1-ого типа SPLIT 4 //копирование 4 деталей, 5 деталей идет далее. QUEUE QUE1 //занятие очереди QUE1 ENTER NN1 //вход в накопитель NN1 DEPART QUE1 //освобождение очереди QUE1 SAVEVALUE 1+,1 //увеличивает и сохраняет значение TEST E Q1,10,MET3 //проверяем условие: если Q1=10, то переход к метке MET3 LEAVE NN1,10 //освобождает 10 единиц памяти в накопителе NN1 TERMINATE 9 //уничтожение 9 транзактов MET2 GENERATE 20.7 //интервал поступления деталей 2-ого типа SPLIT 19 //копирование 19 деталей 20 деталей идут далее. QUEUE QUE2 //занятие очереди QUE2 ENTER NN2 //вход в накопитель NN2 DEPART QUE2 //освобождение очереди QUE2 TEST E Q2,10,MET3 //проверяем условие: если Q2=10, то переход к метке MET3 LEAVE NN2,10 //освобождает 10 единиц памяти в накопителе NN2 TERMINATE 9 //уничтожение 9 транзактов MET3 SEIZE KAN //занятие канала KAN ADVANCE 10 //обработка в канале KAN RELEASE KAN //освобождение KAN TERMINATE //уничтожение транзакта GENERATE 480 //время работы конвейера TERMINATE 1 //уничтожение транзакта START 1 END насколько мне видно - неверная реализация. Глубоко не копался но на первый взгляд сразу бросаются в глаза "TERMINATE 9 " при "START 1" и сишные коментарии, вызывающие ошибку. |
Автор: TEMENb 21.11.08, 09:57 |
Вообщем программа совсем не соответствует заданию. ![]() Исходя из программы - для детали каждого вида свой отдельный контейнер. работают они независимо друг от друга.принцип действия таков - детальки идут и не глядя направо-налево, без лишних слов становятся в контейнер. ![]() ![]() ![]() ![]() ![]() Цитата makingbeauty @ В глубину мысли такого экстеррного завершения моделлирования даже лезть не хочецца LEAVE NN1,10 //освобождает 10 единиц памяти в накопителе NN1 TERMINATE 9 //уничтожение 9 транзактов ![]() а после того, как этот момент пройден - снова начинаем по одной детальке плевать в комплектацию )) НО!! Это еще не все!! ![]() Контейнеры заполняются только один раз!! ![]() Даже не заполняются, а позволяют войти десяти деталям. А потом грят - "наша суточная норма закончена, приходите завтра" - и никого не пускают больше ![]() Ээээ.... вам такая модель нада была? ![]() |
Автор: makingbeauty 21.11.08, 10:20 |
TEMENb, спасибо, прежде всего, за развёрнутый ответ. Да, насколько я понимаю в микро-версии просто нет части команд: "Модели на micro-GPSS компактны, часто состоят из меньшего числа операторов, чем такие же модели, написанные на процедурных языках (например, на Фортране или Бейсике). Это объясняется тем, что в micro-GPSS встроено максимально возможное число логических программ, необходимых для моделирующих систем. В него также входят специальные средства для описания динамического поведения систем, меняющихся во времени, причем изменение состояний происходит в дискретные моменты времени. Micro-GPSS очень удобен при программировании, поскольку интерпрета-тор micro-GPSS (здесь и далее интерпретатором называется моделирующая часть системы micro-GPSS) многие функции выполняет автоматически. На-пример, micro-GPSS без специального на то указания пользователя собирает статистические данные, описывающие поведение модели, автоматически печа-тает итоговую статистику по завершении моделирования. Пользователю нет необходимости включать в модель операторы для сбора и накопления этих данных или задавать формат, указывающий, в каком виде должны быть распе-чатаны итоговые данные." Вот сам интепретатор, который нам дали - http://poiskolog.ru/trash/gpss-rus.EXE А вот краткая методичка по командам - http://poiskolog.ru/trash/Micro_GPSS.doc Касаемо самой программы - я уже написала, что тоже считаю что найденный мною вариант нерабочий - я просто привела его как пример. Именно по этой причине я постаралась сделать несколько своих вариантов - как я считаю правильным. Так вот по-возможности хотелось бы получить подсказку что у меня неправильно в _моих_ вариантах решения этой задачи, а не в том, который я привела первым для примера ![]() |
Автор: TEMENb 21.11.08, 10:32 |
Методу скачаим. А сам микрожпсс я уже нашел.. вроде (не скачал, но еще не запускал))) Судя по нагугленному - микрожпсс - это слабенькая попытка сделать жпсс более гибким.. эм... с возможностью создания своих блоков и "улучшением" уже имеющихся. Срезана половина команд (заменена на ифы и вайлы).. и вроде теперь он проще учится ))) Вообщем это надо в среду лезть.. смотреть - пробовать... ![]() Добавлено ааааааааааааааааааааа ![]() фигасее улучшили ![]() эта писец, детишки ))))) этот черный экранчик вызывает у меня благоговейный трепет )))) Цитата MICRO-GPSS STUDENT VERSION 95-01-01 C INGOLF STAHL Введите имя файла с программой на GPSS Длинна имени должна 4-25 Интересно, конечно, кому и что должна длинна ![]() Да уж, он полюбасу легче для изучения, особенно с учетом того, что программу надо писать в блокноте, а потом каждый раз прописывать путь к файлу в програмке-интерпритаторе "таких извращений Иван не видл" (с) ![]() |
Автор: Ююю 22.11.08, 12:18 |
Что происходит при изменении команды START 1 на команду START 10? При 10 прогонах получатся более точные результаты? |
Автор: TEMENb 22.11.08, 14:07 |
Ююю, стыдно должно быть за такие вопросы )) Это самая первая лекция/лаба/глава. START А - означает промоделировать, со счетчиком завершений равным А. TERMINATE A - когда транзакт покидает модель, из вчетчика завершений вычитается значение А. Когда значение счетчика завершений становится равным нулю (или меньше нуля), то моделирование заканчивается. Цитата Ююю @ Что происходит при изменении команды START 1 на команду START 10? При 10 прогонах получатся более точные результаты? В данном случае вы либо увеличиваете время моделирования в 10 раз, либо увеличиваете в 10 раз колличество обработанных транзактов, либо... вообщем все зависит от конкретно вашей задачи. А результаты станосятся точнее, т.к. по теории вероятности, чем больше проведено экспериментов (чем дольше проводился эксперимент), тем точнее результат. |
Автор: Milaya 08.12.08, 16:00 |
привет всем! подскажите пожалуйста правильно ли я решила задачу!!!! Абоненты звонят каждые 10 сек., время приема вызова распределено по экспоненц. з-ну со средним знач. 12 сек. , в случае неудачи дозвониться абонент попыток дозвониться больше не предпринимает. Смоделировать работу в течение 8 ч. TELEPHON STORAGE 2 GENERATE 10 GATE NU TEL,OUT ENTER TELEPHON ADVANCE (Exponential (1,0,12)) LEAVE TELEPHON OUT TERMINATE GENERATE 28800 TERMINATE 1 один из подвопросов - определить наименьшее число телефонов , при котором вызов принимается не менее чем от 90% абонентов. минимальное число телефонов использую - 2 шт., а отчет выдает что загруженность всего 61%. А я должна ответить какое число телефонов при 90%! ничего уже не понимаю! |
Автор: artyomst 08.12.08, 16:32 |
Подскажите как реализовать: Интервалы времени в потоке распределены по экспоненциальному закону со средним временим, распределенным равномерно от 20 до 40 единиц времени. Имеется ввиду что в GENERATE указывать? |
Автор: Milaya 08.12.08, 16:42 |
GENERATE 30,10 вроде как... |
Автор: TEMENb 08.12.08, 16:43 |
Milaya, все верно. поступающий поток - 0.1 в секунду, а обрабатывающий поток - 0,1(6). Итого 0.1/0.1(6)=0.6 60% идите компосируйте мозг преподу )) Добавлено Цитата artyomst @ Интервалы времени в потоке распределены по экспоненциальному закону со средним временим, распределенным равномерно от 20 до 40 единиц времени среднее значение - 30 отклонение - 10 закон - экспоненциальнй итого смещение - 20 коефиыиент растягивания - 20 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE (Exponential (1,20,20)) Добавлено Это равномерный закон Добавлено Вроде разрулил.. ![]() |
Автор: jaguar555 09.12.08, 17:49 |
Некий производитель выпускает центробежные насосные агрегаты, которые собираются по заказам клиентов. Заказы поступают в среднем каждые 5 часов (экспоненциальное распределение). При поступлении заказа с него снимают две копии. Исходный заказ используется для получения со склада двигателя и подготовки его к сборке (200+100 минут). Первая копия используется для заказа и подгонки насоса (180+120 минут), а вторая копия -для производства опорной плиты (80+20 минут). Когда насос и опорная плита готова, производится проверочный монтаж (50+10 минут). После того как будут готовы все три компонента, производится окончательная сборка. Агрегат разбирается, насос и двигатель окрашиваются, а опорная плита оцинковывается. Затем агрегат собирается окончательно (150+30 минут). Необходимо: Смоделировать сборку 50 насосных агрегатов Вот что я смог: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> zakaz storage 2 generate 300,,,,50 queue engine //очередь для получения двигателя depart engine advance 200,100 // время получения двигателя queue nasos // очередь для насоса enter zakaz depart nasos advance 180,120 // подгонка насоса queue plita // очередь для плиты enter zakaz depart plita advance 80,20 // производство опорной плиты leave zakaz leave zakaz а вот дальше что использовать для Цитата Когда насос и опорная плита готова, производится проверочный монтаж |
Автор: TEMENb 09.12.08, 18:46 |
1. копии не снимаются (spleet) 2. одна деталь проходит обе обработки, а должна проходить одна копия одну. а джругая - другу. откуда ТРИ компонента? 3. потом их надо обьеденить (acemble) и сделать проверочный монтаж. 4. потом снова разбивается и отдельно части обрабатываются 5. и снова собирается. и моделирование заканчивается когда ОБРАБОТАЛОСЬ 50 деталей. не обязательно задавать на вход 50. Да и экспоненциальным распредилением на входе не пахнет. |
Автор: jaguar555 09.12.08, 19:37 |
TEMENb Цитата 4. потом снова разбивается и отдельно части обрабатываются 5. и снова собирается. Преп сказал, что это 2 advance делается вот что то еще мне удалось придумать <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate (exponential(1,0,300)) queue engine seize stockman depart engine advance 200,100 split 1,nasos split 1,plita nasos queue get_nasos seize worker depart get_nasos advance 180,120 plita queue make_plita seize worker1 depart make_plita advance 80,20 assemble 3 queue check seize worker2 depart check advance 50,10 advance 150,30 release worker2 terminate GENERATE 1000 TERMINATE 1 START 1 Модель работает но как то странно: если ее запустить не 1 раз а 10, то получится что двигателей заказано 30 с лишним, а насосов и плит для них только 2, а в assemble их попадает около 50 |
Автор: TEMENb 09.12.08, 21:25 |
о, появился сплит ) Это радует. только сплитов много сильно ![]() попробуй второй салит заменить на трансфер ![]() и ассембл надо с параметром 2 после обработки на метке насос - трансфер на асембл (насос ведь не участвует в заказе плиты) после асембла еще сплин, обработка и еще асембл. Другими словами: теперь больше похоже на правду, но всеравно еще не то, что надо ) |
Автор: jaguar555 10.12.08, 11:52 |
Сдал седня такой вариант. поставили мне 4 бала и сказали что можно было все сделать проще, но не сказали как Спасибо за помощь <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> worker storage 2 generate (exponential(1,0,300)) queue engine enter worker,2 depart engine advance 200,100 leave worker,2 split 1,plita queue get_nasos enter worker depart get_nasos advance 180,120 leave worker transfer ,pribor plita queue make_plita enter worker depart make_plita advance 80,20 leave worker pribor assemble 2 queue check enter worker,2 depart check advance 50,10 advance 150,30 leave worker,2 terminate GENERATE 1000 TERMINATE 1 START 1 |
Автор: TEMENb 10.12.08, 12:02 |
ну попрежнему не выполнено Цитата jaguar555 @ Агрегат разбирается, насос и двигатель окрашиваются, а опорная плита оцинковывается. Затем агрегат собирается окончательно хотя на похоже это подрядидущие сплит и асембл которыми можно пожертвовать. а в остальном вроде соответствует заданию =) Где можно было упростить/добавить - незнаю, т.к. в задание особо не вчитывался. вы уж извините ![]() З.Ы.: м.. мдя. действительно нужен еще один сплит (плита, насос есть, а мотора нет), а после него уже трансфер.. Соответственно и асембл 3.. Извините недосмотрел... |
Автор: B@mbr48rus 10.12.08, 16:05 |
На комплектовочный конвейер сборочного цеха каждые Т1 минут поступают N1 деталей первого типа и каждые Т2 минут – N2 деталей второго типа. Изделие комплектуется из N3 деталей каждого типа. Комплектация начинается только при наличии деталей обоих типов в необходимом количестве (рис. 1.) Конвейер движется ритмично с шагом Т3 минут. При отсутствии необходимого количества деталей секция конвейера перемещается пустой («холостой ход»). Определить целесообразность перехода на другие режимы работы конвейера, оперируя такими параметрами: 1)размерами секции – количеством деталей каждого типа, из которых комплектуется изделие (возможны дополнительные варианты – по N4 и N5 изделий); 2) шагом конвейера (возможны дополнительные варианты – Т4 и Т5 минут). Оценить вероятность «холостого хода», средних и максимальных длин очередей каждого типа изделий. Варианты заданий Вариант Параметры Т1 N1 Т2 N2 N3 Т3 N4 N5 Т4 Т5 1 5±1 5 20±5 20 10 10 20 5 20 5 2 10±3 8 40±10 32 16 20 32 8 36 9 3 15±5 12 60±12 36 24 30 36 12 45 15 4 12±4 6 48±10 24 24 24 24 6 45 15 Есть код на GPSS, но он почему то не компелируется. Помогите пожайлуста!!! izd1 storage 10 объявление накопителя для изделий 1 izd2 storage 10 объявление накопителя для изделий 2 pust variable 0 poln variable 0 generate 480 задание общего времени моделирования terminate 1 generate 5,1 генерация деталей 1 первого типа QUEUE o1 enter izd1 вход деталей в накопитель 1 terminate generate 20,7 генерация деталей 1 первого типа QUEUE o1 split 1 создание 1 копии выходящего в блок транзакта enter izd2,2 вход деталей 2 в накопитель terminate generate 10 задание числа секций test GE s$izd2,1,pst проверка наличия деталей в накопителе 1 test GE s$izd1,2,pst проверка наличия деталей в накопителе 2 leave izd1,2 освобождение накопителя 1 leave izd2,1 освобождение накопителя 2 advance 10 обработка savevalue poln+,1 подсечет кол-ва полных секций terminate pst savevalue pust+,1 кол-во пустых секций terminate start 1 |
Автор: TEMENb 10.12.08, 16:22 |
для начала можно поудалять коментарии или хотя б отделить их точкой с запятой.. или звездочкой |
Автор: VitaminkaKush 12.12.08, 10:00 |
Помогите !!!! запрограммить пожалуйста!!! В небольшом кафе работают две официантки (А и B) обслуживая по 7 четырехместных столиков. Официантка А пользуется большей популярностью, чем официантка В. Приходя в кафе, клиент садится за столик официантки В только в том случае, если все места за столиками, которые обслуживает официантка А, заняты. Клиенты приходят в кафе через 2 ± 1 минут и, если не застают свободных мест, становятся в очередь. Когда клиент садится на освободившееся место, он ждет, пока к нему подойдет официантка и примет у него заказ. Время приема заказа у официантки А занимает 35 ± 6 секунд, у официантки В соответст¬венно 22 ± 6 секунд. Приняв заказ у клиента, официантки сразу же его выполняют. Время выполнения заказа обеими официантками составляет 180 ± 30 секунд. После получения заказа клиент на протяжении 10 ± 3 минут обедает и уходит из кафе. Официантки обслуживают клиентов по принципу FIFO и в каждый момент времени могут об¬служивать не более одного клиента. Определить время ожидания в очереди и время, которое клиент проводит за столиком кафе. Промоделируйте работу кафе на протяжении 10 ч. помогите... |
Автор: TEMENb 12.12.08, 10:14 |
Скрытый текст запрограммируйте за меня, пажалста-пажалста ![]() VitaminkaKush, задавайте вопросы, где не понятно. Поможем. А уже кодить всеравно прийдеться вам. клиенты приходят клиенты пытаются войти в МКУ РЕСТОРАН Клиенты смотрят, а не занята ли первая официантка.. и идут к соответствующей официантке клиенты садятся за столик (станосятся в МКУ-очередь к официантке) обслуживаются официанткой покидают МКУ столик покидают МКУ ресторат покидают модель вот и вся ваша модель. |
Автор: B@mbr48rus 12.12.08, 16:46 |
Посмотрите пожалуйста правильно я запрограммировал в GPSS для варианта !? izd1 storage 10; объявление накопителя для изделий 1 izd2 storage 10; объявление накопителя для изделий 2 pust variable 0; poln variable 0; generate 480; задание общего времени моделирования terminate 1; generate 5,1; генерация деталей 1 первого типа queue o1; enter izd1; вход деталей в накопитель 1 terminate; generate 20,5; генерация деталей 1 первого типа queue o2; split 1; создание 1 копии выходящего в блок транзакта enter izd2,2; вход деталей 2 в накопитель terminate; generate 10; задание числа секций test GE s$izd2,1,pst; проверка наличия деталей в накопителе 1 test GE s$izd1,2,pst; проверка наличия деталей в накопителе 2 leave izd1,2; освобождение накопителя 1 leave izd2,1; освобождение накопителя 2 advance 10; обработка savevalue poln+,1; подсечет кол-ва полных секций terminate; pst savevalue pust+,1; кол-во пустых секций terminate; start 1; Добавлено Всмысле для варианта №1, в задаче выше про комплектовочный конвейер!? |
Автор: TEMENb 12.12.08, 17:02 |
структура программы похожа на правильную, хотя я б использовал пользовательские списки вместо МКУ (наличие деталей) касаемо цифр задачи - особо не сверялся.. ну есть подозрение. что напартачил с колличеством деталий в партии при поступлении.. но может я просто условие понял не так хорошо как автор ![]() отсутствуют доп задания. А вообще СЧА прошарил - зачет. Совет: Сделай размер МКУ соответствующий колличеству деталей для одного перемещения. тогда можно будет просто проверять контейнеры на заполненость => на ходу можно будет поменять параметры моделирования. |
Автор: Ji$er 13.12.08, 16:11 |
Помогите пожалуйста решить задачу...GPSS World...student version... Постановка задачи: На сборочный участок цеха предприятия через интервалы времени, распределенные экспоненциально со средним значением 10 мин, поступают партии, каждая из которых состоит из трех деталей. Половина всех поступающих деталей перед сборкой должна пройти предварительную обработку в течение 7 мин. На сборку подаются обработанная и необработанная детали. Процесс сборки занимает всего 6 мин. Затем изделие поступает на регулировку, продолжающуюся в среднем 8 мин (время выполнения ее распределено экспоненциально). В результате сборки возможно появление 4% бракованных изделий, которые не поступают на регулировку, а направляются снова на предварительную обработку. Смоделировать работу участка в течение 24 ч. Определить возможные места появления очередей и их вероятностно-времен¬ные характеристики. Выявить причины их возникновения, пред¬ложить меры по их устранению и смоделировать скорректированную систему. Начал решать,но выводит следующие...поясните пожалуйста 12/13/08 19:04:29 START 1 12/13/08 19:04:29 Simulation in Progress. 12/13/08 19:04:29 Error Stop. 12/13/08 19:04:29 Halt. 12/13/08 19:04:29 Clock:0.000000. 12/13/08 19:04:29 There are no Transactions. Check Transaction Limits and Blocking. ____________________________________________________________________________________ SBOR STORAGE 2 ; ;------------------------------------; GENERATE ,,,1 ;геним транзакт MET1 ADVANCE (Exponential(1,0,10));задержка генерации по экспоненциальному закону на 10 мин SPLIT 3,MET2 ;клоним 3 транзакта, отправляем их на метку TRANSFER ,MET1 ;отправляем родителя на метку MET2 TRANSFER .5,MET3 ;половину пропускаем, половину отправляем на метку QUEUE OCH1 ;занять очередь 1 SEIZE PREDV ;первичная обработка DEPART OCH1 ;покинуть очередь ADVANCE 7 ;задержка на время обработки RELEASE PREDV ;покинуть первичную обработку QUEUE OCH2 ;занять очередь 2 LINK 2,FIFO ;ПОСТАВИТЬ В 2-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET3 QUEUE OCH2 ;занять очередь 2 LINK 1,FIFO ;ПОСТАВИТЬ В 1-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET4 ENTER SBOR ;занять устройство сборки DEPART OCH2 ;покинуть очередь 2 ASSEMBLE 2 ;собрать из двух деталей одну ADVANCE 6 ;Задержка на время обработки ADVANCE (Exponential(1,0,8)); изделие поступает на регулировку продолжающуюся 8 мин по экспоненциальному закону TRANSFER .04,MET4;4% браковых изделий отправляем на предварительную обработку LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. TERMINATE ;транзакт покидает систему ;------------------------------------; GENERATE ,,,1 ;геним POVT TEST G CH1,0 ;если первый список пользователя больше нуля, то дальше TEST G CH2,0 ;если второй список пользователя больше нуля, то дальше UNLINK 1,MET4,1 ;отправить из 1-го списка пользователя на метку МЕТ4 один транзакт UNLINK 2,MET4,1 ;отправить из 2-го списка пользователя на метку МЕТ4 один транзакт TRANSFER ,POVT ;перейти на метку ;------------------------------------; GENERATE (24#60) ;геним транзакт через 8 часов TERMINATE 1 ;из счетчика завершений вычитаем 1 ;------------------------------------; START 1 ; ;------------------------------------; |
Автор: TEMENb 13.12.08, 16:15 |
Это может показаться странным, но ваша задача у меня промоделировалась (на правильность реализации не смотрел). вот отчет <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - Untitled Model 1.3.1 Saturday, December 13, 2008 18:12:33 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 1440.000 31 1 1 NAME VALUE MET1 2.000 MET2 5.000 MET3 13.000 MET4 15.000 OCH1 10001.000 OCH2 10003.000 POVT 25.000 PREDV 10002.000 SBOR 10000.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1 0 0 MET1 2 ADVANCE 146 1 0 3 SPLIT 145 0 0 4 TRANSFER 145 0 0 MET2 5 TRANSFER 435 0 0 6 QUEUE 201 19 0 7 SEIZE 182 0 0 8 DEPART 182 0 0 9 ADVANCE 182 1 0 10 RELEASE 181 0 0 11 QUEUE 181 0 0 12 LINK 181 180 0 MET3 13 QUEUE 234 0 0 14 LINK 234 233 0 MET4 15 ENTER 2 0 0 16 DEPART 2 0 0 17 ASSEMBLE 2 0 0 18 ADVANCE 1 0 0 19 ADVANCE 1 0 0 20 TRANSFER 1 1 0 21 LEAVE 0 0 0 22 LEAVE 0 0 0 23 TERMINATE 0 0 0 24 GENERATE 1 0 0 POVT 25 TEST 182 1 0 26 TEST 181 0 0 27 UNLINK 181 0 0 28 UNLINK 181 0 0 29 TRANSFER 181 0 0 30 GENERATE 1 0 0 31 TERMINATE 1 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY PREDV 182 0.883 6.988 1 398 0 0 0 19 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCH1 21 19 201 13 6.316 45.252 48.381 0 OCH2 413 413 415 1 207.152 718.792 720.528 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY SBOR 2 0 0 2 2 1 1.988 0.994 0 361 USER CHAIN SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME 1 53 0 21.214 234 53 130.548 2 0 1 0.006 181 2 0.047 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 398 0 1442.223 1 9 10 1 0 1457.824 1 2 3 439 0 2880.000 439 0 30 Попробуйте закоментировать ВЕСЬ код. и запускайте моделирование. после успешных попыток - открывайте несколько блоков. таким образом вы найдете то мето, в котором программа дает сбой. |
Автор: Ji$er 13.12.08, 16:32 |
спасибо...все заработало |
Автор: yolko 13.12.08, 17:37 |
добрый вечер вот решаю задачу на gpssh (преподаватель очень придирчевый ![]() немогу понять в задаче как вычислить производительность зала? вот задание Система обслуживания запросов с двумя различными ЭВМ и общим терминалом. В зал поисковой системы из двух специализированных ЭВМ с общим терминалом ввода-вывода через экспоненциально распределенные интервалы времени со средним – 2 мин заходят по одному клиенты и с вероятностями 0,7 и 0,3 обращаются к ЭВМ1 и к ЭВМ2, если в зале не более 10 клиентов. На подготовку запроса на терминале тратится 2+-1 мин, на вывод найденного ответа – 0,5 мин работы терминала "вне очереди"(без участия ЭВМ). ЭВМ1 «ищет» 3+-2 мин, ЭВМ2 - 6+-4 мин. По концептуальной модели разработать программную модель системы с использованием ЯИМ GPSS/H. Экспериментально найти: коэффициент отказа клиентам (войти в зал) и загрузку ЭВМ, гистограмму и среднее значение времени пребывания клиента в зале, производительность зала. ![]() вот что я написал SIMULATE ;начать моделирование. 1 TABLE M1,3,3,30 ;определение таблицы 1. 1 STORAGE 10 ;определение вместимости H1. RMULT 1E5 ;Установить начальное значение ГСЧ. GENERATE RVEXPO(1,2) ;генерировать заявки = 2 мин експ. TRANSFER BOTH,ME1,ME2 ;Если в Н1 есть свободные места, заявка входит внего, иначе идет на выход из КМ ME2 TERMINATE ;выход заявки из системы ME1 ENTER 1 ;вход заявки в накопитель H1 QUEUE H2 ;Вход заявки в накопитель Н2 SEIZE 1 ;Вход заявки в ОУ1 DEPART H2 ;Выход заявки из накопителя Н2, освобождение очереди. ADVANCE 2,1 ;Задержка в ОУ1, от 1 до 3 минут. RELEASE 1 ;Выход заявки из ОУ1 TRANSFER .7,ME4,ME3 ;С вероятностью 0,7 заявки будут переданы в Н3 и с вероятностью 0.3 в Н4. ME3 QUEUE H3 ;Вход заявки в накопитель Н3 SEIZE 2 ;Вход заявки в ОУ2 DEPART H3 ;Выход заявки из накопителя Н3, освобождение очереди. ADVANCE 3,2 ;Задержка в ОУ2, от 1 до 5 минут. RELEASE 2 ;Выход заявки из ОУ2 TRANSFER ,ME5 ;Безусловный переход на ФЭК "Присвоить приоритет 1" ME4 QUEUE H4 ;Вход заявки в накопитель Н4 SEIZE 3 ;Вход заявки в ОУ3 DEPART H4 ;Выход заявки из накопителя Н4, освобождение очереди. ADVANCE 6,4 ;Задержка в ОУ3, от 2 до 10 минут. RELEASE 3 ;Выход заявки из ОУ3 TRANSFER ,ME5 ;Безусловный переход на ФЭК "Присвоить приоритет 1" ME5 PRIORITY 1 ;Присвоить заявке приоритет 1 QUEUE H5 ;Вход заявки в накопитель Н5 SEIZE 1 ;Вход заявки в ОУ1 DEPART H5 ;Выход заявки из накопителя Н5, освобождение очереди. ADVANCE .5 ;Задержка в ОУ1, 0,5 минуты. RELEASE 1 ;Выход заявки из ОУ1 LEAVE 1 ;Выход заявки из накопителя Н1, освобождение 1 места в очереди. TABULATE 1 ;Занести значение t в таблицу 1 SAVEVALUE 1,(N3*1000)/N30,XL ;Cохранение значения коэффициента отказа клиентам (войти в зал) SAVEVALUE 2,FR2,XL ;Cохранение значения загрузки ЭВМ1 SAVEVALUE 3,FR3,XL ;Cохранение значения загрузки ЭВМ2 SAVEVALUE 4,ST1,XL ;Cохранение значения времени пребывания заявок в зале TERMINATE ;выход заявки из системы GENERATE 2E6 ;задание времени моделирования. TERMINATE 1 ;Значение счетчика завершений уменьшить на 1 START 1 ;Выполнение модели и задание начального значения счетчика завершений END ;Окончание программы |
Автор: TEMENb 13.12.08, 17:45 |
yolko, выглядит, как будто вы решили похвастаться. Невижу вопросительного знака в посте )) Если у вас что то не работает или где-то модель себя ведеть некоректно - спрашивайте. Проверять весь код на правильность не буду. т.к. это на порядок сложнее, чем написать с нуля. |
Автор: yolko 13.12.08, 17:49 |
нужно вычислить производительность зала , тоесть H1. как это сделать недоходит ![]() поставил вопросительный знак. |
Автор: TEMENb 13.12.08, 17:53 |
ну насколько я понимаю, производительность зала, это отношение принятых студентов, к общему колличеству студентов. Если вам надо пощитать это програмно - N$ME1 и (N$ME1+N$ME2) дадут вам эти значения. Вам надо только в последний момент времени пощитать N$ME1/(N$ME1+N$ME2). |
Автор: yolko 13.12.08, 18:08 |
спасибо TEMENb , попробую так сделать. как сдам напишу. |
Автор: TEMENb 13.12.08, 18:15 |
ИМХО это намного удобнее посмотреть в отчете и на калькуляторе разделить два числа. покрайней мере, пока я был маленьким и глупым ![]() |
Автор: Opex 13.12.08, 20:16 |
Здравствуйте! я с проблемой решения задачи : Транспортный цех объединения обслуживает три филиала А, В и С. Грузовики перевозят изделия из А в В и из В в С, возвращаясь затем в А без груза. Погрузка в А занимает 20 мин, переезд из А в В длится 30 мин, разгрузка и погрузка в В – 40 мин, переезд в С – 30 мин, разгрузка в С – 20 мин и переезд в А – 20 мин. Если к моменту погрузки в А и В отсутствуют изделия, грузовики уходят дальше по маршруту. Изделия в А выпускаются партиями по 1000 шт. через 20±3 мин, в В – такими же партиями через 20±5 мин. На линии работает 8 грузовиков, каждый перевозит 1000 изделий. В начальный момент все грузовики находятся в А. Смоделировать работу транспортного цеха объединения в течение 1000 ч. Определить частоту пустых перегонов грузовиков между А и В, В и С и сравнить с характеристиками, полученными при равномерном начальном распределении грузовиков между филиалами и операциями. По вашему совету воспользовался решением задачи с http://vuithelp.ru/files/42.html ,но меня смущают (и не то слово) выходные данные,особенно размер очереди и ваще сам алгоритм решения задачи..... Пытался делать с использованием GATE и TEST блоков,но запутался..... Направте на путь истинный Вот нездоровый код программы : 10 GENERATE 20,3 ; В филиале А генерируются изделия 20 QUEUE H1 ; В филиале А образуется очередь 30 SEIZE K1 ; Занять К1 40 DEPART H1 ; K1 покидает очередь 50 ADVANCE 70 ; Задержка на переезд 60 RELEASE K1 ; Освобождаем К1 70 TERMINATE 80 GENERATE 20,3 ; В филиале А генерируются изделия 90 QUEUE H1 ;В филиале А образуется очередь 100 SEIZE K2 ; Занять К2 110 DEPART H1 ; K2 покидает очередь 120 ADVANCE 70 ; Задержка на переезд 130 RELEASE K2 ; Освобождаем К2 140 TERMINATE 150 GENERATE 20,3 ; В филиале А генерируются изделия 160 QUEUE H1 ; В филиале А образуется очередь 170 SEIZE K3 ; Занять К3 180 DEPART H1 ; Освобождаем К3 190 ADVANCE 70 ;Задержка на переезд 200 RELEASE K3 ; Освобождаем К3 210 TERMINATE 220 GENERATE 20,3 ; В филиале А генерируются изделия 230 QUEUE H1 ; В филиале А образуется очередь 240 SEIZE K4 ; Занять К4 250 DEPART H1 ; K4 покидает очередь 260 ADVANCE 70 ;Задержка на переезд 270 RELEASE K4 ; Освобождаем К4 280 TERMINATE 290 GENERATE 20,5 ; В филиале B генерируются изделия 300 QUEUE H2 ; В филиале B образуется очередь 310 SEIZE K5 ; Занять К5 320 DEPART H2 ; K5 покидает очередь 330 ADVANCE 70 ;Задержка на переезд 340 RELEASE K5 ; Освобождаем К5 350 TERMINATE 360 GENERATE 20,5 ; В филиале B генерируются изделия 370 QUEUE H2 ; В филиале B образуется очередь 380 SEIZE K6 ; Занять К6 390 DEPART H2 ; K6 покидает очередь 400 ADVANCE 70 ; Задержка на переезд 410 RELEASE K6 ; Освобождаем К6 420 TERMINATE 430 GENERATE 20,5 ; В филиале B генерируются изделия 440 QUEUE H2 ; В филиале B образуется очередь 450 SEIZE K7 ; Занять К7 460 DEPART H2 ; K7 покидает очередь 470 ADVANCE 70 ; Задержка на переезд 480 RELEASE K7 ; Освобождаем К7 490 TERMINATE 500 GENERATE 20,5 ; В филиале B генерируются изделия 510 QUEUE H2 ; В филиале B образуется очередь 520 SEIZE K8 ; Занять К8 530 DEPART H2 ; K8 покидает очередь 540 ADVANCE 70 ;Задержка на переезд 550 RELEASE K8 ; Освобождаем К8 560 TERMINATE Что странно в проге ни слова о переходах.... Что делать? |
Автор: TEMENb 13.12.08, 20:17 |
56 строк кода в задаче максимум строк на 30... гляну на досуге. |
Автор: Opex 13.12.08, 20:27 |
Буду благодарен.... ![]() |
Автор: Opex 15.12.08, 18:41 |
![]() |
Автор: TEMENb 15.12.08, 18:48 |
небыло времени глянуть сори ![]() и сегодня похоже не будет ![]() |
Автор: Opex 15.12.08, 20:05 |
ну а ваще там че как просто,нет? мне прост на неделе надо сдать,типа курсач.... вот.... падможешь? время буит? |
Автор: TEMENb 15.12.08, 20:06 |
ну не так уже и сложно, просто много ты всего написал. это разбирать надо. Чужой код - темный лес - сам знаешь. |
Автор: Opex 15.12.08, 20:10 |
во во.... я вот эту прогу сам не понял! толи тока часть,толи... хз че.... пытался сам делать-ниче в голову не приходит! вроде задание ясно,а вот как реализовать.... ![]() Добавлено и через GATE и через TEST думал.... никак.... сломал мозг весь.... и препод ище хер че обьяснит,сам ведет первый семестр дисциплину! вот вся надежда на вас! ![]() |
Автор: TEMENb 17.12.08, 09:26 |
Цитата test ne r$stolikiA,0,rabota2 Добавлено в остальном похоже на правду ) молодец =) |
Автор: VitaminkaKush 17.12.08, 09:34 |
спасибки вот теперь все работает!!!!.. только как работает СЧА R? то есть почему ставим r$stolikiA |
Автор: TEMENb 17.12.08, 09:37 |
колличество свободных мест |
Автор: VitaminkaKush 17.12.08, 09:39 |
Ок все большое -пребольшое спасибо!!!!! |
Автор: TEMENb 17.12.08, 09:41 |
Эта ссылка находиться на этой страницце (в самом верху), причем еще и красным восклиццательным знаком выделена )) |
Автор: jaguar555 18.12.08, 18:08 |
не подскажете как задать приоритет при экспоненциальном распределении? я пишу так generate (exponential(1,0,0.2),,,,3), но gpss говорит не правильно заданы параметры |
Автор: TEMENb 18.12.08, 18:24 |
jaguar555, для начала можно убрать скобки. Вовторых время не должно быть дробным (хотя жпсс верд вполне переваривает дробное время, но всеравно лучше не делать дробного..) Я так понимаю вам надо генить с лямдой 0.2 и приоритетом транзактов 3? тогда ваш код должен выглядеть так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate (exponential(1,0,5)),,,,3 если вы хотите с лямдой 0.2 всего 3 транзакта, то тогда так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate (exponential(1,0,5)),,,3 |
Автор: jaguar555 18.12.08, 19:17 |
попробовал первый вариант, все равно не работает, раньше писал "Ожидаю правильные параметры", а теперь пишет "Неверный параметр А в generate exponential(1,0,5),,,,3" |
Автор: TEMENb 18.12.08, 19:22 |
найди 10 отличий |
Автор: Opex 18.12.08, 20:42 |
Про меня не забыли? ![]() |
Автор: TEMENb 18.12.08, 20:44 |
времени нету (( и в ближайшее время не предвидяться ![]() |
Автор: Opex 18.12.08, 21:04 |
блиииииин.... ![]() |
Автор: TEMENb 18.12.08, 21:06 |
я не буду обещать, ибо не хочу подвести. Скорее всего никак. |
Автор: Opex 18.12.08, 21:10 |
ясно.... ну тогда хоть скажи если там сделать транзактами и изделия и грузовики,то что нить из этого можно сотворить? |
Автор: TEMENb 18.12.08, 22:20 |
если б я делал - я б сделал грузовики - многоканальными устройствами, а груз - транзактами накапливаются в мку (синхронизация) потом перевозка, и выгружаются (грузовик свободен) |
Автор: B@mbr48rus 19.12.08, 19:34 |
Помогите пожайлуста сделать дополнительные задания в задаче про комплектовочный конвейер на стр 4. листинг программы есть на странице 5 (он рабочий) и вроде бы сказали что он написан правильно. только вот что надо добавить чтобы доп условия заработали?????заранее спасибо!!! |
Автор: TEMENb 19.12.08, 19:40 |
В этом посте ярко отражается стремление человека к совершенству!! вроде все есть, а чего то всеравно нехватает ))) Добавлено B@mbr48rus, вы действительно хотите, что бы я перерыл весь форум в поисках вопросов и соответственно ответов на них? |
Автор: B@mbr48rus 19.12.08, 19:51 |
TEMENb, помогите пожайлуста если для Вас это не трудно! |
Автор: TEMENb 19.12.08, 19:53 |
Сначала задайте нормально вопрос. А потом (возможно) я поищу на него ответ. |
Автор: B@mbr48rus 19.12.08, 20:00 |
Ну Вы же мне сами написали что: "отсутствуют доп задания" (стр5). Значит Вы понимаете о чем идет речь! ![]() |
Автор: TEMENb 21.12.08, 10:52 |
Я не археолог, что б перерывать страниццы форума. Вы нашли задание в готовом виде. Ни капли усилий не приложив. Так почему вы щитаете, что я должен покопаться, найти ваше задание, да еще и дополнительные вопросы к нему порешать? |
Автор: chekist 21.12.08, 10:56 |
У меня возник вопрос по поводу использования режима IA (inter arrival) в TABLE. пишу: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TAB1 TABLE IA,0,10,10 ..... TABULATE TAB1 Выдает ошибку, Datum hasn't been initialized. Использую GPSS World Student. В хелпе по поводу IA-режима ни слова, GPSS World вообще его поддерживает ? Препод дал методу, в которой следующая фраза: Статистика о распределении интервалов между прибытием транзактов в некоторую точку P модели. В указанную точку помещается блок TABULATE, причем в поле аргумента карты TABLE (операнд А) записывается аббревиатура IA (IA режим использования таблицы). Погуглива нашел еще вот такое описание Специальные режимы работы таблиц Режим IA (Inter arrival) используют для оценки распределения промежутков времени между приходом транзактов в определенную точку модели. В этом случае при попадании транзактов в блок TABULATE фиксируется абсолютное модельное время и из него вычитается время прихода предыдущего транзакта. Полученный интервал вводится в таблицу. Пример: 1 TABLE IA,0,100,10 Но у меня в GPSS World это не работает. |
Автор: TEMENb 21.12.08, 11:11 |
Очень интересно.. Впринципе это можно организовать, использовав сохраняемую величину.. Я поищу - напишу ответ =) Добавлено Такс, вообщем про IA в GPSS/W я ничего не нашел. Попробуйте сделать так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> INITIAL X$TIM,0 TAB1 TABLE (AC1-X$TIM),0,10,10 ..... TABULATE TAB1 SAVEVALUE TIM,AC1 Добавлено правда время прихода ПЕРВОГО транзакта будет временем, за которое транзакт достигает табулейта.. т.е. не совсем то, что надо Но это можно с легкостью решить <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TAB1 TABLE (AC1-X$TIM),0,10,10 ..... TEST G N$MET1,0,MET1) TABULATE TAB1 met1 SAVEVALUE TIM,AC1 Таким образом первый транзакт пойдет на метку МЕТ1, а остальные пойдут прямехонько через табулейт. |
Автор: chekist 21.12.08, 11:32 |
Спасибо, попробую. А режим IA, он вообще откуда взялся. Из GPSS/H ? |
Автор: TEMENb 21.12.08, 11:35 |
может GPSS/H, а может GPSS/РС, а может Turbo GPSS.. может даже GPSS'95 student ))) откуда мне знать? ![]() |
Автор: Petroid 22.12.08, 05:05 |
Здравствуйте, у меня один большой вопрос по этой задаче. Еще раз, условие: В системе передачи данных осуществляется обмен пакетами данных между пунктами А и В по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени 10 ± 3 мс. Передача пакета занимает 10 см. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетов данных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ. Смоделировать обмен информацией в системе передачи данных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможных отказов определить необходимый для безотказной работы системы объем буферных регистров. Вот немного модифицированный мной код из того же самого поста: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SIMULATE 001 INPUT "Емкость буфера A", &CAPA=2 002 INPUT "Емкость буфера B", &CAPB=2 003 BUFA STORAGE &CAPA ; буферный регистр на пункте А 004 BUFB STORAGE &CAPB ; буферный регистр на пункте В 005 SAVEVALUE PAKAB,0 006 SAVEVALUE PAKBA,0 007 SAVEVALUE CALLSAT,0 008 SAVEVALUE PAKSAT,0 009 SAVEVALUE OTAKZSAT,0 *********A->B********************************************** 010 GENERATE 10,3 ; поступление пакетов в пункт А 020 GATE SNF BUFA,SAT ; если буфер заполнен то выход на спутник SAT 030 ENTER BUFA ; Заполнение буфера в пункте А 040 SEIZE AB ; занять устройство - линию от A к B 050 LEAVE BUFA ; освобождение буфера пункта А 060 ADVANCE 10 ; передача пакета 065 SAVEVALUE PAKAB+,1 ; увеличение числа переданных пакетов из А в В ;066 ENTER BUFB ; Заполнение буфера в пункте В 070 RELEASE AB ; осовободить устройство - линию от A к B ;071 LEAVE BUFB ; освобождение буфера пункта В 080 OUT TERMINATE ; 085 OTKAZ SAVEVALUE OTKAZSAT+,1 ; отказ передачи, увеличение числа отказов 090 TRANSFER ,OUT **********B->A********************************************* 100 GENERATE 10,3 ; поступление пакетов в пункт В 110 GATE SNF BUFB,SAT ; если буфер заполнен то выход на спутник SAT 120 ENTER BUFB ; Заполнение буфера в пункте В 140 SEIZE BA ; занять устройство - линию от В к А 160 LEAVE BUFB ; освобождение буфера пункта В 170 ADVANCE 10 ; передача пакета 175 SAVEVALUE PAKBA+,1 ; увеличение числа переданных пакетов из B в A ;176 ENTER BUFA ; Заполнение буфера в пункте А 180 RELEASE BA ; осовободить устройство - линию от В к А ;181 LEAVE BUFA ; освобождение буфера пункта А 190 TRANSFER ,OUT ; **********SATELLITE**************************************** 195 SAT SAVEVALUE CALLSAT+,1 ; увеличение числа частоты вызова спутника 200 GATE NU LINES,OTKAZ ; если линия спутника не занята то вниз иначе на отказ 210 SEIZE LINES ; занять устройство - спутниковую линию связи 220 ADVANCE 10,5 ; передача пакета 225 SAVEVALUE PAKSAT+,1 ; увеличение числа переданных пакетов через спутник 230 RELEASE LINES ; осовободить устройство - спутниковую линию связи 240 TRANSFER ,OUT ; *************************************************************************************** 500 GENERATE 60000 ; работа системы в течние 1 мин = 60000 мс 550 TERMINATE 1 ; 555 START 1 560 END В таком виде результаты моделирования вполне логичны. Видите закоментенные строки? Если их раскоментить, то результаты моделирования ни в какие ворота не лезут. Собственно, вопрос: а почему оно так? Если я правильно понял условие, буферы используются как для входящих, так и для исходящих пакетов, т.е. при передаче одного пакета занимаются буферы обоих сторон. Если это так, то что не правильно? Спасибо заранее! ЗЫ Это все для GPSS/PC делалось Добавлено Еще интерессный вопрос (скорее, риторический): почему в GPSS/PC не работает такой кусок кода? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 040 *какой-то код 045 GATE LR BVT,MET5 050 *опять какой-то код 055 MET5 TEST GE P1-V$M,100,MET6 060 *тут тоже что-то есть Ругается на несуществующее имя блока MET5... Причем после вот такого шаманства все работает: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 040 *какой-то код 045 GATE LR BVT,MET5 050 *опять какой-то код 055 MET5 ADVANCE 0 ; черная магия, не редактировать 060 TEST GE P1-V$M,100,MET6 065 *тут тоже что-то есть |
Автор: TEMENb 22.12.08, 08:27 |
Ну прежде всего, перед тем как отвечать на ваши вопросы, надо ответить, что жпсс - язык загадочный, а жпсс/рс - это загадка для наимудрейших мужей!! Цитата (с) цитатко из очень умной книжки по имитационному моделированию.GPSS - это больше, чем язык программирования. Это не только система имитационного моделирования а, прежде всего, это неординарное явление в мире программирования конца 60-х/начала 70-х годов. предупреждаю сразу. программу подробненько не смотрел, более того, условие задачи не читал. касаемо Цитата Petroid @ ;066 ENTER BUFB ; Заполнение буфера в пункте В 070 RELEASE AB ; осовободить устройство - линию от A к B ;071 LEAVE BUFB ; освобождение буфера пункта В вероятней всего что статистика и должна поменяться. и насколько точно она будет отображать суровую действительность зависит только от понимания модели автором. ИМХО я б убрал, строки 66 и 71 вообще, и пояснил преподу, что типа сообщение дошло, буферизация не требуется. Возможно автор задачи на это и расчитывал. Касаемо черной магии - блок адванс без параметров - это явление стандартное. Используется обычно, когда надо сделать обязательный переход на блок, ктороый возможно может быть занят. т.е. например Цитата transfer both,met1,met2 met1 seize 1 .............. met2 advance seize 2 конечно данный пример притянут зауши. проще было б поставить очередь, но суть вещей он отображает. Возможно в вашей модели транзакт не может перейти по метке. А возможно вы гдето ткнули табулятор... а РС их не любит.. незнаю даже почему.. наверно детские страхи... загадочный он этот РС...... Добавлено Цитата 005 SAVEVALUE PAKAB,0 006 SAVEVALUE PAKBA,0 007 SAVEVALUE CALLSAT,0 008 SAVEVALUE PAKSAT,0 009 SAVEVALUE OTAKZSAT,0 может конечно я старомоден, но для инициализации переменных используется блок INITIAL, а блок SAVEVALUE используется для присвоения значения в процесе моделироватия. Хотя конкретно в этом тексте задачи негативных последствий сия запись не несет.. но и позитивных тоже.. мусор )) Добавлено нумеруются обычно только функциональные блоки.. хотя это тоже не ошибка. так же РС рекомендует использовать идентификаторы не длиннее пяти символов. т.е. на "PAKSAT" он уже вполне может ругнуться.. хотя может и не ругнуться ![]() Добавлено //------------ да, так и есть. сия задачка валяется у меня в архивах. написана на жпсс ворде.. и с активным использованием косвенной адресации )) для получаемого сообщения буфер использован небыл.. а задача была сдана без замечаний ) |
Автор: Petroid 22.12.08, 16:41 |
Спасибо за ответ! Собственно, мои предположения оправдались. Сдал сегодня в таком виде (с убранными строками 66, 71, 176 и 181). Тоже без замечаний ![]() Воистину, GPSS/PC - наизагадочнейшее явление... Сегодня практически тот же код заработал без advance 0 ... ЗЫ Просто я привык к C/C++, и лично мне advance без параметров показался шаманством вроде if(false){}; ![]() Добавлено Цитата TEMENb @ вероятней всего что статистика и должна поменяться. и насколько точно она будет отображать суровую действительность зависит только от понимания модели автором Статистика меняется кардинально! Количество обслуженных основным каналом связи пакетов понижается до малоправдоподобной величины 0,33% зато количество потерянных пакетов возрастает до 62% ![]() |
Автор: TEMENb 22.12.08, 17:05 |
))) |
Автор: pil69 22.12.08, 17:57 |
;066 ENTER BUFB ; Заполнение буфера в пункте В 070 RELEASE AB ; осовободить устройство - линию от A к B ;071 LEAVE BUFB ; освобождение буфера пункта В Рассмешили меня этим кодом ![]() |
Автор: TEMENb 22.12.08, 18:14 |
а что смешного? Если буфер заполнен входящим сигналом. то пакет не выйдет из устройства. Может в этой задаче небыло такой задумки, но впринципе такой код вполне возможен. |
Автор: jaguar555 22.12.08, 21:36 |
Подскажите пожалуйста как проводить факторный анализ, т.е. по какому принципу вводить значения в нем, value1 и value2. и еще откуда брать данные для: 1. Средняя длительность прохождения через систему 2. Средневзвешенное время ожидания в очереди 3. линейная выпуклая комбинация всех факторов |
Автор: TEMENb 22.12.08, 22:16 |
скорее всего у вас там есть какой то параметр (F), который нужно оптимизировать. вводите значения методом научного тыка и смотрите на изменения. В особо тяжких случаях можно нарисовать график F(value1;value2) по результатам моделирования. блоки MARK, TABLE, TABULATE, и СЧА М1 тебе в помощь )) статистика по очереди незнаю что это такое... |
Автор: Rita_r 30.12.08, 18:04 |
В методичке нашла программу. В состав GPSS-модели входит 16 терминалов. Время подготовки пользователем запроса распределено равномерно в интервале [500,1500]. Время обслуживания запроса вычислительной системой распределено по нормальному закону со средним 500 и среднеквадратичным отклонением 50. Организовать моделирование в течение 100000 единиц модельного времени. TERM STORAGE 16 NRAS FUNCTION RN5,C25 0,-5/.00003,4/.00135,-3/.00621,-2.5 .02275,-2/.06681,-1.5/.11507,-1.2/.15899,-1 .21186,-.8/.2425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4/.72575,.6/.78814,.8 .8413,1/.88493,1.2/.93313,1.5/.97725,2 .9979,2.5/.99865,3/.99997,4/1,5 NORM FVARIABLE 500 + 50 *FN$NRAS GENERATE ,,,16 BAHT ENTER TERM,1 ADVANCE 1000,500 LEAVE TERM,1 QUEUE OCHER SEIZE COMP DEPART OCHER ADVANCE V$NORM RELEASE COMP TRANSFER ,BAHT GENERATE 580 TERMINATE 1 START 1 Возникает ошибка Line 9, Col 24. Syntax error. Unidentified character. NORM FVARIABLE 500 + 50 *FN$NRAS **** Model Translation Aborted **** Может у меня версия GPSS не подходящая? (у меня версия 5.2.2) |
Автор: TEMENb 30.12.08, 19:14 |
все дело в том, что умножение в жпсс выглядит так - "#", а не так - "*". Добавлено Цитата TERM STORAGE 16 NRAS FUNCTION RN5,C25 0,-5/.00003,4/.00135,-3/.00621,-2.5 .02275,-2/.06681,-1.5/.11507,-1.2/.15899,-1 .21186,-.8/.2425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4/.72575,.6/.78814,.8 .8413,1/.88493,1.2/.93313,1.5/.97725,2 .9979,2.5/.99865,3/.99997,4/1,5 NORM FVARIABLE 500 + 50 #FN$NRAS GENERATE ,,,16 BAHT ENTER TERM,1 ADVANCE 1000,500 LEAVE TERM,1 QUEUE OCHER SEIZE COMP DEPART OCHER ADVANCE V$NORM RELEASE COMP TRANSFER ,BAHT GENERATE 580 TERMINATE 1 START 1 и как жпсист жпэсисту советую - старайтесь делать поменьше либших пробелов ![]() |
Автор: TEMENb 31.12.08, 10:50 |
GPSS - то понятно. А какая среда? это явно не GPSS WORLD собственно и не GPSS/PC. Дык что ж это за зверь то такой? |
Автор: TEMENb 01.01.09, 23:35 |
я умею GPSS/PC и GPSS world, и даже некое самопальное чудо GPSS'95. То что в архиве вижу впервые. Вообщем как и половину операторов программы, написаной выше. Это вроде как turbo GPSS - вроде основа та же, но налеплено кучу наворотов которые дадо учить и в которых надо разбираться. Дык по турбо жпсс у меня хоть мануал был )) Похоже это именно тот случай, когда спасение утопающих - дело рук самих утопающих. Сори. |
Автор: TEMENb 02.01.09, 01:53 |
Тут Кстати ссылка на этот ресурс находится на этой же страницце. и даже выделена красным восклиццательным знаком )) |
Автор: Robotex 02.01.09, 03:56 |
Цитата TEMENb @ Тут Кстати ссылка на этот ресурс находится на этой же страницце. и даже выделена красным восклиццательным знаком )) Благодарствую... Почитаю... А вы задание не смотрели? Как может выглядеть алгоритм решения (словесно хотя бы) |
Автор: serg_fanat 02.01.09, 11:28 |
Добрый день!В GPSS вообще не разбираюсь,но нужно сделать курсовой проект по моделированию ИС...помогите пожалуйста.... задача: Ниже в подразделе 4.2 будут приведены индивидуальные задания для выполнения курсового проекта. В этих заданиях приведены различные структуры вычислительной системы. В заданиях предполагается, что каждая СМО, входящая в сеть, имеет простейший поток обслуживания, один канал обработки заявок и беско-нечный накопитель. Дисциплина обслуживания заявки не зависит от вре-мени ее обработки и от длины очереди. Это позволяет проводить аналити-ческое моделирование приведенных вариантов структур контуров боевого управления. Для этого в заданиях указан вектор интенсивности потока обслуживаний в отдельных СМО а также приведена матрица вероятностей перехода потока заявок между системами массового обслуживания. Номера СМО, входящих в сеть, обозначены на приведенных рисунках цифрами, которые помещены в прямоугольники, соответствующие элементам структуры. В качестве нулевой СМО взята среда. При этом предполагается, что все потоки данных о целях объединяются в общий входной поток, имеющий интенсивность . Для решения задач аналитического моделирования пред-полагается, что входной поток является простейшим. В этом случае реша-ется задача определения условий существования стационарного режима в стохастической сети. При построении графика зависимости математиче-ского ожидания времени обработки заявки от интенсивности входного потока рассматриваются значения от 0 до максимального, обеспечиваю-щего стационарный режим работы сети. При определении вероятностно-временных характеристик стохастиче-ской сети (пункт 3 задания) используются значения равные 0,01 с-1 . При определении значений вероятностно-временных характеристик се-ти при изменении скорости обработки информации операторами (пункт 4 задания) используются значения равные 0,01 с-1. Затем следует рассмот-реть изменение этих характеристик при увеличении интенсивности входно-го потока. Это позволит построить графики зависимости значений матема-тического ожидания времени нахождения заявки в системе от интенсивно-сти входного потока для разных значений интенсивности обслуживания заявок операторами. Имитационные модели следует строить из предположения, что все по-токи обслуживания остаются простейшими а входной поток варьируется. Следует рассмотреть простейший входной поток, поток, в котором время между заявками подчинено нормальному закону распределения, детерми-нированный поток и равномерный поток. При построении регрессионной модели в качестве факторов следует выби-рать значения интенсивности входного потока и математических ожида-ний времени обработки заявки операторами. Эта регрессионная модель позволит сравнить полученные зависимости при аналитическом и имита-ционном моделировании. При определении границ изменения факторов следует иметь в виду, что должны быть обеспечены условия стационарно-сти стохастической сети. Следовательно, значения интенсивности входно-го потока, должны изменяться от минимального до значения, рассчитанно-го при решении задачи № 2 задания, в которой определялись условия су-ществования стационарного режима. Минимальные интенсивности обра-ботки заявки операторами, которые позволяют определить математические ожидания времени обработки заявки операторами, должны удовлетворять соотношению min i ai max. ![]() ![]() |
Автор: Yznau 13.01.09, 07:01 |
Здравствуйте! Мне надо решить задачу: Скрытый текст Имеется некоторый производственный процесс, который реали¬зуется линией с тремя последовательно установленными агрегатами: A, B и C. Поток продукции, который поступает от агрегата А, является пуассоновским со средней нормой выработки 15 изделий за час. Аг¬регат B функционирует по равномерному закону, продолжительность обработки изделия составляет 4 ± 1 мин. Закон распределения време¬ни обслуживания изделий агрегатом C приведен в таблице: Вероятность 0,1 0,2 0,4 0,2 0,1 Продолжительность обслуживания, мин. 2 3 4 5 6 При скоплении на входе агрегата C двух или более изделий в технологической линии возникает затор. Промоделировать функционирование линии на протяжении 100 ч. Определить общее время затора на входе агрегата C. Построить гистограмму распределения продолжительности заторов. Я все сделал, однако есть одна загвоздка: КАК можно определить общее время затора(общее время жизни очередей) и каким образом построить гистограмму распределения ПРОДОЛЖИТЕЛЬНОСТИ заторов? Как строить диаграмму в GPSS World я знаю..но как вообще получить данные о распределении продолжительности очередей? Какой СЧА вообще за это отвечает? Перерыл 4 книги, ни в одной не нашел зацепку. QTABLE? Пробовал. Совсем там не распределение продолжительности очередей:( ![]() ![]() Сдавать задачу уже 15. Подскажите пожалуйста, как вообще определяется это время продолжительности очередей? |
Автор: TEMENb 13.01.09, 07:38 |
РАСПРЕДИЛЕНИЕ ДЛИННЫ ОЧЕРЕДИ (ЕСЛИ Я ВСЕ ПРАВИЛЬНО ПОНЯЛ) Цитата ************************************* ;-----------------------------------; TAB TABLE Q$OCH,-.5,1,1000 ;-----------------------------------; ************************************* ;-----------------------------------; GENERATE 1 TABULATE TAB TERMINATE ;-----------------------------------; ************************************* ЗАТОР Цитата ************************************* ;-----------------------------------; INITIAL X$ZATOR,0 ;-----------------------------------; ************************************* ;-----------------------------------; GENERATE ,,,1 POVT TEST GE Q$OCH,2 MARK TEST L Q$OCH,2 SAVEVALYE ZATOR+,M1 TRANSFER ,POVT ;-----------------------------------; ************************************* ТАКУЮ СТАТИСТИКУ ВСЕГДА УДОБНО ДЕЛАТЬ ОТДЕЛЬНЫМИ СЕГМЕНТАМИ, ЧЕМ ЗАГРОМОЖДАТЬ МОДЕЛЬ. З.Ы.: ПИСАЛ НА КОЛЕНКЕ, ИЗВИНИТЕ, ЕСЛИ ДЕТО ЗАПОРОЛ, НО СУТЬ ЭТА. З.З.Ы: СОРИ ЗА КАПС ) |
Автор: QxMIPS 13.01.09, 13:57 |
может мне тож кто подскажет?? Нашел решение своей задачи. незнаю правильно ли выполнено или нет((... подскажите плиZzzz. Детали, необходимые для работы цеха, находятся на цеховом и центральных складах. На цеховом складе хранится 20 комплектов деталей, потребность в которых возникает через 60+-10 минут и составляет один комплект. В случае снижения запасов до трех комплектов, формируется в течении 60 минут заявка на пополнение запасов цехового склада до полного объема в 20 комплектов, которая посылается на центральный склад, где в течении 60+-20 минут происходит комплектовка и за 60+-5 минут осуществляется доставка деталей в цеховой склад. Смоделировать работу цеха в течении 400 часов. Определить вероятность простоя цеха из-за отсутствия деталей и среднюю загруженность цехового склада. Определить момент пополнения запасов цехового склада при котором вероятность простоя цеха равна 0. код программы: simulate initial x$och,20; generate 24000; terminate 1; generate 60,10; test NE x$och,0,vihod0; SAVEVALUE och-,1; test e x$och,3,vihod; split 1,centrskl; vihod terminate ; vihod0 terminate; centrskl advance 60; advance 60,20; advance 60,5; SAVEVALUE och,20; terminate; start 1; Нашел по адресу GPSS задача . сообщение от Koluchiy. правильно ли он находит неизвестные??? |
Автор: TEMENb 13.01.09, 14:00 |
Неправильно |
Автор: Yznau 13.01.09, 15:01 |
Спасибо, TEMENb, за помощь:) Буду пробовать. Если не трудно будет, поясни пожалуйста действие кода оценки времени затора, то есть что там с транзактом происходит. |
Автор: Eugen 13.01.09, 19:42 |
проверка в цикле (если очередь >2) запомнить время этого события перейти вниз. нижний цикл проверки. Состояние затор, очередь >2. если очередь <2 записать длительность затора и перейти на верхний цикл и т.д. ![]() |
Автор: Yznau 14.01.09, 13:34 |
Фух....вроде получилось, успокойте меня пожалуйста, скажите, что здесь все правильно ![]() ***Имеется некоторый производственный процесс, который реали¬зуется линией с тремя последовательно установленными агрегатами: A, B и C. Поток продукции, который поступает от агрегата А, является пуассоновским со средней нормой выработки 15 изделий за час. Аг¬регат B функционирует по равномерному закону, продолжительность обработки изделия составляет 4 ± 1 мин. Закон распределения време¬ни обслуживания изделий агрегатом C приведен в таблице: Вероятность 0,1 0,2 0,4 0,2 0,1 Продолжительность обслуживания, мин. 2 3 4 5 6 При скоплении на входе агрегата C двух или более изделий в технологической линии возникает затор. Промоделировать функционирование линии на протяжении 100 ч. Определить общее время затора на входе агрегата C. Построить гистограмму распределения продолжительности заторов. *** Единица модельного времени - одна минута. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PUASSON FUNCTION RN1,C24 ;Определение функции пуассоновского входящего потока. 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/ .75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/ .95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8 OAC FUNCTION RN4,D5 ;Определение функции продолжительности обслуживания деталей агрегатом C. .1,2/.3,3/.7,4/.9,5/1,6 INITIAL X$ZATOR,0 ;Инициализация сохраняемой величины ZATOR (Время затора). TAB TABLE Q$QPribC,0,5,7 ;Сбор в таблицу статистических данных об очереди к агрегату C. ************************* Generate 4,FN$PUASSON ;Генерация пуассоновского потока с интенсивностью 15 изделий в час. Queue QPribB ;Транзакт занимает очередь к агрегату B. Seize PribB ;Транзакт занимает агрегат B. Depart QPribB ;Транзакт покидает очередь к агрегату B. Advance 4,1 ;Обработка изделия агрегатом B. Release PribB ;Транзакт покидает агрегат B. Queue QPribC ;Транзакт занимает очередь к агрегату C. Seize PribC ;Транзакт занимает агрегат C. Depart QPribC ;Транзакт покидает очередь к агрегату B. Advance FN$OAC ;Обработка изделия агрегатом C. Release PribC ;Транзакт покидает агрегат C. Tabulate TAB Terminate ;Транзакт покидает производственную линию. ************************* GENERATE ,,,1 ;Определение общего времени затора POVT TEST GE Q$QPribC,2 ;Сравнение количества транзактов в очереди к агрегату C. MARK ;Запись текущего значения времени. TEST L Q$QPribC,2 ;Сравнение количества транзактов в очереди к агрегату C. SAVEVALUE ZATOR+,M1 ;Увеличение и сохранение величины ZATOR на значение времени продолжительности последнего затора. TRANSFER ,POVT ;Возврат к блоку с меткой POVT. ************************* Generate 6000 ;Моделирование 100 часов работы линии. Terminate 1 Start 1 |
Автор: TEMENb 14.01.09, 14:05 |
особо не вглядывался, но динамика длинны очереди считается не верно. должны быть значения по каждой ЕМВ, а у вас колличество значений равно колличеству обработаных транзактов.. хотя может так задумано ) |
Автор: Yznau 14.01.09, 18:17 |
О! Я понял! TEMENb, ты меня прямо просветляешь ![]() |
Автор: TEMENb 15.01.09, 02:35 |
![]() |
Автор: Eugen 15.01.09, 15:49 |
прям как лампочка Ильича ![]() Добавлено ![]() |
Автор: vedmochka 17.01.09, 15:37 |
подскажите пожалуйста,как задать вначале количество деталей(600 штук),и что в конце писать возле start? |
Автор: TEMENb 17.01.09, 16:15 |
GENERATE A,B,C,600 - это если всего надо сгенерировать 600 транзактов START 600 - это если 600 транзактов должно пройти через TERMINATE 1 |
Автор: BabaYaga 19.01.09, 17:41 |
Добрый день уважаемые Разработчики. На ВЦ через 30+- 10 мин поступают задания длиной 500+-200 байт. Скорость ввода, вывода и обработки заданий соответственно: 100+-30 байт/мин, 150+- 50 байт/мин и 100+-70 байт/мин. Задания проходят последовательно ввод, обработку и вывод. После вывода 5% заданий из-за ошибок возвращаются на повторное решение на общих основаниях. При обслуживании задания, имеющие меньшую длину обслуживаются в первую очередь. Написать модель на языке GPSS/PC-2. Определить: 1) Основные характеристики времени реакции системы. 2) Какой процент повторных ошибок будет у исправленных заданий. Я не понимаю, как сделать, чтобы наибольший приоритет был у самого короткого транзакта. (Видела на форуме такую запись "priority 400-P1", но не догоняю. И как сделать отказ для 5% заданий. Очень прошу, помогите пожалуйста с решением. Заранее благодарна. P.S. Стыжусь своей безграмотности. ![]() |
Автор: TEMENb 19.01.09, 17:46 |
я когда то такую бодягу писал. для РС она не прокатит. Вопервых потому, что в качестве параметра нельзя использовать выражения. вовторых потому что максимальное значение приоритета может быть 127. Используйте вычисляемые выражения или параметры.. вообщем поступайте так же, как поступаете с сременем передачи в адвансах. Цитата TRANSFER .05,,otkaz |
Автор: Eugen 19.01.09, 18:26 |
такую запись нужно использовать осторожно Идеально подходит блок LINK/UNLINK первый вариант: пошукай в ранее написанном в других темах. второй - TRANSFER 0.05,met95,met5 |
Автор: TEMENb 19.01.09, 18:33 |
ну это только в GPSS/PC. GPSS world это значение не ограничивает как в положительную, так и в отридцательную сторону, посему можно использовать просто Цитата priority (-1#P1) |
Автор: BabaYaga 20.01.09, 20:13 |
Вопрос еще про приоритет... Как я буду сравнивать транзакты друг с другом по длине, у меня же очередь не ограничена никаким числом транзактов? Было бы их штук 10, например, тогда еще как-то понятно... |
Автор: TEMENb 20.01.09, 20:18 |
Цитата PRIOR VARIABLE (127-(P1\4)) ;Лабаем из диапазона в 400 приоритетов диапазон в 100 приоритетов. ;и ненадо про меня гадости думать.. деление там правильно написано ) ******************** ******************** ******************** ******************** PRIORITY V$PRIOR QUEUE******** |
Автор: BabaYaga 20.01.09, 21:18 |
Мега-спасибище!!! ![]() |
Автор: BabaYaga 20.01.09, 23:01 |
Посмотрите пожалуйста, похоже хоть отдаленно на мою задачу? Знаю, что безграмотно. Пыталась написать что-то на GPSS вообще в первый раз в жизни. [ code ] 10 GENERATE 30,10 ; 20 VIP VARIABLE (127-(P1\4)) 30 PRIORITY VIP 40 OTKAZ QUEUE OCHER 50 SEIZE VVOD 60 ADVANCE 100,30 80 RELEASE VVOD 81 TERMINATE VVOD 90 SEIZE OBRAB 100 ADVANCE 150,50 110 RELEASE OBRAB 111 TERMINATE OBRAB 120 SEIZE VIVOD 130 ADVANCE 100,70 140 RELEASE VIVOD 141 TERMINATE VIVOD 150 DEPART OCHER 160 TRANSFER 0.05,,OTKAZ [ /code ] |
Автор: TEMENb 20.01.09, 23:03 |
отдаленно похоже.. а оно работает разве? или вы не на РС пишете? Добавлено Правда похоже весьма отдаленно )))) поудаляйте все терминейты из модели и поставьте один. где то строчке на 170-й. Вынесите значение приоритета в качетве вариэйбла, как я писал выше, иначе на скомпилится. З.Ы.: очередь у вас сурезная получилась.. но на правильность работы модель не влияет ) |
Автор: BabaYaga 20.01.09, 23:13 |
На PC. Насчет терминейтов... Я без них вначале и пыталась, но GPSS ругнулся, что out of memory |
Автор: TEMENb 20.01.09, 23:17 |
гык )) Цитата var variable (127-(P1\4)) Здесь могла бы быть ваша реклама start 1 Корявенько, но должно работать ) |
Автор: BabaYaga 20.01.09, 23:23 |
Благодарю. Пойду спать. Завтра на свежую голову буду пробовать втыкать Добавлено А там очередь-то вообще нужна??? |
Автор: TEMENb 20.01.09, 23:28 |
Там где она есть - не нужна ![]() А впринципе нужна, конечно.. ну не помешала бы по крайней мере ![]() |
Автор: TEMENb 21.01.09, 07:07 |
Цитата GENERATE 8,2 gate nu oa1,oaa2 ; TRANSFER BOTH,OAA1,OAA2 OAA1 SEIZE OA1 ADVANCE x$p_st1,x$p_ot1 RELEASE OA1 TRANSFER ,OUT OAA2 SEIZE OA2 ADVANCE x$p_st2,x$p_ot2 RELEASE OA2 OUT TERMINATE 1 initial x$p_st1,5 initial x$p_ot1,3 initial x$p_st2,7 initial x$p_ot2,2 start 1000 clear reset initial x$p_st1,6 initial x$p_ot1,2 initial x$p_st2,6 initial x$p_ot2,1 start 1000 Цитата MEM STORAGE 3 GENERATE 8,2 TRANSFER BOTH,met1,out ;GATE SNF MEM,OUT met1 ENTER MEM SEIZE DEV LEAVE MEM ADVANCE 10,4 RELEASE DEV OUT TERMINATE 1 start 1000 clear reset MEM STORAGE 5 start 1000 |
Автор: BabaYaga 22.01.09, 18:49 |
Подскажите пожалуйста, в этой задаче основные характеристики реакции системы - это: время ввода задания, время обработки и время вывода? |
Автор: BabaYaga 22.01.09, 22:19 |
Попробовала через LINK написать. Но как в UNLINKе изобразить, что 5% ошибочных идут на повторную обработку??? |
Автор: TEMENb 22.01.09, 22:38 |
ПРРРР не влазьте в дебри ненужен там линк Цитата 5% пойдут на метку, остальные пойдут дальше transfer .05,povt |
Автор: Yamakasi 26.01.09, 08:03 |
народ помогите навалять программку очеень буду признателен На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится с вероятностью 60% на первом станке и с вероятностью 40% на втором станке. Первый станок обрабатывает деталь в среднем 40 мин и имеет 4% брака, второй соответственно 60 мин и 8% брака. Все бракованные детали возвращаются на повторную обработку каждый в свой станок. Разработать по концептуальной модели программную модель системы с использованием ЯИМ GPSS. Определить среднюю длину очередей перед обработкой на станках. |
Автор: TEMENb 26.01.09, 08:08 |
Безусловно поможем. Где ваш исходный текст? З.Ы.: Между "поможем" и "напишем" принципиальная разница. Последнее обычно за деньги делается. |
Автор: Yamakasi 26.01.09, 08:31 |
Ну собственно вот и есть задание Текст задания: На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится с вероятностью 60% на первом станке и с вероятностью 40% на втором станке. Первый станок обрабатывает деталь в среднем 40 мин и имеет 4% брака, второй соответственно 60 мин и 8% брака. Все бракованные детали возвращаются на повторную обработку каждый в свой станок. |
Автор: TEMENb 26.01.09, 09:05 |
Текст программы, которую вы пытались написать по заданию |
Автор: Yamakasi 26.01.09, 09:34 |
я даже не пытался делать! вот и прошу помоши! конечно не безвозместно! |
Автор: Eugen 26.01.09, 15:11 |
15$ - обрабатывающий участок подобная задача должна быть в этом разделе |
Автор: Eugen 28.01.09, 19:26 |
фрагмент решения такой: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 50 TRANSFER 0.4,,met1 met2 SEIZE Stаnоk1 ADVANCE 40 RELEASE Stanok1 TRANSFER 0.04,,met2 ... GENERATE 1440 TERMINATE 1 start1 и снова 2варианта: попытаешься сделать и/или не безвозместно + халява тоже здесь есть GPSS задача (сообщение #2181443) |
Автор: SMRBR 29.01.09, 23:33 |
Господа, подскажите правильно ли я понял условие задачи... В начале работы на фирме на счёт корпоративного пользователя мобильной связью перечислено 500р. Ежедневный расход средств – случайная величина, распределенная по случайному закону со средним значением 50 руб. и средним квадратичным отклонением 10 руб. По договору с оператором мобильной связи в конце каждой недели производится контроль остатка средств на счету пользователя. Если на счету меньше 150р. то счёт автоматически в течении 2 плюс минус 1 день пополняется до 500 р. Требуется смоделировать работу системы пополнения счёта в течение 180 дней. Какова вероятность остаться пользователю без мобильной связи? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SchAb STORAGE 500 ;средства на счёте абонента SostSch TABLE S$SchAb 0,1,502 ;статистические данные о состоянии счёта абонента PopSc VARIABLE NahKol-S$SchAb ;объём соедств, необходимый для пополнения счёта абонента EzRas VARIABLE RN1@20+40 ;ежедневный расход средств абонентом NahKol EQU 500 ;начальное количество средств на счету абонента GrPop EQU 150 ;сумма после которой необходимо пополнение счёта *Сегмент процесса заказа* GENERATE 7,,,,1 ;генерация транзакта каждые 7 дней TEST L S$SchAb,GrPop,Met1 ;проверка необходимости пополнения счёта ASSIGN 2,V$PopSc ;величина заказа заносится во второй параметр транзакта ADVANCE 2,1 ;время задержки пополнения счёта ENTER SchAb,P2 ;пополнение счёта абонента Met1 TERMINATE ;завершение заказа *Сегмент расхода средств* GENERATE 1 ;генерация транзакта каждый день ASSIGN 1,V$EzRas ;дневной расход средств записывается в первый параметр TABULATE SostSch ;средства на счёте на текущий день TEST GE S$SchAb,P1,Met2 ;проверка возможности снятия денег со счёта LEAVE SchAb,P1 ;списание необходимого количества средств со счёта абонента TERMINATE 1 ;завершение дня Met2 TERMINATE 1 ; START 180 ;количество дней *Инициализация счёта* GENERATE ,,,1,10 ;порождается 1 транзакт ENTER SchAb,NahKol ;запись начального количества средств на счёт абонента TERMINATE ; Я сомневаюсь насчёт использования блока ADVANCE для моделирования данной ситуации "то счёт автоматически в течении 2 плюс минус 1 день пополняется" |
Автор: TEMENb 30.01.09, 07:03 |
Какой интересный подход к реализации ) Я б делал щет сохраняемой величиной. так же, исходя из кода, если у абонента не хватит денег совершить запланированный звонок - то звонить он не будет вообще ) |
Автор: Eugen 30.01.09, 21:26 |
Цитата - Лучше поменять блоки, тогда не нужна единица*Сегмент процесса заказа* GENERATE 7,,,,1 ;генерация транзакта каждые 7 дней <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> и только затем*Сегмент расхода средств* GENERATE 1 ;генерация транзакта каждый день <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> *Сегмент процесса заказа* GENERATE 7 ;генерация транзакта каждые 7 дней Цитата - поменяй наMet2 TERMINATE 1 ; <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> тогда абонент сможет расходовать средства со счета до 0Met2 LEAVE SchAb,S$SchAb TERMINATE 1 - и тоже самое с вариантом до <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> после TEST GE S$SchAb,P1,Met2 LEAVE SchAb,P1 TERMINATE 1 Met2 LEAVE SchAb,S$SchAb TERMINATE 1 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> + LEAVE SchAb,V$write_off TERMINATE 1 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> write_off VARIABLE ((S$SchAb'GE'P1)#P1 + (S$SchAb'L'P1)#S$SchAb) Добавлено модельная ед.времени 1 день - 2й вариант <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ADVANCE 2,1 ;время распределено на интвале [1,3) ADVANCE (uniform(1,1,4)\1) ;время дискретно 1 или 2 или 3 |
Автор: TEMENb 06.02.09, 06:54 |
Цитата <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 10 ADVANCE (Normal(1,10,3)) TERMINATE GENERATE 1000000 TERMINATE 1 START 1 При большом числе опытов возникает следующая ошибка: 02/05/09 17:46:18 ADVANCE (Normal(1,10,3)) 02/05/09 17:46:18 Negative time increment. Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0? Писать свое "нормальное" распределение не хочется... Ну вопервых подумайте, действительно ли это то распредиление, которое вам нужно. Вовторых "свое" нормальное распредиление писать ненужно. все уже придумано до вас. Цитата NORM FUNCTION RN2,C25 0,-5/.00003,-4/.00135,-3/.00621,-2.5/.02275,-2 .06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.2725,-.6 .34458,-.4/.42074,-.2/.5,0/.57296,.2/.65542,.4 .72575,.6/.78814,.8/.84134,1/.88493,1.2/.93319,1.5 .97725,2/.99379,2.5/.99865,3/.99997,4/1,5 Как видите значения меняются от -5 до 5. Следовательно (Normal(1,10,3)) или (10+3#FN$NORM) вернет значения [-5,25] что действительно не подходит под опредиление "временной интервал". Если вы всетаки уверены, что интервал задан верно, то решение следующее: Цитата GENERATE 10 POVT ASSIGN 1,(Normal(1,10,3)) TEST GE P1,0,POVT ADVANCE P1 TERMINATE GENERATE 1000000 TERMINATE 1 START 1 |
Автор: Eugen 06.02.09, 16:20 |
Цитата TEMENb @ Цитата Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0? отв. только на это <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> testing_P1 VARIABLE ((P1'G'0)#P1) ASSIGN 1,(Normal(1,10,3)) ASSIGN 1,V$testing_P1 |
Автор: TEMENb 06.02.09, 16:58 |
Ух Цитата testing_P1 VARIABLE ((P1>0)#P1) Расшифровал ![]() Этот метод, помоему, более правильный. |
Автор: Eugen 06.02.09, 18:05 |
не совсем ![]() Цитата TEMENb @ Цитата Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> testing_P1 VARIABLE ((P1'G'0)#P1) ASSIGN 1,(Uniform(1,-5,100)) ASSIGN 1,V$testing_P1 Цитата TEMENb @ Цитата При большом числе опытов возникает следующая ошибка: 02/05/09 17:46:18 ADVANCE (Normal(1,10,3)) 02/05/09 17:46:18 Negative time increment. Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0? Цитата GENERATE 10 POVT ASSIGN 1,(Normal(1,10,3)) TEST GE P1,0,POVT ADVANCE P1 TERMINATE |
Автор: MEGERA 09.02.09, 07:41 |
Слушайте, я понимаю, что это немного не в тему, но все равно. Кто-нибудь знает чем GPSS лучше сетей Петри? Или не лучше, но область применения отличается? Просто я так понимаю, что моделировать можно и на том, и на том, в какой угодно отрасли..... Просто срочно надо найти какие-то недостатки сетей Петри! ![]() |
Автор: Eugen 23.02.09, 17:45 |
GPSS задача (сообщение #2201319) Цитата bobkOFF @ Здравствуйте! Подскажите, пожалуйста, с чего начать решать задачу. С преподом на словах обговорили вроде все понятно, а вот с чего начинать даже не представляю. Сделайте хоть примерный набросок этой задачки. Пытаюсь сам разобраться ничего не получается. Заранее спасибо за любые подсказки. Задания на обработку данных, поступающие на ЭВМ, характеризуются известным требуемым временем работы процессора и условно подразделяются на короткие и длинные. Короткие задания требуют менее 6 мин времени работы процессора. Задания поступают на ЭВМ через каждые 8 ± 3 мин и требуют для своей обработки 4 ± 3 мин времени работы процессора. Короткие задания вводятся в ЭВМ с помощью дисплея за 3 ± 2 мин. Дисплей остается занятым коротким заданием до момента окончания выдачи результатов на печать. Короткие задания имеют абсолютный приоритет над длинным при использовании процессора, т. е. они прерывают выполнение длинных заданий. Длинные задания предварительно готовятся на дискетах на ПЭВМ за 8 ± 5 мин и вводятся в ЭВМ дисковода за 3 ± 2 мин. После обработки на процессоре как коротких, так и длинных заданий производится вывод результатов на печать в течение 2 ± 1 мин. Одновременно на PC обрабатывается только одно задание. Смоделировать процесс функционирования PC при условии, что обработать необходимо 100 заданий. Определить число коротких и длинных заданий, ожидающих обработки, а также число обработанных коротких заданий и коэффициент загрузки процессора. Сообщение отредактировано: bobkOFF - 21.02.09, 16:34 ХАЛЯВА: ЧКЗОО - число коротких заданий ожидающих обработки КДЗОО - число динных ВсД - ввод длинного задания с дисковода |
Автор: bobkOFF 24.02.09, 04:24 |
Больщое спасибо! Буду разбираться.. |
Автор: MEGERA 01.03.09, 15:25 |
Знатоки GPSS, помогите разобраться! RMULT 1187 Checkout_2 EQU 2 Checkout_N EQU 5 Time_work VARIABLE 12#60#60 N_Purchases VARIABLE (RN1@96+5) Это кусочек кода. Не могу понять смысл использования RMULT 1187 и строки N_Purchases VARIABLE (RN1@96+5). Я понимаю, что генерируется переменная на основе ГСЧ RN1, но что означает "@96+5"? и каким образом этот RN1 обращается к RMULT? |
Автор: Eugen 01.03.09, 15:30 |
RMULT 1187 - начальное значение для RN1 (RN1@96+5) - (целый остаток от деления RN1 на 96 + 5) |
Автор: TEMENb 01.03.09, 15:33 |
Цитата MEGERA @ RMULT 1187 Checkout_2 EQU 2 Checkout_N EQU 5 Time_work VARIABLE 12#60#60 N_Purchases VARIABLE (RN1@96+5) задаем общий множитель для генератора случайных чисел номер 1 обьявляем константу Checkout_2 равной 2 обьявляем константу Checkout_N равной 5 обьявляем вычисляемое выражение Time_work равным 12#60#60 (тупизм полнейший V$Time_work будет равно 12*60*60. проще было один раз числом написать) обьявляем вычисляемое выражение N_Purchases равным (RN1@96+5) (@ - остаток от деления. RN1 - генератор случайных чисел, дает число от 0 до 999). Добавлено З.Ы.: Евген выстрелил быстрее )) |
Автор: Eugen 01.03.09, 15:45 |
? от 0 до 999 или от 0 до 1 |
Автор: TEMENb 01.03.09, 15:51 |
общий множитель - это число, которое задает последовательность случайных чисел. т.к. генераторы случайных чисел на самом деле псевдо случайны, то если не менять это чило, то запуски программы дадут одни и те же значения.. А значения генератора случайных чисел действительно от 0 до 999. Хотя если честно меня иногда терзают смутные сомнения. каким образом в функциях ГСЧ генять числа 0..1 |
Автор: Eugen 01.03.09, 15:52 |
не охота проверять - все написано здесь Боев Д.В. стр 188-9 |
Автор: TEMENb 01.03.09, 15:58 |
Цитата sss table p1,.5,1,10000 generate 1 assign 1,rn1 tabulate sss terminate 1 start 1000 Добавлено угу. 189 стр. третий абзац.. |
Автор: Eugen 01.03.09, 16:14 |
Все так от 0 до 999 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> в этом месте - от 0 до 0.999999 стр.196 Rasp FUNCTION RN6,D5 .15,2/.35,5/.6,8/.82,9/1,12 |
Автор: MEGERA 01.03.09, 16:39 |
Цитата TEMENb @ N_Purchases VARIABLE (RN1@96+5) наверняка имеется ввиду равномерное распредиление от 5 до 100. как раз в том-то и беда, что неизвестно, что это за распределение вообще! инфы практически нет, есть это горе-код, который мне нужно воплотить в Arena. и вот это-то и составляет основную проблему: не знаю, что это за распределение. здесь оно отталкивается от множителя RMULT, а в арене-то нет такого... ![]() |
Автор: TEMENb 01.03.09, 16:40 |
кстати, будь я преподом - я б пристебался N_Purchases VARIABLE (RN1@96+5) наверняка имеется ввиду равномерное распредиление от 5 до 100. так вот в данной формуле выпадание числа 5..45 более вероятно, чем 46..100. А это уже не равномерный закон получается.. Я бы советовал использовать конструкцию типа (RN1#95/1000+5) для непрерывного или (RN1#95\1000+5) для дискретного распредиления(в GPSS/PS оба варианта дискретны) можно еще попробовать использовать Uniform и DUniform (в PC их использовать нельзя). Добавлено забй на RMULT. Его можно смело удалить. Добавлено распредиление равномерное. интервал распредиления 5..100. Причем распредиление дискретное. Добавлено кстати. раз такое дело.. весь код в студию ) |
Автор: MEGERA 01.03.09, 16:50 |
мммм, клева! спасибо за консалтинг! ща попробую добить модельку в арене! вот, собссно, код: RMULT 1187 Checkout_2 EQU 2 Checkout_N EQU 5 Time_work VARIABLE 8#60#60 N_Purchases VARIABLE (RN1@96+5) Time_system TABLE M1,10000,10000,7 Purchases TABLE P$Qty_purchases,10,10,10 N_Customer TABLE X$Customer,100,50,12 Basket STORAGE 50 Cart STORAGE 100 Park STORAGE 100 Cashier VARIABLE P$Qty_purchases#2 Time_shop VARIABLE P$Qty_purchases#100 INITIAL X$Customer,0 Parking TRANSFER Both,,Lost ENTER Park ADVANCE 60,40 ENTRY SAVEVALUE Customer+,1 ASSIGN Qty_purchases,V$N_Purchases TEST LE P$Qty_purchases,10,QCart GATE SNF Basket,QCart QUEUE Basket_Q ENTER Basket DEPART Basket_Q ASSIGN Container,Basket TRANSFER ,Shop QCart QUEUE Cart_Q ENTER Cart DEPART Cart_Q ASSIGN Container,Cart Shop ADVANCE V$Time_shop TEST LE P$Qty_purchases,10,Norm QUEUE Xpress_Q SEIZE Xpress DEPART Xpress_Q ADVANCE V$Cashier RELEASE Xpress LEAVE P$Container TRANSFER ,Fin Norm SELECT MIN Minque,Checkout_2,Checkout_N,,Q QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container Fin TABULATE Time_system TABULATE Purchases SAVEVALUE Customer-,1 ADVANCE 60,50 LEAVE Park TERMINATE Lost TERMINATE ***************************************************************************** * Customers arrival during 0 - 30 minutes. GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,Parking * Customers arrival during 30 - 90 minutes. GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,Parking * Customers arrival during 90 - 150 minutes. GENERATE (Exponential(1,0,80)),,5400,300 ;Частота появления через 1.5 часа. TRANSFER ,Parking * Customers arrival during 150+ minutes. GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,Parking GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,ENTRY GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,ENTRY GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,ENTRY ***************************************************************************** GENERATE V$Time_work TABULATE N_Customer TERMINATE 1 START 1 В общем-то, хоть он практически и без инфы был, ясно, что дело происходит в магазине, куда покупатели приезжают на машинах, потом заходят и, на основе того, сколько покупок им нужно сделать, берут тележку или корзинку. потом ходят берут товары и приходят на кассу обслуживаться. причем, для тех, кто взял 10 или меньше товаров, касса отдельная, а остальные выбирают кассу с наименьшей очередью. Добавлено аааааааа!!! есть контакт! наконец-то результаты сошлись! Eugen, TEMENЬ, респект вам огромный за помощь! |
Автор: MEGERA 02.03.09, 14:27 |
Кстати, а если б нужно было, например, равномерное распределение не от 5 до 100, а от 0 до 30, то как бы это тогда выглядело? |
Автор: TEMENb 02.03.09, 14:53 |
DUniform(1,0,30) ;дискретное Uniform(1,0,30) ;непрерывное RN1#30\1000 ;дискретное RN1#30/1000 ;непрерывное |
Автор: Eugen 02.03.09, 16:18 |
еще точнее ![]() RN1#30\999 ;дискретное RN1#30/999 ;непрерывное и общаяя формула для равномерного распределения A+/-B: A-B+(2#B#RNn)/999, A-B - наименьшее значение; 2#B - ширина выборки. стр.191 |
Автор: MEGERA 02.03.09, 16:43 |
ага, точно, врубилась! спасибо, ребят! ![]() |
Автор: TEMENb 02.03.09, 17:06 |
мой вариант точнее. делим то мы не на верхнее значение, а на колличество значений )) А это 0..999 итого 1000 штук ![]() |
Автор: MEGERA 04.03.09, 15:43 |
Цитата MEGERA @ * Customers arrival during 0 - 30 minutes. GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,Parking * Customers arrival during 30 - 90 minutes. GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,Parking * Customers arrival during 90 - 150 minutes. GENERATE (Exponential(1,0,80)),,5400,300 ;Частота появления через 1.5 часа. TRANSFER ,Parking * Customers arrival during 150+ minutes. GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,Parking GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,ENTRY GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,ENTRY GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,ENTRY А вот еще такой вопрос. У меня покупатели двух типов: приезжающие на машине(отправляются трансфером на метку Parking) и приходящие пешком (отправляются на метку ENTRY в обход парковки). И я не могу допетрить, как их идентифицировать. Т.е. Надо тем, кто на машине, присвоить один уникальный параметр, а тем, кто пришел пешком - другой, чтоб потом я могла их разделить, когда дело дойдет до возвращения на парковку... Только как? |
Автор: Eugen 04.03.09, 15:53 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ASSIGN 1,1 TRANSFER ,Parking ASSIGN 1,2 TRANSFER ,ENTRY |
Автор: MEGERA 04.03.09, 16:04 |
ага, а когда мне потребуется их разделить, использую конструкцию TEST NE 1,1,Fin LEAVE Park Fin TERMINATE Правильно? |
Автор: Eugen 04.03.09, 17:12 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST E P1,1,Fin ASSIGN A,B - операнд A задает номер параметра или его имя.. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ASSIGN 1,123 ASSIGN 1,P$name ASSIGN name,123 ASSIGN name,P1 во всех(как правило) остальных местах (в т.ч. и в операнде B), - P$имя параметра или P и номер <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST E P1,123,Fin TEST E P$name,123,Fin |
Автор: MEGERA 04.03.09, 17:40 |
фу ты, блин! все-таки пора заняться серьезно изучением гпсс, чтоб так не тупить ![]() |
Автор: MEGERA 04.03.09, 19:36 |
И последний вопрос! Нужно сгенерить транзакты по экспоненте таким образом, чтоб в первые 3 часа транзакты поступали по 80 транзактов в час, во вторые 3 часа по 160, в третьи 3 часа по 350, в четвертые 3 часа по 450. GENERATE Exponential(1,0,80) GENERATE Exponential(1,0,160),,10800 GENERATE Exponential(1,0,350),,21600 GENERATE Exponential(1,0,450),,32400 Правильно делаю? |
Автор: TEMENb 04.03.09, 20:39 |
вообще то нет. транзакты если начнут поступать - уже не остановятся. просто последующие дженерейты генят с задержкой. я бы предложил конструкцию типа generate ,,,1 met1 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/160)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/350)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/450)) split 1,ent test g ac1,(12#60),met4 ;поидее вместо этой и следующей строки можно поставить трансфер на метку met4. всеравно, когда время terminate ;будет равно 12*60 - моделирование завершится и в терминейт ничего не прийдет. ent ... ... ;собсно текст модели .................. generate (12#60) terminate 1 start 1 верхний сегмент является генератором. провериться очень легко. из первого генератора должно поступить 3*80 транзактов, из второго 3*160 и т.д. +/- конечно, но очень незначительный. т.е. строки 3-5 посетит 240 транзактов, строки 6-8 - 480 транзактов. и т.д. столько ли транзактов генерируется в ваших генераторах? ![]() Добавлено кстати не очень понял, что вы берете за единицу модельного времени. мой пример в минутах. судя по приведенному выше тексту программы, время моделирования у вас Time_work VARIABLE 8#60#60 т.е. 8 часов в секундах так? откуда тогда беруться четвертые три часа (до 12-и часов)? |
Автор: MEGERA 05.03.09, 07:05 |
Вот-вот, как раз моих-то генераторах все генерилось наоборот (не по нарастающей, а по убывающей, да и вообще неправильно), щас понимаю, почему ))) а насчет 12 часов, это просто я условие изменила. раньше моделировала для 8 часов в секундах, а теперь для 12, потому и получается 4 промежутка по 3 часа. Спасибо! Кажется, на этом все )))) |
Автор: TEMENb 05.03.09, 07:37 |
Кстати на будущее. Plus (exponential - plus-функция) функции лучше всегда брать в кавычки. Они вроде формул и ставить их без кавычек на место параметров нежелательно. В блоке assign можно найти тому подтверждение - без скобок модель попросту не скомпилится. |
Автор: MEGERA 06.03.09, 11:03 |
мда.... думала я, что наконец покончила с этой задачей, но не тут-то было ((( все же gpss - что-то мега-непостижимое для меня, наверно ((( внесла кое-какие изменения в задачу, теперь она звучит так: Промоделировать работу супермаркета/универсама, в который покупатели приходят пешком и приезжают на машинах. Парковка может предоставить места для 80 автомобилей. Если все места парковки автомобилей заняты, то вновь прибывший автомобиль вынужден покинуть супермаркет/универсам. Примем, что время прихода покупателя с парковки в супермаркет составляет 60±40 с. Магазин имеет 150 ручных тележек и 50 корзин для транспортировки купленных товаров. Если производится покупка более 10 товаров, то необходима тележка, в противном случае используется корзина. После выбора тары покупатели подходят к стеллажам для выбора товаров. Время, затраченное на выбор одного товара и переход к следующему стеллажу, примем за 80с. Количество покупок, которые покупатель может совершить в магазине ограничим в интервале от 0 до 30. Число взятых товаров будем определять с помощью датчика случайных чисел. Количество обслуживающих касс увеличим до 12. Причем 3 из них буду предназначены только для обслуживания покупателей с количеством товаров не более 10. Поток клиентов в будние дни будем считать экспоненциальным с 10.00 до 13.00 – 80 человек в час; с 13.00 до 16.00 – 160 человек в час; с 16.00 до 19.00 – 350 человек в час; с 19.00 до 22.00 – 450 человек в час. Моделирование провести для 12 - часового рабочего дня. С множеством изменений и ваших советов решение стало выглядеть как-то так: Checkout_1 EQU 1 ; 1-9 обычные кассы Checkout_N EQU 9 Check_1 EQU 10 ; 10-12 кассы экспресс-обслуживания Check_N EQU 12 N_Purchases VARIABLE Uniform(1,0,30) ; количество покупок от 0 до 30 Time_system TABLE M1,10000,10000,7 Purchases TABLE P$Qty_purchases,10,10,10 N_Customer TABLE X$Customer,100,50,12 Basket STORAGE 50 ; корзин 50 Cart STORAGE 150 ; тележек 150 Park STORAGE 80 ; парковочных мест 80 Cashier VARIABLE (P$Qty_purchases#0.05)+ 0.7 ; время рассчтеа на кассе Time_shop VARIABLE P$Qty_purchases#1.3 ; время хождения по магазину и выбора товаров INITIAL X$Customer,0 Parking TRANSFER Both,,Lost ENTER Park ; транзакт занимает место на парковке ADVANCE 1,0.7 ; идет от машину к магазину Entrar SAVEVALUE Customer+,1 ASSIGN Qty_purchases,V$N_Purchases ; ему присваивается кол-во покупок, которые он собирается совершить TEST LE P$Qty_purchases,10,QCart ; если покупок меньше 10, то он встает в очередь за корзиной, если больше - то за тележкой GATE SNF Basket,QCart QUEUE Basket_Q ENTER Basket DEPART Basket_Q ASSIGN Container,Basket TRANSFER ,Shop QCart QUEUE Cart_Q ENTER Cart DEPART Cart_Q ASSIGN Container,Cart Shop ADVANCE V$Time_shop ; ходит по магазину, выбирая нужные товары TEST LE P$Qty_purchases,10,Norm ;если выбрано товаров меньше 10 то идет на экспресс-кассу, если больше - то на обычную (Norm) SELECT MIN Xque,Check_1,Check_N,,Q ; выбирает кассу с минимальной очередью QUEUE P$Xque SEIZE P$Xque DEPART P$Xque ADVANCE V$Cashier RELEASE P$Xque LEAVE P$Container TRANSFER ,go Norm SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; выбирает кассу с минимальной очередью QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container go TABULATE Time_system TABULATE Purchases SAVEVALUE Customer-,1 TEST E P$Transport,2,Fin ; если пришел пешком, отправляется на Fin, если на машине - то уезжает с парковки LEAVE Park Fin TERMINATE Lost TERMINATE ***************************************************************************** generate ,,,1 met1 advance (Exponential(1,0,60/40)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/175)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/225)) split 1,ent test g ac1,(12#60),met4 TERMINATE ent ASSIGN Transport,1 TRANSFER ,Entrar generate ,,,1 met5 advance (Exponential(1,0,60/40)) split 1,ent1 test g ac1,(3#60),met5 met6 advance (Exponential(1,0,60/80)) split 1,ent1 test g ac1,(6#60),met6 met7 advance (Exponential(1,0,60/175)) split 1,ent1 test g ac1,(9#60),met7 met8 advance (Exponential(1,0,60/225)) split 1,ent1 test g ac1,(12#60),met8 TERMINATE ent1 ASSIGN Transport,2 TRANSFER ,Parking ***************************************************************************** GENERATE (12#60) TABULATE N_Customer TERMINATE 1 START 1 И все, вроде нормально было, пока я не впихнула в модель эти экспресс-кассы Check_1 и Check_N! с их появлением статистика какая-то косячная получается! например, может показывать, что в данный момент обслуживается 8 клиентов, а еще 7 ждут в очереди, хотя свободные кассы еще есть! с чем это может быть связано? |
Автор: Eugen 07.03.09, 09:31 |
Все верно. SELECT'тами выбираешь очередь минимальной длинны и занимаешь ее, несмотря на то что до 8 касс могут быть в этот момент свободними. Самый простой случай: обслуживается только 1 покупатель у 1ой кассы. Приходит второй, SELECT проверяет очереди - все пустые, и выбирает первую попавшуюся очередь минимальной длинны. Эта очередь к первой кассе. И того, на 1ой кассе обслуживается покупатель и второй - ждет в очереди в эту же кассу и т.п. Решение здесь GPSS задача (сообщение #2181443) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 1 SELECT MIN Xque,Check_1,Check_N,,F 2 TEST E F$Xque,1,met1 3 SELECT MIN Xque,Check_1,Check_N,,Q ; выбирает кассу с минимальной очередью 4 met1 QUEUE P$Xque 5 SEIZE P$Xque 6 DEPART P$Xque 7 ADVANCE V$Cashier 8 RELEASE P$Xque 9 LEAVE P$Container 10 TRANSFER ,go 11 Norm SELECT MIN Xque,Checkout_1,Checkout_N,,F 12 TEST E F$Xque,1,met2 13 SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; выбирает кассу с минимальной очередью 14 met2 QUEUE P$Minque 15 SEIZE P$Minque 16 DEPART P$Minque 17 ADVANCE V$Cashier 18 RELEASE P$Minque 19 LEAVE P$Container 1-2,11-12 есть ли свободные кассы 1 проверка параметра F$ каждого из устройств Check_1 - Check_N. В параметр P$Xque записывается номер устройства с мин F$. 2 проверка на занятость выбранного устройства. Не занято - переход на метку met1. Занято, - и только в этом случает выбор минимальной очереди. F$ -занятость устройства. 1 - занято, 0 - не занято |
Автор: MEGERA 07.03.09, 10:13 |
ой, и правда ведь! я как-то раньше и не подумала, что нужно учесть занятость устройства ![]() ![]() |
Автор: Eugen 07.03.09, 10:32 |
![]() <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 1 TEST LE P$Qty_purchases,10,QCart ; если покупок меньше 10, то он встает в очередь за корзиной, если больше - то за тележкой 2 GATE SNF Basket,QCart 3 QUEUE Basket_Q 4 ENTER Basket 5 DEPART Basket_Q 6 ASSIGN Container,Basket 7 TRANSFER ,Shop 8 QCart QUEUE Cart_Q 9 ENTER Cart 10 DEPART Cart_Q 11 ASSIGN Container,Cart от блоков 3,5 пользы никакой т.к. заранее определяем в блоке 2, что корзины есть, и покупатель никогда не задерживается, чтобы войти в блок 4 т.е. статистика по очереди Basket_Q всегда фиксирует только нулевые входы.. Для случая менее 10 покупок и отсутствия корзин, покупатель проходит в очередь за тежками и остается в ней. Здесь возможна ситуация, нет тележек и есть корзины, и покупать при этом остается ждать телегу. вариант 1 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 1 TEST LE P$Qty_purchases,10,Qcart30 2 QUEUE Basket_Q 3 TEST NE (R$Basket+R$Cart),0 4 TRANSFER BOTH,,QCart 5 ENTER Basket 6 DEPART Basket_Q 7 ASSIGN Container,Basket 8 TRANSFER ,Shop 9 QCart ENTER Cart 10 DEPART Basket_Q 11 ASSIGN Container,Cart 12 TRANSFER ,Shop 13 Qcart30 QUEUE Cart_Q 14 ENTER Cart 15 DEPART Cart_Q 16 ASSIGN Container,Cart 17 Shop.. Действия покупателей: если покупок <= 10 - берем карзину, если корзин нет берез тележку, иначе ожидаем корзину/телегу; если покупок > 10 - берем телегу. функционирование очередей: очередь Basket_Q - выделена для ожидающих корзины, назначение фиксировать время ожидания корзины/телеги; очередь Cart_Q - выделена только для ожидающих тележки. 1 разделяем покупателей на тех кому нужны корзины и тележки 13-16 только для тех кому нужны тележки 2 встать в очередь за корзиной/тележкой 3 если ((R$Basket + R$Cart) !=0) пройти вниз, иначе продолжать проверять то условие. R - число свободные ед. памяти 4 пройти вниз или на метку QCart, туда где есть свободные корзины или тележки, сначале проверяестя наличие корзин, затем телег 5-6,9-10 занятие Basket/Cart, выход из очереди Basket_Q вариант 2(оптимизация кода, не более) Для организации очередей использовать блоки LINK/UNLINK, причина: убрать проверку TEST NE (R$Basket+R$Cart),0 - проверка выполняется для каждого транзакта после измененния модельного времени на 0.000001 |
Автор: MEGERA 07.03.09, 15:50 |
Цитата Eugen @ <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 1 SELECT MIN Xque,Check_1,Check_N,,F 2 TEST E F$Xque,1,met1 3 SELECT MIN Xque,Check_1,Check_N,,Q ; выбирает кассу с минимальной очередью 4 met1 QUEUE P$Xque 5 SEIZE P$Xque 6 DEPART P$Xque 7 ADVANCE V$Cashier 8 RELEASE P$Xque 9 LEAVE P$Container 10 TRANSFER ,go 11 Norm SELECT MIN Xque,Checkout_1,Checkout_N,,F 12 TEST E F$Xque,1,met2 13 SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; выбирает кассу с минимальной очередью 14 met2 QUEUE P$Minque 15 SEIZE P$Minque 16 DEPART P$Minque 17 ADVANCE V$Cashier 18 RELEASE P$Minque 19 LEAVE P$Container 1-2,11-12 есть ли свободные кассы 1 проверка параметра F$ каждого из устройств Check_1 - Check_N. В параметр P$Xque записывается номер устройства с мин F$. 2 проверка на занятость выбранного устройства. Не занято - переход на метку met1. Занято, - и только в этом случает выбор минимальной очереди. F$ -занятость устройства. 1 - занято, 0 - не занято насчет очередей за корзинами и телегами, это действиетльно хорошая мысль, потому что я уже заметила, что код неоптимальный получился! а вот насчет предыдущей темы про выбор очередей, я всю логику отлично поняла. более того, задачку про коммутаторы я в свое время решала даже ))) только другим способом, но вот сейчас смотрю выходную статистику, и вижу, что транзакты второй select (строка 13) упорно огибают: 0 входов.... ![]() |
Автор: Eugen 08.03.09, 10:17 |
MEGERA С 8 марта! ![]() 13 строка выполняется только при отсутствии свобдных касс, т.е. в момент прихода транзакта есть хотя бы одна свободная касса и нет необходимости становиться в очередь. Чтобы проверить правильность кода, увелич интенсивность прихода покупателей в магазин, в строке 13 должны появиться транзакты. |
Автор: MEGERA 08.03.09, 10:31 |
Спасибо, Eugen! ![]() Я себя с этим кодом ощущаю, как в твоей цитате про изображение трехногой лошади ![]() LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY PARKING 1 TRANSFER 1528 0 0 2 ENTER 536 0 0 3 ADVANCE 536 0 0 ENTRAR 4 ASSIGN 2081 0 0 5 TEST 2081 0 0 6 QUEUE 666 22 0 7 TEST 644 0 0 8 TRANSFER 644 0 0 9 ENTER 644 0 0 10 DEPART 644 0 0 11 ASSIGN 644 0 0 12 TRANSFER 644 0 0 QCART 13 ENTER 0 0 0 14 DEPART 0 0 0 15 ASSIGN 0 0 0 16 TRANSFER 0 0 0 QCART_1 17 QUEUE 1415 326 0 18 ENTER 1089 0 0 19 DEPART 1089 0 0 20 ASSIGN 1089 0 0 SHOP 21 ADVANCE 1733 49 0 22 SELECT 1684 0 0 23 TEST 1684 0 0 24 SELECT 0 0 0 MET9 25 QUEUE 1684 96 0 26 SEIZE 1588 0 0 27 DEPART 1588 0 0 28 ADVANCE 1588 5 0 Видишь, как получается? 96 человек стоит в очереди, но через select (24) они будто и не проходили!!! ![]() |
Автор: TEMENb 08.03.09, 14:32 |
MEGERA, изображение трехногой лошади - это совсем не о том ) Это про правильно поставленное ТЗ. А у тебя нормальный творческий процесс ) С 8-м Марта тебя =) А где собсно последний вариант кода? я тоже хо посмотреть ) |
Автор: MEGERA 08.03.09, 14:40 |
Спасибо, TEMENb! В таком случае, моя лошадь была безногой, ибо ТЗ звучит примерно так: "Сделай модель в Арене, по GPSS-модели, которая взялась, х.з. откуда, и х.з., правильно ли работает" ![]() Checkout_1 EQU 1 Checkout_N EQU 5 ; есть 5 очередей N_Purchases VARIABLE Uniform(1,0,30) ;количество покупок, которые покупатель собирается совершить Basket STORAGE 50 ; 50 корзин Cart STORAGE 100 ; 100 тележек Park STORAGE 40 ; 40 парковочных мест Cashier VARIABLE (P$Qty_purchases#0.05)+ 0.7 ; время обслуживания на кассе Time_shop VARIABLE P$Qty_purchases#1.3 ; время, проведенное в магазине за выбором товаров Parking TRANSFER Both,,Lost ENTER Park ; покупатель занимает место на парковке ADVANCE 1,0.7 ; идет от машины к магазину Entrar ASSIGN Qty_purchases,V$N_Purchases ; ему назначается количество покупок, которые он собирается совершить TEST LE P$Qty_purchases,10,QCart_1 ; если покупок больше 10, то покупатель идет в очередь за карзинами QCart_1 QUEUE Basket_Q ; если меньше 10, то ему нужна корзина, но он может взять и телегу, поэтому он ждет TEST NE (R$Basket+R$Cart),0 ; пока что-нибудь из них не освободится TRANSFER BOTH,,QCart ; сначалы пытается взять корзину. если их нет, идет за телегой QCart ENTER Basket DEPART Basket_Q ASSIGN Container,Basket TRANSFER ,Shop QCart ENTER Cart DEPART Basket_Q ASSIGN Container,Cart TRANSFER ,Shop QCart_1 QUEUE Cart_Q ENTER Cart DEPART Cart_Q ASSIGN Container,Cart Shop ADVANCE V$Time_shop ; выбирает товары SELECT MIN Minque,Checkout_1,Checkout_N,,F ;проверяет есть ли свободная касса TEST E F$Minque,1,met9 ; если есть - занимает ее SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; если нет, ищет кассу с наименьшей очередью met9 QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container TEST E P$Transport,2,Fin LEAVE Park Fin TERMINATE Lost TERMINATE ***************************************************************************** generate ,,,1 met1 advance (Exponential(1,0,60/40)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/175)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/225)) split 1,ent test g ac1,(12#60),met4 TERMINATE ent ASSIGN Transport,1 TRANSFER ,Entrar generate ,,,1 met5 advance (Exponential(1,0,60/40)) split 1,ent1 test g ac1,(3#60),met5 met6 advance (Exponential(1,0,60/80)) split 1,ent1 test g ac1,(6#60),met6 met7 advance (Exponential(1,0,60/175)) split 1,ent1 test g ac1,(9#60),met7 met8 advance (Exponential(1,0,60/225)) split 1,ent1 test g ac1,(12#60),met8 TERMINATE ent1 ASSIGN Transport,2 TRANSFER ,Parking ***************************************************************************** GENERATE (12#60) TERMINATE 1 START 1 Вот такой стала эта горе-модель, благодаря вашим с Евгением советам ))) однако, как ты уже видел выше, есть проблемка, из-за которой я не могу сопоставить результат с ареновским... |
Автор: TEMENb 08.03.09, 15:07 |
Цитата MEGERA @ Checkout_1 EQU 1 Checkout_N EQU 5 ; есть 5 очередей N_Purchases VARIABLE Uniform(1,0,30) ;количество покупок, которые покупатель собирается совершить Basket STORAGE 50 ; 50 корзин Cart STORAGE 100 ; 100 тележек Park STORAGE 40 ; 40 парковочных мест Cashier VARIABLE (P$Qty_purchases#0.05)+ 0.7 ; время обслуживания на кассе Time_shop VARIABLE P$Qty_purchases#1.3 ; время, проведенное в магазине за выбором товаров Parking TRANSFER Both,,Lost ENTER Park ; покупатель занимает место на парковке ADVANCE 1,0.7 ; идет от машины к магазину Entrar ASSIGN Qty_purchases,V$N_Purchases ; ему назначается количество покупок, которые он собирается совершить TEST LE P$Qty_purchases,10,QCart_1 ; если покупок больше 10, то покупатель идет в очередь за карзинами QCart_1 QUEUE Basket_Q ; если меньше 10, то ему нужна корзина, но он может взять и телегу, поэтому он ждет TEST NE (R$Basket+R$Cart),0 ; пока что-нибудь из них не освободится TRANSFER BOTH,,QCart ; сначалы пытается взять корзину. если их нет, идет за телегой QCart ENTER Basket DEPART Basket_Q ASSIGN Container,Basket TRANSFER ,Shop QCart ENTER Cart DEPART Basket_Q ASSIGN Container,Cart TRANSFER ,Shop QCart_1 QUEUE Cart_Q ENTER Cart DEPART Cart_Q ASSIGN Container,Cart Shop ADVANCE V$Time_shop ; выбирает товары SELECT MIN Minque,Checkout_1,Checkout_N,,F ;проверяет есть ли свободная касса TEST E F*Minque,1,met9 ; если есть - занимает ее SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; если нет, ищет кассу с наименьшей очередью met9 QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container TEST E P$Transport,2,Fin LEAVE Park Fin TERMINATE Lost TERMINATE ***************************************************************************** generate ,,,1 met1 advance (Exponential(1,0,60/40)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/175)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/225)) split 1,ent test g ac1,(12#60),met4 TERMINATE ent ASSIGN Transport,1 TRANSFER ,Entrar generate ,,,1 met5 advance (Exponential(1,0,60/40)) split 1,ent1 test g ac1,(3#60),met5 met6 advance (Exponential(1,0,60/80)) split 1,ent1 test g ac1,(6#60),met6 met7 advance (Exponential(1,0,60/175)) split 1,ent1 test g ac1,(9#60),met7 met8 advance (Exponential(1,0,60/225)) split 1,ent1 test g ac1,(12#60),met8 TERMINATE ent1 ASSIGN Transport,2 TRANSFER ,Parking ***************************************************************************** GENERATE (12#60) TERMINATE 1 START 1 ![]() Добавлено Остальной код не разбирал. уж очень большой ) А ошибочка - нормальная. совсем не сразу ее заметил ) |
Автор: MEGERA 08.03.09, 15:34 |
![]() вот здесь ошибка? ![]() SELECT MIN Minque,Checkout_1,Checkout_N,,F ;проверяет есть ли свободная касса TEST E F*Minque,1,met9 ; если есть - занимает ее SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; если нет, ищет кассу с наименьшей очередью met9 QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container |
Автор: TEMENb 08.03.09, 16:22 |
* - вот тут ошибка (10-й символ ))) называется ошибка - "косвенная адресация" F$Minque - индикатр занятсти устройства с именем Minque F*Minque - индикатр занятсти устройства, номер которого лежит в параметре транзакта с именем Minque кстати, для таких вещей есть тотал командер с его незаменимой функцией "Файлы->Сравнить по содержимому..." ![]() |
Автор: Eugen 08.03.09, 20:02 |
Цитата Eugen @ <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 1 SELECT MIN Xque,Check_1,Check_N,,F 2 TEST E F$Xque,1,met1 3 SELECT MIN Xque,Check_1,Check_N,,Q ; выбирает кассу с минимальной очередью 4 met1 QUEUE P$Xque 5 SEIZE P$Xque 6 DEPART P$Xque 7 ADVANCE V$Cashier 8 RELEASE P$Xque 9 LEAVE P$Container 10 TRANSFER ,go 11 Norm SELECT MIN Xque,Checkout_1,Checkout_N,,F 12 TEST E F$Xque,1,met2 13 SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; выбирает кассу с минимальной очередью 14 met2 QUEUE P$Minque 15 SEIZE P$Minque 16 DEPART P$Minque 17 ADVANCE V$Cashier 18 RELEASE P$Minque 19 LEAVE P$Container точно косвенная адресация стороки 2,11 и 11-12 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 2 TEST E F*Xque,1,met1 11 Norm SELECT MIN Minque,Checkout_1,Checkout_N,,F 12 TEST E F*Minque,1,met2 |
Автор: MEGERA 10.03.09, 11:26 |
ого! ничего себе ошибка! я бы еще 3 месяца ее выискивала, точно! ![]() ![]() |
Автор: TEMENb 10.03.09, 13:46 |
осталось плюсануть "ну, за рыбалку" и "-=За ВДВ...=-" ![]() |
Автор: MEGERA 15.03.09, 05:38 |
да запросто! ![]() ![]() ![]() |
Автор: kant1288 10.04.09, 12:40 |
Здравствуйте! Моё задание:В специализированной вычислительной системе периодически выполняется три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 20-80 секунд. После запуска задания оно требует для своего выполнения 50-150 секунд времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 20-40 секунд, после чего производится их анализ в течение 40-80 секунд, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется. Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. Подсчитать число циклов выполнения остальных заданий и определить коэффициенты загрузки технических средств системы. Мой код: Generate 30,20 queue CPU seize display advance 50,30 release display seize CP advance 100,50 release CP depart CPU advance 30,10 advance 60,20 assign P1,(PR+1) savevalue P1+,1 terminate Generate 30,10,,,1 queue CPU seize display advance 50,30 release display prempt CP,PR advance 100,50 return CP depart CPU advance 30,10 advance 60,20 assign P1,(PR+1) savevalue P1+,1 terminate Generate 30,5,,100,2 queue CPU seize display advance 50,30 release display prempt CP,PR advance 100,50 return CP advance 100,50 return CP depart CPU advance 30,10 advance 60,20 assign P1,(PR+1) savevalue P1+,1 test L x3,100,met1 terminate met1 TERMINATE 1 У меня возникает ошибка: Model Translation Begun. Line 21, Col 7. Invalid identifier. Expecting a GPSS Verb. prempt CP,PR Тоже самое и в 36 строчке(во втором Premt), я не понимаю почему. И скажите пожалуйста, в целом код правильный? |
Автор: Eugen 10.04.09, 16:54 |
Line 21, Col 7. Invalid identifier. Expecting a GPSS Verb. - > PREEMPT |
Автор: kant1288 10.04.09, 17:47 |
Во блин, извиняюсь, глупо получилось) Ещё подскажите почему возникает ошибка: Halt. XN: 3. Block 40 Next. Clock:308.916490. Next: ASSIGN. Line 42. assign P1,(PR+1) Reference to a non-existent Parameter. не совсем понимаю, почему на несуществующий параметр ссылка? |
Автор: Eugen 10.04.09, 18:58 |
assign P1,(PR+1) здесь ошибка. Нужно так assign 1,(PR+1) Как правило, в первом операнде блока ASSIGN указывается номер параметра - ASSIGN 1,1000 или его имя ASSIGN P$name,1000 assign 1,(PR+1) savevalue P1+,1 эти строки лишниие.. достачно <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Generate 30,20 ... advance 60,20 savevalue 1+,1 // счеткик транзактов с приоритетом 0 terminate Generate 30,10,,,1 ... advance 60,20 savevalue 2+,1 // счеткик транзактов с приоритетом 1 terminate Generate 30,5,,100,2 ... advance 60,20 savevalue 3+,1 // счеткик транзактов с приоритетом 2 test L x3,100,met1 .. |
Автор: Anomaly 10.04.09, 20:32 |
Здравствуйте!ЛЮДИ ДОБРЫЕ! Помогите пожалуйста с лабой! Пол университета опросила, никто не может помочь. Нужно написать программу: МКУ с 8 каналами. число мест в очереди = 7 Своего ума хватило только на это: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74 OBS FVARIABLE -1#LOG((1+RN2)/1000)/5 GENERATE V$VREMA TEST L Q$OCHERED,8,REFUS SMO STORAGE 8 QUEUE OCHERED ENTER SMO DEPART OCHERED ADVANCE V$OBS LEAVE SMO TERMINATE 1 GENERATE 480 REFUS TRANSFER ,OUT OUT TERMINATE 1 START 200 |
Автор: TEMENb 10.04.09, 21:12 |
ну вообщем все верно, кроме размера очереди. Цитата VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74 OBS FVARIABLE -1#LOG((1+RN2)/1000)/5 SMO STORAGE 8 GENERATE V$VREMA TEST L Q$OCHERED,7,REFUS QUEUE OCHERED ENTER SMO DEPART OCHERED ADVANCE V$OBS LEAVE SMO REFUS TERMINATE 1 START 200,np SMO STORAGE 9 START 800 Всего будет обслужено 1000 заявок. А какое у вас условие завершения моделирования? |
Автор: Anomaly 11.04.09, 12:10 |
Цитата ну вообщем все верно, кроме размера очереди. Цитата VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74 OBS FVARIABLE -1#LOG((1+RN2)/1000)/5 SMO STORAGE 8 GENERATE V$VREMA TEST L Q$OCHERED,7,REFUS QUEUE OCHERED ENTER SMO DEPART OCHERED ADVANCE V$OBS LEAVE SMO REFUS TERMINATE 1 START 200,np SMO STORAGE 9 START 800 Всего будет обслужено 1000 заявок. А какое у вас условие завершения моделирования? Спасибо за помощь. Но теперь при компилировании выдается ошибка: Error Stop. Halt. XN: 244. Block 7 Next. Clock:3.596054. Next: LEAVE. Line 10. LEAVE SMO Attempt to release more storage than existed. Моделирование нужно завершить после того как будут обработаны 1000 заявок. И сделать это моделирование нужно 10 раз |
Автор: Dennis 12.04.09, 14:45 |
У первого устройство ADVANCE равно 7.5,1,5 , у второго 8,2.5. Цитата AA FUNCTION P1,D2 1,7.5/2,8 BB FUNCTION P1,D2 1,1.5/2,2.5 GENERATE 3 QUEUE XX TRANSFER 0.75,MET1,MET2 MET1 ASSIGN 1,1 TRANSFER ,NN MET2 ASSIGN 1,2 NN SEIZE P1 DEPART XX ADVANCE FN$AA,FN$BB RELEASE P1 TERMINATE GENERATE 480 TERMINATE 1 Объясните, почему в отчете значение AVE.TIME не попадает в эти интервалы (у 1го - 11.250, у 2го - 19.875). Кстати, если задаю конкретное число, то ADVANCE ему не равно. Использую GPSS World Student Version 5.2.2. |
Автор: TEMENb 12.04.09, 15:08 |
вот так должно быть. Незнаю даже с чем связано. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ADVANCE FN$AA,(FN$BB) А значения такие получаются.. скорее всего это связано с кривоватенькой реализацией непрерывного времени. В жпсс верд реализовано непрерывное время ![]() Цитата Anomaly @ Спасибо за помощь. Но теперь при компилировании выдается ошибка: Error Stop. Halt. XN: 244. Block 7 Next. Clock:3.596054. Next: LEAVE. Line 10. LEAVE SMO Attempt to release more storage than existed. мда. вероятно нельзя менять емкость МКУ без обнуления счетчиков и удаления транзактов из модели (clear и reset). Возможно прокатит такая вот реализация <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74 OBS FVARIABLE -1#LOG((1+RN2)/1000)/5 SMO STORAGE 9 GENERATE V$VREMA TEST L Q$OCHERED,7,REFUS QUEUE OCHERED test e ((tg1<800)|(s$smo<8)),1 ENTER SMO DEPART OCHERED ADVANCE V$OBS LEAVE SMO REFUS TERMINATE 1 START 1000 |
Автор: Anomaly 12.04.09, 15:47 |
СПАСИБО ОГРОМНОЕ!!! Работает! И результат очень похож на ответы ![]() |
Автор: Kappi4 14.04.09, 16:46 |
Здравствуйте господа...помогите плз...проверте правильность проги...и если что-то неправильно...исправте...Заранее благодарен... В системе передачи цифровой информации передается речь в цифровом виде. Речевые пакеты передаются через два транзитных канала, буферизуясь в накопителях перед каждым каналом. Время передачи пакета по каналу составляет 5 мс. Пакеты поступают через 3-9 мс. Пакеты, передававшиеся более 10 мс, на выходе системы уничтожаются, так как их появление в декодере значительно снизит качество передаваемой речи. Уничтожение более 30% пакетов недопустимо. При достижении такого уровня система за счет ресурсов ускоряет передачу до 4 мс на канал. При снижении уровня до приемлемого происходит отключение ресурсов. Смоделировать 10 с работы системы. Определить частоту уничтожения пакетов и частоту подключения ресурса. INITIAL X$T,1 INITIAL X$B,1 GENERATE 6,3 MARK 2 QUEUE OCH1 SEIZE PR_1 DEPART OCH1 Test L (X$B#100/X$T),30,POS1 ADVANCE 1 POS1 ADVANCE 4 RELEASE PR_1 QUEUE OCH2 SEIZE PR_2 DEPART OCH2 Test L (X$B#100/X$T),30,POS2 ADVANCE 1 POS2 ADVANCE 4 RELEASE PR_2 ASSIGN 1+,MP2 TEST L P1,11,BYBY SAVEVALUE T+,1 TERMINATE BYBY SAVEVALUE B+,1 TERMINATE GENERATE 10000 TERMINATE 1 START 1 |
Автор: Eugen 15.04.09, 14:59 |
хорошо написано <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ASSIGN 1+,MP2 // + ничего не делает TEST L P1,11,BYBY // по условию <= 10 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ASSIGN 1,MP2 TEST LE P1,10,BYBY не использую блок MARK, поэтому вместо строк <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> написал быMARK 2 ... ASSIGN 1,MP2 TEST LE P1,10,BYBY <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> AC1 - абсолютное модельное времяASSIGN time,AC1 ... TEST LE (AC1-P$time),10,BYBY чтобы подсчитать частоту подключения ресурса <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> аналогично для второго каналаSEIZE PR_1 DEPART OCH1 SAVEVALUE countAllMode+,1 Test L (X$B#100/X$T),30,POS1 ADVANCE 5 TRANSFER ,met1 POS1 SAVEVALUE countFastMode+,1 ADVANCE 4 met1 RELEASE PR_1 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 10000 SAVEVAKUE fr_brak,(x$B/x$T) // вероятность уничтожение пакета SAVEVALUE fr_useResource,(x$countFastMode/x$countAllMode) // вероятность использования ресурса при передачи TERMINATE 1 Добавлено <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SAVEVAKUE fr_brak,(x$B/(x$B+x$T)) // вероятность уничтожение пакета |
Автор: TEMENb 15.04.09, 17:12 |
Цитата Eugen @ не использую блок MARK, поэтому вместо строк <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> написал быMARK 2 ... ASSIGN 1,MP2 TEST LE P1,10,BYBY <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> AC1 - абсолютное модельное времяASSIGN time,AC1 ... TEST LE (AC1-P$time),10,BYBY можно ышо красивше <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MARK 2 ... TEST LE MP2,10,BYBY собственно MARK 2 делает абсолютно то же самое, что и ASSIGN 2,C1. А MP2 это ничто иное как AC1-P2. Нет смысла помещать эти данные в первый параметр. (Поскольку оператором RESET вы не пользуетесь, С1 всегда равно АС1) Или ваашэ сделать вот как <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MARK ... TEST LE M1,10,BYBY Минимализьм )) мм.. Kappi4, было б неплохо к своему коду еще хоть чуть коментов. Всетаки чужой код разбирать - проще написать свой.. |
Автор: Nymphadora 18.04.09, 12:32 |
Помогите, пожалуйста. Я отчаялась. В общем, мне нужно выбрать многоканальное устройство из 3-х, которое меньше всего занято. 3 ESKAL STORAGE 35 4 GENERATE 3,1 5 SELECT MIN 1,1,3,,S 7 ENTER P1 9 ADVANCE 400 10 LEAVE P1 Проблема в том, что я не знаю, что писать в блок ENTER. Если пишу Р1, GPSS выдает, что "обращение к несуществующему устр-ву" ну или как-то так. Посоветуйте? |
Автор: TEMENb 18.04.09, 12:33 |
Цитата Nymphadora @ 3 ESKAL STORAGE 35 4 GENERATE 3,1 5 SELECT MIN 1,1,3,,S 7 ENTER P1 9 ADVANCE 400 10 LEAVE P1 Все дело в том, что у вас несуществует МКУ с именами 1, 2, 3. соответственно селект ничего не выбирает и никуда не ложит. Поэтому необходимо обьявить три МКУ с именами 1, 2, 3. Но конструкция 1 STORAGE 35 - не допустима ![]() поэтому выход такой. Сначала обьявить некую константу, а потом обьявлять МКУ по имени константы. т.о. получаем МКУ с числовым(значение константы) и символьным(имя константы) именем <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> stor1 equ 1 stor2 equ 2 stor3 equ 3 stor1 STORAGE 35 stor2 STORAGE 35 stor3 STORAGE 35 GENERATE 3,1 assign 1,1 SELECT MIN 1,1,3,,S ENTER P1 ADVANCE 400 LEAVE P1 terminate 1 start 1000 в отчете видим Цитата STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY STOR1 35 0 0 35 370 1 33.688 0.963 0 287 STOR2 35 0 0 35 368 1 33.539 0.958 0 0 STOR3 35 0 0 35 367 1 33.478 0.957 0 0 и знаем, что STOR1 - устройство номер 1, STOR2 - устройство номер 2, STOR3 - устройство номер 3. Я ж говорил, что все просто ![]() Добавлено Оооооооооооо, так фотку сразу надо было ставить.. помощь пришла бы в три раза быстрее!! ![]() |
Автор: Nymphadora 18.04.09, 12:53 |
Абалдеть... и правда просто. СПАСИБО! Ну, блин, наш препод! Примеры не правильные приводил! Но у меня ещё один тупик. Нужно вывести транзакты из цепи пользователя, причём кол-во выводимых транзактов 50+-20. В UNLINK вроде функцию нельзя записывать? Или я страшно туплю??? 14 LINK PERRON,FIFO 15 GENERATE 300,100 17 UNLINK PERRON,POSADKA,_(?)_ 18 POSADKA ADVANCE 150 19 TERMINATE Я так понимаю, нужно ввести в модель что-то типа ячейки... Или как? ![]() |
Автор: TEMENb 18.04.09, 13:11 |
(DUniform(1,30,70)) (30+41#RN1\1000) И первое и второе выражение дают значение от 30 до 70, с равномерным законом распредиления с использованием первого генератора случайных чисел. Использовать можно так: предварительно схоранить в парамер, а потом в анлинке использовать параметр, или искользовать напрямую в анлинке. Использовать в кавычках обязательно! Добавлено хух.. сурово вас в КГТУ учат ) |
Автор: Nymphadora 18.04.09, 13:25 |
Ой, ёлки... что это: "Out of memory"? ![]() И что за такое DUniform? ![]() Жесть... Ну что здесь не так? 1 PAS FUNCTION RN1,C2 0,2/1,4 3 STOR1 EQU 1 4 STOR2 EQU 2 5 STOR3 EQU 3 6 STOR1 STORAGE 35 7 STOR2 STORAGE 35 8 STOR3 STORAGE 35 9 GENERATE 3,1 10 ASSIGN 1,1 11 SELECT MIN 1,1,3,,S 12 ENTER P1 13 ADVANCE 400 14 LEAVE P1 15 LINK PERRRON,FIFO 16 GENERATE 300,100 18 UNLINK PERRON,POSADKA,(DUniform(1,30,70)) - ??? 19 POSADKA ADVANCE 150 20 TERMINATE 21 GENERATE 400,150 22 ADVANCE 3,2 23 SPLIT FN$PAS,PERRON 24 TERMINATE 25 PERRON SELECT MIN 1,1,3,,S 26 ENTER P1 27 ADVANCE 400 28 LEAVE P1 29 TERMINATE 30 GENERATE 72000 31 TERMINATE 1 32 START 1 |
Автор: Eugen 18.04.09, 15:09 |
это откуда? - весь текст отчета в студию 18 UNLINK PERRON,POSADKA,(DUniform(1,30,70)) - ??? строка как строка ничего криминального возможно, ошибка возникает если пытаетесь выводить количество транзактов, из списка, болеше, чем в нем находится. Тогдавместо строки 18 UNLINK PERRON,POSADKA,(DUniform(1,30,70)) - ??? следует написать ASSIGN var,(DUniform(1,30,70)) UNLINK PERRON,POSADKA,(V$funk) и добавить в самое начало модели funk VARIABLE ((P$var'GE'CH$PERRON)#CH$PERRON + (P$var'L'CH$PERRON)#P$var) DUniform - дискретное равномерное распределение в границах [30,70] или [30,70) |
Автор: TEMENb 18.04.09, 15:18 |
Eugen, GPSS/PC + кривое задание ) Пассажиры прибывают с интервалом 0,3 сек, а поезд приезжает каждые 30 сек, вмещает по 30-70 человек. Как результат - афигенное переполнение перона ну и собсно аут оф мемори )) |
Автор: Eugen 18.04.09, 15:43 |
причем тут моделирование и ошибка out of memory? люди по 1000000000 транзактов генерят и ничего |
Автор: TEMENb 18.04.09, 15:53 |
Цитата Eugen @ причем тут моделирование и ошибка out of memory? люди по 1000000000 транзактов генерят и ничего В верде - никаких проблем. только думает долго. а ПС выдает аут оф мемори. Добавлено Собсно текст. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> qqq variable (30+41#RN1\1000) PAS FUNCTION RN1,C2 0,2/1,4 STOR1 EQU 1 STOR2 EQU 2 STOR3 EQU 3 STOR1 STORAGE 35 STOR2 STORAGE 35 STOR3 STORAGE 35 10 GENERATE 3,1 30 SELECT MIN 1,1,3,,S 40 ENTER p1 50 ADVANCE 400 60 LEAVE p1 70 LINK 1,FIFO 75 terminate 80 GENERATE 300,100 90 assign 1,v$qqq 100 UNLINK 1,met1,p1 110 met1 ADVANCE 150 120 TERMINATE 130 GENERATE 400,150 140 ADVANCE 3,2 150 SPLIT FN$PAS,met2 160 TERMINATE 170 met2 SELECT MIN 1,1,3,,S 180 ENTER P1 190 ADVANCE 400 200 LEAVE P1 210 TERMINATE 220 GENERATE 72000 230 TERMINATE 1 START 1 |
Автор: flatline 18.04.09, 17:00 |
помогите пожалуйста... у меня есть задачка.. я вроде бы как то ее сделал.. отчет выдает.. но не знаю правильно ли она работает? проверьте пожалуйста! задача: в вычислительном центре в обработку принимаются 3 класса заданий: А, В, С. Исходя из наличия памяти в ЭВМ задания классов А и В могут решаться одновременно, а задача класса С монополизирует ЭВМ. ну там про время тыры пыры не столь важно... Задачи класса С запускается в ЭВМ если она полностью свободна. Задачи класса А и В могут дозагружаться к решающей задаче. у меня опасения больше всего вызывает 3ий блок... я в нем попытался реализовать проверку свободны ли буферы и если да то загружаем задание С которые у нас выполняется монопольно <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> buf1 STORAGE 3 buf2 storage 3 TABL1 TABLE M1,10,10,20 TABL2 TABLE M1,900,10,20 TABL3 TABLE M1,1200,100,200 generate 20,5 queue och1 povtor gate snf buf1,metka enter buf1 advance 20,5 leave buf1 depart och1 tabulate TABL1 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 20,10 queue och1 metka gate snf buf2,zanyt enter buf2 advance 21,3 leave buf2 depart och1 tabulate TABL2 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 20,10 queue och1 gate snf buf1,h h gate snf buf2 enter buf1 advance 21,3 leave buf1 depart och1 tabulate TABL3 terminate zanyt advance 61,11 transfer, povtor generate 4800 terminate 1 start 1 |
Автор: Eugen 19.04.09, 03:15 |
Цитата здесь не правильноgate snf buf1,h h gate snf buf2 enter buf1 advance 21,3 Цитата что это, для чего Вам МКУ. Сколько ед.памяти МКУ должна занять задача класса С что ее приняли на обработку? все 6 или от каждого МКУ по 1 ед.памяти? buf1 STORAGE 3 buf2 storage 3 |
Автор: flatline 19.04.09, 10:52 |
Eugen да наверно все 6... типо тогда будет монопольно и ниче не подгрузится... никакая другая задача... ну вот реализовать как это.. чет не могу пока придумать ![]() а насчет <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> gate snf buf1,h h gate snf buf2 enter buf1 advance 21,3 у меня тоже были смонения...а в чем тут ошибка тогда? |
Автор: Eugen 19.04.09, 14:08 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST E (S$buf1 + S$buf2),0 ;S - текущее содержимое памяти. Только когда оба bufХ будут свободны транзакт пройдет вниз ENTER buf1,3 ENTER buf2,3 ADVANCE .. LEAVE buf2,3 LEAVE buf1,3 Здесь статистика queue och1 собирается по времени ожидания в очереди + время обработки на ЭВМ Цитата queue och1 povtor gate snf buf1,metka enter buf1 advance 20,5 leave buf1 depart och1 обычно depart ставится сразу за enter. В этом случае статистика собирается о времени ожидания в очереди queue och1 povtor gate snf buf1,metka depart och1 enter buf1 advance 20,5 leave buf1 |
Автор: flatline 19.04.09, 15:17 |
Eugen смотри вот текст проги <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> buf1 STORAGE 4 buf2 storage 4 TABL1 TABLE M1,10,10,20 TABL2 TABLE M1,900,10,20 TABL3 TABLE M1,1200,100,200 generate 20,5 queue och1 povtor gate snf buf1,metka enter buf1,3 advance 20,5 leave buf1,3 tabulate TABL1 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 20,10 queue och1 metka gate snf buf2,zanyt enter buf2,3 advance 21,3 leave buf2,3 depart och1 tabulate TABL2 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 20,10 queue och1 TEST E(S$buf1+S$buf2),0 enter buf1,3 enter buf2,3 advance 21,3 leave buf2,3 leave buf1,3 depart och1 tabulate TABL3 terminate zanyt advance 61,11 transfer, povtor generate 4800 terminate 1 start 1 я изменил storage +1 добавил к нему так как у меня не получалось выставлять нужное мне время... ды к вот... работает но меня пугает отчет... <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 239 0 0 2 QUEUE 239 0 0 POVTOR 3 GATE 239 1 0 4 ENTER 238 0 0 5 ADVANCE 238 1 0 6 LEAVE 237 0 0 7 TABULATE 237 0 0 8 TERMINATE 237 0 0 9 GENERATE 239 0 0 10 QUEUE 239 0 0 METKA 11 GATE 239 10 0 12 ENTER 229 0 0 13 ADVANCE 229 1 0 14 LEAVE 228 0 0 15 DEPART 228 0 0 16 TABULATE 228 0 0 17 TERMINATE 228 0 0 18 GENERATE 238 0 0 19 QUEUE 238 238 0 20 TEST 0 0 0 21 ENTER 0 0 0 22 ENTER 0 0 0 23 ADVANCE 0 0 0 24 LEAVE 0 0 0 25 LEAVE 0 0 0 26 DEPART 0 0 0 27 TABULATE 0 0 0 28 TERMINATE 0 0 0 ZANYT 29 ADVANCE 0 0 0 30 TRANSFER 0 0 0 31 GENERATE 1 0 0 32 TERMINATE 1 0 0 P.S. 19 строчка... в очереди зависло 238 транзактов... ![]() |
Автор: TEMENb 19.04.09, 15:24 |
Цитата STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY BUF1 4 1 0 3 714 1 2.942 0.735 238 1 BUF2 4 1 0 3 687 1 2.984 0.746 238 10 Логично предположить, что за время моделирования условие ниразу не выполнилось. Добавлено эксперимента ради, увеличте время прихода в первом и втором дженерейте до 60 - и вы увидете, что транзакты успешно пройдут двадцатый блок. |
Автор: flatline 19.04.09, 15:28 |
TEMENb а ты как думаешь задача правильно решена? |
Автор: TEMENb 19.04.09, 15:34 |
Для этого надо сесть и разобрать задачу. сори. с временем проблемки ) |
Автор: flatline 19.04.09, 15:43 |
TEMENb пожскажите плиз в каком направлении хоть думать ![]() ![]() |
Автор: Eugen 19.04.09, 16:12 |
flatline в самом первом посте вы привели урезанный текс задания и вашу версию модели. А дальше гадание на кофейной гуще почему не работает. Условие правильное TEST E (S$buf1 + S$buf2),0 Но. Чтобы оно выполнилось необходимо наличие полностью свободной памяти МКУ buf1 и buf2. Это событие произойти не может т.к. всегда будет хотя бы одна подгружаемая задача. Интенсивность появления задач больше чем интенсивность обработки Цитата здесь постоянно накапливается очередьgenerate 20,10 queue och1 metka gate snf buf2,zanyt enter buf2,3 advance 21,3 Решение здесь одно, чтобы задача сама занимала память(захватывая или вытесняя подгружаемые задачи) не охота 'флеймить'. Приведите весь текст задачи или пишите в PM если нужна помощь Все по 10$ |
Автор: flatline 19.04.09, 16:26 |
задача: в вычислительном центре в обработку принимаются 3 класса заданий: А, В, С. Исходя из наличия памяти в ЭВМ задания классов А и В могут решаться одновременно, а задача класса С монополизирует ЭВМ. задания класса А поступают через 15-25 мин, класса В через 10-30 мин, класса С через 20-40. И требуют для выполнения класса А 15-25 мин, класс В 18-24, класс С - 23-33 мин. Задачи класса С запускается в ЭВМ если она полностью свободна. Задачи класса А и В могут дозагружаться к решающей задаче. вот последний код программы (с времененм было не так.. но чет ниче не изменилось в итоге): <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> buf1 STORAGE 4 buf2 storage 4 TABL1 TABLE M1,10,10,20 TABL2 TABLE M1,900,10,20 TABL3 TABLE M1,1200,100,200 generate 20,5 queue och1 povtor gate snf buf1,metka depart och1 enter buf1,3 advance 20,5 leave buf1,3 tabulate TABL1 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 20,10 queue och1 metka gate snf buf2,zanyt depart och1 enter buf2,3 advance 21,3 leave buf2,3 tabulate TABL2 terminate ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; generate 30,10 queue och1 TEST E(S$buf1+S$buf2),0 depart och1 enter buf1,3 enter buf2,3 advance 28,5 leave buf2,3 leave buf1,3 tabulate TABL3 terminate zanyt advance 69,13 transfer, povtor generate 4800 terminate 1 start 1 P.S. если сам не додумаюсь то обращусь... а че значит ВСЕ по 10 $.. что понимается под словом ВСЕ ? ![]() |
Автор: Eugen 19.04.09, 16:40 |
TEST E(S$buf1+S$buf2),0 условие по прежнему работает Последние измененийпозволяют убрать условие. Тогда задачи класса C будут сначала захватявать память buf1 затем buf2. depart och1(2) - ставится после ENTER xx |
Автор: flatline 19.04.09, 16:47 |
Eugen спасибо!!!! ты в этой ветке Задачи с решениями по GPSS привел решение задачи №6... я глянул задачник у меня под номером 6 такое же задание.. у тебя нету случайно 12го задания?![]() |
Автор: Eugen 19.04.09, 16:50 |
лучше так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 30,10 PRIORITY 1 // чтобы приоритет был выше чем у задач класса A,B queue och1 enter buf1,3 enter buf2,3 depart och1 .. |
Автор: flatline 19.04.09, 16:51 |
оооооо у меня прошло 14 транзактов из 155!!!!!! я убрал условие проверять память!!!! <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 10 GENERATE 240 0 0 11 QUEUE 240 0 0 METKA 12 GATE 240 29 0 13 ENTER 211 0 0 14 DEPART 211 0 0 15 ADVANCE 211 1 0 16 LEAVE 210 0 0 17 TABULATE 210 0 0 18 TERMINATE 210 0 0 19 GENERATE 159 0 0 20 QUEUE 159 145 0 21 ENTER 14 1 0 22 ENTER 13 0 0 23 DEPART 13 0 0 24 ADVANCE 13 0 0 25 LEAVE 13 0 0 Добавлено убрал проверку на буферы и поставил приоритет на класс С... <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 243 0 0 2 QUEUE 243 0 0 POVTOR 3 GATE 243 242 0 4 ENTER 1 0 0 5 DEPART 1 0 0 6 ADVANCE 1 0 0 7 LEAVE 1 0 0 8 TABULATE 1 0 0 9 TERMINATE 1 0 0 10 GENERATE 235 0 0 11 QUEUE 235 0 0 METKA 12 GATE 235 137 0 13 ENTER 98 0 0 14 DEPART 98 0 0 15 ADVANCE 98 0 0 16 LEAVE 98 0 0 17 TABULATE 98 0 0 18 TERMINATE 98 0 0 19 GENERATE 158 0 0 20 PRIORITY 158 0 0 21 QUEUE 158 60 0 22 ENTER 98 0 0 23 ENTER 98 0 0 24 DEPART 98 0 0 25 ADVANCE 98 1 0 26 LEAVE 97 0 0 27 LEAVE 97 0 0 28 TABULATE 97 0 0 29 TERMINATE 97 0 0 ZANYT 30 ADVANCE 0 0 0 31 TRANSFER 0 0 0 32 GENERATE 1 0 0 33 TERMINATE 1 0 0 Eugen спасибо большое! думаю что то боле менее уже получилось )) |
Автор: Eugen 19.04.09, 16:56 |
количество обработанных заданий класса A и B должно при этом уменьшиться может и есть №12. списка задание не нашел.. |
Автор: flatline 19.04.09, 16:58 |
а у меня вопрос!!!! чем отличается строка <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 30,10 PRIORITY 1 от <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 30,10,,1 в обоих случаях приоритеты же ставим... |
Автор: Eugen 19.04.09, 17:08 |
Недостаток прошлого решения это частый бесполезный простой задания класса С в ожидание ресурса buf2 и аналогичный простой заданий класса А. Следующий вариант немного улучшает ситуацию. Задание класса сначала занимают один из ресурсов buf1 или buf2 и только после этого становится в 'очередь' на занятие второго ресурса. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 30,10,,1 QUEUE och3 TRANSFER BOTH,,met111 ENTER buf1 ENTER buf2 TRANSFER , met222 met111 ENTER buf2 ENTER buf1 met222 DEPART och3 ADVANCE .. Добавлено <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 30,10,,1 QUEUE och3 SEISE MUTEX // что бы в следующем участке модели мог находится только 1 транзакт. Иначе возможны deadlock'и TRANSFER BOTH,,met111 ENTER buf1 ENTER buf2 TRANSFER , met222 met111 ENTER buf2 ENTER buf1 met222 DEPART och3 ADVANCE 28,5 LEAVE buf2,3 LEAVE buf1,3 RELEASE MUTEX // освободить.. TABULATE TABL3 |
Автор: flatline 19.04.09, 18:13 |
Eugen спасибо огромное!!! а то у нас gpss на самообучение дали... ![]() |
Автор: JAM13 20.04.09, 05:14 |
Имеется некоторая конвейерная автоматизированная линия по выпуску баночек фруктового сока. Пустые баночки для фруктового сока поступают в накопитель 1 автоматизированной ли-нии каждые 3,5 ± 1,1 секунд. После этого в них автоматически заливает¬ся сок. Одновременно может заливаться лишь одна баночка, на что расходуется 1,5 секунды. Потом баночки поступают в накопитель 2 для выполнения операции закупоривания. Для этого расходуется 1,6 секунд времени на каждую баночку. Одновременно может обраба-тываться одна баночка. Потом они попадают в накопитель 3 для следующей операции. В конце конвейера баночки устанавливаются в ящики. Время установки одной баночки представляет собой равно¬мерно распределенную случайную величину в интервале 2,0 ± 0,8 секунд. Одновременно может устанавливаться в ящик не боль¬ше двух баночек. В начале смены в накопителе 2 находится 20 баночек, а в накопителе 3 – 36 баночек. Определить, какие размеры должны иметь накопители. Промодели¬руйте работу линии на протяжении одной смены (8 часов). Добрый день!! можете глянуть текст? все правильно? большое спасибо! UPAKOVKA STORAGE 3 GENERATE 3.5,1.1 ;Заливка сока QUEUE Q_ZALIVKA SEIZE ZALIVKA DEPART Q_ZALIVKA ADVANCE 1.5 RELEASE ZALIVKA ;Закупоривание L1 QUEUE Q_ZAKUPORKA SEIZE ZAKUPORKA DEPART Q_ZAKUPORKA ADVANCE 1.6 RELEASE ZAKUPORKA ;упаковка в ящик L2 QUEUE Q_UPAKOVKA ENTER UPAKOVKA DEPART Q_UPAKOVKA ADVANCE 2,0.8 LEAVE UPAKOVKA TERMINATE ;начальная очередь для устройства закупоривания GENERATE ,,,20 TRANSFER ,L1 ;начальная очередь для МКУ упаковки GENERATE ,,,36 TRANSFER ,L2 ;моделируем 8-ми часовой рабочий день GENERATE 28800 TERMINATE 1 START 1 |
Автор: Eugen 20.04.09, 13:17 |
ОШИБКА. Здесь нужна двойка UPAKOVKA STORAGE 3 //Одновременно может устанавливаться в ящик не больше двух баночек |
Автор: JAM13 20.04.09, 15:06 |
да, спасибо огромное!! а остальное? то, что я использовала одноканальные устаройства, а не мку? |
Автор: TEMENb 20.04.09, 15:15 |
вроде верно, только одно замечание. Время должно быть дискретным. Хотя, если честно, GPSS World адекватно моделирует и с дробными значениями. |
Автор: Eugen 20.04.09, 15:46 |
1 tick времени в GPSS (или точность вычисления времени или дискретность времени) это 6 знак после запятой. А дальше дело каждого выбрать ед. модельного вренени год, минуту или пикосенды. Как задать "равномерно распределенную случайную величину в интервале 2,0 ± 0,8" чтобы она была не дробная? ![]() |
Автор: TEMENb 21.04.09, 10:50 |
Цитата Eugen @ 1 tick времени в GPSS (или точность вычисления времени или дискретность времени) это 6 знак после запятой шесть знаков после запятой - это особенность жпсс верд. больше ни одна версия жпсс не тянет дробного времени. Кроме того, gpss задумывался как дискретно-событийный подход к моделированию. Собсно, как я уже писал, жпсс верд схавает дробное значение времени без вопросов, но препод может пристебаться в этом моменте. Есть мнение, что преподы учились на жпсс РС, а там не то что дробного времени - дробных чисел вообще нет, как таковых ![]() З.Ы.: я б выбрал милисекунды. как вариант децисекунды.. но эт звучит хуже ![]() |
Автор: Eugen 21.04.09, 15:13 |
"равномерно распределенная случайная величина в интервале 2,0 ± 0,8" выраженная в децисекундах выгдядит так 20±8 ![]() |
Автор: Azick 22.04.09, 12:42 |
Плз, помогите с задачей: ![]() в специализированной вычислительной системе периодически выполняются три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 50+-30сек.После запуска задания оно требует для своего выполнения 100+-50 сек с времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 30+-10сек., после чего производится их анализ в течении 60+-20сек, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется.Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. подсчитать число циклов выполнения остальных заданий и определить коэфициенты загрузки технических средств системы. |
Автор: kant1288 22.04.09, 14:32 |
Ого)), Azick, вы откуда?? У меня такая же задача, вроде работает, правда хочу попросить помощи у знатоков gpssw, посмотрите пожалуйста мою блок-схему, правильная ли она, больше всего меня смущает условие перед занятием CP. Вот прога: Generate 30,25 queue CPU seize display advance 50,30 release display seize CP advance 100,50 release CP depart CPU advance 30,10 advance 60,20 savevalue 1+,1 terminate Generate 70,5,,,1 queue CPU seize display advance 50,30 release display preempt CP,PR advance 100,50 return CP depart CPU advance 30,10 advance 60,20 savevalue 2+,1 terminate Generate 60,2,,100,2 queue CPU seize display advance 50,30 release display preempt CP,PR advance 100,50 return CP depart CPU advance 30,10 advance 60,20 savevalue 3+,1 terminate generate 12000 TERMINATE 1 start 1 |
Автор: Mary 23.04.09, 13:43 |
TEMENbпорверь пожалуйста аську!!! Добавлено Привет! Мне очень нужна ваша помощь!!! мне нужно задачу решить по gpss.. у меня че-то не получается..((( ПОЖАЛУЙСТА!!!!! вот задача: На железнодорожную сортировочную горку прибывают составы с интенсивностью λ = 2 состава в час. Среднее время, в течение которого горка обслуживает состав, равно 0,4 час. Составы, прибывающие в момент, когда горка занята, становятся в очередь и ожидают в парке прибытия, где имеется три запасных пути, на каждом из которых может ожидать один состав. Состав, прибывший в момент, когда все три запасных пути в парке прибытия заняты, становится в очередь на внешний путь. Все потоки событий простейшие. При установившемся режиме найдите: среднее число составов, ожидающих в очереди (как в парке прибытия, так и вне его); среднее время ожидания в парке прибытия и на внешних путях; среднее время ожидания состава в системе обслуживания; вероятность того, что прибывший состав займет место на внешних путях. я пыталась сама решить, почему-то не работает. вот что я сама написала ( я считала в минутах, 30 минут - интенсивность, 20 минут - 0,4 часа): generate 240 terminate 1 Generate 30 met2 Queue mainq seize main depart mainq test NE q$qgorka,0,met1 test LE q$qzapas,3,met2 queue zapasq seize zapas depart zapasq met1 queue gorkaq seize gorka advance 20 release gorka depart gorkaq terminate 1 |
Автор: TEMENb 23.04.09, 16:20 |
Vitalick, читайте литературу. Все доступно написано. Честно - мне лень лезть в учебники и копировать оттуда сюда справочную информацию. Mary, програмка требует доработок, как с точки зрения реализации, так и с точки зрения логики. Вопервых не моделирует она потому, что вы не организовали выход из устройства main. Вовторых основную линию надо выражать не ОКУ, а МКУ или вообще очередью, т.к. на ней может назодится несколько ожидающих поездов. Собственно я вижу модель так основная линия(очередь)->запасные пути(МКУ 3 канала)->горка(ОКУ) и даже отпадает необходимость в тестах. Вся программа - 12 операторов, с учетом сегмента-таймера и оператора Start. Учачи. |
Автор: Mary 24.04.09, 07:38 |
TEMENb Я переделала, как ты сказал. посмотри, что неправильно. Напиши, пожалуйста, как должно быть. |
Автор: Mary 24.04.09, 08:39 |
zapas storage 3 generate 30 queue qmain queue qzapas enter zapas leave zapas depart qzapas depart qmain queue qgorka seize gorka depart qgorka advance 20 release gorka generate 120 terminate 1 |
Автор: TEMENb 24.04.09, 09:29 |
Mary, вы вообще хоть пробовали запускать??? Сколько времени вы потратили на ЭТО? Цитата zapas storage 3 generate 30 queue qmain enter zapas depart qmain seize gorka leave zapas advance 20 release gorka terminate generate 120 terminate 1 start 1 |
Автор: Mary 24.04.09, 18:10 |
TEMENb Спасибо тебе огромное! я только начинаю изучать gpss, мне простительно ![]() |
Автор: TEMENb 24.04.09, 18:17 |
Mary, я привел простейшую реализацию. в этой реализации получается, что все поезда проходят через запасные пути, но останавливаются на них только если основной занят. Так что у вас есть простейшая реализация и есть куда стремиться. |
Автор: Mary 24.04.09, 18:48 |
я поняла! пасиб! |
Автор: Vesna 25.04.09, 16:46 |
Здравствуйте! Вроде написала программку, а при выполнении выдается ошибка. Помогите пожалуйста, подскажите что не правильно? Двухколейная железная дорога имеет между станциями А и В одноколейный участок с разъездом С. На разъезде имеется запасной путь, на котором один состав может пропустить встречный поезд. К станциям А и В поезда прибывают с двухколейных участков каждые 40 ± 10 мин. Участок пути АС поезда преодолевают за 15 ± 3 мин, а участок пути ВС – за 20 ± 3 мин. Со станций А и В поезда пропускаются на одноколейный участок до разъезда только при условии, что участок свободен, а на разъезде не стоит состав. После остановки на разъезде поезда пропускаются на участок сразу после его освобождения. Поезд останавливается на разъезде, если по лежащему впереди него участку пути движется встречный поезд. Смоделировать работу одноколейного участка железной дороги при условии, что в направлении АВ через него должны проследовать 50 составов. Определить среднее время ожидания составов на станциях А и В, а также среднее время ожидания на разъезде С и коэффициент загрузки запасного пути. PunktA GENERATE 40,10 ; прибытие поездов на станцию А QUEUE OchA ; встать в очередь на станции А GATE NU AC ; проверка свободен ли участок АС GATE NU C ; проверка свободен ли участок С SEIZE AC ; Если свободны то занимаем участок АС, иначе ждем DEPART OchA ; Убираем транзакт из очереди на пункте А ADVANCE 15,3 ; Проезжаем АС GATE NU BC,met1 ; Проверяем свободен ли для проезда участок ВС, Еcли не то то идем на met1 RELEASE AC ; освобождаем АС met2 SEIZE BC ;занимаем ВС ADVANCE 20,3 ;едем по ВС TRANSFER ENDE ; переход на строчку ende met1 SEIZE C ;занимаем запасной путь С GATE NU BC ; проверяем не освободился ли ВС RELEASE C ; освобождаем запасной путь, если ВС свободен transfer met2 ; идем на метку met2 PunktB GENERATE 40,10 ; прибытие поездов на станцию В QUEUE OchB ; встать в очередь на станции В GATE NU BC ; проверка свободен ли участок ВС GATE NU C ; проверка свободен ли участок С SEIZE BC ; Если свободны то занимаем участок ВС, иначе ждем DEPART OchB ; Убираем транзакт из очереди на пункте В ADVANCE 20,3 ; Проезжаем ВС GATE NU AC,met3 Проверяем свободен ли для проезда участок АС, Еcли не то то идем на met3 RELEASE BC освобождаем ВС met4 SEIZE AC ;занимаем АС ADVANCE 15,3 ;едем по АС TRANSFER ENDE ;переход на строчку ende met3 SEIZE C ;занимаем запасной путь С GATE NU AC ; проверяем не освободился ли АС RELEASE C ; освобождаем запасной путь, если АС свободен transfer met4 ; идем на метку met4 ENDE TERMINATE TERMINATE 1 start 50 ОШИБКА: 24/04/09 13:50:34 Model Translation Begun. 24/04/09 13:50:34 Line 27, Col 8. Invalid use of SNA Class Specifier. Operand A. 24/04/09 13:50:34 GATE NU AC,met3 24/04/09 13:50:34 **** Model Translation Aborted **** Очень прошу, не игнорируйте. Мне правда очень нужна помощь. Заранее благодарна. |
Автор: Eugen 26.04.09, 16:17 |
вполне возможно, что AC - используется средой GPSS. придумай названия посложнее, напр. distance_AC или AC_Segment |
Автор: Arrrgh 28.04.09, 08:39 |
Доброго времени суток, проверьте пожалуйста правильность написания модели. Условие задачи : В аэропорту на ленту транспортера поступает багаж где он проходит проверку, 5% не проходят проверку и идут на дополнительную проверку после чего возвращаются обратно на ленту, после проверки багаж разделяется на четыре разных погрузочных ленты(и вот тут заключается основная проблема вроде все работает но как-то не так). Вот то что я намоделировал: SIMULATE CHECK STORAGE 2 L STORAGE 4 OBR STORAGE 2 BAG STORAGE 8 INTEGER &I * МОДУЛЬ ИСПОЛНЕНИЯ GENERATE 1,1 поступление багажа RETEST QUEUE CHECK организация очереди контроля ENTER OBR DEPART CHECK ADVANCE 1,1 LEAVE OBR TRANSFER .050,,TEST 5% багажа идет на дополнительную проверку * TEST TEST QUEUE MTEST организация очереди на дополнителую проверку SEIZE TESTER DEPART MTEST ADVANCE 2,1 RELEASE TESTER TRANSFER ,RETEST возврат на общий контроль * Разделение на линии L1 TEST E L1,1,OT проверка если не проходит то идет обратно на выбор линии QUEUE LNB ENTER BAG DEPART LNB ADVANCE 1 LEAVE BAG TERMINATE 1 OT TRANSFER ,L2 L2 TEST E L2,2,OTH проверка если не проходит то идет обратно на выбор линии QUEUE LNC ENTER BAG DEPART LNC ADVANCE 1 LEAVE BAG TERMINATE 1 OTH TRANSFER ,L3 L3 TEST E L3,3,OTHE проверка если не проходит то идет обратно на выбор линии QUEUE LND ENTER BAG DEPART LND ADVANCE 1 LEAVE BAG TERMINATE 1 OTHE TRANSFER ,L4 L4 TEST E L4,4,L1 проверка если не проходит то идет обратно на выбор линии QUEUE LNE ENTER BAG DEPART LNE ADVANCE 1 LEAVE BAG TERMINATE 1 * ПРОВЕРКА DO &I=1,35,1 START 60 CLEAR ENDDO END Заранее спасибо за помощь. |
Автор: Eugen 28.04.09, 13:13 |
ошибки: - нет полного текста задачи - нет символа конца gpss кода перед коментариями - метки TEST не может быть в gpss, это название исполняемого блока - L1, L2, L3, L4 равны номерам строк, где они указаны как метки блокив. Так что устолия всегда false что делает эта конструкция? Цитата DO &I=1,35,1 START 60 CLEAR ENDDO END задача вроде не сложная, могу подправить за $ |
Автор: Arrrgh 28.04.09, 15:06 |
Eugen спасибо большое за помощь, но исправить хочу сам, я сейчас обучаюсь этому языку, Вы мне тока объясните пожалуйста, где я накасячил. 1.нет символа конца gpss кода перед комментариями –что это за символ 2.L1, L2, L3, L4 равны номерам строк, где они указаны как метки блокjв. Так что устолия всегда false- можно по подробнее обьяснить что необходимо сделать. 3.С меткой TEST это я просмотрел 4.А Эта конструкция задает петлю чтобы не надо было каждый раз писать Start Clear для получения различных данных. Я пишу на GPSSH Заранее спасибо |
Автор: Eugen 28.04.09, 15:50 |
1. GENERATE 1,1 поступление багажа - разве их не нужно разделять ";" или "*" 2. L1 TEST E L1,1,OT - и далее еще 3 строки. При проверкb условия if(L1 == 1).. здесь L1 всегда = номеру строки в которой стоит этот TEST 4. DO &I=1,35,1 - что обозначет каждая цифра |
Автор: Dzon 29.04.09, 04:07 |
Детали, необходимые для работы цеха, находятся на цеховом и центральных складах. На цеховом складе хранится 20 комплектов деталей, потребность в которых возникает через 60+-10 минут и составляет один комплект. В случае снижения запасов до трех комплектов, формируется в течении 60 минут заявка на пополнение запасов цехового склада до полного объема в 20 комплектов, которая посылается на центральный склад, где в течении 60+-20 минут происходит комплектование за 60+-5 минут осуществляется доставка деталей в цеховой склад. Смоделировать работу цеха в течении 400 часов. Определить вероятность простоя цеха из-за отсутствия деталей и среднюю загруженность цехового склада. Определить момент пополнения запасов цехового склада при котором вероятность простоя цеха равна 0. Вот моя программа. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> simulate initial x$och,20; generate 24000; terminate 1; generate 60,10; test NE x$och,0,vihod0; SAVEVALUE och-,1; test e x$och,3,vihod; split 1,centrskl; vihod terminate ; vihod0 terminate; centrskl advance 60; advance 60,20; advance 60,5; SAVEVALUE och,20; terminate; start 1; Нужно определить: 1)Вероятность простоя цеха из-за отсутсятвия деталей. 2)среднюю загрузженность цехового склада. 3)Определить момент пополнения запасов цехового склада при котором вероятность простоя цеха равна 0 Помогите опредилить эти значения? |
Автор: Arrrgh 29.04.09, 08:26 |
2Eugen Доброго времени суток, 1. нет их разделять не нужно их нужно просто писать в соответствующей колонке (25 вроде пробел от начала строки) 2.тоесть вместо L1 TEST E L1,1,OT необходимо написать FL TEST E L1,1,OT( например) я правильно понял? 3.сначала в блоке SIMULATE пишем INTEGER &I (для ввода петли) &I=1 - индекс начала петли,представляющей собой целочисленную скалярную ампеерпеременную; 35 - характеризует собой предельный номер конечного члена петли(сколько раз прогонять) 1 - задает приращение индекса Ещё раз спасибо за помощь |
Автор: Vitalick 29.04.09, 12:04 |
Здрасти! хотелось бы переделать задачку из GPSSWorld просто в GPSS возможно ли это?! VVrema variable (Exponential(1,0,X$Vrem)) initial X$Vrem,5 generate 6,3 savevalue Vsego+,1 assign PVrema1,V$VVrema assign PVrema2,V$VVrema queue Och1 seize Ustr1 depart Och1 advance P$PVrema1 release Ustr1 queue Och2 seize Ustr2 depart Och2 advance P$PVrema2 release Ustr2 test LE (P$PVrema1+P$PVrema2),10,MetBol test L (X$Bol/X$Vsego),.3,MetTerm savevalue Vrem,5 MetTerm terminate MetBol savevalue Bol+,1 test GE (X$Bol/X$Vsego),.3,Met1 savevalue Vrem,4 MetTerm1 terminate Met1 savevalue Vrem,5 transfer ,MetTerm1 generate 10000 terminate 1 start 1 |
Автор: TEMENb 29.04.09, 19:12 |
Возможно. пронумеруйте каждый функциональный блок, все формулы вынесите вычисляемыми выражениями, в т.ч и условия для теста. Закон распредиления прийдется задать при помощи оператора FUNCTION Удачи ) |
Автор: tigreg 01.05.09, 10:57 |
Привет! Не не понимаю, в чем ошибка... Задача такая: На двухканальный телефон скорой помощи в среднем 1 раз в 100 секунд с равной вероятностью звонят старики, взрослые и дети. Время разговора с ними соответственно 180 с, 150 с, 210 с. мой текст программы такой: emerg storage 2 generate 100 transfer pick old,baby old assign 1,(Uniform(1,160,200)) transfer ,old1 aged assign 2,(Uniform(1,130,170)) transfer ,aged1 baby assign 3,(Uniform(1,190,230)) transfer ,baby1 old1 enter emerg advance P1 leave emerg terminate aged1 enter emerg advance P2 leave emerg terminate baby1 enter emerg advance P3 leave emerg terminate generate 86400 terminate 1 программа выдает такую ошибку:28 ADVANCE. Line 16. advance P2 Reference to a non-existent Parameter. |
Автор: TEMENb 01.05.09, 11:21 |
1. В операторе трансфер стоит пробел вместо запятой, 2. параметр пик кидает на случайную строку между метками. В результате чего транзакты попадают на адвансы, не попав на ассижены, следстиве - попытка задержатся на велечину параметра, которого еще вообще то не существует 3. метки baby1, aged1 и old1 - не пришей кобыле хвост. код то одинаковый. Упростим. 4. ИМХО лучше использовать DUniform. Он дает дискретные значения. В ЖПСС верд погоды не делает (прекрасно работает с дробным временем), но чисто теоритически так вроде как привильней. Цитата emerg storage 2 generate 100 transfer pick,met1,met2 met1 transfer ,old transfer ,aged met2 transfer ,baby old assign 1,(DUniform(1,160,200)) transfer ,met3 aged assign 1,(DUniform(1,130,170)) transfer ,met3 baby assign 1,(DUniform(1,190,230)) transfer ,met3 met3 enter emerg advance P1 leave emerg terminate generate 86400 terminate 1 start 1 А вообще, раз сказано про равные ВЕРОЯТНОСТИ, то помоему лучше задать переходы именно вероятностями Цитата emerg storage 2 generate 100 transfer (2/3),old transfer .5,aged,baby old assign 1,(DUniform(1,160,200)) transfer ,met3 aged assign 1,(DUniform(1,130,170)) transfer ,met3 baby assign 1,(DUniform(1,190,230)) transfer ,met3 met3 enter emerg advance P1 leave emerg terminate generate 86400 terminate 1 start 1 З.Ы.: выделяйте код. Добавлено Ну и это тебе на закуску )) Цитата OLD VARIABLE (DUniform(1,160,200)) AGED VARIABLE (DUniform(1,130,170)) BABY VARIABLE (DUniform(1,190,230)) fun function RN2,E3 .33,V$OLD/.66,V$AGED/1,V$BABY emerg storage 2 generate 100 assign 1,FN$FUN enter emerg advance P1 leave emerg terminate generate 86400 terminate 1 start 1 |
Автор: h4_botan 01.05.09, 13:27 |
Люди,спасайте. Короче у меня версия GPSS, в которой размер модели ограничен 180 блоками (180 операндов, строк кода). Подскажите, кто знает, как снять это огранечение. Или если как я понимаю это ограничение именно версии программы, дайте ссылочкку плиз, где скачать, версию хотябы на 500 строк. (и желательно просто бесплатную ссылку ![]() Спайте, курсач горит ![]() |
Автор: TEMENb 01.05.09, 13:33 |
h4_botan, не попадалась еще ни одна программа, для которой не хватило бы 180 блоков. Скорей всего вы что то делаете не так. Добавлено А способ снять ограничение весьма прост. для этого надо заплатить 500 бакинских минутеансофтвейру за комерческую версию программы ![]() Добавлено З.Ы.: для сравнения можешь перечитать предыдущие два поста. Я не напрягаясь уменьшил вдвое размер программы, без искажения условий и потери точности моделирования. |
Автор: h4_botan 01.05.09, 18:40 |
Гы гы гы гы, давайте я к примеру выложу условие задачи, а вы мне,Уважаемый, скажите, уложитесь ли вы в 180 блоков. На вход СМО поступает входной поток, в котором с вероятностью 0,58 имеются заявки первого типа; с остаточной вероятностью – второго. Заявки первого типа обслуживаются в 3-х канальном узле с общей очередью (устройства 1-3); второго типа – в двухканальном узле с индивидуальными очередями каждого устройства (устройства 4 и 5). СМО также располагает тремя безотказными резервными устройствами, которые могут быть использованы в случае отказа любого из основных устройств СМО. Отказы наступают в системе с заданной периодичностью, причем с вероятностью 0,75 наступает отказ одного устройства; с вероятность 0,2 – двух устройств; с вероятностью 0,05 – трех устройств (любого или любых равновероятно). В случае множественности отказа время восстановления индивидуально для каждого отказавшего устройства. Время обслуживания в используемом резерве эквивалентно времени обслуживания в резервируемом устройстве. На момент запуска системы одно резервное устройство находится в «горячем» резерве у первого устройства трехканального узла; второе – в «горячем» резерве у первого устройства двухканального узла; третье – в «холодном» резерве. Для первого отказа, если он происходит не в устройствах с «горячим» резервом, используется «холодный» резерв. Резерв считается использованным, если он отработал время восстановления устройства. Отключение использованного резерва от устройства (перевод в «холодное» состояние) происходит после наступления в системе очередного отказа в том случае, если отказ не наступил в устройстве, к которому подключен резерв. В случае отказа устройства СМО остаток незавершенного обслуживания ожидает продолжения обслуживания в резервном устройстве в течение времени, равного 1,25×МОп, где МОп – заданное математическое ожидание времени подключения резерва. Если за этот интервал подключения резерва не происходит (не успевает, нет свободных резервных устройств), то остаток направляется в кратчайшую очередь работающих устройств своего узла, где принимается при длине очереди не более 2-х заявок; в противном случае – теряется. ![]() Добавлено Кстати, могу, приложить код ко всему этому.... |
Автор: Arrrgh 01.05.09, 19:00 |
2TEMENb, Вы случайно не можете мне помочь с задачей? я её выше описал, а то eugen пропал куда-то.. =\ Заранее спасибо |
Автор: TEMENb 01.05.09, 19:07 |
ну обемная задачка, по преварительным оценкам до 60-90 блоков ) видели задачки и пообьемней ![]() давай код. будем править. |
Автор: h4_botan 01.05.09, 19:39 |
Лады, выдаю, правда он ещё не доделан малость, но уже около 170 строк, да из за размера окна форума, коменты малость расстануться, может неудобно читать будет: ;*********************************************************** ;буква "М_" в начале имени переменной будет говорить о том, что данная переменная является меткой ;буква "U_" в начале имени переменной будет говорить о том, что данная переменная является устройством ;буква "Q_" в начале имени переменной будет говорить о том, что данная переменная является очередью ;___________Переменные очередей узлов 1- 2___________________________________________________________________________________ INITIAL X$K1QDLIN,0 ;переменная, содержащая количество заявок, находящихся в очереди 3-х канального узла INITIAL X$K2U1QDLIN,0 ;переменные 2-х канального узла, содержащие количество заявок, находящихся в очередях INITIAL X$K2U2QDLIN,0 ;устройств 1 и 2 соответственно ;___________Функции расперделения заявок____________________________________________________________________________________ tipe FUNCTION RN1,D2 ;дискретная фунцкия распеделения заявок 2-х типов 0.58,M_TIP_A/1,M_TIP_B ;Заявки первого типа обслуживаются в 3-х канальном узле с общей очередью ;Второго типа в 2-х канальном узле с индивидуальными очердьми устройств KANAL1 FUNCTION RN1,D3 ;дискретная фунцкия распеделения заявок 1-го типа на обслуживание равновероятно 0.33,M_K1U1/0.66,M_K1U2/1,M_K1U3 ;среди трёх устройств ;***********ОСНОВНОЙ БЛОК*************************************************************************************************** GENERATE (Exponential(1,0,1)) ;генерация поступления заявок в СМО ASSIGN 12,(Exponential(1,0,5)) ;назначаем 12-му парметру заявки время, равное отключени/подключению резервного устройства TRANSFER ,FN$tipe ;распределение заявок по узлам, согласно их вероятности ;(по дискретной функции) ;___________распределение по типам заявок___________________________________________________________________________________ M_TIP_A ASSIGN 10,(Exponential(1,0,1.923)) ;назначаем 10 парметру заявки время, которое она будет обслуживаться в устр-ах 1 узла M_QQUZEL1 QUEUE Q_UZEL1 ;заявки попадают в общую очередь, все обслуживаются SAVEVALUE K1QDLIN+,1 ;добавляем к длинне очереди общей очереди 3-х канального узла 1 TRANSFER ,FN$KANAL1 ;расперделение на обслуживаник заявки типа А равновероятно по трём устройствам ;между тремя устройствами с общей очередью канала 1 M_TIP_B ASSIGN 10,(Exponential(1,0,1.923)) ;назначаем 10 парметру заявки время, которое она будет обслуживаться в устр-ах 2 узла TRANSFER 0.5,M_K2U1,M_K2U2 ;расперделение на обслуживаник заявки типа В равновероятно ;между двумя устройствами с индивидуальными очередями канала 2 ;___________Устройства канала 1_______________________________________________________________________________________________ M_K1U1 ASSIGN 11,1 ;назначаем 11 параметру заявки 1(порядковый номер устройства) GATE FV U_K1UST1,M_RESERV ;проверка на доступность устройства 1, если не доступно, то в переход в блок резерва SEIZE U_K1UST1 ;признак занятости устройства обслуживания 1 в канале 1 DEPART Q_UZEL1 ;выход заявки из общей очереди канала 1 на обслуживание SAVEVALUE K1QDLIN-,1 ;отнимаем от длинны очереди общей очереди 3-х канального узла 1 ADVANCE (Exponential(1,0,1.923)) ;функция обслуживания заявки RELEASE U_K1UST1 ;осовбождение устройства 1 TRANSFER ,OUT_OKU1 ;переход по метке OUT_OKU1 M_K1U2 ASSIGN 11,2 ;назначаем 11 параметру заявки 2(порядковый номер устройства) GATE FV U_K1UST2,M_RESERV ;проверка на доступность устройства 2, если не доступно, то в переход в блок резерва SEIZE U_K1UST2 ;признак занятости устройства обслуживания 2 в канале 1 DEPART Q_UZEL1 ;выход заявки из общей очереди канала 1 на обслуживание SAVEVALUE K1QDLIN-,1 ;отнимаем от длинны очереди общей очереди 3-х канального узла 1 ADVANCE (Exponential(1,0,1.923)) ;функция обслуживания заявки RELEASE U_K1UST2 ;осовбождение устройства 2 TRANSFER ,OUT_OKU1 ;переход по метке OUT_OKU1 M_K1U3 ASSIGN 11,3 ;назначаем 11 параметру заявки 3(порядковый номер устройства) GATE FV U_K1UST3,M_RESERV ;проверка на доступность устройства 3, если не доступно, то в переход в блок резерва SEIZE U_K1UST3 ;признак занятости устройства обслуживания 3 в канале 1 DEPART Q_UZEL1 ;выход заявки из общей очереди канала 1 на обслуживание SAVEVALUE K1QDLIN-,1 ;отнимаем от длинны очереди общей очереди 3-х канального узла 1 ADVANCE (Exponential(1,0,1.923)) ;функция обслуживания заявки RELEASE U_K1UST3 ;осовбождение устройства 3 TRANSFER ,OUT_OKU1 ;переход по метке OUT_OKU1 ;___________Устройства канала 2_______________________________________________________________________________________________ M_K2U1 QUEUE Q_UZEL2_1 ;поступление заявки в очередь устройства 1,двухкнального узла SAVEVALUE K2U1QDLIN+,1 ;добавляем к длинне очереди устройства 1-му из 2-х канального узла 1 ASSIGN 11,4 ;назначаем 11 параметру заявки 4(порядковый номер устройства) GATE FV U_K2UST1,M_RESERV ;проверка на доступность устройства 4, если не доступно, то в переход в блок резерва SEIZE U_K2UST1 ;признак занятости устройства обслуживания 1 в канале 2 DEPART Q_UZEL2_1 ;выход заявки из общей очереди канала 2 на обслуживание SAVEVALUE K2U1QDLIN-,1 ;отнимаем от длинны очереди устройства 1 из 2-х канального узла 1 ADVANCE (Exponential(1,0,2.08333)) ;функция обслуживания заявки RELEASE U_K2UST1 ;осовбождение устройства 1 TRANSFER ,OUT_OKU2 ;переход по метке OUT_OKU2 M_K2U2 QUEUE Q_UZEL2_2 ;поступление заявки в очередь устройства 2,двухкнального узла SAVEVALUE K2U2QDLIN+,1 ;добавляем к длинне очереди устройства 2-му из 2-х канального узла 1 ASSIGN 11,5 ;назначаем 11 параметру заявки 5(порядковый номер устройства) GATE FV U_K2UST1,M_RESERV ;проверка на доступность устройства 5, если не доступно, то в переход в блок резерва SEIZE U_K2UST2 ;признак занятости устройства обслуживания 2 в канале 2 DEPART Q_UZEL2_2 ;выход заявки из общей очереди канала 2 на обслуживание SAVEVALUE K2U2QDLIN-,1 ;отнимаем от длинны очереди устройства 2 из 2-х канального узла 1 ADVANCE (Exponential(1,0,2.08333)) ;функция обслуживания заявки RELEASE U_K2UST2 ;осовбождение устройства 2 TRANSFER ,OUT_OKU2 ;переход по метке OUT_OKU2 ;***********Моделирование возникновения отказак устройствам СМО************************************************************ ;___________Генерация отказов______________________________________________________________________________________________ GENERATE ,,,1 ;генерирование заявки для создания отказов устройств ASSIGN 15,0 M_otkaz TEST NE P15,1,KILL_KOPY ADVANCE (Gamma(1,0,29.41176,2)) ;интервал времени отказа в доступе к устройству TRANSFER ,FN$tipeotk ;переход заявки к функции FN$tipeotk tipeotk FUNCTION RN1,D3 ;дискретная фунцкия распеделения заявок отказа 0.75,M_OTK1/0.95,M_OTK2/1,M_OTK3 ;отказ 1-го устр-ва с вероятностью 0.75 или одновременно двух с ;вероятностью 0,2 ,или одновременно трёх, вероятность 0,05 M_OTK1 TRANSFER ,M_MET0 ;переход заявки по метке otkaz_ustr M_OTK2 SPLIT 1,M_METK ;создание второй заявки-клона TRANSFER ,M_MET0 ;переход двух заявок по метке otkaz_ustr M_OTK3 SPLIT 2,M_METK ;создание второй и третий заявки-клонов TRANSFER ,M_MET0 ;переход трёх заявок по метке otkaz_ustr ;___________Равновероятное распределение заявок отказа______________________________________________________________________ M_METK ASSIGN 15,1 M_MET0 TRANSFER 0.2,,M_OTKU1 TRANSFER 0.248,,M_OTKU2 TRANSFER 0.335,,M_OTKU3 TRANSFER 0.507,,M_OTKU4 TRANSFER ,M_OTKU5 ;___________Oтказы усторйств________________________________________________________________________________________________ M_OTKU1 GATE FV U_K1UST1,M_MET0 ;проверка доступности отказываемое устройства, если устройство уже ;находится в отказе, то направление заявки на перераспределение отказа FUNAVAIL U_K1UST1,RE,M_RESERVREL,10 ;отказ устройства K1U1, перевод заявки из устройства в резервное устройство ADVANCE 35,15 ;время восстановления устройства K1U1 FAVAIL U_K1UST1 ;восстановление работоспособности устройства K1U1 TRANSFER ,M_otkaz ;переход заявки по метке otkaz для создания последующих отказов M_OTKU2 GATE FV U_K1UST2,M_MET0 ;проверка доступности отказываемое устройства, если устройство уже ;находится в отказе, то направление заявки на перераспределение отказа FUNAVAIL U_K1UST2,RE,M_RESERVREL,10 ;отказ устройства K1U2, перевод заявки из устройства в резервное устройство ADVANCE 35,15 ;время восстановления устройства K1U2 FAVAIL U_K1UST2 ;восстановление работоспособности устройства K1U2 TRANSFER ,M_otkaz ;переход заявки по метке otkaz для создания последующих отказов M_OTKU3 GATE FV U_K1UST3,M_MET0 ;проверка доступности отказываемое устройства, если устройство уже ;находится в отказе, то направление заявки на перераспределение отказа FUNAVAIL U_K1UST3,RE,M_RESERVREL,10 ;отказ устройства K1U3, перевод заявки из устройства в резервное устройство ADVANCE 35,15 ;время восстановления устройства K1U3 FAVAIL U_K1UST3 ;восстановление работоспособности устройства K1U3 TRANSFER ,M_otkaz ;переход заявки по метке otkaz для создания последующих отказов M_OTKU4 GATE FV U_K2UST1,M_MET0 ;проверка доступности отказываемое устройства, если устройство уже ;находится в отказе, то направление заявки на перераспределение отказа FUNAVAIL U_K2UST1,RE,M_RESERVREL,10 ;отказ устройства K2U1, перевод заявки из устройства в резервное устройство ADVANCE 35,15 ;время восстановления устройства K2U1 FAVAIL U_K2UST1 ;восстановление работоспособности устройства K2U1 TRANSFER ,M_otkaz ;переход заявки по метке otkaz для создания последующих отказов M_OTKU5 GATE FV U_K2UST2,M_MET0 ;проверка доступности отказываемое устройства, если устройство уже ;находится в отказе, то направление заявки на перераспределение отказа FUNAVAIL U_K2UST2,RE,M_RESERVREL,10 ;отказ устройства K2U2, перевод заявки из устройства в резервное устройство ADVANCE 35,15 ;время восстановления устройства K2U2 FAVAIL U_K2UST2 ;восстановление работоспособности устройства K2U2 TRANSFER ,M_otkaz ;переход заявки по метке otkaz для создания последующих отказов ;***********Блок резервных устройств***************************************************************************************** ;___________Переменные резервного устройства 1_______________________________________________________________________________ INITIAL X$RES_U1M,1 ;при старте системы первое резервное устройство находится в "горячем" состоянии ;у первого устройста 3-х канального узла (позиция 1) INITIAL X$RES_U1S,1 ;переменная состояния устройства: 1 - "горячее",0 - "холодное" INITIAL X$RES_U1I,0 ;переменная использования резеврного устройства: 1 - используется, 0 - свободен ;___________Переменные резервного устройства 2_______________________________________________________________________________ INITIAL X$RES_U2M,4 ;при старте системы второе резервное устройство находится в "горячем" состоянии ;у первого устройста 2-х канального узла (позиция 4) INITIAL X$RES_U2S,1 ;переменная состояния устройства: 1 - "горячее",0 - "холодное" INITIAL X$RES_U2I,0 ;переменная использования резеврного устройства: 1 - используется, 0 - свободен ;___________Переменные резервного устройства 3_______________________________________________________________________________ INITIAL X$RES_U3M,0 ;при старте системы тертье резервное устройство находится в "холодном" состоянии ;(позиция 0) INITIAL X$RES_U3S,0 ;переменная состояния устройства: 1 - "горячее",0 - "холодное" INITIAL X$RES_U3I,0 ;переменная использования резеврного устройства: 1 - используется, 0 - свободен M_RESERVREL TEST NE P11,1,M_ES1 ;в этой и следующих 4-х строках проверяем из какого устройства пришла заявка TEST NE P11,2,M_ES2 ;в зависимотси от этого будет осуществлён переход по метке с последующим TEST NE P11,3,M_ES3 ;освобождением от прерванного осблуживания устройства,из которого прибыла заявка TEST NE P11,4,M_ES4 TEST NE P11,5,M_ES5 M_ES1 RELEASE U_K1UST1 ;осовбождение от прерванного осблуживания устройства 1 канала 1 TRANSFER ,M_RESERV ;переход по метке M_RESERV M_ES2 RELEASE U_K1UST2 ;осовбождение от прерванного осблуживания устройства 2 канала 1 TRANSFER ,M_RESERV ;переход по метке M_RESERV M_ES3 RELEASE U_K1UST3 ;осовбождение от прерванного осблуживания устройства 3 канала 1 TRANSFER ,M_RESERV ;переход по метке M_RESERV M_ES4 RELEASE U_K2UST1 ;осовбождение от прерванного осблуживания устройства 4 канала 2 TRANSFER ,M_RESERV ;переход по метке M_RESERV M_ES5 RELEASE U_K2UST2 ;осовбождение от прерванного осблуживания устройства 5 канала 2 TRANSFER ,M_RESERV ;переход по метке M_RESERV M_RESERV MARK ;метка остчёта времени "просиживания" заявки в резерве M_TIME TEST NE P11,RES_U1M,M_U1RES ;после того,как заявка попала в блок резерва идёт серия проверок, находится ли TEST NE P11,RES_U2M,M_U2RES ;одно из трёх резервных устройств в "горячем" состоянии к отказавшему устройству TEST NE P11,RES_U3M,M_U3RES ;из которого и прибыла заявка, если да ,то заявка переходит по метке и осблуживается ;без ожидания откл./подкл. резервного устройства. TEST NE RES_U1S,0,M_U1RESH ;серия проверок на "холодный" резерв, т.е. если имеется свободный резерв то заявка TEST NE RES_U2S,0,M_U2RESH ;переходит в енго и ждёт время подключения резерва, затем обслуживается TEST NE RES_U3S,0,M_U3RESH TEST NE RES_U1I,0,M_U1RESF ;серия проверок на свободные резервы, это тот случай когда резерв отработал время TEST NE RES_U1I,0,M_U2RESF ;восстановления устройства, но остался в "горячем" состоянии, ожидая следующего TEST NE RES_U1I,0,M_U3RESF ;отказа в системе,найдя такой резер заявка переходит в него и ждёт время, равное ;вермени отключения+вермя подключения резервного устройства TEST LE M1,P12,M_TIMEOUT ;если вермя ожидания обслуживания в резерве заявки истекло, то она напраляевтся ;по метке M_TIMEOUT, на распределение в кратчайшую очередь, илиже теряется ADVANCE (Exponential(1,0,4)) TRANSFER ,M_TIME ;переход по метке, с последующим повторение проверок устройств резерва M_TIMEOUT TEST G P11,3,M_QUZEL1 TEST NE P11,4,M_QUZEL2U1 TEST NE P11,5,M_QUZEL2U2 M_QUZEL1 TEST G K1QDLIN,2,bej ;M_QQUZEL1 TRANSFER ,M_LOST M_QUZEL2U1 TEST G K2U1QDLIN,2,bej ;M_K2U1 TRANSFER ,M_LOST M_QUZEL2U2 TEST G K2U2QDLIN,2,bej ;M_K2U2 TRANSFER ,M_LOST bej TERMINATE ;Резервное устройство 1 M_U1RESF SAVEVALUE RES_U1M,0 ;снятие резерва номера устройства прошлого "горячего" состояния ADVANCE (Exponential(1,0,2)) ;ожидание время отключения резервного устройства 1 SAVEVALUE RES_U1S,0 ;перевод резервного устройства 1 в "холодное" состояние TRANSFER ,M_TIME ;переход по метке M_TIME M_U1RESH ADVANCE (Exponential(1,0,2)) ;ожидание время подключения резервного устройства 1 SAVEVALUE RES_U1M,P11 ;назначение резервному устройства номера устройства нового "горячего" состояния SAVEVALUE RES_U1S,1 ;перевод резервного устройства 1 в "горячее" состояние SAVEVALUE RES_U1I,1 ;Перевод устройства в режим "используется" TRANSFER ,M_TIME ;переход по метке M_TIME M_U1RES QUEUE Q_RES1 ;поступление заявки в очередь резервного устройства 1 SEIZE U_RESERV1 ;признак занятости устройства резерва DEPART Q_RES1 ;выход заявки из очереди резервного устройства 1 на обслуживание TEST NE P11,1,M_ESL1 ;в этой и следующих 4-х строках проверяем из какого устройства пришла заявка TEST NE P11,2,M_ESL2 ;в зависимотси от этого будет осуществлён переход по метке с последующей TEST NE P11,3,M_ESL3 ;проверкой на истечение время восстановления отказавщего устройства, из которого TEST NE P11,4,M_ESL4 ;и прибыла заявка TEST NE P11,5,M_ESL5 M_U1RESAD ADVANCE P10 ;время обслуживания заявки равно её 10 параметру RELEASE U_RESERV1 ;осовбождение резервного устройства 1 TRANSFER ,OUT_RES1 ;переход по метке OUT_RES1 M_ESL1 SAVEVALUE K1QDLIN-,1 ;отнимаем от длинны очереди общей очереди 3-х канального узла 1 GATE FV U_K1UST1,FN$M_RELRES1 ;проверка на доступность устройства 1, если доступно,т.е. время восстановления TRANSFER ,M_U1RESAD ;устройства истекло, то перходим по метке M_RELRES1, в противном случае заявка M_ESL2 SAVEVALUE K1QDLIN-,1 ;просто переходит по метке M_U1RESAD, дяльше идут аналогичные проверки GATE FV U_K1UST2,FN$M_RELRES1 ;для оставшихся устройств,т.е. всего производится одна из пяти проверок, TRANSFER ,M_U1RESAD ;в зависимости от поступившей заявки. M_ESL3 SAVEVALUE K1QDLIN-,1 ;отнимаем от длинны очереди общей очереди 3-х канального узла 1 GATE FV U_K1UST3,FN$M_RELRES1 ; TRANSFER ,M_U1RESAD ; M_ESL4 SAVEVALUE K2U1QDLIN-,1 ;отнимаем от длинны очереди устройства 1 из 2-х канального узла 1 GATE FV U_K2UST1,FN$M_RELRES1 ; TRANSFER ,M_U1RESAD ; M_ESL5 SAVEVALUE K2U2QDLIN-,1 ;отнимаем от длинны очереди устройства 2 из 2-х канального узла 1 GATE FV U_K2UST2,FN$M_RELRES1 ; TRANSFER ,M_U1RESAD ; M_RELRES1 SAVEVALUE RES_U1I,0 ;Переводим резервное устройство 1 в режим "Свободно" TRANSFER ,M_U1RESAD ;переход по метке M_U1RESAD KILL_KOPY TERMINATE ;выход копии заявки отказов из СМО OUT_RES1 TERMINATE ;выход заявки из СМО OUT_OKU1 TERMINATE ;выход заявки из СМО OUT_OKU2 TERMINATE ;выход заявки из СМО M_LOST TERMINATE ;выход заявки из СМО GENERATE 10000 TERMINATE 1 START 1 ;прогонов ************************************************************************************************* Да, могут встретиться "мёртвые" блоки,парвда их не много и это те, которые рассчитаны на будущее увеличение кода например, когда дело пойдёт про резеврные устойства. Дополнение ещё ок всему таблица параметров: входной поток отказ восстан под/отк резерва устр1-3 устр4-5 закон распределения эксп. гамма равн. эксп. эксп. эксп. параметры l=1 l=0,034; b=2 35±15 l=0,5 l=0,52 l=0,48 З.Ы. Помогите чем сможете, а то я уже ![]() |
Автор: TEMENb 01.05.09, 20:44 |
очень очень очень много лишнего ![]() Седня ночью накидаю примерный каркас твоей задачи. Ато явно видно, что работа проделана колоссальная, а результат - тупик. Грех не помочь ) |
Автор: h4_botan 01.05.09, 23:12 |
Заранее спасибо ![]() |
Автор: TEMENb 02.05.09, 00:38 |
h4_botan, а это принципиально должны быть устройства 1-3? трехканальное МКУ не катит? Arrrgh, Если появиться свободная минутка ) Добавлено И не совсем ясен критерий, по которому транзакт уходит в очередь 4 или очередь 5. Добавлено Каков период возникновения отказов? Каково время на восстановление? Цитата h4_botan @ Дополнение ещё ок всему таблица параметров: входной поток отказ восстан под/отк резерва устр1-3 устр4-5 закон распределения эксп. гамма равн. эксп. эксп. эксп. параметры l=1 l=0,034; b=2 35±15 l=0,5 l=0,52 l=0,48 не могу расшифровать ) Добавлено суровая Q-схема получилась ) без 100 грам не разберешься ![]() Добавлено такс. Цитата RASP FUNCTION RN5,D3 .75,1/.95,2/1,3 INITIAL X1,1 ;ВОЗЛЕ ПЕРВОГО УСТРОЙСТВА INITIAL X2,4 ;ВОЗЛЕ ЧЕТВЕРТОГО INITIAL X3,0 ;В ГОРЯЧЕМ РЕЗЕРВЕ (НИ ВОЗЛЕ КАКОГО) GENERATE (Exponential(1,0,1000)) transfer .58,SECTYP QUEUE FIR TEST L (F1+F2+F3),3 SELECT MIN 1,1,3,,F ;из за этого у устройства 1 загрузка будет выше чему у 2, а у 2 выше чем у 3. Это не принципиально? SEIZE P1 DEPART FIR ADVANCE (Exponential(2,0,520)) RELEASE P1 TERMINATE SECTYP SELECT MIN 1,4,5,,Q ;ОПЯТЬ ТАКИ, К УСТРОЙСТВУ 4 БОЛЕЕ ПОВЫШЕННОЕ ВНИМАНИЕ, ЧЕМ К УСТРОЙСТУ 5 QUEUE P1 SEIZE P1 DEPART P1 ADVANCE (Exponential(3,0,480)) RELEASE P1 TERMINATE GENERATE ,,,1 POVT ADVANCE (Gamma(4,0,34,2)) ASSIGN 1,(FN$RASP) SPLIT P1,NEX TRANSFER ,POVT NEX TERMINATE GENERATE (60#60#1000) TERMINATE 1 start 1 Вот че наваял. реализованы 5 устройств, и зародыш блока отказов. А теперя моя спать. завтра продолжим ) З.Ы.: время в микросекундах. З.З.Ы: проблема неравномерного распредиления по устройствам решается конструкцией типа Цитата SELECT MIN 1,1,CREG,,Q ;------;находим очередь с минимальной длинной и ложим ее номер в первый параметр ASSIGN 2,(((CREG#RN2)\1000)+1) ;во второй параметр генерируем число в интервало от 1 до CREG MET1 ASSIGN 2,((P2@CREG)+1) ;------;во второй параметр положить значение (остаток от деления второго параметра на CREG плюс единица) (увеличиваем второй параметр на 1, если он становится больше CREG, то присваиваем ему единицу) TEST E Q*1,Q*2,MET1 ;Если длинна очереди, номер которой записан в первом параметре равна длинне очереди, номер которой записан во втором параметре, дальше, иначе на метку QUEUE P2 ;занять очередь к стойке |
Автор: Doggy_Style 02.05.09, 07:28 |
Помогите срочно. Мне завтра сдавать курсовую в GPSS/PC, а я профан в этом. Задание такое: В узел коммутации сообщений, состоящий из входного буфера, процессора, двух исходящих буферов и двух выходных линий, поступают сообщения с двух направлений. Сообщения с одного направления поступают во входной буфер, обрабатываются в процессоре, буферизуются в выходном буфере первой линии и передаются по выходной линии. Сообщения со второго направления обрабатываются аналогично, но передаются по второй выходной линии. Применяемый метод контроля потоков требует одновременного присутствия в системе не более трех сообщений на каждом направлении. Сообщения поступают через интервалы 15±7 мс. Время обработки в процессоре равно 7 мс на сообщение, время передачи по выходной линии равно 15+5 мс. Если сообщение поступает при наличии трех сообщений в направлении, то оно получает отказ. Смоделировать работу узла коммутации в течение 10 с. Определить загрузки устройств и вероятность отказа в обслуживании из-за переполнения буфера направления. Определить изменения в функции распределения времени передачи при снятии ограничений, вносимых методом контроля потоков. Наткнулся в инете на это ( типа решение моей задачи ) SIMULATE 1 GENERATE 15,7 //создать транзакт 3 TEST LE Q$OCH2,3,XXX //проверить емкость очереди 2 5 LOGIC S FLAG1 //открыть клапан а 7 XXX TEST LE Q$OCH3,3,YYY //проверить емкость очереди 3 9 LOGIC S FLAG2 //открыть клапан b 11 YYY GATE LS FLAG1,OTKAZ //если клапан а открыт 13 GATE LS FLAG2,OTKAZ //если клапан b открыт 15 QUEUE OCH1 //встать в очередь 1 17 SEIZE CPU //занять устройство процессор 19 DEPART OCH1 //выйти из очереди 1 21 ADVANCE 7 //задержаться на 7мс. 23 RELEASE CPU //освободить процессор 25 TRANSFER .5,LINE1,LINE2 //перейти к одной из линий 27 LINE1 QUEUE OCH2 //встать в очередь 2 29 SEIZE OUT1 //занять выходную линию 1 31 DEPART OCH2 //выйти из очереди 2 33 ADVANCE 15,5 //задержаться на время 35 RELEASE OUT1 //освободить линию 1 37 LOGIC R FLAG1 //закрыть клапан а 39 LOGIC R FLAG2 //закрыть клапан b 41 GATE LS FLAG1,ZZZ //если клапан а открыт 43 LINE2 QUEUE OCH3 //встать в очередь 3 45 SEIZE OUT2 //занять выходную линию 2 47 DEPART OCH3 //выйти из очереди 3 49 ADVANCE 15,5 //задержаться на время 51 RELEASE OUT2 //освободить линию 1 53 LOGIC R FLAG1 //закрыть клапан а 55 LOGIC R FLAG2 //закрыть клапан b 57 GATE LS FLAG1,ZZZ //если клапан а открыт 59 OTKAZ GATE LS FLAG1,WWW //если клапан а открыт 61 QUEUE OCH1 //встать в очередь 1 63 SEIZE CPU //занять процессор 65 DEPART OCH1 //выйти из очереди 1 67 ADVANCE 7 //задержаться на 7 мс. 69 RELEASE CPU //освободить процессор 71 QUEUE OCH2 //встать в очередь 2 73 SEIZE OUT1 //занять выходную линию 1 75 DEPART OCH2 //выйти из очереди 2 77 ADVANCE 15,5 //задержаться на время 79 RELEASE OUT1 //освободить линию 1 81 LOGIC R FLAG1 //закрыть клапан а 83 LOGIC R FLAG2 //закрыть клапан b 85 GATE LS FLAG1,ZZZ //если клапан а открыт 87 WWW QUEUE OCH1 //встать в очередь 1 89 SEIZE CPU //занять процессор 91 DEPART OCH1 //выйти из очереди 1 93 ADVANCE 7 //задержаться на 7мс. 95 RELEASE CPU //освободить процессор 97 QUEUE OCH3 //встать в очередь 3 99 SEIZE OUT2 //занять выходную линию 2 101 DEPART OCH3 //выйти из очереди 3 103 ADVANCE 15,5 //задержаться на время 105 RELEASE OUT2 //освободить линию 2 107 LOGIC R FLAG1 //закрыть клапан а 109 LOGIC R FLAG2 //закрыть клапан b 111 GATE LS FLAG2,ZZZ //если клапан b открыт 113 ZZZ TERMINATE //уничтожить транзакт 115 GENERATE 60000 //специальный блок для 117 TERMINATE 1 //прогона модели на время START 1 Но в программе не работает - выдает море ошибок. ПЛЗ ХЕЛП. |
Автор: h4_botan 02.05.09, 10:55 |
TEMENb Давай короче я скину тебе на мыло (скинь мне его в приват или тут) там у меня и схема есть, да и таблича задания будет понятней). Правда пока ты пишешь, половина непонятно ![]() А распределение между устройствами равновероятно, т.е. первый трёх канальный узел, очередь одна на всех, три устройства и заявки типа равноверотно на обслуживание между ними идут, во втором узле заявки идут равновероятно между 2 устройствами, у каждого из них своя очередь. На счёт непоняток как уходят в 4 5 (эт ты наверн про отказы) Короче когда возникает отказ заявка проверят какое из устройств доступно,а потом чтобы длина очереди не была больше 2, чтобы пойти в очередь к нормально функционирующему устройству. Отказ возникает по гамма закону, L=0.034 ,b=2 .ВОсстановление идёт по равномерному 35+-15 |
Автор: TEMENb 02.05.09, 11:50 |
Doggy_Style, 20$ и программа моментально оказывается на вашем ПС. +10$ к програмке появляются q-схема, структурная схема и блоксхема в символике GPSS. Тут палка о двух концах, или делайте сами или платите, что б за вас делали. h4_botan, моя аська у меня в подписи. |
Автор: TEMENb 02.05.09, 15:59 |
а я на нем не пишу ![]() |
Автор: Doggy_Style 02.05.09, 17:28 |
TEMENb - ты тупой? я прошу помощи как избавиться от ошибок а не заново переписывать программу. |
Автор: TEMENb 02.05.09, 17:33 |
Doggy_Style, походу это ты тупой. Кроме того что мозг не шурупает самому написать, так ты и в чужом готовом мелкие ошибки исправить не можешь. Тебе тут никто ничего не должен. Хочешь - плати, а не хочешь вали [CENSORED]! Бить неучей рублем! Добавлено Arrrgh, дело в том что весь код Цитата Arrrgh @ L1 TEST E L1,1,OT проверка если не проходит то идет обратно на выбор линии QUEUE LNB ENTER BAG DEPART LNB ADVANCE 1 LEAVE BAG TERMINATE 1 OT TRANSFER ,L2 L2 TEST E L2,2,OTH проверка если не проходит то идет обратно на выбор линии QUEUE LNC ENTER BAG DEPART LNC ADVANCE 1 LEAVE BAG TERMINATE 1 OTH TRANSFER ,L3 L3 TEST E L3,3,OTHE проверка если не проходит то идет обратно на выбор линии QUEUE LND ENTER BAG DEPART LND ADVANCE 1 LEAVE BAG TERMINATE 1 OTHE TRANSFER ,L4 L4 TEST E L4,4,L1 проверка если не проходит то идет обратно на выбор линии QUEUE LNE ENTER BAG DEPART LNE ADVANCE 1 LEAVE BAG какоето непойми шо ) почему его не заменить на Цитата QUEUE LNB ENTER lenta DEPART LNB ADVANCE 1 LEAVE lenta TERMINATE 1 предварительно описав устройство Lenta как МКУ с четырьмя каналами? Если я чего то недопонял - поправь ![]() |
Автор: Doggy_Style 03.05.09, 01:06 |
Слышь мудлон варежку хлопни! я тебя лично не о чем не просил. не хочешь не помогай. А если хочешь пообщаться скажи я дам номер позвонишь выясним отношения. |
Автор: TEMENb 03.05.09, 01:12 |
Doggy_Style, к тебе уже выехала бригада. сейчас тебя зачистят ![]() Ну если у тебя глаза сломались от того, что ты прочитал мое предложение - прийми мои соболезнования. А если ты до сих пор считаешь, что кто то станет впахивать там, где ты [CENSORED] положил - ты еще тупее, чем показался на первый взгляд. |
Автор: NoVa 06.05.09, 04:35 |
Ребята помогите решить задачу, сессия уже почти на шее, очень нужна помощь ! Условие: К 3м рабочим поступают детали для обработки. Интервал поступления деталей 4-6. Если первый занят, то деталь идет ко второму, если второй занят, то деталь идет к третьему. При этом 3й должен обрабатывать все имеющиеся детали. Время обработки: первый: 9-11 мин, второй 11-15 мин, третий 7-9. Добрые умы помогите пожалуйста |
Автор: TEMENb 06.05.09, 04:47 |
стоимость решения+коментарии+пояснения - 15$ Стоимость помощи - бэсплатно, но нужен исходный код, который вы писали сами. |
Автор: inna 07.05.09, 07:18 |
Спасибо за ответ! но могли ли вы сказать как применить распределение именно к памяти? и как сделать увеличение на 20 % при повторном обращении? "Характер распределения емкости памяти вероятностный для 1 потока: зависит от длины запроса (1 единица длины – 1 место в памяти). Распределение длины – равномерное от 1 до 10. При каждом повторном входе в память (фаза S2,1) выделяется на 20% больше места в памяти. При нехватке памяти – отказ в обслуживании." |
Автор: Vanessa 07.05.09, 10:42 |
Здравствуйте, помогите пожалуйста решить задачки: Магистраль передачи данных состоит из двух каналов (основного и резервного) и общего накопителя. При нормальной работе сообщения передаются по основному каналу за 7 ± 3 с. В основном канале происходят сбои через интервалы времени 200 ± 35 с. Если сбой происходит во время передачи, то за 2 с запускается запасной канал, который передает прерванное сообщение с самого начала. Восстановление основного канала занимает 23 ± 7 с. После восстановления резервный канал выключается и основной канал продолжает работу с очередного сообщения. Сообщения поступают через 9 ± 4 с. и остаются в накопителе до окончания передачи. В случае сбоя передаваемое сообщение передается повторно по запасному каналу. Смоделировать работу магистрали передачи данных в течение 1 ч. Определить загрузку запасного канала, частоту отказов канала и число прерванных сообщений. Определить функцию распределения времени передачи сообщений по магистрали. К ЭВМ подключено четыре терминала, с которых осуществляется решение задач. По команде с терминала выполняют операции редактирования, трансляции, планирования и решения. Причем, если хоть один терминал выполняет планирование, остальные вынуждены простаивать из-за нехватки оперативной памяти. Если два терминала выдают требование на решение, то оставшиеся два простаивают, и если работают три терминала, выдающих задания на трансляцию, то оставшийся терминал блокируется. Интенсивности поступления задач различных типов равны. Задачи одного типа от одного терминала поступают через экспоненциально распределенные интервалы времени со средним значением 160 с. Выполнение любой операции длится 10 с. Смоделировать работу ЭВМ в течение 4 ч. Определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. |
Автор: СоучастнеГ 07.05.09, 13:30 |
Привет! У меня возник вопрос. Построить программу модели процесса прохождения 70 заявок, поступающих с интервалом времени 25±4 единицы. На предварительную обработку заявки затрачивается 4±1 единиц времени. Процесс обслуживания занимает 4±2 единиц времени. Все процессы подчинены экспоненциальному закону. Так то задача проста, но как понять момент - "Все процессы подчинены экспоненциальному закону"? и главное как записать это? |
Автор: stas-perm 07.05.09, 15:04 |
Всем привет! Возможно кто подскажет, не могу доделать курсач из-за одной мелочи)) Короче, есть готовые полностью детали, а есть недоделанные. Гтовые идут на дальнейшее обслуживание, а недоделанные с указанием в первом параметре их готовности в процентном соотношении (например, готова на 50 % - в перовм параметре записывается 50) отправляются в дополнительную очередь. Ну и вот, приходит новая неготовая деталька на метку, например, у нее в P1 40. Начинается проверка предыдущих поступивших деталей, хранящихся в дополнительной очереди. Если есть в очереди деталька с P1 = 100 - 40, они объединяются (ASSEMBLE 2), и как полная деталь идут на дальнейшую обработку. Если дополнение из дополнительной очереди нельзя сделать, эта деталька кидается в эту же дополнительную очередь. Может, кто поможет)) Хотя бы подсказкой метода))) |
Автор: TEMENb 07.05.09, 15:45 |
СоучастнеГ, задание ваше - откровенная туфта. Все величины у вас заданы равномерным законом. Цитата средним и отклонением характеризуется только равномерный закон!25±4 Если бы у вас условие звучало вот так: Цитата то тогда разговор другой. например поступление с интервалом времени в 25 с экспоненциальным распредилением будет выглядеть вот так:Построить программу модели процесса прохождения 70 заявок, поступающих с интервалом времени 25 единицы. На предварительную обработку заявки затрачивается 4 единиц времени. Процесс обслуживания занимает 4 единиц времени. Все процессы подчинены экспоненциальному закону. Цитата Более подробно - читайте хелп. он конечно на английском, но как говориться без труда..GENERATE (Exponential(1,0,25)) ____________________ inna, я не могу дать вам 100% правильный ответ, т.к. я не вижу условия задачи. Для начала было бы весьма интересно узнать, чем у вас выражена память? Если это очередь, то решение будет одно, если МКУ - то совсем другое. К мтоу же я так понял, память у вас дискретна. поэтому 20% (0.20) по отношению к памяти представляется сложно.. Округлять надо. Тем более если от 1 до 10.. например имея память 1, прибавив 20% и округливо получаем все ту же единицу.. З.Ы.: Для МКУ Цитата enter qqq,3 ;занять в мку qqq 3 ячейки памяти ... leave qqq,3 ;освободитьв мку qqq 3 ячейки памяти можно ставить числа, выражения и СЧА. ____________________ Цитата stas-perm @ Всем привет! Возможно кто подскажет, не могу доделать курсач из-за одной мелочи)) Короче, есть готовые полностью детали, а есть недоделанные. Гтовые идут на дальнейшее обслуживание, а недоделанные с указанием в первом параметре их готовности в процентном соотношении (например, готова на 50 % - в перовм параметре записывается 50) отправляются в дополнительную очередь. Ну и вот, приходит новая неготовая деталька на метку, например, у нее в P1 40. Начинается проверка предыдущих поступивших деталей, хранящихся в дополнительной очереди. Если есть в очереди деталька с P1 = 100 - 40, они объединяются (ASSEMBLE 2), и как полная деталь идут на дальнейшую обработку. Если дополнение из дополнительной очереди нельзя сделать, эта деталька кидается в эту же дополнительную очередь. полный текст в студию. ____________________ Цитата Vanessa @ Магистраль передачи данных состоит из двух каналов (основного и резервного) и общего накопителя. При нормальной работе сообщения передаются по основному каналу за 7 ± 3 с. В основном канале происходят сбои через интервалы времени 200 ± 35 с. Если сбой происходит во время передачи, то за 2 с запускается запасной канал, который передает прерванное сообщение с самого начала. Восстановление основного канала занимает 23 ± 7 с. После восстановления резервный канал выключается и основной канал продолжает работу с очередного сообщения. Сообщения поступают через 9 ± 4 с. и остаются в накопителе до окончания передачи. В случае сбоя передаваемое сообщение передается повторно по запасному каналу. Смоделировать работу магистрали передачи данных в течение 1 ч. Определить загрузку запасного канала, частоту отказов канала и число прерванных сообщений. Определить функцию распределения времени передачи сообщений по магистрали. К ЭВМ подключено четыре терминала, с которых осуществляется решение задач. По команде с терминала выполняют операции редактирования, трансляции, планирования и решения. Причем, если хоть один терминал выполняет планирование, остальные вынуждены простаивать из-за нехватки оперативной памяти. Если два терминала выдают требование на решение, то оставшиеся два простаивают, и если работают три терминала, выдающих задания на трансляцию, то оставшийся терминал блокируется. Интенсивности поступления задач различных типов равны. Задачи одного типа от одного терминала поступают через экспоненциально распределенные интервалы времени со средним значением 160 с. Выполнение любой операции длится 10 с. Смоделировать работу ЭВМ в течение 4 ч. Определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. 30$ и 20$ |
Автор: СоучастнеГ 07.05.09, 17:59 |
Спасибо! ![]() |
Автор: Arrrgh 08.05.09, 08:49 |
Доброго времени суток вот вроде подправил свою задачу но не доконца уверен что все правильно проверьте пожалуйста SIMULATE CHECK STORAGE 2 A STORAGE 4 B STORAGE 4 C STORAGE 4 D STORAGE 4 OBR STORAGE 2 BAG STORAGE 8 INTEGER &I * МОДУЛЬ ИСПОЛНЕНИЯ GENERATE 1,1 поступление багажа RETEST QUEUE CHECK организация очереди контроля ENTER OBR DEPART CHECK ADVANCE 1,1 LEAVE OBR TRANSFER .050,,TESTER 5% багажа идет на дополнительную проверку * TESTER TESTER QUEUE MTEST организация очереди на дополнителую проверку SEIZE TESTER DEPART MTEST ADVANCE 2,1 RELEASE TESTER TRANSFER ,RETEST возврат на общий контроль * Разделение на линии FL TEST E A,1,OT проверка если не проходит то идет обратно на выбор линии QUEUE LNB ENTER BAG DEPART LNB ADVANCE 1 LEAVE BAG TERMINATE 1 OT TRANSFER ,SL SL TEST E B,2,OTH проверка если не проходит то идет обратно на выбор линии QUEUE LNC ENTER BAG DEPART LNC ADVANCE 1 LEAVE BAG TERMINATE 1 OTH TRANSFER ,TL TL TEST E C,3,OTHE проверка если не проходит то идет обратно на выбор линии QUEUE LND ENTER BAG DEPART LND ADVANCE 1 LEAVE BAG TERMINATE 1 OTHE TRANSFER ,FOL FOL TEST E D,4,FL проверка если не проходит то идет обратно на выбор линии QUEUE LNE ENTER BAG DEPART LNE ADVANCE 1 LEAVE BAG TERMINATE 1 * ПРОВЕРКА DO &I=1,35,1 START 60 CLEAR ENDDO END и еще вопрос когда запускаю процесс моделирования возникает ошибка: ERROR NUMBER 411 - Out of COMMON: Add/change REALLOCATE Stmt? See release notes как от нее избавиться? заранее спасибо |
Автор: inna 08.05.09, 09:59 |
Здравствуйте! привожу задание и текст программы: "Требуется разработать и исследовать модели системы. Тип модели - Q-схема. Модели транзактные. Система состоит из устройств S1, S3, S4, памяти S2 (фаза выделения памяти – S2,1, фаза освобождения памяти – S2,2, S2,3). Внешняя среда представлена источником запросов (узел S0), приемником обслуженных запросов (узел S7). Число типов потоков запросов Q – 2 (40% заявок первого типа). Потоки различаются параметрами законов поступления и обслуживания. Закон поступления запросов – треугольный и равномерный. Законы обслуживания 1 и 2 типов соответственно – гамма и произвольный. Характер распределения емкости памяти вероятностный для 1 потока: зависит от длины запроса (1 единица длины – 1 место в памяти). Распределение длины – равномерное от 1 до 10. При каждом повторном входе в память (фаза S2,1) выделяется на 20% больше места в памяти. При нехватке памяти – отказ в обслуживании. Характер распределения емкости памяти для второго потока – 1 запрос – 1 единица." текст программы (для одгоно потока заявок): b_1 STORAGE 2 b_2 STORAGE 10 ; multichanel node - facility N 2 b_3 STORAGE 2 INITIAL X$Otkaz,0 INITIAL X$OB,1 KOL VARIABLE 10#rn1 \\ генерация равномерного распределения от 1 до 10 (так ли это ?) KOL1 VARIABLE 1.2#X$OB \\ увеличение объема выделяемой памяти на 20 % (так ли это ?) ***************************************** GENERATE (TRIANGULAR(1,140,405,275)) queue U_system queue p1_U_system queue w_b_1 queue p1_w_b_1 queue u_b_1 queue p1_u_b_1 ENTER b_1 depart w_b_1 depart p1_w_b_1 ADVANCE 20,10 LEAVE b_1 depart u_b_1 depart p1_u_b_1 savevalue OB, V$KOL \\ присваиваем сохраняемой величине OB(объем выделяемой памяти) значение пер-й KOL Metka1 GATE SNF b_2,Lab_term1 ENTER b_2, X$OB queue w_b_3 queue p1_w_b_3 queue u_b_3 queue p1_u_b_3 ENTER b_3 depart w_b_3 depart p1_w_b_3 ADVANCE 20,10 LEAVE b_3 depart u_b_3 depart p1_u_b_3 TRANSFER .4,,Metka2 queue w_b_4 queue p1_w_b_4 queue u_b_4 queue p1_u_b_4 SEIZE b_4 depart w_b_4 depart p1_w_b_4 ADVANCE 41.7,20.8 RELEASE b_4 depart u_b_4 depart p1_u_b_4 LEAVE b_2, X$OB savevalue OB, V$KOL1 \\ увеличиваем объем памяти на 20% TRANSFER ,Metka1 depart U_system depart p1_U_system Metka2 LEAVE b_2,X$OB TERMINATE 1 Lab_term1 savevalue Otkaz+,1 TERMINATE 1 Пожалуйста помогите правильно сделать это выделение памяти!!! ![]() ![]() Добавлено И еще. подскажите пожалуйста, как сделать гамма распределение(в advance) |
Автор: Vanessa 08.05.09, 14:58 |
TEMENb Хорошо! Сделай, пожалуйста, пока только вторую за $20, попозже попрошу первую. Напиши куда прислать деньги! Только мне нужно в понедельник уже сдавать, сдалай пожалуйста за выходные! |
Автор: TEMENb 08.05.09, 17:14 |
Vanessa,уже готово. напишите мне в аську. 400852874. |
Автор: Eugen 08.05.09, 18:27 |
нужно избегать простых названий A,B,C,D..AC,AB,..CH,..FL и т.п. это может быть зарезервированное или недопустимое слово в gpss Arrrgh вот Вы спрашаваете про свою задачу 2ю недели, и даже не привели полного текста условий. Какая может быть помощь??? |
Автор: Arrrgh 11.05.09, 14:50 |
Eugen sorry условие по запарке забыл написать. Там не задача а описательный процесс системы тарнспортировки багажа в аэропорту. необходимо было описать следующее: В аэропорту на ленту транспортера поступает багаж где он проходит проверку, 5% не проходят проверку и идут на дополнительную проверку после чего возвращаются обратно на ленту, после проверки багаж разделяется на четыре разных погрузочных ленты. |
Автор: Arrrgh 12.05.09, 07:28 |
TEMENb Заинтересовала ваша идея: Цитата QUEUE LNB ENTER lenta DEPART LNB ADVANCE 1 LEAVE lenta TERMINATE 1 предварительно описав устройство Lenta как МКУ с четырьмя каналами. Как это реализуется(я про описание Lenta как МКУ с четырьмя каналами) ? |
Автор: TEMENb 12.05.09, 10:40 |
Arrrgh, все четыре ленты будут выглядеть как одно устройство. собственно многоканальное устройство. Цитата lenta storage 4 generate 1 QUEUE LNB ENTER lenta DEPART LNB ADVANCE 4 LEAVE lenta TERMINATE 1 вот как то так в один момент времени в устройстве lenta может находится одновременно 4 транзакта. |
Автор: Arrrgh 12.05.09, 15:51 |
TEMENb, спасибо приму к сведению |
Автор: Eugen 12.05.09, 15:59 |
Цитата TEMENb @ Цитата lenta storage 4 generate 1 QUEUE LNB ENTER lenta DEPART LNB ADVANCE 4 LEAVE lenta TERMINATE 1 вот как то так в один момент времени в устройстве lenta может находится одновременно 4 транзакта. Нормально. Этот кусок задерживает багаж, до иомента освобождения одной из лент. Чтобы собрать статистику для отдельных лент, напиши: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> QUEUE QueueContanerLenta ENTER ContanerLenta DEPART QueueContanerLenta TRANSFER BOTH,,met2 SEISE lenta1 ADVANCE xxx RELEASE lenta1 TRANSFER ,metEnd met2 TRANSFER BOTH,,met3 SEIZE lenta2 // и т.п. metEnd LEAVE ContanerLenta все по 10$ для ускорения |
Автор: TEMENb 12.05.09, 16:11 |
Цитата Eugen @ QUEUE QueueContanerLenta ENTER ContanerLenta DEPART QueueContanerLenta TRANSFER BOTH,,met2 SEISE lenta1 ADVANCE xxx RELEASE lenta1 TRANSFER ,metEnd met2 TRANSFER BOTH,,met3 SEIZE lenta2 // и т.п. metEnd LEAVE ContanerLenta у такого кода есть один недостаток. основная нагрузка пойдет на первую ленту, чуть меньшая на вторую.. и на последнюю - минимальная нагрузка. что бы распределить: Цитата lenta storage 4 generate 1 QUEUE LNB TEST L (F1+F2+F3+F4),4 ASSIGN LEN,RN1 POVT ASSIGN LEN,((P$LEN@4)+1) TEST E F*LEN,0,POVT ENTER lenta SEIZE LEN DEPART LNB ADVANCE 4 RELEASE LEN LEAVE lenta TERMINATE 1 Вот как то так =) |
Автор: Eugen 12.05.09, 16:21 |
мне ни холодно ни жарко от этих недостатков, это ж лучше чем ничего ![]() заменяестя на <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SELECT MIN LEN,1,4,,F Добавлено ЗерГуд! |
Автор: NoVa 12.05.09, 17:59 |
Ребята помогите решить задачу, сессия уже почти на шее, очень нужна помощь ! Условие: К 3м рабочим поступают детали для обработки. Интервал поступления деталей 4-6 мин. Если первый занят, то деталь идет ко второму, если второй занят, то деталь идет к третьему. При этом 3й должен обрабатывать все имеющиеся детали. Время обработки: первый: 9-11 мин, второй 11-15 мин, третий 7-9. Вот мой примерный вариант решения. Можете помочь над поиском ошибок код программы: GENERATE 5,1 QUEUE detali QUEUE srednee_vremya_obrabotki TRANSFER Both,rabochiy1,perexod rabochiy1 SEIZE rab1 DEPART detali ADVANCE 10,1 DEPART srednee_vremya_obrabotki RELEASE rab1 TRANSFER ,Next perexod TRANSFER Both,rabochiy2,rabochiy3 rabochiy2 SEIZE rab2 DEPART detali ADVANCE 13,2 DEPART srednee_vremya_obrabotki RELEASE rab2 TRANSFER ,Next rabochiy3 SEIZE rab3 DEPART detali ADVANCE 8,1 DEPART srednee_vremya_obrabotki RELEASE rab3 TRANSFER ,Next Next SAVEVALUE Ave_Queue,QT$detali TERMINATE 1 |
Автор: TEMENb 12.05.09, 18:14 |
не, не заменяется. в этом вся соль. селект выберет первый по списку. А моя конструкция выберет случайный свободный |
Автор: Arrrgh 13.05.09, 07:39 |
Eugen,TEMENb спасибо за помощь. А если багаж при разделении на ленты идет на разные рейсы по каждой ленте? |
Автор: TEMENb 13.05.09, 07:53 |
Arrrgh, можно поставить Цитата REIS FUNCTION P$LEN,E4 1,MET1/2,MET2/3,MET3/4,MET4 ........... release P$len leave lenta TRANSFER ,(FN$REIS) Скрытый текст Ну это не то что б высший пилотаж, но несколько необычно Метки указывают каждая на соответствующий рейс. Причем не забудьте поставить эти метки в тексте, иначе вылетит ошибка. вовторых, можно использовать тесты Цитата ........... release P$len leave lenta TEST NE P$LEN,1,MET1 TEST NE P$LEN,2,MET2 TEST NE P$LEN,3,MET3 TEST NE P$LEN,4,MET4 ............ Скрытый текст такая реализацция имеет уже более привычную форму, хоть места занимает больше, а работает точно так же ну и третий, на мой взгляд самый приемлемый вариант - это выразить рейсы такими же числами Цитата ........... release P$len leave lenta ASSIGN REIS,P$LEN SEIZE P$REIS ............ |
Автор: Eugen 13.05.09, 15:40 |
Точно выберет первое свободное устройство ![]() |
Автор: Blond 14.05.09, 05:09 |
Помогите несчастной блондинке ![]() tbl1 table M1,500,500,10 generate 10,3,,500 queue qpc1 seize pc1 depart qpc1 advance 2 advance 18,2 release pc1 transfer .5,kp1,out kp1 seize kp advance 3 release kp tabulate tbl1 savevalue 1,c1 transfer ,kom2 terminate 1 generate 600,300 funavail kp,re,kp1 advance 20,5 favail kp terminate kom2 queue qpc2 seize pc2 depart qpc2 advance 2 advance 18,2 release pc2 out terminate 1 |
Автор: tigreg 14.05.09, 09:03 |
Привет! Адекватно ли мое решение поставленной задаче? ![]() Задача: На 2-х канальный телефон скорой помощи в среднем 1 раз в 100 секунд с равной вероятностью звонят старики, взрослые и дети. Время разговора с ними соответственно 180, 150 и 200 секунд. Определить распределение времени ожидания, при условии, что если в очереди находятся заявки с разным временем обслуживания, то первой обслуживается заявка с меньшим временем. Решение: telefon storage 2 wosrast function rn1,d3 0.333,1/0.666,2/1,3 wremya function p$type,l3 1,180/2,150/3,210 generate (exponential(1,50,50)) assign type,fn$wosrast gate snf telefon,wait seg1 enter telefon advance fn$wremya leave telefon unlink que,seg1,1 terminate 1 wait link que,type Спасибо! |
Автор: TEMENb 14.05.09, 09:11 |
tigreg, впринципе похоже на правильное, и очень даже симпатично использованы фукнции (респект))), только лень разбираться зачем вы использовали пользовательские списки. почему вам не сделать еще одну функцию, которая будет попросту задавать приоритеть транзакта? ну а дальше очередь и мку. и никакхи СП ненадо. |
Автор: tigreg 14.05.09, 11:24 |
![]() Еще одна задача (условия почти те же): На 2-х канальный телефон скорой помощи в среднем 1 раз в 100 секунд с равной вероятностью звонят старики, взрослые и дети. Время разговора с ними соответственно 180, 150 и 200 секунд. Определить распределение времени ожидания, при условии, что если в очереди появляется заявка с меньшим временем обработки, чем обслуживаемая, выполнить прерывание. Мое решение: telefon storage 2 generate (exponential(1,50,150)) assign 1,210 transfer ,seg1 generate (exponential(1,50,150)) priority 1 assign 1,180 transfer ,seg1 generate (exponential(1,50,150)) priority 2 assign 1,150 transfer ,seg1 seg1 queue line enter telefon depart line preempt telefon,pr,seg1,1 advance p1 return telefon leave telefon terminate 1 |
Автор: Eugen 14.05.09, 13:22 |
Работает только 1 раз. После выполнения funavail kp,re,kp1 прерванный транзакт направляется к метке kp1. При этом он продолжает занимать устройство kp. В строке kp1 seize kp транзакт снова встает в очередь на занятие устройства kp(не освободив его). - deadlock напиши так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> transfer .5,kp1,out KP2 RELEASE kp kp1 seize kp ... generate 600,300 funavail kp,re,KP2 |
Автор: h4_jester 14.05.09, 14:51 |
HELP! Формирование размера пакета ASSIGN 1,(Gamma(1,0,769.23,2)) Необходимо сделать разбиение по след. принципу: Пакеты имеют переменный размер в знаках и при передаче разбиваются на фрагменты: пакеты размером до 1000 знаков – на фрагменты по 200; от 1000 до 1800 – по 300; сверх 1800 – по 500. Последний фрагмент разбиения содержит остаточное количество знаков. |
Автор: Figaro-serg 14.05.09, 21:31 |
Подскажите пожалуйста (немогу пересчитать исходные данные) Задача: На станцию технического обслуживания автомобилей (СТО) поступают в смену (8 часов) 50±10 машин. На станции работают 4 бригады. Каждая бригада обслуживает за смену 10±3 автомобиля. На стоянке перед СТО могут ожидать обслуживания 5 машин. Смоделировать работу СТО по обслуживанию 100 машин. Определить коэф. загрузки бригад и вероятность отказа в обслуживании. Я перевел исходные данные в необходимую для написания программы форму, и получил, что на СТО машины поступают через каждые 10±2 мин, а время обслуживания одной машины равно ПРИМЕРНО 52±16 мин. (корректно ли здесь округлять?) Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Чему, к примеру, будет равно среднее время обработки? Считал двумя разными способами и получил 48 мин и 52,6 мин, что правильно непойму, а это очень важно т.к. нужно еще составить мат. модель (привести формулы), и все рассчитать в ручную используя эти формулы. вот код который у меня получился: simulate stoyanka storage 5 10 generate 10,2,,100 20 gate SF stoyanka,nast 30 terminate 1 40 nast enter stoyanka 50 transfer ALL,b1,b4,5 100 b1 seize br1 110 leave stoyanka 120 advance 52,16 130 release br1 140 terminate 1 200 b2 seize br2 210 leave stoyanka 220 advance 52,16 230 release br2 240 terminate 1 300 b3 seize br3 310 leave stoyanka 320 advance 52,16 330 release br3 340 terminate 1 400 b4 seize br4 410 leave stoyanka 420 advance 52,16 430 release br4 440 terminate 1 start 100 Заранее благодарю! |
Автор: TEMENb 15.05.09, 04:51 |
Цитата Figaro-serg @ Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Специально для этих целей существует Единица модельного времени. 8 часов ничто иное как 60 минут. так что сложно назвать это пересчетом. Это те же самые интервалы времени. Вовторых, перевести часы в минуты будет правильней, чем моделировать в часах, НО gpss/w такая штука, что и в часах и в минутах выдаст вам одинаковые результаты (великолепно работает с дробным временем) вот округлять или не округлять - это уже ваше личное дело. я бы не округлял. На самом деле, если вас смущает округление - вовсе не обязательно переводить часы именно в минуты.. вы можете перевести часы в санти часы ) почему нет? одна единица моельного времени равна одной сотой часа! и проблема с округлением исчезнет сама собой. главное потом все правильно разрулить преподу ![]() Зато числа сразу получаться красивые. и что б получить итог в часах - надо будет всего лишь открнуть два младших разряда. учи мат часть. В отчете в таблице FACILITY колонка AVT.TIME. |
Автор: RazorM 17.05.09, 07:07 |
Здравствуйте. У меня есть вопрос. Если в моей модели есть 3 очереди, с номерами 1,2 и 3. Как выбрать минимальную из 2х - 1й и 3й? В Select нужно вводить диапазон, тогда получается, что захватывается и 2я очередь, а этого не нужно - SELECT MIN 3,1,3,,Q? |
Автор: TEMENb 17.05.09, 07:24 |
RazorM, ответов на ваш вопрос как минимум два 1. можно сравнить Цитата TEST L Q1,Q3,MET1 ASSIGN 3,1 TRAMSFER ,MET2 ASSIGN 3,3 MET1 ................ можно чуть короче но мудреней Цитата ASSIGN 3,((Q1<Q3)+(Q1>=Q3)#3) впринципе такими сравнениями можно сравнить любое колличество очередей, только размер кода этих сравнений растет в геометрической прогрессии от колличества очередей )) 2. можно обозвать одну очередь двумя именами Цитата queue 1 queue 11 seize 1 depart 1 depart 11 advance 1 release 1 ... queue 2 seize 2 depart 2 advance 1 release 2 ... queue 3 queue 12 seize 3 depart 3 depart 12 advance 1 release 3 ... SELECT MIN 3,11,12,,Q ну а далее действовать либо от этих значений, либо преобразовать их Цитата ASSIGN 3,((p3=11)#1+(p3=12)#3) |
Автор: tigreg 17.05.09, 10:11 |
Привет! Пытаюсь создать матрицу состоящую из одной строки и присвоить ей заданные значения: bit0 matrix ,1,2 initial MX1(1,1),1 Но GPSS выдает ошибку: Reference to a non-existent Matrix entity. Что я делаю не правильно? Спасибо! |
Автор: Soldat_13 17.05.09, 10:28 |
Здравствуйте, помогите пожалуйста решить задачку: На обработку в вычислительную систему поступают задания с интенсивностью λ=4 (заданий в секунду). Задания обрабатываются одним из 5-ти компьютеров. Время обработки имеет интенсивность μ=1 (заданий в секунду). Все потоки, протекающие в системе, простейшие пуассоновские. При имитационном моделировании задайте количество обслуженных заявок равным 2000. Заранее благодарен. |
Автор: TEMENb 17.05.09, 10:38 |
обратите внимание, определили вы мартицу с символьным именем bit0 , а обращаетесь к матрице с числовым именем 1. нужно обращаться либо по символьному имени, либо задать соответствие между числовым и символьным именем. |
Автор: tigreg 17.05.09, 10:51 |
![]() |
Автор: Angellina 17.05.09, 17:38 |
Помогите пожалуйста!! В курсаче есть следующий момент Объект моделирования – экспертная система, пополняемая записями экспертов. В начальный момент времени вероятность выдачи правильного ответа по запросу каждого типа равна нулю. По проектным прогнозам, в связи с работой экспертов по пополнению системы, со временем эксплуатации системы вероятность выдачи правильного результата возрастает. С остаточной вероятностью для каждого типа запроса выдается неверный результат. Выведены функции зависимости для вычисления вероятности выдачи правильного ответа. Вопрос следующий: можно ли при распределении по типу заявки (ответа (верный, неверный)) в операторе FUNCTION вероятность задавать не числовым значением, а через имя переменной? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> VER1 FVARIABLE 0 ;или INITIAL X$VER1,0 MARK tipA FUNCTION RN1 D2 FV$VER1,T_A1/1,T_A2 ;или X$VER1,T_A1/1,T_A2 GENERATE (Exponential(1,0,14.286)) SAVEVALUE VER1,(-3#10^(-24)#M1^6+3#10^(-19)#M1^5-2#10^(-14)#M1^4+4#10^(-10)#M1^3-5#10^(-6)#M1^2+0.0317#M1+11.3) TRANSFER ,FN$tipA ... T_A1 ASSIGN 10,11 TRANSFER ,TA_SERV T_A2 ASSIGN 10,12 TRANSFER ,TA_SERV ... В обоих случаях у меня выдает ошибку <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;Для FVARIABLE: Line 17, Col 1. Expecting a numeric value. FV$VER1,T_A1/1,T_A2 ;Для INITIAL: Line 17, Col 1. Invalid list sequence number. X$VER1,T_A1/1,T_A2 Если реализация через FUNCTION невозможна, то каким образом можно реализовать этот момент??? |
Автор: RazorM 17.05.09, 19:09 |
TEMENb, спасибо. Про первый вариант че-то не подумал). Есть еще одна загвоздка: нужно определить количество транзактов в этой минимальной очереди, и если их число больше 3х, идет переход к выходу из модели. Делаю что-то типа такого TEST G Q$P3 3 EXIT. В отчете получается так, что в блок, следующий после этого TEST не попадает ВООБЩЕ ни один транзакт (0). Если же пишу TEST G QP3 3 EXIT или TEST G Q11 3 EXIT , то симуляция зацикливается. |
Автор: TEMENb 17.05.09, 19:26 |
если ты хочешь обратиться к очереди, номер которой записан в третьем параметре транзакта, то косвенная адресация тебе в помощь <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST G Q*3,3,term называть метку словом exit настоятельно нерекомендую.. есть у меня суеверия на сей щет ![]() Добавлено Angellina, ну почему прям таки невозможна? просто вы недостаточно знаете про функции. только и всего ) Цитата Оператор определения FUNCTION Описание Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле А оператора FUNCTION должно содержать аргумент независимую переменную функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0<=RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0<=RNj<999. Запись в поле В определяет тип и число точек функции (число пар значений X[i] и Y[i]). Например, в выражении Cn определяет тип, а n - число точек функции. Ниже перечислены функции каждого типа: непрерывная числовая - С; дискретная числовая - D; табличная числовая - L; дискретная атрибутивная - E; табличная атрибутивная - М. Добавлено Если кто знает, как задавать табличную числовую или табличную атрибутивную - просвятите неуча =) |
Автор: Figaro-serg 17.05.09, 21:40 |
Цитата TEMENb @ Цитата Figaro-serg @ Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Специально для этих целей существует Единица модельного времени. 8 часов ничто иное как 60 минут. так что сложно назвать это пересчетом. Это те же самые интервалы времени. Вовторых, перевести часы в минуты будет правильней, чем моделировать в часах, НО gpss/w такая штука, что и в часах и в минутах выдаст вам одинаковые результаты (великолепно работает с дробным временем) вот округлять или не округлять - это уже ваше личное дело. я бы не округлял. На самом деле, если вас смущает округление - вовсе не обязательно переводить часы именно в минуты.. вы можете перевести часы в санти часы ) почему нет? одна единица моельного времени равна одной сотой часа! и проблема с округлением исчезнет сама собой. главное потом все правильно разрулить преподу ![]() Зато числа сразу получаться красивые. и что б получить итог в часах - надо будет всего лишь открнуть два младших разряда. учи мат часть. В отчете в таблице FACILITY колонка AVT.TIME. TEMENb, спасибо за ответ! Правда все это я и так вроде бы знал... ![]() Извиняюсь, немного ошибся: не "кол-во машин/минуту", а "кол-во минут/машину". Поясню, у меня не стоит задача перевести из часов в минуты, сантичасы и т.д. А задача в том чтобы выразить за сколько будет обслужена одна машина! Как выяснилось я не знаю как работать с интервалами ![]() Напомню задачу: "На станцию технического обслуживания автомобилей (СТО) поступают в смену (8 часов) 50±10 машин. На станции работают 4 бригады. Каждая бригада обслуживает за смену 10±3 автомобиля. На стоянке перед СТО могут ожидать обслуживания 5 машин." Еще раз, поводу среднего значения... Даже не знаю как правильнее сформулировать вопрос, что бы услышать все же в ответ то, что хочу выяснить. У меня при рассчете двумя разными способами получается разное значение среднего времени. Например: если учесть что, рабочая смена длится 480 минут, а за смену возможно отремонтировать 10±3 автомобиля, то: - по первому моему способу получается, среднее время обслуживавния автомобиля равно 480 минут/10 авто = 48 минут/авто. Т.е. одну машину ремонтируем за 48 минут. - по второму способу получется, что раз за день мы ремонтируем от 7 до 13 авто, значит на ремонт уходит от 480/7 = 68,6 минут/авто до 480/13 = 36,9 минут/авто. Т.е. среднее время будет равно (68,6 + 36,9)/2 = 52,75 минут/авто. Т.е. одну машину ремонтируем за 52,75 минут. Это нужно вычислить до проведения машинного моделирования! Так что просто посмотреть AМE.TIME. не прокатит ![]() Какой из способов правильный? Помогите пожалуста, а то я туплю не подецки, просто уже весь курсовик практически готов, осталось только в программе правильные задержки вбить, рассчитать с помощью формул все и сравнить результаты. Помогите посчитать правильно среднее время, плиз, Т.е. что же мне всетаки писать в advance, какие два числа (или функцию)? Пусть даже с грубым округлением (до минут). P.S: Встретил решение подобной задачи. Цех по ремонту промышленных станков имеет 5 мастеров. В течение рабочего дня в мастерскую поступает в среднем 20±10 неисправных станков. Каждый из мастеров в течение рабочего дня успевает отремонтировать 4±3 станков. Бла бла бла... GENPR FUNCTION RN1,D7 .143,480/.286,240/.429,160/.572,120/.715,96/.858,80/1,69 GENIN FUNCTION RN1,D11 .091,48/.182,40/.273,34/.364,30/.455,27/.546,24/ .637,22/.728,20/.819,18/.91,17/1,16 ...... GENERATE FN$GENIN ...... ADVANCE FN$GENPR ...... Что после запятой идут минуты я понял, но что указано до запятой у каждой описываемой точки, я так и не воткнул... Может можно как-то и у меня аналогичное применить? Вобщем огромная просьба ответить, что же мне писать в advance, конкретные числа для моего случая Добавлено Добавлю, дабы, съакцентировать внимание на сути проблеммы. В подавляющем большинстве задач, в формулировке указано, к примеру: N сообщений обрабатывается за X±h ед. времени, а у меня Y±H сообщений обрабатывается за T ед. времени. Вот я и хочу привести формулировку задачи к "номальному виду". |
Автор: TEMENb 18.05.09, 05:55 |
Цитата Figaro-serg @ Что после запятой идут минуты я понял, но что указано до запятой у каждой описываемой точки, я так и не воткнул... Может можно как-то и у меня аналогичное применить? Цитата TEMENb @ Оператор определения FUNCTION Описание Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле А оператора FUNCTION должно содержать аргумент независимую переменную функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0<=RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0<=RNj<999. Запись в поле В определяет тип и число точек функции (число пар значений X[i] и Y[i]). Например, в выражении Cn определяет тип, а n - число точек функции. невнимательно читаете форум!! ![]() Эта цитата из предыдущего сообщения. T=1/L т.е. если частота - две машины в час, то интервал - 1/2=0.5 машин в час. т.е. одна машина в полчаса. Цитата Figaro-serg @ Добавлю, дабы, съакцентировать внимание на сути проблеммы. В подавляющем большинстве задач, в формулировке указано, к примеру: N сообщений обрабатывается за X±h ед. времени, а у меня Y±H сообщений обрабатывается за T ед. времени. Вот я и хочу привести формулировку задачи к "номальному виду". тебе даны средние значения. я так понял заданы частотой. и дан (дан ведь?) закон распредиления. пусть твое среднее значение равняется L, тогда експоненциальное распредиление FN$EXPON/L или Exponential(1,0,(1/L)) нормальное FN$GAMA/L или Gamma(1,0,(1/L),1) и так далее. прошу заметить, что в случае использование сча FNj функцию необходимо определить. |
Автор: Eugen 18.05.09, 12:33 |
это баг gpss - делайте так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST G Q*3 3 EXIT |
Автор: TEMENb 18.05.09, 16:47 |
Баг? Мне почемуто кажется, что так задумано ) $ предпологиет, что далее будет написано символьное имя. * - что имя параметра с числовым/символьным именем СЧА Вот было бы еще интересно, если бы можно было обращаться к СЧА не только по значениям параметров, но и по значениям переменных или по длинам очередей. бывали случаи, что было нужно.. приходилось хитро обходить ) |
Автор: Angellina 18.05.09, 16:53 |
TEMENb, я знаю определение этого оператора, но не знаю, как с его помощью реализовать то, что мне надо. И если вы считаете это элементарным, то не могли бы вы подсказать как именно решить этот вопрос |
Автор: TEMENb 18.05.09, 17:06 |
Angellina, а я и подсказал. В определении я нужное выделил жирным. Добавлено вы упорно пытаетесь записать атребут в дискретную числовую функцию. вам нужна дискретная атребутивная. другими слоами замените свое D на E и будет вам счастие. |
Автор: Angellina 18.05.09, 17:48 |
При замене D на E все равно выдаются следующие ошибки <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;Для FVARIABLE Line 17, Col 1. Expecting a numeric value. FV$VER1,T_A1/1,T_A2 ;Для INITIAL Line 17, Col 1. Expecting a numeric value. X$VER1,T_A1/1,T_A2 |
Автор: TEMENb 18.05.09, 17:53 |
Цитата Angellina @ VER1 FVARIABLE 0 ;или INITIAL X$VER1,0 MARK tipA FUNCTION RN1 D2 FV$VER1,T_A1/1,T_A2 ;или X$VER1,T_A1/1,T_A2 GENERATE (Exponential(1,0,14.286)) SAVEVALUE VER1,(-3#10^(-24)#M1^6+3#10^(-19)#M1^5-2#10^(-14)#M1^4+4#10^(-10)#M1^3-5#10^(-6)#M1^2+0.0317#M1+11.3) TRANSFER ,FN$tipA ... T_A1 ASSIGN 10,11 TRANSFER ,TA_SERV T_A2 ASSIGN 10,12 TRANSFER ,TA_SERV ... мм.. действительно, я невнимательно прочитал условие вашей задачи. Кроме атребутов в значениях функции, вы пытаетесь использовать атребут в качетсве значения аргумента... получается вроде как плавающая вероятность.. Хотя конкретно в вашем примере нет смысла вообще использовать функции. TRANSFER ,FN$tipA заменяем на TRANSFER x$VER1,T_A1,T_A2 и все дела. но постановка задачи интересная. надо будет подумать на досуге. |
Автор: Angellina 18.05.09, 17:59 |
TEMENb, спасибо большое |
Автор: TEMENb 18.05.09, 18:02 |
или так.. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE (Exponential(1,0,14.286)) SAVEVALUE VER1,(-3#10^(-24)#M1^6+3#10^(-19)#M1^5-2#10^(-14)#M1^4+4#10^(-10)#M1^3-5#10^(-6)#M1^2+0.0317#M1+11.3) ASSIGN 10,(11+((RN1/1000)>x$VER1)) TRANSFER ,TA_SERV ... нема за шо )))) |
Автор: Kappi4 18.05.09, 18:44 |
Здравствуйте господа программисты...Помогите пожалуйста в понимании языка гпсс... Задание 10. В системе передачи цифровой информации передается речь в цифровом виде. Речевые пакеты передаются через два транзитных канала, буферируясь в накопителях перед каждым каналом. Время передачи пакета по каналу составляет 6 мс. Пакеты поступают через 7 ? 2 мс. Пакеты, передававшиеся более 11 мс, на выходе системы уничтожаются, т.к. их появление в декодере значительно снизит качество передаваемой речи. Уничтожение более 35% пакетов недопустимо. При достижении такого уровня система за счет ресурсов ускоряет передачу по 3 мс на канал. При снижении уровня до приемлемого происходит отключение ресурсов. Смоделировать 12 с работы системы. Определить частоту уничтожения пакетов и частоту подключения ресурса. INITIAL X$T,1 /? INITIAL X$B,1 /? GENERATE 7,2 ASSIGN time,AC1 /? QUEUE OCH1 SEIZE PR_1 DEPART OCH1 SAVEVALUE countAllMode+,1 /? Test L (X$B#100/X$T),35,POS1 ADVANCE 6 TRANSFER ,met1 POS1 SAVEVALUE countFastMode+,1 /? ADVANCE 4 met1 RELEASE PR_1 QUEUE OCH2 SEIZE PR_2 DEPART OCH2 SAVEVALUE countAllMode+,1 Test L (X$B#100/X$T),35,POS2 ADVANCE 6 TRANSFER ,met2 POS2 SAVEVALUE countFastMode+,1 ADVANCE 4 met2 RELEASE PR_2 ASSIGN 1+,MP2 /? TEST LE (AC1-P$time),11,BYBY // по условию <= 11 /? SAVEVALUE T+,1 /? TERMINATE BYBY SAVEVALUE B+,1 /? TERMINATE GENERATE 12000 SAVEVAKUE fr_brak,(x$B/(x$B+x$T)) /? SAVEVALUE fr_useResource,(x$countFastMode/x$countAllMode) /? TERMINATE 1 START 1 Вот задание и решение его...но у мя возникли проблемы с обьяснением написаного преподавателю...елси несложно опишите плз что делается в строчках помеченые знаком вопроса...заранее благодарю... |
Автор: TEMENb 18.05.09, 18:55 |
у меня тоже такое бывает, как напишу чего - потом полдня разбираю, шо ж это за фигню за такую я написал. ![]() |
Автор: dimon_tb 19.05.09, 09:21 |
Задача: На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4% брака, второй соответственно 60 мин. и 8% брака. Все бракованные детали возвращаются на повторную обработку на второй станок. Детали, попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводится также два станка в среднем 100 мин каждый. Причём первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше трех деталей. Все интервалы времени распределены экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку второго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обработке. SIMULATE NAC1 STORAGE 500; накопитель NAC1 ёмкостью 500 10 GENERATE 50; каждые 50 мин по 1 детали 20 GATE NU STANOK1,SSS; если 1 станок занят посылаем на 2 30 SEIZE STANOK1; занимаем 1 станок. 40 ADVANCE 40; обработка детали 40 мин 50 TRANSFER 0.04,Pov,EXT; 4% возможность брака 60 POV RELEASE STANOK1; Освобождение устройства. 70 ENTER NAC1; Добавление в накопитель браковоной детали 80 SSS SEIZE STAN; 90 ADVANCE 60; обработка детали 60 мин 100 TRANSFER 0.08,POV2,EXTT ; 8% возможность брака 110 POV2 RELEASE STAN; Освобождение устройства. 120 ENTER NAC1; 130 EXT TERMINATE STANOK1; 140 EXTT TERMINATE STAN; Start 500 как теперь обработать бракованные детали из накопителя. или тут надо по другому что то писать. GPSS Word |
Автор: tigreg 19.05.09, 09:29 |
Привет! как в GPSS задать косинус в generate? кто-нибудь знает? Заранее спасибо. |
Автор: TEMENb 19.05.09, 09:51 |
GENERATE (COS(3.14#2#RN1/1000)) Добавлено dimon_tb, TRANSFER тебе в помощь.. |
Автор: tigreg 19.05.09, 10:24 |
Спасибо, TEMENb! если мне надо, чтоб две гармоники задавались, можно так: GENERATE (COS(3.14#2#RN1/1000)+COS(3.14#2#RN2/1000))? |
Автор: TEMENb 19.05.09, 10:55 |
Цитата tigreg @ Спасибо, TEMENb! если мне надо, чтоб две гармоники задавались, можно так: GENERATE (COS(3.14#2#RN1/1000)+COS(3.14#2#RN2/1000))? ну тут уже чисто ваша фантазия. Я привел класcический пример COS(x), где x [0;2*pi) |
Автор: tigreg 19.05.09, 11:01 |
еще раз thanks ![]() |
Автор: Figaro-serg 19.05.09, 11:51 |
Цитата TEMENb @ Цитата Figaro-serg @ Что после запятой идут минуты я понял, но что указано до запятой у каждой описываемой точки, я так и не воткнул... Может можно как-то и у меня аналогичное применить? Цитата TEMENb @ Оператор определения FUNCTION Описание Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле А оператора FUNCTION должно содержать аргумент независимую переменную функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0<=RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0<=RNj<999. Запись в поле В определяет тип и число точек функции (число пар значений X[i] и Y[i]). Например, в выражении Cn определяет тип, а n - число точек функции. невнимательно читаете форум!! ![]() Эта цитата из предыдущего сообщения. Это сообщение читал. Я имел ввиду что не понял, откуда были взяты числа, т.е. что мне можно было бы написать у себя. -Added Цитата TEMENb @ тебе даны средние значения. я так понял заданы частотой. и дан (дан ведь?) закон распредиления. пусть твое среднее значение равняется L, тогда експоненциальное распредиление FN$EXPON/L или Exponential(1,0,(1/L)) нормальное FN$GAMA/L или Gamma(1,0,(1/L),1) Ни какого закона распределения у меня не указано, только сказано что обслуживается 10±3 автомобиля за 8 часов. И все таки просьба, подскажите что же всетаки мне написать в advance (конкретную функцию или числа), плииииз, плиииз, плииииз. А то я окончательно запутался, причем тут законы экспоненциального и нормального распределения, если у мена ни слова про них в условии, а только "10±3" Добавлено очень-очень прошу ответить в следующей форме ![]() " advance первое_число, второе_число " или " advance функция(параметры) " TEMENb, огромное спасибо за время которое вы уже уделили мне |
Автор: TEMENb 19.05.09, 13:02 |
Выше я уже приводил формулу T=1/L. Если все еще не ясно что с ней делать, то поясняю. интенсивность у вас распределена по равномерному закону ((10±3)/8)машин в час. значит одна машина будет в среднем обслужена 1/((10±3)/8)часов=(8/(10±3))часов=(8/[7;13])часов=[(8/13);(8/7)]часов=((8*13+8*7)/(13*7*2))±((8*13-((8*13+8*7)/2))/(13*7))часов=(80/91)±((4*26-4*20)/91)=(80/91)±(24/91)часов вот как то так. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ADVANCE (80/91),(24/91) ;Если моделируете в часах З.Ы.:Советую перепроверить правильность моих вычислений, принцип правильный, а вот в числах мог ошибиться. Добавлено перепроверил ![]() |
Автор: Flames 19.05.09, 15:09 |
TEMENb, доброго дня, ночи. А подскажи, пожалуйста, где можно взять, найти информацию по СЧА нужно для реферата. У меня тема реферата так и называется "Стандартные Числовые Атрибуты". Просто хотелось бы (да и так требует препод) конкретный пример/ы моделирования в GPSS с применением СЧА. Помимо основной теории про СЧА, написать. Буду очень благодарен за помощь! ![]() |
Автор: Eugen 19.05.09, 15:29 |
да TEMENb мне тоже интересен этот материал ![]() |
Автор: tigreg 19.05.09, 16:37 |
еще вопрос. Мне необходимо использовать в программе текущее значение функции. Функция - косинус. По-моему, текущее знчение определяется так: FN1. Вопрос: как задать косинус в FUNCTION, и как затем сделать на нее ссылку в GENERATE? |
Автор: TEMENb 19.05.09, 16:38 |
Flames, в вверху страницы есть ссылка, даже выделена красным восклиццательным знаком! Добавлено Цитата Стандартные числовые атрибуты (СЧА) В процессе моделирования интерпретатор OpenGPSS автоматически регистрирует и корректирует информацию, касающуюся различных элементов, используемых в модели. Большая часть информации доступна только интерпретатору. Однако, к некоторым атрибутам объектов может обращаться и программист, манипулируя их значениями согласно логики модели. Такие атрибуты называются стандартными числовыми атрибутами (СЧА). Каждый объект OpenGPSS имеет свой набор СЧА. Кроме СЧА объектов существуют еще системные числовые атрибуты, к которым пользователь может обращаться в модели, но не может изменять их значение. Имя СЧА состоит из двух частей. Первая часть указывает групповое имя, идентифицирующее тип объекта и тип информации об объекте. Вторая часть идентифицирует конкретного члена группы. Групповое имя состоит из одной-двух букв, фиксированных для информации об объектах определенного типа, например, Q - ссылка на текущее значение длины очереди, QA - целая часть среднего значения очереди и т.д. Объекты OpenGPSS могут быть идентифицированы с помощью числовых или символьных имен. Если объект идентифицирован с помощью номера, то ссылка на его стандартный числовой атрибут записывается как СЧАj, где j - номер объекта (целое число). При символической идентификации объекта ссылка на его стандартный атрибут записывается как СЧА$<имя>, где <имя> - символьное имя объекта. Системные СЧА RN Числовые последовательности считываются из датчиков псевдослучайных чисел (ДПЧ) с помощью СЧА RNj. Все датчики генерируют последовательность равномерно распределенных случайных дробных чисел от 0 до 0,999999999999999 (пятнадцать девяток после нуля). Количество датчиков не ограничено. C1 Текущее значение условного времени. Автоматически изменяется программой и устанавливается в 0 управляющими операторами CLEAR или RESET. AC1 Текущее значение абсолютного времени. Автоматически изменяется программой. Эта величина не меняется под действием управляющего оператора RESET и устанавливается в 0 лишь под действием оператора CLEAR. TG1 Число, равное текущему значению счетчика завершений. Транзакты, вошедшие в блоки TERMINATE с ненулевым операндом А, уменьшают значение этого счетчика на число, равное значению операнда А. Z1 Размер свободной оперативной памяти в байтах. М1 Время пребывания в модели транзакта, обрабатываемого программой в данный момент. Эта величина может изменяться блоком MARK. Время пребывания вычисляется следующим образом: М1 равно разнице текущего значения абсолютного времени и отметки времени обрабатываемого транзакта. PR Приоритет обрабатываемого в данный момент транзакта. Эта величина может изменяться блоком PRIORITY. По умолчанию приоритет равен 0. СЧА транзактов XN1 Номер активного транзакта. Pj или *j, или *<имя>, или *$<имя> значение параметра j текущего транзакта или значение параметра с именем <имя> текущего транзакта. MPj Значение времени, равное разности абсолютного модельного времени и содержимого j-го параметра текущего транзакта. MBj Флаг синхронизации: 1, если транзакт в блоке j принадлежит тому же семейству, что и текущий транзакт; 0 - в противном случае. СЧА блоков Nj Общее число транзактов, которое должно войти в j-й блок. Подсчет ведется программой автоматически. Например, N$MET1 - счетчик числа входов в блок МЕТ1. Этот счетчик изменяется при каждом входе транзакта в блок МЕТ1. Wj Текущее число транзактов, которое находится в блоке j. Значение этого счетчика подсчитывается автоматически. Например, $MET2 - счетчик текущего числа транзактов в блоке МЕТ2. СЧА МКУ Sj Текущее содержимое многоканального устройства j. Содержимое многоканального устройства может изменяться блоками ENTER и LEAVE. Rj Число свободных единиц многоканального устройства j. Эта величина может изменяться блоками ENTER и LEAVE. SRj Коэффициент использования многоканального устройства j в тысячных долях, т.е., если коэффициент равен 0.65, то SRj равно 650. SAj Среднее содержимое многоканального устройства j (целая часть). SMj Максимальное содержимое многоканального устройства j. SCj Общее число входов в многоканальное устройство j. STj Среднее время пребывания транзактов в многоканальном устройстве j. SEj Флаг незанятости многоканального устройства j: 1 - свободно, 0 - занято. SFj Флаг заполненности многоканального устройства j: 1 - заполнено, 0 - не заполнено. SVj Флаг готовности многоканального устройства j: 1 - готово, 0 - не готово. SNVj Флаг неиспользуемости многоканального устройства j: 1 - неиспользуется, 0 - используется. СЧА устройств Fj Текущее состояние устройства j. Эта величина равна 0, если устройство свободно, и 1 - во всех остальных случаях. Этот атрибут изменяется блоками SEIZE, RELEASE, PREEMPT и RETURN. FIj Флаг прерывания устройства: 1, если устройство находится в состоянии прерывания, 0 - в противном случае. FVj Флаг готовности устройства к использованию: 1, если готово, 0 - в противном случае. FRj Коэффициент использования устройства j в тысячных долях, т.е., если коэффициент равен 0.88, то FRj равен 880. FCj Общее число входов в устройство j. FTj Среднее время использования устройства одним транзактом. СЧА очередей Qj Длина соответствующей очереди j. Эта величина изменяется блоками QUEUE и DEPART. QAj Средняя длина очереди j. QMj Максимальная длина очереди j. QCj Общее число входов в очередь j. QZj Число нулевых входов в очередь j. QTj Среднее время пребывания транзакта в очереди j (включая нулевые входы). QXj Среднее время пребывания транзакта в очереди j (без нулевых входов). СЧА таблиц TBj Вычисленное среднее таблицы j. Для занесения в таблицу используется блок TABULATE. TCj Общее число включений в таблицу j. TDj Вычисленное среднеквадратичное отклонение для таблицы. СЧА сохраняемых величин Xj Содержимое ячейки j. СЧА матриц MXj(a,b) Содержимое элемента матрицы ячеек j, расположенного в строке a, столбце b. СЧА функций FNj Вычисленное значение функции j. От значения функции берется целая часть, за исключением тех случаев, когда это значение используется в качестве модификатора в блоках GENERATE, ADVANCE или ASSIGN или в качестве аргумента другой функции. СЧА переменных Vj Вычисленное значение переменной j. При вычислении значения переменной с фиксированной точкой получается целое число. При вычислении значения переменной с плавающей точкой дробная часть конечного результата отбрасывается. BVj Вычисленное значение (1 или 0) булевской переменной. СЧА числовых групп GNj Текущее число элементов в числовой группе с номером j. СЧА групп транзактов GTj Текущее число элементов в группе транзактов с номером j. СЧА списков пользователя CHj Текущее число транзактов в j-том списке пользователя. CAj Среднее число транзактов в j-том списке пользователя. CMj Максимальное число транзактов в j-м списке пользователя. CCj Число входов в j-й список пользователя. CTj Среднее время пребывания транзакта в j-том списке пользователя. СЧА логических переключателей LSj Возвращает состояние логического переключателя j: 1 - установлен, 0 - не установлен. LRj Возвращает инверсное состояние логического переключателя j: 0 - установлен, 1 - не установлен. Добавлено Цитата tigreg @ еще вопрос. Мне необходимо использовать в программе текущее значение функции. Функция - косинус. По-моему, текущее знчение определяется так: FN1. Вопрос: как задать косинус в FUNCTION, и как затем сделать на нее ссылку в GENERATE? Вопервых, что бы обратиться к функции по числовому имени - надо задать функцию по числовому имени. Это сделать возможно.. желаю вам удачи ![]() Вовторых, берете случайным образом выбираете на графике стук пиццот (25 точек вполне хватит) точек и записываете FCOS FUNCTION RN1,C25 ;25 ТОЧЕК а далее записываете полученные точки. абсцысу и ординату. координаты точек пишете через запятую, сами точки отделяете значком деления. точки должны быть расставлены так, что бы абсцыса возрастала. З.Ы.: пользуйтесь встроенной plus функцией COS и не иите мозги ни себе ни людям. З.З.Ы.:надоело отвечать по 7 раз на один и тот же вопрос на одной странице форума.. Добавлено З.З.З.Ы: вырезка из жпссного хелпа (так ведь сложно глянуть почитать..) Цитата что в переводе означает, что аргумент коссинуса должен быть в радианах. надеюсь ненадо обьяснять как градусы в радианы переводить? COS( Expression ) - Cosine. Expression must be in radians. ![]() |
Автор: tigreg 19.05.09, 18:17 |
за ответ спасибо. со всем остальным... ![]() ![]() |
Автор: TEMENb 19.05.09, 18:32 |
tigreg, и еще, если вы будете использовать косинус в качестве параметра - есть один маленький ньюанс. В качетсве параметров жпсс адекватно воспринимает числа, символьные константы, СЧА и выражения, заключенные в скобки. Так вот Puls-функции - это выражения. обязательно нужно заключать в скобки. Например <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE (COS(3.14)) |
Автор: Figaro-serg 19.05.09, 20:48 |
Цитата TEMENb @ <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ADVANCE (80/91),(24/91) ;Если моделируете в часах (80/91),(24/91) - не знал что так можно! клево :-) если пересчитать в минуты, то (80/91)±(24/91)часов = (80/91)*60 ± (24/91)*60 минут = 52.74±15.82 минут. до этого получил аналогичные результаты: 52±16 мин, только вот округление конечно здесь было не корректным. получается что я чисто интуитивно рассчитал интервалы правильно, не зная формул ![]() ![]() TEMENb, еще раз огромнейшее человеческое спасибо за оказанную помошь! |
Автор: h4_jester 20.05.09, 16:24 |
Имеется 5 входных накопителей (емкость -1 сообщение), и 5 выходных очередей. При определенном условии необходимо освободить эти 5 накопителей и 5 выходных очередей только от заявок 2 и 3 типов, заявки же первого типа не трогать(всего в системе 3 типа заявок). Какими глаголами это можно сделать? |
Автор: TEMENb 20.05.09, 16:55 |
h4_jester, что ты подразумеваешь под словом "накопитель"? варианты ответов: 1 queue/depart 2 enter/leave 3 seize/release Добавлено Цитата .................. queue nakopitel Test e ((f$yst=0)|(p$type=2)|(p$type=3)),1 Test e f$yst,0,osvobodit seize yst ................... |
Автор: h4_jester 20.05.09, 17:39 |
накопитель - enter/leave. |
Автор: TEMENb 20.05.09, 18:15 |
h4_jester, ну такой вариант немного сложнее. Тут вообщем есть два пути. первый - сохранить время пребывания в накопителе в параметр..... <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> .................. assign tim,(duniform(1,10,14)) queue och enter nak depart och advance 1 assign tim-,1 Test e ((p$tim<=0)|((x$del=1)&((p$type=2)|(p$type=3)))),1 Test le p$tim,0,osvobodit leave nak ................... osvobodit leave nak ................... ну и второй вариант - пользоваться пользовательскими списками. удалить транзакты нужного типа будет очень просто, а вот организовать правильное время выхода алгебраически сложнее (модель не усложниться, но подумать над цыфрами прийдеться) |
Автор: inna 21.05.09, 11:06 |
Здравствуйте! Скажите пожалуйста, если к одноканальному устройству ограничен накопитель, это устройство в программе как память записывать(с фазами выделения и освобождения памяти) или как устройство? Если как устройство, то как показать что ограничен накопитель? Если возможно, ответьте сегодня. до вечере нужно сделать. |
Автор: TEMENb 21.05.09, 11:38 |
inna, вы взрываете мой мозг! думаю вам надо что то типа <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST L Q$och,10,OTK ;если очередь короче 10, то дальше, иначе на метку (отказ) QUEUE och SEIZE ND DEPART och ;покинуть очередь ADVANCE 120,25 RELEASE ND ; В следующий раз потрудитель изъяснятся попонятней. |
Автор: inna 21.05.09, 11:52 |
Спасибо большое!! Но как я понимаю, мне надо задать сначали емкость накопителя (или очереди) . Подскажите пожалуйста, где это указать. |
Автор: TEMENb 21.05.09, 12:08 |
Цитата TEMENb @ <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> (отказ)TEST L Q$och,10,OTK ;если очередь короче 10, то дальше, иначе на метку в данном примере размер очереди ограничен десяткой. |
Автор: inna 21.05.09, 17:37 |
огромное спасибо! Вы мне очень помогли ![]() |
Автор: ourlifeforus 22.05.09, 06:08 |
Есть ряд задачек, простых, которые нужно решить, может кто-либо поможет? :) Составить задание на моделирование прохождения заявок которые могут обрабатываться на одном из двух устройств, причем предпочтительнее на первом. Поступление заявок по равномерному закону распределения с интервалом [6...10] единиц времени, время обработки на первом устройстве в интервале [2...8] по РР, на втором - [5...9]. Исследовать модель, где заявки поступают на обработку в устройство с ограниченным числом мест в очереди, равным 3. Если очередь заполнена, то заявка покидает систему. Исследовать характеристики многоканальной системы при многомерном потоке заявок на входе системы. Например, при двух потоках на входе, трех идентичных каналах обслуживания и общей очередью к ним. 1. Требуется промоделировать решение задач в двухпроцессорной ЭВМ с общей памятью, разделенной на восемь блоков. Каждой задаче отводится при ее решении один блок. Интервалы времени между поступлениями задач распределены равномерно в интервале [2,14] единиц времени, время обработки порции информации подчинено экспоненциальному закону с интенсивностью v1=5 в процессоре CPU1 и с v2=2 в процессоре CPU2. Выполнение задачи сводится к обработке порций информации. Между обработкой порций с вероятностью 0.6 возможно обращение к внешней памяти, в которой время обслуживания распределено равномерно в диапазоне [2,8]. С вероятностью 0.3 задачи оказываются решенными и покидают систему. Моделирование выполнить на отрезке времени, соответствующем решению не менее 100 задач. Модель: Два сетевых принтера. Принт-сервер обслуживает два принтера: цветной и монохроматический. Поток заявок на печать - пуассоновский со средним значением 1,5 с. 40% заявок требуют использования цветного принтера, остальные - монохроматического. Имеется общая очередь заявок (буферная память). Емкость буферной памяти соответствует 10 заявкам. Если при поступлении заявки нет свободного буфера, заявка покидает принт-сервер без обслуживания. Время вывода на печать распределено по нормальному закону, причем для монохроматического принтера математическое ожидание = 8, а среднеквадратическое отклонение = 1. Для цветного математическое ожидание = 6, а среднеквадратическое отклонение = 1. Построить модель. Определить процент необслуженных заявок. Построить таблицу очереди заявок. Модель магазина - гипермаркета "unreal,-". Покупатель заходит в магазин, ищет нужные товары и идёт с ними к кассе. Время работы: с 9.00 до 22.00. Количество покупателей: утром - 1 покупатель в минуту, в обед - 8 в минуту, после обеда - 3 в минуту, вечером - 15 в минуту, после 19.00 - 5 в минуту. Среднее время поиска нужного товара покупателем - 40 ±20 секунд. Средний объём корзины – от 0 до 10 товаров до 17.00, от 0 до 50 товаров - до 19.00 и от 0 до 8 - до 22.00 (количество товаров соответствует экспоненциальному распределению на указанном интервале). Средняя стоимость товара - 100 руб. Среднее время обработки товара кассиром - 10 ±8 секунд Покупатель идёт к кассе, у которой самая короткая очередь. Каждый покупатель согласен ждать своей очереди в течении 10 минут. Если он видит, что ждать придётся не менее часа, то вероятность того, что он встанет в очередь равна 0.1. (и плавно изменяется до 1 с уменьшением предполагаемого времени стояния в очереди). Если покупатель встал в очередь, то он её уже не покинет. Чем дольше покупатель стоит в очереди, тем сильнее портится его настроение (покупатель злится). Если покупатель стоит в очереди менее 10 минут, то его озлобленность равна нулю, 1 час – 0.3, 2 часа - 1. Озлобленность покупателя является вероятностью того, что он смертельно обидится на магазин unreal и больше никогда туда не придёт. Покупатель без товаров никогда не обижается, покупатель, не вставший в очередь из-за её слишком большой длины, обижается в зависимости от проведённого в магазине времени - если больше часа, то обида == 1, если меньше 10 минут - обида == 0. Надо определить, какое количество касс должно работать в каждое время суток, чтобы обиженных покупателей было не больше 0.01% и привести всю возможную статистику - среднее время нахождения в очереди и т.д. |
Автор: SHARKY-88 23.05.09, 12:55 |
Petroid Можешь кинуть работу В системе передачи данных осуществляется обмен пакетами данных между пунктами А и В по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени 10 ± 3 мс. Передача пакета занимает 10 см. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетов данных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ. Смоделировать обмен информацией в системе передачи данных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможных отказов определить необходимый для безотказной работы системы объем буферных регистров. SHARKY-88@mail.ru |
Автор: tigreg 23.05.09, 14:19 |
Подскажите, пожалуйста, почему не работают параметры? (в отчете их нет) INPUT TABLE IN,0,20,25 OUTPUT TABLE OUT,0,20,25 GTD MATRIX ,1,3 INITIAL MX$GTD(1,1),0.02 INITIAL MX$GTD(1,2),-0.79 INITIAL MX$GTD(1,3),12.9 GENERATE 10 ASSIGN 1,(COS(3.14#2#RN1/1000)+COS(3.14#2#RN2/1000)) ASSIGN 2,1 IN VARIABLE P1 OUT VARIABLE MX$GTD(1,P2)#P1 TABULATE INPUT TABULATE OUTPUT QUEUE QUE OUT VARIABLE P2+1 DEPART QUE TERMINATE 1 |
Автор: TEMENb 23.05.09, 14:31 |
Вопервых, если ты хочешь занести в таблицу вычисляемое выражение, то заноси вычисляемое выражение, а не значение его числового имени. поясняю разницу IN - значение числового имени (равняется порядка десяти тысяч) V$IN - значение вычисляемого выражения Вовторых, если мне не изменяет память, косинус выдает результат в интервале -1..1. знач косинус плюс косинус - -2..2 Внимание вопрос, что ты собираешься рассмотреть в таблице с начальным значением 0 и шагом 20? Втретьих,строчечки с вариейблами вынеси куданибудь повыше. Эти блоки не являются функциональными (если в них входит транзакт, то ничего не происходит) и среди функциональных им делать нечего Добавлено И еще, если тебе нужен был график cos(x)+cos(x), то ты немного промахнулся. У тебя сейчас график cos(x1)+cos(x2), x1,x2 э 0..2*pi ну так.. к слову.. я незаю как именно тебе нужно, просто предупредил ) |
Автор: tigreg 23.05.09, 14:54 |
Спасибо!!! |
Автор: RetiF 23.05.09, 23:13 |
Задача на Многоканальное устройство Цитата Магазин состоит из 3 отделов и одной кассы на выходе. Интенсивность прихода покупателей 2+-l мин. Вероятность покупок в отделах и время покупок соответственно распределено равномерно: Время обслуживания у кассы 2+,-1 мин. Составить модель работы магазина в течение 8 часов Если бы время покупки во всех трёх отделах было бы одинаковым и в условии бы не было разных вероятностей совершения покупки, то я, кажется, справился с задачей: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> market STORAGE 3 GENERATE 2,1 ENTER market TRANSFER .75,exitgone,done done ADVANCE 120,60 LEAVE market QUEUE PayTurn SEIZE pay DEPART PayTurn ADVANCE 2,1 RELEASE pay TERMINATE exitgone LEAVE market TERMINATE GENERATE 60 TERMINATE 1 START 8 Но как быть с тремя разными вероятностями и разным временем на совершение покупки? |
Автор: andreynov 24.05.09, 12:11 |
TEMENb Доброго времени суток. Задача: На сборочный участок цеха предприятия через интервалы времени, распределенные экспоненциально со средним значением 10 мин, поступают партии, каждая из которых состоит из трех деталей. Половина всех поступающих деталей перед сборкой должна пройти предварительную обработку в течение 7 мин. На сборку подаются обработанная и необработанная детали. Процесс сборки занимает всего 6 мин. Затем изделие поступает на регулировку, продолжающуюся в среднем 8 мин (время выполнения ее распределено экспоненциально). В результате сборки возможно появление 4% бракованных изделий, которые не поступают на регулировку, а направляются снова на предварительную обработку. Смоделировать работу участка в течение 24 ч. Определить возможные места появления очередей и их вероятностно-временные характеристики. Выявить причины их возникновения, предложить меры по их устранению и смоделировать скорректированную систему. Эта задача уже приводилась в этой теме на стр. 2 и 5: на второй Вы приводили решение похожей задачи, а на 5-ой задача 1 в 1. Задача выполняется, но вот только очереди забиты уж очень сильно... Не подскажете, в чем может быть дело? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ;------------------------------------; SBOR STORAGE 2 ; ;------------------------------------; GENERATE ,,,1 ;геним транзакт MET1 ADVANCE (Exponential(1,0,10)); ;задержка генерации на 10 мин (эксп) SPLIT 3,MET2 ;клоним 3 транзакта, отправляем их на метку TRANSFER ,MET1 ;отправляем родителя на метку MET2 TRANSFER .5,MET3 ;половину пропускаем, половину отправляем на метку MET5 QUEUE OCH1 ;занять очередь 1 SEIZE PREDV ;первичная обработка DEPART OCH1 ;покинуть очередь ADVANCE 7 ;задержка на время обработки RELEASE PREDV ;покинуть первичную обработку QUEUE OCH2 ;занять очередь 2 LINK 2,FIFO ;ПОСТАВИТЬ В 2-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET3 QUEUE OCH2 ;занять очередь 2 LINK 1,FIFO ;ПОСТАВИТЬ В 1-Й СПИСОК ПОЛЬЗОВАТЕЛЯ ;------------------------------------; MET4 ENTER SBOR ;занять устройство сборки DEPART OCH2 ;покинуть очередь 2 ASSEMBLE 2 ;собрать из двух деталей одну ADVANCE 6 ;Задержка на время обработки TRANSFER .04,MET5 ;4 % деталей возвращаются на предв. обработку ADVANCE (Exponential(1,0,8));регулировка LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. TERMINATE ;транзакт покидает систему ;------------------------------------; GENERATE ,,,1 ;геним POVT TEST G CH1,0 ;если первый список пользователя больше нуля, то дальше TEST G CH2,0 ;если второй список пользователя больше нуля, то дальше UNLINK 1,MET4,1 ;отправить из 1-го списка пользователя на метку МЕТ4 один транзакт UNLINK 2,MET4,1 ;отправить из 2-го списка пользователя на метку МЕТ4 один транзакт TRANSFER ,POVT ;перейти на метку ;------------------------------------; GENERATE (24#60) ;геним транзакт через 8 часов TERMINATE 1 ;из счетчика завершений вычитаем 1 ;------------------------------------; START 1 ; ;------------------------------------; Отчет: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - forum.9.1 Sunday, May 24, 2009 21:12:16 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 1440.000 31 1 1 NAME VALUE MET1 2.000 MET2 5.000 MET3 13.000 MET4 15.000 MET5 6.000 OCH1 10001.000 OCH2 10003.000 POVT 25.000 PREDV 10002.000 SBOR 10000.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1 0 0 MET1 2 ADVANCE 157 1 0 3 SPLIT 156 0 0 4 TRANSFER 156 0 0 MET2 5 TRANSFER 468 0 0 MET5 6 QUEUE 230 24 0 7 SEIZE 206 0 0 8 DEPART 206 0 0 9 ADVANCE 206 1 0 10 RELEASE 205 0 0 11 QUEUE 205 0 0 12 LINK 205 204 0 MET3 13 QUEUE 239 0 0 14 LINK 239 238 0 MET4 15 ENTER 2 0 0 16 DEPART 2 0 0 17 ASSEMBLE 2 0 0 18 ADVANCE 1 0 0 19 TRANSFER 1 0 0 20 ADVANCE 0 0 0 21 LEAVE 0 0 0 22 LEAVE 0 0 0 23 TERMINATE 0 0 0 24 GENERATE 1 0 0 POVT 25 TEST 206 1 0 26 TEST 205 0 0 27 UNLINK 205 0 0 28 UNLINK 205 0 0 29 TRANSFER 205 0 0 30 GENERATE 1 0 0 31 TERMINATE 1 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY PREDV 206 0.999 6.982 1 421 0 0 0 24 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCH1 35 24 230 1 22.825 142.901 143.525 0 OCH2 442 442 444 1 223.818 725.896 727.535 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY SBOR 2 0 0 2 2 1 1.988 0.994 0 408 USER CHAIN SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME 1 34 0 21.579 239 37 130.016 2 0 1 0.000 205 1 0.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 1 0 1440.443 1 2 3 421 0 1443.715 1 9 10 472 0 2880.000 472 0 30 |
Автор: Eugen 24.05.09, 17:30 |
может здесь чтото нето Цитата andreynov @ UNLINK 1,MET4,1 ;отправить из 1-го списка пользователя на метку МЕТ4 один транзакт UNLINK 2,MET4,1 ;отправить из 2-го списка пользователя на метку МЕТ4 один транзакт Добавлено RetiF это лишнее - <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> market STORAGE 3 И дальше добавь 2 и 3 отделы. |
Автор: andreynov 24.05.09, 23:24 |
EugenСпасибо, конечно. Но я тоже не совсем понимаю действие этих строк и вообще блоков LINK | UNLINK. И что тут может быть не так, на твой взгляд? |
Автор: Eugen 25.05.09, 13:33 |
andreynov, да не понятно где ошибка или пропущены блоки, напишите автору, возможно здесь GPSS задача этот вопрос разрешится быстрее |
Автор: andreynov 25.05.09, 14:32 |
EugenВ теме, на которую ты дал ссылку, за деньги решают задачи что-ли? |
Автор: Eugen 25.05.09, 15:06 |
так точно, кому охота тратить время, решать задачи за так .. в Вашей задаче не корректна работа с МКУ. Не понятна как устроена модель, особенно здесьСпросите у автора ![]() |
Автор: andreynov 25.05.09, 16:22 |
Eugen, да это не для меня задача, так что платить за неё не хочется ![]() Уже забыл, что такое МКУ... Спрошу... если найду, кто это ![]() Добавлено TEMENb, объясни пожалуйста, почему память нужно освобождать дважды? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. |
Автор: TEMENb 25.05.09, 18:16 |
Eugen, ох, ну зачем стебать то так жестоко? =) незнал я тогда еще, что можно одним ливом освободить сразу два канала МКУ. теперь я старый мудрый воин и знаю как.. andreynov, потому что в этом разделе есть два вида помощи 1. мы подсказываем как организовать логику модели 2. мы подсказываем, в какие у лично вашей реализации есть недостатки (я лично в этом участвую редко, т.к. не всегда есть желание разбирать чужой код) или как можно было бы лучше организовать модель. но брать свой же ранее написанный код и разжовывать его - вы уж простите. |
Автор: Los_Caballeros 25.05.09, 18:17 |
Предметная область: Роботизированная производственная система имеет два станка с числовым программным управлением, три робота, пункт прибытия и склад обработанных деталей. Детали прибывают на пункт прибытия в соответствии с экспоненциальным законом распределения со средним значением t0 секунд, захватываются одним из свободных роботов и перемещаются к первому станку, после чего робот освобождается. После завершения обработки на первом станке деталь захватывается одним из роботов и перемещается на второй станок, а после обработки на втором станке одним из роботов перемещается на склад обработанных деталей. Время перемещения робота между пунктом прибытия и первым станком, первым и вторым станками, вторым станком и складом составляет t1, t2, t3 секунд, соответственно, независимо от того, «холостой» это ход или нет. Роботу необходимо время t4 ± t5 секунд на захват или освобождение деталей. Время обработки на первом станке распределено по нормальному закону со средним значением t6 секунд и имеет стандартное отклонение t7 секунд. Время обработки на втором станке имеет экспоненциальный закон распределения со средним значением t8 секунд. Каждый робот может использоваться на каждом из путей перемещения деталей (при этом должен использоваться ближайший из роботов). Ниже приводится получившаяся модель на GPSS. В её коде можно условно выделить три аналогичные части, отделённые "***". Так вот проблема в том, что первые две части и третья по отдельности работают, а вместе, как приведено ниже, нет. Подскажите, пожалуйста, в чём дело! ; исходные данные INITIAL X$t_0,70 INITIAL X$t_1,10 INITIAL X$t_2,15 INITIAL X$t_3,20 INITIAL X$t_4,15 INITIAL X$t_5,3 INITIAL X$t_6,140 INITIAL X$t_7,20 INITIAL X$t_8,180 INITIAL X$pos1,0 ; приёмный пункт INITIAL X$pos2,1 ; станок 1 INITIAL X$pos3,2 ; станок 2 INITIAL X$progon,0 ; нужно для учёта времени холостого прогона робота к нужному станку GENERATE (EXPONENTIAL(1,X$t_0#2,(X$t_0))) QUEUE priem ; ищем робота находящегося возле приёмного пункта proverka_pos1 TEST NE X$pos1,0,seize_robot1 proverka_pos2 TEST NE X$pos2,0,seize_robot2 proverka_pos3 TEST NE X$pos3,0,seize_robot3 ; ищем робота находящегося возле 1-го станка proverka_pos1_1 TEST NE X$pos1,1,izm_progon1 proverka_pos2_1 TEST NE X$pos2,1,izm_progon2 proverka_pos3_1 TEST NE X$pos3,1,izm_progon3 ; ищем робота находящегося возле 2-го станка proverka_pos1_2 TEST NE X$pos1,2,izm_progon11 proverka_pos2_2 TEST NE X$pos2,2,izm_progon22 proverka_pos3_2 TEST NE X$pos3,2,izm_progon33 ; ищем робота находящегося возле 3-го станка proverka_pos1_3 TEST NE X$pos1,3,izm_progon111 proverka_pos2_3 TEST NE X$pos2,3,izm_progon222 proverka_pos3_3 TEST NE X$pos3,3,izm_progon333 TRANSFER ,proverka_pos1 ; определение времени движения ближайшего робота до станка izm_progon1 SAVEVALUE progon,X$t_1 TRANSFER ,seize_robot1 izm_progon2 SAVEVALUE progon,X$t_1 TRANSFER ,seize_robot2 izm_progon3 SAVEVALUE progon,X$t_1 TRANSFER ,seize_robot3 izm_progon11 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,seize_robot1 izm_progon22 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,seize_robot2 izm_progon33 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,seize_robot3 izm_progon111 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3) TRANSFER ,seize_robot1 izm_progon222 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3) TRANSFER ,seize_robot2 izm_progon333 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3) TRANSFER ,seize_robot3 ; моделирование работы робота seize_robot1 SEIZE robot1 SAVEVALUE pos1,1 DEPART priem ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon) RELEASE robot1 TRANSFER ,metka_stanok1 seize_robot2 SEIZE robot2 SAVEVALUE pos2,1 DEPART priem ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon) RELEASE robot2 TRANSFER ,metka_stanok1 seize_robot3 SEIZE robot3 SAVEVALUE pos3,1 DEPART priem ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon) RELEASE robot3 TRANSFER ,metka_stanok1 ;моделирование работы станка metka_stanok1 QUEUE pered_stankom1 SEIZE stanok1 DEPART pered_stankom1 ADVANCE (normal (1, X$t_6, X$t_7)) RELEASE stanok1 ************************************************************************************** QUEUE posle_stanka1 ; a_proverka_pos1 TEST NE X$pos1,1,a_seize_robot1 a_proverka_pos2 TEST NE X$pos2,1,a_seize_robot2 a_proverka_pos3 TEST NE X$pos3,1,a_seize_robot3 ; a_proverka_pos1_1 TEST NE X$pos1,0,a_izm_progon1 a_proverka_pos2_1 TEST NE X$pos2,0,a_izm_progon2 a_proverka_pos3_1 TEST NE X$pos3,0,a_izm_progon3 ; a_proverka_pos1_2 TEST NE X$pos1,2,a_izm_progon11 a_proverka_pos2_2 TEST NE X$pos2,2,a_izm_progon22 a_proverka_pos3_2 TEST NE X$pos3,2,a_izm_progon33 ; a_proverka_pos1_3 TEST NE X$pos1,3,a_izm_progon111 a_proverka_pos2_3 TEST NE X$pos2,3,a_izm_progon222 a_proverka_pos3_3 TEST NE X$pos3,3,a_izm_progon333 TRANSFER ,a_proverka_pos1 a_izm_progon1 SAVEVALUE progon,X$t_1 TRANSFER ,a_seize_robot1 a_izm_progon2 SAVEVALUE progon,X$t_1 TRANSFER ,a_seize_robot2 a_izm_progon3 SAVEVALUE progon,X$t_1 TRANSFER ,a_seize_robot3 a_izm_progon11 SAVEVALUE progon,X$t_2 TRANSFER ,a_seize_robot1 a_izm_progon22 SAVEVALUE progon,X$t_2 TRANSFER ,a_seize_robot2 a_izm_progon33 SAVEVALUE progon,X$t_2 TRANSFER ,a_seize_robot3 a_izm_progon111 SAVEVALUE progon,(X$t_2 + X$t_3) TRANSFER ,a_seize_robot1 a_izm_progon222 SAVEVALUE progon,(X$t_2 + X$t_3) TRANSFER ,a_seize_robot2 a_izm_progon333 SAVEVALUE progon,(X$t_2 + X$t_3) TRANSFER ,a_seize_robot3 a_seize_robot1 SEIZE robot1 SAVEVALUE pos1,2 DEPART posle_stanka1 ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon) RELEASE robot1 TRANSFER ,a_metka_stanok2 a_seize_robot2 SEIZE robot2 SAVEVALUE pos2,2 DEPART posle_stanka1 ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon) RELEASE robot2 TRANSFER ,a_metka_stanok2 a_seize_robot3 SEIZE robot3 SAVEVALUE pos3,2 DEPART posle_stanka1 ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon) RELEASE robot3 TRANSFER ,a_metka_stanok2 a_metka_stanok2 QUEUE pered_stankom2 SEIZE stanok2 DEPART pered_stankom2 ADVANCE (EXPONENTIAL(1,0,(1/X$t_8))) RELEASE stanok2 ************************************************************************************ QUEUE posle_stanka2 ; b_proverka_pos1 TEST NE X$pos1,2,b_seize_robot1 b_proverka_pos2 TEST NE X$pos2,2,b_seize_robot2 b_proverka_pos3 TEST NE X$pos3,2,b_seize_robot3 ; b_proverka_pos1_1 TEST NE X$pos1,1,b_izm_progon1 b_proverka_pos2_1 TEST NE X$pos2,1,b_izm_progon2 b_proverka_pos3_1 TEST NE X$pos3,1,b_izm_progon3 ; b_proverka_pos1_2 TEST NE X$pos1,3,b_izm_progon11 b_proverka_pos2_2 TEST NE X$pos2,3,b_izm_progon22 b_proverka_pos3_2 TEST NE X$pos3,3,b_izm_progon33 ; b_proverka_pos1_3 TEST NE X$pos1,0,b_izm_progon111 b_proverka_pos2_3 TEST NE X$pos2,0,b_izm_progon222 b_proverka_pos3_3 TEST NE X$pos3,0,b_izm_progon333 TRANSFER ,b_proverka_pos1 b_izm_progon1 SAVEVALUE progon,X$t_2 TRANSFER ,b_seize_robot1 b_izm_progon2 SAVEVALUE progon,X$t_2 TRANSFER ,b_seize_robot2 b_izm_progon3 SAVEVALUE progon,X$t_2 TRANSFER ,b_seize_robot3 b_izm_progon11 SAVEVALUE progon,X$t_3 TRANSFER ,b_seize_robot1 b_izm_progon22 SAVEVALUE progon,X$t_3 TRANSFER ,b_seize_robot2 b_izm_progon33 SAVEVALUE progon,X$t_3 TRANSFER ,b_seize_robot3 b_izm_progon111 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,b_seize_robot1 b_izm_progon222 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,b_seize_robot2 b_izm_progon333 SAVEVALUE progon,(X$t_1 + X$t_2) TRANSFER ,b_seize_robot3 b_seize_robot1 SEIZE robot1 SAVEVALUE pos1,3 DEPART posle_stanka2 ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon) RELEASE robot1 TRANSFER ,konec b_seize_robot2 SEIZE robot2 SAVEVALUE pos2,3 DEPART posle_stanka2 ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon) RELEASE robot2 TRANSFER ,konec b_seize_robot3 SEIZE robot3 SAVEVALUE pos3,3 DEPART posle_stanka2 ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon) RELEASE robot3 konec TERMINATE main GENERATE 28800 TERMINATE 1 start 10 |
Автор: Eugen 25.05.09, 18:33 |
Сенсей снова с нами TEMENb в чем же тогда причина, что очереди забиты уж очень сильно..?? Los_Caballeros Основной гемор здесь Цитата тут возникает много вариантов и лучше спросить у препода, уточнить процедуру перехода роботов из А в Б... моделька оч.большая и ошибокой мож. быть много. Логику управления передвижениями роботов лучше вынести в PLUS процедуры... (при этом должен использоваться ближайший из роботов). |
Автор: Angellina 25.05.09, 20:25 |
Исходные данные к проектированию: средство реализации GPSS World. Объект моделирования – экспертная система, пополняемая записями экспертов. В начальный момент времени вероятность выдачи правильного ответа по запросу каждого типа равна нулю. По проектным прогнозам, в связи с работой экспертов по пополнению системы, со временем эксплуатации системы вероятность выдачи правильного результата возрастает. Проектные прогнозы представлены в таблице. дни 1 2 3 4 5 6 7 8 Вер.А 47,7 71,6 84,7 89,3 94,5 97,1 97,1 96,4 Вер.В 31,3 51,5 65,2 77,8 82,1 84,2 89,2 92,0 Вер.С 24,0 47,1 57,7 65,7 74,5 81,4 83,3 84,2 дни 9 10 11 12 13 14 15 16 Вер.А 97,8 96,4 97,9 99,5 98,0 97,1 98,0 98,8 Вер.В 92,4 92,2 95,6 94,2 93,1 94,6 95,4 96,4 Вер.С 87,9 90,9 90,3 89,2 91,6 92,0 90,6 92,5 дни 17 18 19 20 Вер.А 98,0 97,1 98,0 99,2 Вер.В 94,9 93,4 95,0 93,7 Вер.С 94,2 93,6 92,8 94,0 Система начинает принимать к обслуживанию запросы пользователей типа А, когда вероятность выдачи правильного ответа для этого типа достигнет 58%; запросы типа В – при 65%; типа С – при 80%. С остаточной вероятностью для каждого типа запроса выдается неверный результат. Запросы типа С обладают абсолютным приоритетом, прерванное обслуживание завершается после обслуживания приоритетного запроса. Если по какому-либо из типов запросов неверный результат выдается три раза подряд, то работы системы приостанавливается для корректировки. Запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди. Время обработки запроса зависит от типа; начальные значения параметров распределения времен обработки представлены в таблице. С момента начала обслуживания запросов каждого типа математическое ожидание времени обработки уменьшается на 0,05% от начального значения после обслуживания очередного запроса до тех пор, пока не достигнет 0,35 от начального значения; далее эта величина не изменяется. Единица измерения времени в таблице исходных данных – минуты. тип А тип В тип С обсл. А обсл. В обсл. С корректировка эксп. эксп. эксп. эксп. эксп. эксп. эксп. l=0,07 l=0,028 l=0,02 l=0,5 l=0,2 l=0,083 l=0,1 Вот что у меня получилось. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PROV1 BVARIABLE X$VER1'L'0.58 ; PROV2 BVARIABLE X$VER2'L'0.65 ; PROV3 BVARIABLE X$VER3'L'0.80 ; PROVA BVARIABLE (P10'E'11)'OR'(P10'E'12) ;булева переменная проверяющая, что заявка является заявкой типа A INITIAL X$VER1,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа A INITIAL X$VER2,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа B INITIAL X$VER3,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа C INITIAL X$MO1,2 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа A INITIAL X$MO2,5 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа B INITIAL X$MO3,12.048 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа C INITIAL X$COUNT1,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа A INITIAL X$COUNT2,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа B INITIAL X$COUNT3,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа C T_A GENERATE (Exponential(1,0,14.286)) ;генерирование заявок типа A MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER1,((-3#10^(-24)#P20^6+3#10^(-19)#P20^5-2#10^(-14)#P20^4+4#10^(-10)#P20^3-5#10^(-6)#P20^2+0.0317#P20+11.3)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа A и сохранение значения в переменной VER1 TEST NE BV$PROV1,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа A, ;если вероятность выдачи правильного ответа >=58%, то далее TRANSFER X$VER1,T_A1,T_A2 T_B GENERATE (Exponential(1,0,35.714)) ;генерирование заявок типа B MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER2,((3#10^(-20)#P20^5-3#10^(-15)#P20^4+10^(-10)#P20^3-2#10^(-6)#P20^2+0.0225#P20+3.431)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа B и сохранение значения в переменной VER2 TEST NE BV$PROV2,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа B, ;если вероятность выдачи правильного ответа >=65%, то далее TRANSFER X$VER2,T_B1,T_B2 T_C GENERATE (Exponential(1,0,50)) ;генерирование заявок типа C MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER3,((-6#10^(-16)#P20^4+4#10^(-11)#P20^3-10^(-6)#P20^2+0.0171#P20+4.0942)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа С и сохранение значения в переменной VER3 TEST NE BV$PROV3,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа С, ;если вероятность выдачи правильного ответа >=80%, то далее PRIORITY 2 ;установка приоритета запросов типа С равным 2 TRANSFER X$VER3,T_C1,T_C2 ;запись типов заявок в 10 параметр каждой заявки ;где 11,21,31 правильные ответы на запросы типа A, B, C соответственно и ;где 12,22,32 неверные ответы на запросы типа A, B, C соответственно T_A1 ASSIGN 10,11 TRANSFER ,TAB_SERV T_A2 ASSIGN 10,12 TRANSFER ,TAB_SERV T_B1 ASSIGN 10,21 TRANSFER ,TAB_SERV T_B2 ASSIGN 10,22 TRANSFER ,TAB_SERV T_C1 ASSIGN 10,31 TRANSFER ,TC_SERV T_C2 ASSIGN 10,32 TRANSFER ,TC_SERV ;Блок обслуживания заявок TAB_SERV QUEUE O1 ;помещение заявок в очередь SEIZE DEVICE_S1 ;Проверка занятости устройства DEVICE_S1 DEPART O1 ;Выход заявки из очереди О1 TEST E BV$PROVA,1,TB_SERV ;проверка, если запрос типа A, переход далее, иначе на обслуживание заявок типа B TA_SERV ADVANCE (Exponential(1,0,MO1)) ;задержка заявки типа A на время, необходимое для обработки RELEASE DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO1-,0.001 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO1,0.7,TA_ERR SAVEVALUE MO1,0.7 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TA_ERR TEST E P10,12,OUT_OK ;проверка, если тип заявки 12 (неверный ответ на запрос типа A) переход далее к счетчику SAVEVALUE COUNT1+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT1,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT1,0 TRANSFER ,OUT_OK TB_SERV ADVANCE (Exponential(1,0,MO2)) ;задержка заявки типа B на время, необходимое для обработки RELEASE DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO2-,0.0025 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO2,1.75,TB_ERR SAVEVALUE MO2,1.75 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TB_ERR TEST E P10,22,OUT_OK ;проверка, если тип заявки 22 (неверный ответ на запрос типа B) переход далее к счетчику SAVEVALUE COUNT2+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT2,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT2,0 TRANSFER ,OUT_OK TC_SERV QUEUE O_PR ;Вход заявки в очередь О_PR для запросов типа С обладающих абсолютным приоритетом PREEMPT DEVICE_S1,PR ;Прерывание обслуживания заявки первого типа в устройстве DEVICE_S1 DEPART O_PR ;Выход заявки из очереди О_PR ADVANCE (Exponential(1,0,MO3)) ;задержка заявки типа C на время, необходимое для обработки RETURN DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO3-,0.006024 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO3,4.2168,TC_ERR SAVEVALUE MO3,4.2168 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TC_ERR TEST E P10,32,OUT_OK ;проверка, если тип заявки 32 (неверный ответ на запрос типа С) переход далее к счетчику SAVEVALUE COUNT3+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT3,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT3,0 TRANSFER ,OUT_OK OUT1 TERMINATE 1 OUT_OK TERMINATE 1 START 1000000 У меня возникли следующие проблемы: 1) Как в программе прописать определенное время моделирования; 2) Как учесть то, что заявки, обслуживание которых прервано из-за обслуживания более приоритетной типа C, должны дообслуживаться; 3) Как учесть то, что запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди; 4) И как сделать так, чтобы вероятность выдачи правильного ответа не могла превышать 1. Добавлено И еще при любом числе прогонов от 1000 до 10000000 (1000, 10000, 100000, 1000000, 10000000) количество запросов типа A, которые заходят в систему всегда равно 554, по-моему это как-то странно |
Автор: TEMENb 25.05.09, 22:51 |
Los_Caballeros, я в прошлом семестре гемороился над реализацией этой задачи три дня. Сделал без плюс процедур, но блин программа вышла такая, что черт ногу сломит. 90 функциональных блоков, если мне память не изменяет. Добавлено для этого надо поставить еще один сегмент. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> что означает, что моделирование закончится через 100 емв. (не забудьте поубирать единицы их прочих терминейтов)generate 1000 terminate 1 Цитата Angellina @ блок примит сам по себе ставит заявки в список будущих событий, т.е. на дообслуживание. исключение, если вы посылаете транзакты, получившие отказ, в альтернативный блок. Впрочем даже в этом случае транзакт стоит в списке будущих событий и устройство вроде как не покидал, но я не вкурсе как его тогда вернуть на дообслуживание. Впрочем на сколько я вижу вы не посылаете на альтернативный блок => транзакты сами по себе дообслуживаются после обслуживания более приоритетного транзакта. более подробно тут.2) Как учесть то, что заявки, обслуживание которых прервано из-за обслуживания более приоритетной типа C, должны дообслуживаться; Цитата Angellina @ сразу признаюсь, что код ваш я не читал. и зарание приношу извинения, если отвечу невпопад. 3) Как учесть то, что запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди; Но. Если вам надо сделать какую то задержку по условию - попробуйте воспользоваться блоком TEST. Как ваша система выглядит во время коректировки? Если ввести переменную, которая в начале коректировки получает значение 1, а по окончании коректировки получает значение 0, то должна подойти структура вроде этой <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ну или на метку отправить - в очередь, а выход из очереди - по аналогичному условию.test ne x$kor,1 ;если флаг коректировки не равен единице (значит коректировка не осуществляется), то дальше. иначе ожидать Цитата Angellina @ А как сделать так, что бы ВЕРОЯТНОСТЬ могла превысить 1? 4) И как сделать так, чтобы вероятность выдачи правильного ответа не могла превышать 1. ![]() |
Автор: andreynov 25.05.09, 23:06 |
TEMENb, всё с тобой ясно, короче... Дольше отмазываешься, мог бы уже 5 раз объяснить, если бы хотел... |
Автор: TEMENb 25.05.09, 23:09 |
Eugen, причина забитости очередей абсолютно всегда одна и та же - высокая интенсивность входящего потока и маленькая интенсивность пропускной способности канала.. что то вроде забитого унитаза ![]() а я к сожалению вантус дома забыл.. ![]() Добавлено andreynov, в этом нет ничего удивительного. я помогаю только тем, кто что то делает сам. Ито, к сожалению не хватает времени всем помочь. отдыхать всетаки мне тоже надо. У вас же МОЙ код. я не считаю нужным его разжовывать. |
Автор: andreynov 25.05.09, 23:16 |
TEMENb, я и не отрицаю, что твой! Задача схожая, всё что требуется в моем варианте, я подправил. Отдыхать всем надо, но три строчки написать - не большой труд. |
Автор: TEMENb 25.05.09, 23:31 |
пересмотрел свой архив. оба моих решения этой программы нормально функционируют. из этого делаю вывод, что причина плохого поведения модели в ваших апгрейдах. |
Автор: andreynov 25.05.09, 23:39 |
Ну ты же знаешь эту задачу, делал уже... Посмотри, может где ошибку увидишь? Вот например, после сборки 4% деталей отправляется на предварительную обработку, но они уже собраны, их опять надо разобрать на 2 части? Хотя, я думаю не в этом дело... |
Автор: murzik 26.05.09, 11:00 |
Люди добрые помоги!!!!нужно решить задачу на языке GPSS/PS.Этот язык вообще не понимаю и не знаю!!!! Задание: В центре координации работ в одном из подразделений предполагается организовать обслуживание так же, как в системе с одним прибором и очередью; входящий поток является пуассоновсим с интенсивностью 4.5 клиентов в день. Несмотря на то, что клиенты делятся на три различных типа, время, необходимое для направления на работу, для них одинаково, распределено по экспоненциальному закону и имеет среднее значение 0.2 дня. Обслуживание клиентов происходит по принципу "первым пришел - первым обслужен". Однако важно то, что клиенты первого типа не могут долго ждать. Клиенты второго типа спешат, но не очень, а клиентам третьего типа почти безразлично время ожидания. Клиенты трех типов приходят со средней интенсивностью 1.5; 2.0 и 1.0 в день соответственно. Поскольку для всех трех типов среднее время ожидания достаточно велико, было предложено обслуживать клиентов на приоритетной основе. Сравните время ожидания (включая время обслуживания) по каждому типу клиентов при дисциплине обслуживания: • "первым пришел - первым обслужен"; • "первым пришел - первым обслужен внутри одного класса приоритетов". Зарание огромное спасибо!!!! |
Автор: tigreg 26.05.09, 12:05 |
Привет! В моей программе не работает параметр с именем ONE. В чем может быть причина? INPUT TABLE V$IN,-2,0.2,20 OUTPUT TABLE V$OUT,-50,2,50 GTD MATRIX ,1,9 INITIAL MX$GTD(1,1),0.15 INITIAL MX$GTD(1,2),-1.45 INITIAL MX$GTD(1,3),6.29 INITIAL MX$GTD(1,4),6.29 INITIAL MX$GTD(1,5),24.74 INITIAL MX$GTD(1,6),-25.18 INITIAL MX$GTD(1,7),16.21 INITIAL MX$GTD(1,8),-6.04 INITIAL MX$GTD(1,9),1 IN VARIABLE P1 OUT VARIABLE P2 ONE EQU 1 SEG2 GENERATE 10 ASSIGN 1,(COS(3.14#2#RN1/1000)+COS(3.14#2#RN2/1000)) ASSIGN 2,(MX$GTD(1,ONE)#P1) ASSIGN ONE+,1 TABULATE INPUT TABULATE OUTPUT QUEUE QUE TEST L ONE,10,SEG1 depart que TERMINATE 1 SEG1 ASSIGN ONE,1 TRANSFER ,SEG2 |
Автор: mds86 26.05.09, 12:59 |
Petroid Можешь кинуть мне эту работу, уже в пятницу сдавать! В системепередачиданныхосуществляетсяобмен пакетамиданных между пунктами А и В по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени 10 ± 3 мс. Передача пакета занимает 10 см. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетовданных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ. Смоделироватьобмен информацией в системепередачиданных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможных отказов определить необходимый для безотказной работы системы объем буферных регистров. mds86@bk.ru заранее благодарю! |
Автор: andreynov 26.05.09, 13:06 |
Цитата В системе передачи данных осуществляется обмен пакетами данных между пунктами A и B по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени между ними 10 ± 3 мс. Передача пакета занимает 10 мс. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетов данных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ. Смоделировать обмен информацией в системе передачи данных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможности отказов определить необходимый для безотказной работы системы объем буферных регистров. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 10 INITIAL X$LOST,0 ; Обнуление числа потерянных пакетов 20 SAT_FREQ TABLE C1,10000,10000,6 ; Таблица для частоты вызовов спутниковой линии 30 BUF_A STORAGE 2 ; Буфер для хранения пакетов в пункте A 40 BUF_B STORAGE 2 ; Буфер для хранения пакетов в пункте B 50 * Передача пакетов из пункта A в пункт B 60 GENERATE 10,3 ; Поступление пакетов от абонентов 70 GATE SNF BUF_A,SAT ; Если буфер заполнен не полностью 75 * (в противном случае переход на спутниковый канал) 80 ENTER BUF_A ; Помещение пакета в буфер 90 ADVANCE 10 ; Передача пакета по каналу связи 100 LEAVE BUF_A ; Удаление пакета из буфера 110 TRANSFER ,KILL ; Уничтожение пакета 120 * Передача пакетов из пункта B в пункт A 130 GENERATE 10,3 ; Поступление пакетов от абонентов 140 GATE SNF BUF_B,SAT ; Если буфер заполнен не полностью 145 * (в противном случае переход на спутниковый канал) 150 ENTER BUF_B ; Помещение пакета в буфер 160 ADVANCE 10 ; Передача пакета по каналу связи 170 LEAVE BUF_B ; Удаление пакета из буфера 180 TRANSFER ,KILL ; Уничтожение пакета 190 * Передача пакетов по спутниковому каналу 200 SAT TABULATE SAT_FREQ,1 ; Подсчет пакетов, переданных на спутниковый канал 210 GATE NU SAT_LINE,OUT ; Если спутниковая линия не занята 75 * (в противном случае переход к подсчету утерянных пакетов) 220 SEIZE SAT_LINE ; Занятие спутниковой линии пакетом 230 ADVANCE 10,5 ; Передача пакета 240 RELEASE SAT_LINE ; Освобождение спутниковой линии 250 TRANSFER ,KILL ; Уничтожение пакета 260 * Подсчет количества утерянных пакетов 270 OUT SAVEVALUE LOST+,1 280 KILL TERMINATE ; Уничтожение пакета 285 * Моделирование в течение одной минуты 290 GENERATE 1,,60000 300 TERMINATE 1 mds86. Могу скинуть с отчётом. Это была моя курсовая работа ![]() В отчёте даже блок схема-модели имеется, сам всё делал ![]() |
Автор: mds86 26.05.09, 13:41 |
andreynov,скин если не сложно! буду очень признателен!!!! БОЛЬШОЕ ТЕБЕ СПАСИБО!!! |
Автор: andreynov 26.05.09, 13:45 |
mds86, большое тебе пожалуйста ![]() куда скинуть то? |
Автор: mds86 26.05.09, 13:52 |
скинь на mds86@bk.ru! еще раз спасибо! |
Автор: Eugen 26.05.09, 14:33 |
Зачем использовать одинаковые имена для переменной пользоватея ONE EQU 1 и для параметров транзакта P$ONE? ASSIGN 2,(MX$GTD(1,ONE)#P1) - здесь обращение к переменной ASSIGN ONE+,1 - к параметру TEST L ONE,10,SEG1 - к переменной SEG1 ASSIGN ONE,1 - к пареметру возможно подойдет TEST L P$ONE,10,SEG1 andreynov не вижу разницы между следующими фрагментами. Если какой то транзакт занят ОКУ(МКУ), то он и должен его освободить Цитата 19 TRANSFER 1 0 0 Цитата TEMENb @ причина забитости очередей абсолютно всегда одна и та же - высокая интенсивность входящего потока и маленькая интенсивность пропускной способности канала.. что то вроде забитого унитаза Цитата andreynov @ Вот например, после сборки 4% деталей отправляется на предварительную обработку, но они уже собраны, их опять надо разобрать на 2 части? |
Автор: TEMENb 26.05.09, 15:10 |
Цитата Eugen @ Зачем использовать одинаковые имена для переменной пользоватея ONE EQU 1 и для параметров транзакта P$ONE? ASSIGN 2,(MX$GTD(1,ONE)#P1) - здесь обращение к переменной ASSIGN ONE+,1 - к параметру TEST L ONE,10,SEG1 - к переменной SEG1 ASSIGN ONE,1 - к пареметру Симпатично получается ) в асоциируем переменной значение 1 переменная подставляет значение 1 обращаемся к параметру 1 (переменная подставляет свое значение) обращаемся к переменной. т.е. условие вроде как если один меньше десяти )) обращаемся к параметру номер 1 И вопреки моим сомнениям, в этой конструкции мы обращаемся к так же к параметру номер 1 =) |
Автор: tigreg 26.05.09, 15:24 |
Спасибо, господа программисты... но с русским у вас что-то не то ![]() |
Автор: TEMENb 26.05.09, 15:26 |
tigreg, це тому що деякi з нас не зовсiм росiяни, швидше жителi колишнього СРСР ![]() |
Автор: tigreg 26.05.09, 15:31 |
ну, ясно тогда ![]() |
Автор: andreynov 26.05.09, 15:40 |
Eugen, ты скажи конкретно, что не так? до того, как отправить уже собранную деталь обратно на предварительную обработку (4%) нужно освободить память? я правильно понял? если так, то так уже делал, очереди такие же большие. это верное замечание, но немного не в тему |
Автор: Eugen 26.05.09, 15:51 |
SEG1 ASSIGN ONE,1 - к пареметру транзакта с именем ONE, или к параметру, чей номер указан в перемнной ONE??? TEST L P$ONE,10,SEG1 - здесь то явно указано P$ - параметр транзакта ONE ИЛИ TEST L P*ONE,10,SEG1 - здесь косвенная адресация. Обращаемся к параметру чей номер указан в переменной ONE(сработает/нет hz) что не так? Добавлено не в тему, то что транзакт не освободив МКУ помещается в список пользователя, вот это не в тему |
Автор: TEMENb 26.05.09, 16:00 |
Цитата Eugen @ SEG1 ASSIGN ONE,1 - к пареметру транзакта с именем ONE, или к параметру, чей номер указан в перемнной ONE??? TEST L P$ONE,10,SEG1 - здесь то явно указано P$ - параметр транзакта ONE ИЛИ TEST L P*ONE,10,SEG1 - здесь косвенная адресация. Обращаемся к параметру чей номер указан в переменной ONE(сработает/нет hz) что не так? Проверяй сам ) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ONE EQU 1 GENERATE 1 ASSIGN ONE,10 ASSIGN 1+,1 SAVEVALUE FIR,P1 SAVEVALUE SEC,P$ONE TERMINATE 1 START 1 Добавлено <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ONE EQU 1 GENERATE 1 ASSIGN ONE,10 SAVEVALUE FIR2,P1 SAVEVALUE SEC2,P$ONE ASSIGN 1+,1 SAVEVALUE FIR1,P1 SAVEVALUE SEC1,P$ONE TERMINATE 1 START 1 |
Автор: gvard 26.05.09, 16:08 |
Добрый вечер! Прошу помочь мне. Есть такое задание: В студенческом машинном зале расположены две мини-ЭВМ и одно устройство подготовки данных (УПД). Студенты приходят с интервалом 8±3 мин. и треть из них хочет испытать УПД и ЭВМ, а остальные только ЭВМ. Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД. Работа на УПД занимает 9±4 мин. Работа на ЭВМ - 15±10 мин.; 20% работавших на ЭВМ возвращаются для повторного использования УПД и ЭВМ и остаются при этом в машинном зале. Если студент пришел в машинный зал, а там уже есть 4 чел., то он ждет не более 15±2 мин. в очереди в машинный зал и, если нет возможности в течение этого времени начать работать, то он уходит. Смоделировать работу в машинном зале в течение 48 часов. Определить: - загрузку УПД и обеих ЭВМ, - максимальную длину очереди в машинный зал, - среднее время ожидания в очереди в машинный зал, - распределение общего времени работы студента в машинном зале, - количество студентов, которые не дождались возможности поработать и ушли. И соответственно код этой программы: SIMULATE GENERATE 8,3 ;генерация транзактов, изображающих студентов VB1 VARIABLE RN1/200+13 ;вычисление максимально возможного времени пребывания студента в очереди ASSIGN 3,0 ;разница между временем встраивания студента в очередь и текущим моментом ASSIGN 2,V$VB1 ;запись максимального времени ASSIGN 1,X1 ;время вхождения студента в очередь TEST NE X3,0,ENR ;если очередь пуста, перейти к проверке занятости машинного зала ENO QUEUE OZD ;регистрация в очереди SAVEVALUE 3+,1 ;увеличение размера очереди ADC ADVANCE 1 ;задержка студента в ожидании свободного места в машинном зале GATE SF CCL,DPT ;если в машинном зале есть место, покинуть очередь SAVEVALUE 2,X1 ;запись текущего времени SAVEVALUE 2-,P1 ;вычисление разницы между текущим временем и временем вхождения ASSIGN 3,X2 ;и запись разницы TEST LE P3,P2,DPT ;если разница превысила время ожидания, покинуть очередь, TRANSFER ,ADC ;в противном случае, снова ждать одну минуту DPT SAVEVALUE 3-,1 ;уменьшение числа студентов в очереди DEPART OZD ;студент покидает очередь TEST G P3,P2,EN1 ;если разница не превышает времени ожидания, занять место в зале, TERMINATE ;в противном случае, покинуть машинный зал ENR GATE SNF CCL,ENO ;если в машинном зале нет мест, встать в очередь, EN1 ENTER CCL ;в противном случае, занять свободное место MARK ;отметка начала работы студента в машинном зале TRANSFER .333,CP1,UP1 ;треть студентов выполняет работу на УПД и ЭВМ, остальные только на ЭВМ UP1 SEIZE UPD ;студент занимает место на УПД ADVANCE 9,4 ;и работает некоторое время, RELEASE UPD ;затем покидает УПД и CP1 ENTER COM ;занимает место за одной из двух ЭВМ, ADVANCE 15,10 ;работает в течении нескольких минут и LEAVE COM ;покидает ЭВМ TRANSFER .200,LVE,UP1 ;20%студентов возвращаются для повторного использования УПД и ЭВМ LVE LEAVE CCL ;студент покидает машинный зал TABULATE MWT ;фиксация времени пребывания студента в машинном зале TERMINATE ;студент уходит GENERATE 1 ;моделирование времени работы системы SAVEVALUE 1+,1 ;счетчик времени (в минутах) TRM TERMINATE 1 ;одна минута системного времени прошла CCL STORAGE 4 ;вместительность машинного зала COM STORAGE 2 ;количество ЭВМ MWT TABLE M1,15,15,15 ;описание таблицы распределения общего времени работы студента в машинном зале START 2880 ;работа системы в течении 48 часов (60*48=2880 часов) Подскажите пожалуйста как нужно переделать эту программу под такое задание: В студенческом машинном зале расположены две ЭВМ и одно устройство подготовки данных (УПД). Студенты приходят с интервалом в 8±2 мин, и треть из них хочет использовать УПД и ЭВМ, а остальные только ЭВМ. Допустимая очередь в машинном зале составляет четыре человека, включая работающего на УПД. Работа на УПД занимает 8±1 мин, а на ЭВМ – 17 мин. Кроме того, 20 % работавших на ЭВМ возвращается для повторного использования УПД и ЭВМ.Смоделировать работу машинного зала в течение 60 ч. Определить загрузку УПД, ЭВМ и вероятности отказа в обслуживании вследствие переполнения очереди. Определить соотношение желающих работать на ЭВМ и на УПД в очереди. Если у кого-то есть программа скиньте пожалуйста на мыло: oleg-ryabov@mail.ru Заранее благодарен. |
Автор: Eugen 26.05.09, 16:24 |
ONE EQU 1 GENERATE 1 ASSIGN ONE,10 ASSIGN 1+,1 SAVEVALUE FIR,P1 SAVEVALUE SEC,P$ONE ASSIGN P$ONE,5 ![]() SAVEVALUE THREE,p11 TERMINATE 1 START 1 нет. Зачем? |
Автор: tigreg 26.05.09, 16:51 |
Для того, чтобы параметр one принимал значения от 1 до 10. Сейчас у меня ни один транзакт не попадает в seg1, потому что каждый раз, пар-ру one присваивается значение 0. но вот если бы оно присваивалось выше generate... ONE EQU 1 SEG2 GENERATE 10 ASSIGN ONE,0 ASSIGN 1+,1 ASSIGN 3,(COS(3.14#2#RN1/1000)+COS(3.14#2#RN2/1000)) ASSIGN 4,(MX$GTD(1,P1)#P3) TABULATE INPUT TABULATE OUTPUT QUEUE QUE TEST L P1,10,SEG1 DEPART QUE TERMINATE 1 SEG1 ASSIGN 1,1 TRANSFER ,SEG2 |
Автор: TEMENb 26.05.09, 16:52 |
![]() ASSIGN A,B А и В - параметры. в качестве параметра в качестве параметров могут выступать имя, k, СЧАj, СЧА$имя или СЧА*j, где k Неотрицательная целая константа; имя Символическое имя; СЧАj Общее наименование стандартного числового атрибута, за которым следует числовое имя; СЧА$имя Общее наименование стандартного числового атрибута, за которым следует знак доллара ($) и символическое имя элемента; СЧА*j Общее наименование стандартного числового атрибута, за которым следует звездочка (*) и номер параметра, величина которого соответствует (числовому) имени элемента. шрайбер. приложение 2. Список блоков gpss. |
Автор: andreynov 26.05.09, 16:52 |
Eugen, изменил на: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MET4 ENTER SBOR ;занять устройство сборки DEPART OCH2 ;покинуть очередь 2 ASSEMBLE 2 ;собрать из двух деталей одну ADVANCE 6 ;Задержка на время обработки LEAVE SBOR ;покидаем сборку LEAVE SBOR ;пришло две детали, а входит одно. потому покидаем два раза. TRANSFER .04,MET5 ;4 % деталей возвращаются на предв. обработку ADVANCE (Exponential(1,0,8));регулировка TERMINATE ;транзакт покидает систему Всё осталось так же. Вот отчет: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - forum.10.1 Wednesday, May 27, 2009 01:50:10 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 1440.000 31 1 1 NAME VALUE MET1 2.000 MET2 5.000 MET3 13.000 MET4 15.000 MET5 6.000 OCH1 10001.000 OCH2 10003.000 POVT 25.000 PREDV 10002.000 SBOR 10000.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1 0 0 MET1 2 ADVANCE 150 1 0 3 SPLIT 149 0 0 4 TRANSFER 149 0 0 MET2 5 TRANSFER 447 0 0 MET5 6 QUEUE 421 215 0 7 SEIZE 206 0 0 8 DEPART 206 0 0 9 ADVANCE 206 1 0 10 RELEASE 205 0 0 11 QUEUE 205 0 0 12 LINK 205 0 0 MET3 13 QUEUE 218 0 0 14 LINK 218 13 0 MET4 15 ENTER 410 0 0 16 DEPART 410 0 0 17 ASSEMBLE 410 0 0 18 ADVANCE 205 1 0 19 LEAVE 204 0 0 20 LEAVE 204 0 0 21 TRANSFER 204 0 0 22 ADVANCE 12 0 0 23 TERMINATE 12 0 0 24 GENERATE 1 0 0 POVT 25 TEST 206 1 0 26 TEST 205 0 0 27 UNLINK 205 0 0 28 UNLINK 205 0 0 29 TRANSFER 205 0 0 30 GENERATE 1 0 0 31 TERMINATE 1 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY PREDV 206 0.999 6.982 1 192 0 0 0 215 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCH1 216 215 421 1 107.430 367.455 368.330 0 OCH2 21 13 423 205 12.592 42.868 83.179 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY SBOR 2 0 0 2 410 1 1.705 0.852 0 0 USER CHAIN SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME 1 13 0 12.592 218 20 83.179 2 0 1 0.000 205 1 0.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 418 0 1442.715 1 18 19 192 0 1443.715 1 9 10 1 0 1464.667 1 2 3 451 0 2880.000 451 0 30 |
Автор: Angellina 26.05.09, 17:40 |
TEMENb Спасибо за советы по первым вопросам, все получилось. А по поводу последнего: Цитата TEMENb @ Цитата Angellina @ 4) И как сделать так, чтобы вероятность выдачи правильного ответа не могла превышать 1. А как сделать так, что бы ВЕРОЯТНОСТЬ могла превысить 1? К сожалению, в моей программе именно так и получается, а еще и отрицательная бывает ![]() Поэтому я и спрашиваю. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SAVEVALUE RETRY VALUE VER1 0 -2.71921e+010 VER2 0 270912626.430 VER3 0 -5.6089e+006 |
Автор: real_live 27.05.09, 09:18 |
Всем привет и доброго времени суток. У меня следующая проблема, нужно решить задачу и смоделировать её в GPSS World (очень простая по структуре), ищу человека хорошего знающего GPSS, для её решения, за соответсвующие вознаграждение. Просто сам в запарке и не когда нормально сесть за прогу. Пишите мне на мыло filosof21veka@mail.ru или звоните на мобильный 89636488666. |
Автор: Eugen 27.05.09, 12:15 |
пиши сам Добавлено andreynov, уже лучше все работает, длиная очередь из-за малой пропускной способности здесь <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> или большого количества транзактов повторно возвращаемых к этому устройствуMET5 QUEUE OCH1 ;занять очередь 1 SEIZE PREDV ;первичная обработка DEPART OCH1 ;покинуть очередь ADVANCE 7 ;задержка на время обработки В отчете есть строки Цитата отсюда видно что 204 транзакта прошли блок TRANSFER. Из них 12 транзактов прошли вниз к ADVANCE и 192 в другой блок. Возможно это ошибка - не хватает "," в TRANSFER 21 TRANSFER 204 0 0 22 ADVANCE 12 0 0 TRANSFER A,metB,metC (TRANSFER A,,C) A - вероятность с которой транзакты направляются к метке metC. К метке metB проходят все остальные, если она не указана то вниз Добавлено Цитата tigreg @ Не понятно что Вы хотите сделать.Сейчас у меня ни один транзакт не попадает в seg1, потому что каждый раз, пар-ру one присваивается значение 0. но вот если бы оно присваивалось выше generate... Здесь TEST L P1,10,SEG1 - параметр P1 всегда равен 1. Если напишите TEST L P1,1,SEG1 - и тразакт все же перейдет к метке SEG1, то вывалится сообщение <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 05/27/09 19:47:53 SEG2 GENERATE 10 05/27/09 19:47:53 Invalid attempt to enter a GENERATE Block. |
Автор: RetiF 27.05.09, 15:49 |
Цитата На вход одноканальной системы обслуживания поступает два потока требований. Первый из них - пуассоновский с интенсивностью 0.2/мин. Во втором потоке интервалы поступления распределены равномерно на отрезке 16-40 мин. Интенсивность обслуживания требования устройством зависит от длины очереди на обслуживание. Если длина очереди меньше или равняется 3 (больше, чем 3), то время обслуживания имеет экспоненциальное распределение со средним значением 2(4) минут. Промоделировать работу системы на протяжении 100 часов Учебники читал, но разобрался плохо. Как это - "поступает два потока требований"? Также очень плохо понял, как объявляются функции. Они стандартные? Отличается только их использование в GENERATE и ADVANCE? Вот что получилось: Цитата XPDIS FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/ .75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/ .95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8 INN FUNCTION RN2,C2 0,16/1,41 GENERATE 5,FN$XPDIS GENERATE FN$INN QUEUE A TEST GE A,3,smaller TEST L A,3,bigger smaller DEPART A ADVANCE 2,FN$XPDIS TERMINATE bigger DEPART A ADVANCE 4,FN$XPDIS TERMINATE GENERATE 60 TERMINATE START 100 Не работает, как и ожидалось |
Автор: Eugen 27.05.09, 17:16 |
Работает! ![]() <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 5,FN$XPDIS TRANSFER ,met1 GENERATE FN$INN met1 QUEUE A ;TEST GE Q$A,3,smaller TEST L Q$A,3,bigger smaller SEIZE xxx DEPART A ADVANCE 2,FN$XPDIS RELEASE xxx TERMINATE bigger SEIZE xxx DEPART A ADVANCE 4,FN$XPDIS RELEASE xxx TERMINATE GENERATE 60 TERMINATE 1 START 100 |
Автор: RetiF 27.05.09, 21:10 |
Благодарю, сам бы я ещё очень долго ковырялся |
Автор: cheepus 28.05.09, 05:54 |
вот такая у меня проблема, имеется задачка: Из литейного цеха на участок обработки и сборки поступают заготовки через 20+-5мин. Треть из них обрабатывается в течение 60мин и поступает на комплектацию. Две трети заготовок обрабатывается за 30 мин перед комплектацией, которая требует наличия одной детали первого типа и двух деталей второго. После этого все три детали подаются на сборку, которая занимает 60+-2 мин для первой детали и 60+-8 мин для двух других, причем они учавствуют в сборке одновременно. При наличии на выходе одновременно всех трех деталей изделие покидает участок. Смоделировать работу участка в течение 100 часов. для решения написал вот такой код, по моему все в нем верно: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 20,5 LOGIC S KEY1 SPLIT 2.3,CH2 QUEUE 1 SEIZE OB1 ADVANCE 60 RELEASE OB1 DEPART 1 LOGIC R KEY1 SEIZE SB1 ADVANCE 60,2 RELEASE SB1 TRANSFER ,CH4 CH2 SEIZE OB2 ADVANCE 15 RELEASE OB2 QUEUE 2 GATE LR KEY1 DEPART 2 SPLIT 1,CH5 SEIZE SB2 ADVANCE 30,4 RELEASE SB2 TRANSFER ,CH4 CH5 SEIZE SB3 ADVANCE 30,4 RELEASE SB3 CH4 ASSEMBLE 3 TERMINATE GENERATE 6000 TERMINATE 1 START 1 но при синтаксической проверке GPSS A95 упорно ругается на эту строчку: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LOGIC S KEY1 заменил я ее на это: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LOGIC R KEY1 LOGIC I KEY1 теперь при синтаксическом анализе все норм. но при моделировании возникает ошибка: "Индекс блока не положительный 0" Помогите понять в чем проблема, ничего путного в голову не приходит ![]() |
Автор: andreynov 28.05.09, 06:10 |
Eugen, спасибо тебе! ![]() |
Автор: Vovik_asp 28.05.09, 10:25 |
Здравствуйте! не могли бы вы мне помочь с решением задачи На заправке есть три вида топлива для автомобилей: низкооктановый, высокооктановый бензины и дизельное топливо. Для каждого вида топлива есть свои колонки.Для низкооктанового топлива 1 колонка им заправляются 30% автомобилей скрость заправки 12л/мин кол-во топлива равномерно распределено от 5 до 60 (через 5 ) стоимость 17р за литр. Для высокооктановго топлива 2 колонки им заправляются 50% автомобилей скрость заправки 15л/мин кол-во топлива равномерно распределено от 5 до 40 (через 5 ) стоимость 21,5р за литр. Для дизельного топлива топлива 1 колонка им заправляются 20% автомобилей скрость заправки 18л/мин кол-во топлива равномерно распределено от 10 до 60 (через 5 ) стоимость 15р за литр. Прибытие автомобилей на заправку распределено согласно закону Эрланга второго порядка со средним значением 2,2 мин. В 10 % автомобилей после заправки доливают от 0,5 до 2 л масла. Доливание 0,5 л масла занимает 2 мин. Стоимость одного литра масла 40 руб. Оценить среднее время обслуживания автомобилей на заправке и выручку за пять дней работы. |
Автор: tigreg 28.05.09, 12:10 |
Скажите, можно ли из всего потока сгенерированных транзактов работать только с конкретно выбранными? например, сначала с 1-10, потом со 2-11?? |
Автор: TEMENb 28.05.09, 13:10 |
tigreg, а можно более конкретно условие задачи? приведенную постановку я вижу следующим образом: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> met generate ,,,11 assign num,n$met test l p$num,11,met1 queue qqq1 seize fff1 depart qqq1 advance 10 release fff1 met1 test g p$num,1,met2 queue qqq2 seize fff2 depart qqq2 advance 10 release fff2 met2 terminate Добавлено З.Ы.: писал на коленке Добавлено cheepus, почему бы вам не поупражняться с блоками SPLIT, ASSEMBLE и MATH? |
Автор: tigreg 28.05.09, 13:41 |
TEMENb, работаю с 9 коэффициентами, которые перемножаются на отчеты. Сначала соответственно на 1-9, затем на 2-10. Добавлено и так далее. |
Автор: TEMENb 28.05.09, 13:45 |
tigreg, ну вообщем вход по условию, а условие уже придумывай сам. |
Автор: tigreg 28.05.09, 14:09 |
ага, понятно, спасибо |
Автор: Eugen 28.05.09, 15:14 |
cheepus после запуска вашей модели Цитата CH - используется для обозначения списков пользователя 05/28/09 22:13:48 Line 14, Col 1. Invalid SNA. Expecting a Label or GPSS Verb. 05/28/09 22:13:48 CH2 SEIZE OB2 05/28/09 22:13:48 Line 25, Col 1. Invalid SNA. Expecting a Label or GPSS Verb. 05/28/09 22:13:48 CH5 SEIZE SB3 05/28/09 22:13:48 Line 28, Col 1. Invalid SNA. Expecting a Label or GPSS Verb. 05/28/09 22:13:48 CH4 ASSEMBLE 3 |
Автор: gvard 28.05.09, 15:30 |
Ребята, помогите пожалуйста! Задание: В студенческом машинном зале расположены две мини-ЭВМ и одно устройство подготовки данных (УПД). Студенты приходят с интервалом 8±2 мин. и треть из них хочет испытать УПД и ЭВМ, а остальные только ЭВМ. Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД. Работа на УПД занимает 8±1 мин. Работа на ЭВМ - 17 мин.; 20% работавших на ЭВМ возвращаются для повторного использования УПД и ЭВМ. Смоделировать работу машинного зала в течение 60ч. Определить загрузку УПД, ЭВМ и вероятности отказа в обслуживании вследствие переполнения очереди. Определить соотношение желающих работать на ЭВМ и на УПД в очереди. Вот я немного накидал: SIMULATE EVM1 EQU 1 EVM2 EQU 2 YPD EQU 3 OCH1 EQU 1 GENERATE 8,2 QUEUE OCH1 TRANSFER .67,MET1,MET2 MET1 SEIZE YPD ADVANCE 8,1 RELEASE YPD SEIZE EVM1 ADVANCE 17 RELEASE EVM1 DEPART OCH1 TERMINATE 0 MET2 SEIZE EVM2 ADVANCE 17 RELEASE EVM2 TRANSFER .2,,MET1 DEPART OCH1 TERMINATE 0 GENERATE 3600 TERMINATE 1 START 1 У меня такой вопрос как нужно организовать вот это условие: Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД. |
Автор: Eugen 28.05.09, 15:44 |
Цитата gvard @ как нужно организовать вот это условие: Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST L Q1,4,met1 QUEUE 1 машинный зал SEIZE, ADVANCE,RELEASE DEPART 1 met1 TERMINATE или <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> que STORAGE 4 xxx TRANSFER BOTH,,met1 ENTER que машинный зал SEIZE, ADVANCE,RELEASE LEAVE que met1 TERMINATE |
Автор: TEMENb 28.05.09, 15:58 |
Цитата gvard @ У меня такой вопрос как нужно организовать вот это условие: Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД. либо сделай очередь ввиде МКУ (что не совсем удобно, т.к. возвращающийся с эвм на упд в очередь может не попасть), либо поставить условие (блок TEST) на размер очереди. |
Автор: cheepus 28.05.09, 16:02 |
Eugen угу. сам уже до этого допер ![]() Спасибо всем откликнувшимся ![]() |
Автор: andreynov 28.05.09, 16:07 |
Lovely_TiGrRrA, ну ты для начала напиши код... |
Автор: bodr_07 28.05.09, 16:14 |
слушай можешь пожалуйста написать полносью код проги работающей.....(студенты приходят с интервалом 8+-2 мин..... ).Буду признателен |
Автор: bodr_07 28.05.09, 16:28 |
TEMENb можешь прислать код проги? |
Автор: Eugen 28.05.09, 16:50 |
да у тебя есть код этой проги ![]() |
Автор: TEMENb 28.05.09, 16:55 |
вот толи недосып сказыается то ли я уже вижу код этой проги в этой ветке. немного недоделаный, но всетаки. если есть желание, что бы кто то за вас наваял ваше задание да отправил - готовьте мани. |
Автор: Eugen 28.05.09, 16:59 |
да что бы есть, нужны мани = решенные задачи - все просто |
Автор: Vovik_asp 28.05.09, 19:06 |
я с кодом немного поразбирался, так то все просто только вопросс как правильно записать время которое уходит на заправку топливом?? и еще как записать процент машин идущих на разные колонки? спасибо) |
Автор: kasx 28.05.09, 19:11 |
Доброго всем времени суток! Дамы и господа, подскажите, пожалуйста решение данной задачи: "К ЭВМ подключено четыре терминала, с которых осуществляется решение задач. По команде с терминала выполняют операции редактирования, трансляции, планирования и решения. Причем, если хоть один терминал выполняет планирование, остальные вынуждены простаивать из-за нехватки оперативной памяти. Если два терминала выдают требование на решение, то оставшиеся два простаивают, и если работают три терминала, выдающих задания на трансляцию, то оставшийся терминал блокируется. Интенсивности поступления задач различных типов равны. Задачи одного типа от одного терминала поступают через экспоненциально распределенные интервалы времени со средним значением 160 с. Выполнение любой операции длится 10 с. Смоделировать работу ЭВМ в течение 4 ч. Определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов." Знаю нескольких языках, но этот, что-то не дается :/ Вот, что я смог навоять: Simulate XPDIS FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38 .8,1.6/.84,1.83/.88,2.12/9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2 .97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9999,8 RAM Stprage 4 Generate 160,FN$XPDIS Transfer (3/4), Red Transfer (2/3), Transl Transfer (1/2), Plan, Reshen plan Enter RAM, 4 Advance 10 Leave RAM, 4 Transfer , all Reshen Enter RAM, 2 Advance 10 Leave RAM, 2 Transfer , all Transl Enter RAM, 1.3 Advance 10 Leave RAM, 1.3 Transfer , all Red Enter RAM Advance 10 Leave RAM Transfer , all all Terminate Generate 160,FN$XPDIS Transfer (3/4), Red Transfer (2/3), Transl Transfer (1/2), Plan, Reshen plan Enter RAM, 4 Advance 10 Leave RAM, 4 Transfer , all Reshen Enter RAM, 2 Advance 10 Leave RAM, 2 Transfer , all Transl Enter RAM, 1.3 Advance 10 Leave RAM, 1.3 Transfer , all Red Enter RAM Advance 10 Leave RAM Transfer , all all Terminate Generate 160,FN$XPDIS Transfer (3/4), Red Transfer (2/3), Transl Transfer (1/2), Plan, Reshen plan Enter RAM, 4 Advance 10 Leave RAM, 4 Transfer , all Reshen Enter RAM, 2 Advance 10 Leave RAM, 2 Transfer , all Transl Enter RAM, 1.3 Advance 10 Leave RAM, 1.3 Transfer , all Red Enter RAM Advance 10 Leave RAM Transfer , all all Terminate Generate 160,FN$XPDIS Transfer (3/4), Red Transfer (2/3), Transl Transfer (1/2), Plan, Reshen plan Enter RAM, 4 Advance 10 Leave RAM, 4 Transfer , all Reshen Enter RAM, 2 Advance 10 Leave RAM, 2 Transfer , all Transl Enter RAM, 1.3 Advance 10 Leave RAM, 1.3 Transfer , all Red Enter RAM Advance 10 Leave RAM Transfer , all all Terminate Generate 14400 Terminate 1 Start End |
Автор: Vovik_asp 28.05.09, 19:11 |
со временем разобрался, а вот с процентами пока никак) |
Автор: Angellina 28.05.09, 19:12 |
Помогите, пожалуйста Есть следующая задача: Исходные данные к проектированию: средство реализации GPSS World. Объект моделирования – экспертная система, пополняемая записями экспертов. В начальный момент времени вероятность выдачи правильного ответа по запросу каждого типа равна нулю. По проектным прогнозам, в связи с работой экспертов по пополнению системы, со временем эксплуатации системы вероятность выдачи правильного результата возрастает. Проектные прогнозы представлены в таблице. дни 1 2 3 4 5 6 7 8 Вер.А 47,7 71,6 84,7 89,3 94,5 97,1 97,1 96,4 Вер.В 31,3 51,5 65,2 77,8 82,1 84,2 89,2 92,0 Вер.С 24,0 47,1 57,7 65,7 74,5 81,4 83,3 84,2 дни 9 10 11 12 13 14 15 16 Вер.А 97,8 96,4 97,9 99,5 98,0 97,1 98,0 98,8 Вер.В 92,4 92,2 95,6 94,2 93,1 94,6 95,4 96,4 Вер.С 87,9 90,9 90,3 89,2 91,6 92,0 90,6 92,5 дни 17 18 19 20 Вер.А 98,0 97,1 98,0 99,2 Вер.В 94,9 93,4 95,0 93,7 Вер.С 94,2 93,6 92,8 94,0 Система начинает принимать к обслуживанию запросы пользователей типа А, когда вероятность выдачи правильного ответа для этого типа достигнет 58%; запросы типа В – при 65%; типа С – при 80%. С остаточной вероятностью для каждого типа запроса выдается неверный результат. Запросы типа С обладают абсолютным приоритетом, прерванное обслуживание завершается после обслуживания приоритетного запроса. Если по какому-либо из типов запросов неверный результат выдается три раза подряд, то работы системы приостанавливается для корректировки. Запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди. Время обработки запроса зависит от типа; начальные значения параметров распределения времен обработки представлены в таблице. С момента начала обслуживания запросов каждого типа математическое ожидание времени обработки уменьшается на 0,05% от начального значения после обслуживания очередного запроса до тех пор, пока не достигнет 0,35 от начального значения; далее эта величина не изменяется. Единица измерения времени в таблице исходных данных – минуты. тип А тип В тип С обсл. А обсл. В обсл. С корректировка эксп. эксп. эксп. эксп. эксп. эксп. эксп. l=0,07 l=0,028 l=0,02 l=0,5 l=0,2 l=0,083 l=0,1 Вот что у меня получилось. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PROV1 BVARIABLE X$VER1'L'0.58 ; PROV2 BVARIABLE X$VER2'L'0.65 ; PROV3 BVARIABLE X$VER3'L'0.80 ; PROVA BVARIABLE (P10'E'11)'OR'(P10'E'12) ;булева переменная проверяющая, что заявка является заявкой типа A INITIAL X$VER1,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа A INITIAL X$VER2,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа B INITIAL X$VER3,0 ;Переменная, которая хранит вероятность выдачи верного результата на запрос типа C INITIAL X$MO1,2 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа A INITIAL X$MO2,5 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа B INITIAL X$MO3,12.048 ;Переменная, которая хранит математическое ожидание обслуживания запроса типа C INITIAL X$COUNT1,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа A INITIAL X$COUNT2,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа B INITIAL X$COUNT3,0 ;Переменная, которая хранит значение счетчика неверных ответов на запрос типа C T_A GENERATE (Exponential(1,0,14.286)) ;генерирование заявок типа A MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER1,((-3#10^(-24)#P20^6+3#10^(-19)#P20^5-2#10^(-14)#P20^4+4#10^(-10)#P20^3-5#10^(-6)#P20^2+0.0317#P20+11.3)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа A и сохранение значения в переменной VER1 TEST NE BV$PROV1,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа A, ;если вероятность выдачи правильного ответа >=58%, то далее TRANSFER X$VER1,T_A1,T_A2 T_B GENERATE (Exponential(1,0,35.714)) ;генерирование заявок типа B MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER2,((3#10^(-20)#P20^5-3#10^(-15)#P20^4+10^(-10)#P20^3-2#10^(-6)#P20^2+0.0225#P20+3.431)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа B и сохранение значения в переменной VER2 TEST NE BV$PROV2,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа B, ;если вероятность выдачи правильного ответа >=65%, то далее TRANSFER X$VER2,T_B1,T_B2 T_C GENERATE (Exponential(1,0,50)) ;генерирование заявок типа C MARK 20 ;в параметр 20 каждой заявки записывается значение времени прошедшего с начала моделирования SAVEVALUE VER3,((-6#10^(-16)#P20^4+4#10^(-11)#P20^3-10^(-6)#P20^2+0.0171#P20+4.0942)/100) ;вычисление значения вероятности выдачи правильного ответа по запросу типа С и сохранение значения в переменной VER3 TEST NE BV$PROV3,1,OUT1 ;проверка, определяющая может ли начинаться обработка запросов типа С, ;если вероятность выдачи правильного ответа >=80%, то далее PRIORITY 2 ;установка приоритета запросов типа С равным 2 TRANSFER X$VER3,T_C1,T_C2 ;запись типов заявок в 10 параметр каждой заявки ;где 11,21,31 правильные ответы на запросы типа A, B, C соответственно и ;где 12,22,32 неверные ответы на запросы типа A, B, C соответственно T_A1 ASSIGN 10,11 TRANSFER ,TAB_SERV T_A2 ASSIGN 10,12 TRANSFER ,TAB_SERV T_B1 ASSIGN 10,21 TRANSFER ,TAB_SERV T_B2 ASSIGN 10,22 TRANSFER ,TAB_SERV T_C1 ASSIGN 10,31 TRANSFER ,TC_SERV T_C2 ASSIGN 10,32 TRANSFER ,TC_SERV ;Блок обслуживания заявок TAB_SERV QUEUE O1 ;помещение заявок в очередь SEIZE DEVICE_S1 ;Проверка занятости устройства DEVICE_S1 DEPART O1 ;Выход заявки из очереди О1 TEST E BV$PROVA,1,TB_SERV ;проверка, если запрос типа A, переход далее, иначе на обслуживание заявок типа B TA_SERV ADVANCE (Exponential(1,0,MO1)) ;задержка заявки типа A на время, необходимое для обработки RELEASE DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO1-,0.001 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO1,0.7,TA_ERR SAVEVALUE MO1,0.7 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TA_ERR TEST E P10,12,OUT_OK ;проверка, если тип заявки 12 (неверный ответ на запрос типа A) переход далее к счетчику SAVEVALUE COUNT1+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT1,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT1,0 TRANSFER ,OUT_OK TB_SERV ADVANCE (Exponential(1,0,MO2)) ;задержка заявки типа B на время, необходимое для обработки RELEASE DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO2-,0.0025 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO2,1.75,TB_ERR SAVEVALUE MO2,1.75 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TB_ERR TEST E P10,22,OUT_OK ;проверка, если тип заявки 22 (неверный ответ на запрос типа B) переход далее к счетчику SAVEVALUE COUNT2+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT2,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT2,0 TRANSFER ,OUT_OK TC_SERV QUEUE O_PR ;Вход заявки в очередь О_PR для запросов типа С обладающих абсолютным приоритетом PREEMPT DEVICE_S1,PR ;Прерывание обслуживания заявки первого типа в устройстве DEVICE_S1 DEPART O_PR ;Выход заявки из очереди О_PR ADVANCE (Exponential(1,0,MO3)) ;задержка заявки типа C на время, необходимое для обработки RETURN DEVICE_S1 ;Освобождение устройства DEVICE_S1 SAVEVALUE MO3-,0.006024 ;уменьшение значения мат.ожидания на 0.05% oт начального значения после обслуживания очередного запроса TEST LE X$MO3,4.2168,TC_ERR SAVEVALUE MO3,4.2168 ;проверка, не достигло ли мат.ожидание 0,35 от начального значения ;если достигло, то мат.ожидание становится равным этому значению TC_ERR TEST E P10,32,OUT_OK ;проверка, если тип заявки 32 (неверный ответ на запрос типа С) переход далее к счетчику SAVEVALUE COUNT3+,1 ;увеличение значения счетчика на 1 TEST E X$COUNT3,3,OUT_OK ;проверка, если значение счетчика=3, то переход далее на корректировку системы и обнуление счетчика ADVANCE (Exponential(1,0,10)) SAVEVALUE COUNT3,0 TRANSFER ,OUT_OK OUT1 TERMINATE OUT_OK TERMINATE GENERATE 1000000 TERMINATE 1 START 1 Мне кажется что программа работает некорректно, например, при любом времени работы системы (или числе прогонов) на обслуживание идут всегда 554 запроса типа А. Подскажите пожалуйста: 1)Как и где прописать то, что запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди; 2)Как сделать так, чтобы вероятность выдачи правильного ответа не могла превышать 1. И как высчитать следующие характеристики системы: 1.Среднее время пребывания запросов в системе; 2.Среднеквадратическое отклонение времени пребывания запросов в системе; 3.Коэффициент использования каждой очереди; 4.Среднеквадратическое отклонение времени пребывания заявок в очереди. И, наконец, правильно ли работает программа? |
Автор: TEMENb 28.05.09, 19:17 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> RAST FUNCTION P$NUM,D9 ;функция соответствия номера участка расстоянию до участка 1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1 RAST1 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 1 2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1 RAST2 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 2 1,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1 RAST3 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 3 1,1/2,1/4,1/5,1/6,1/7,1/8,1/9,1 RAST4 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 4 1,1/2,1/3,1/5,1/6,1/7,1/8,1/9,1 RAST5 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 5 1,1/2,1/3,1/4,1/6,1/7,1/8,1/9,1 RAST6 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 6 1,1/2,1/3,1/4,1/5,1/7,1/8,1/9,1 RAST7 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 7 1,1/2,1/3,1/4,1/5,1/6,1/8,1/9,1 RAST8 FUNCTION P$NUM,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 8 1,1/2,1/3,1/4,1/5,1/6,1/7,1/9,1 RAST9 FUNCTION P$QQQ,D8 ;функция соответствия номера участка расстоянию до участка от участка номер 9 1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1 ;Следующие 10 строк нужны для того, что бы обращаться к функциям по номеру ;RAST EQU 10 ;задать в соответствие имени RAST значение 10 RAST1 EQU 1 ;задать в соответствие имени RAST1 значение 1 RAST3 EQU 2 ;задать в соответствие имени RAST2 значение 2 RAST3 EQU 3 ;задать в соответствие имени RAST3 значение 3 RAST4 EQU 4 ;задать в соответствие имени RAST4 значение 4 RAST5 EQU 5 ;задать в соответствие имени RAST5 значение 5 RAST6 EQU 6 ;задать в соответствие имени RAST6 значение 6 RAST7 EQU 7 ;задать в соответствие имени RAST7 значение 7 RAST8 EQU 8 ;задать в соответствие имени RAST8 значение 8 RAST9 EQU 9 ;задать в соответствие имени RAST9 значение 9 INITIAL X$MESTO,10 MET GENERATE ,,,9 ;генерируем 9 участков assign QQQ,1 ASSIGN NUM,N$MET ;в первый параметр полозить значение равное колличеству транзактов, прошадших сквозь метку МЕТ POVT ADVANCE (POISSON(1,(24+(3#P$NUM)))) ;ожидаем время до возникновения аварии QUEUE AVARIA ;занять очередь на тушение пожара SEIZE BRIGADA ;бригада выехала ASSIGN POS,10;X$MESTO ;В параметр POS положить значение местонахождения бригады ADVANCE (FN$RAST/(40#1000/60)) ;время на поездку к месту пожана SAVEVALUE MESTO,P$NUM ;отметить что бригада находится в новом месте DEPART AVARIA ;покинуть очередь (неачали устранять аварию) ADVANCE (NORMAL(2,40,10)) ;задержка на время устранения аварии TEST NE Q$POJAR,0,MET2 ;если в очереди есть транзакты (колличество транзактов не равно нулю), то дальше, иначе на метку ADVANCE (FN$RAST/(40#1000/60)) ;задержка на поездку на базу SAVEVALUE MESTO,10 ;отметить что бригада находится в на базе MET2 RELEASE BRIGADA ;бригада освободилась TRANSFER ,POVT ;перейти на метку GENERATE (30#24#60) ;через месяц сгенерировать транакт TERMINATE 1 ;транзакт покидает систему START 1 Если вот это раскоментировать ;RAST EQU 10 ;задать в соответствие имени RAST значение 10 то вылетает ошибка. ПОЧЕМУ??? |
Автор: Vovik_asp 28.05.09, 19:25 |
Angellina вот кое чего могу сказать может поможет.... 1)AVE.TIME (Среднее время) – среднее время пребывания одного транзакта в очереди с учетом всех входов в очередь. 2) 3)UTIL. (Коэффициент использования) 4)STD.DEV. (Среднеквадратическое отклонение) – оценка среднеквадратического отклонения |
Автор: Angellina 28.05.09, 19:43 |
Цитата Vovik_asp @ 1)AVE.TIME (Среднее время) – среднее время пребывания одного транзакта в очереди с учетом всех входов в очередь. Мне надо среднее время пребывания запросов в системе, а не в очереди Мне надо коэффициент использования каждой очереди, а такого параметра в отчете нет и наконец Цитата Vovik_asp @ 4)STD.DEV. (Среднеквадратическое отклонение) – оценка среднеквадратического отклонения С этим я согласна, но для того, чтобы в отчете был этот параметр, изначально в программе надо что-то прописывать, что??? |
Автор: EndOFlifE 29.05.09, 05:23 |
люди, помогите плиз с задачей: Станок обрабатывает поток деталей, время появления которых распределено по экспоненциальному закону со средним 2 минуты. Время обработки детали составляет 10+-5 минут с равномерным распределением. Далее детали с равной вероятностью попадают на одну из 5 линий, где происходит обработка их с затратой времени 30+-10, 30+-20, 10+-5, 40+-10, 25+-10 минут, соответственно (равномерное распределение). Проанализировать загрузку устройств в течении 8 часов работы. Определить процентное соотношение деталей на разных линиях обработки. Протабулировать время обработки детали. Мое решение таково: SELECT1 FUNCTION RN1,D5 0.2,1/0.4,2/0.6,3/0.8,4/1,5 SELECT2 FUNCTION P1,D5 1,30/2,30/3,10/4,40/5,25 SELECT3 FUNCTION P1,D5 1,10/2,20/3,5/4,10/5,10 VREMYA TABLE M1,0,60,1000 GENERATE (exponential (1,0,2)) ASSIGN 1,FN$SELECT1 SEIZE PK ADVANCE (UNIFORM (1,5,15)) RELEASE PK ASSIGN 2,FN$SELECT2 ASSIGN 3,FN$SELECT3 SEIZE P1 ADVANCE P2,P3 RELEASE P1 con VARIABLE PK TABULATE VREMYA TERMINATE GENERATE 480 TERMINATE 1 START 1 Возникает вопрос как реализовать определение процентного соотношения деталей на разных линиях обработки? Помогите плииз... |
Автор: Vovik_asp 29.05.09, 08:08 |
Angellina про коэф использования каждой очереди там есть на каждую очередь свой UTIl |
Автор: TEMENb 29.05.09, 09:32 |
либо используйте блок MARK+TABULATE+TABLE, либо сделайте еще одну очередь. вход сразу после дженерейта, выход перед терминейтом. Цитата Angellina @ Мне надо коэффициент использования каждой очереди, а такого параметра в отчете нет а как вы себе физичиски представляете такой параметр как коефициент использования очереди? если у вас очередь ограничина, то выражайте ее через МКУ (STORAGE, ENTER, LEAVE) и получите коф использования, а если нет, то не морочьте людям голову.. очередь нечто безграничное. при любом раскладе "коф использования" будет стремиться к нулю. Цитата Angellina @ С этим я согласна, но для того, чтобы в отчете был этот параметр, изначально в программе надо что-то прописывать, что??? это параметр свойтсвенный статистике по TABLE. |
Автор: RetiF 30.05.09, 13:27 |
Один небольшой вопрос. Как реализовать следующее: Цитата Поступает поток деталей. С вероятностью 0,65 поступает деталь первого типа, с вероятностью 0,35 - второго типа Будет два блока GENERATE, но как между ними разделить поток в этом соотношении? |
Автор: TEMENb 30.05.09, 16:14 |
Цитата RetiF @ Поступает поток деталей. С вероятностью 0,65 поступает деталь первого типа, с вероятностью 0,35 - второго типа <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 1 assign type,(1+(rn1>650)) или <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 1 transfer .35,met1 assign type,1 transfer ,met2 met1 assign type,2 met2................ |
Автор: Antoshka 31.05.09, 15:39 |
Как сделать выбор наименьшей очереди? Добавлено очень нужно! Так как без этого не получается решить задание... |
Автор: Eugen 31.05.09, 16:31 |
SELECТ - в этой теме и в других есть ответы, и на этот вопрос и не один раз. А этот, раз в неделю кто нибудь да обязательно напишет.. ![]() Цитата Поступает поток деталей. С вероятностью 0,65 поступает деталь первого типа, с вероятностью 0,35 - второго типа Добавлено кто нить встречался с моделями интернет-магазина, срочно нужно, возьму за 30-40$ сописанием, чтоб с текстом курсача конечно.. |
Автор: katerinka 31.05.09, 19:36 |
Знающие люди, помогите проверить работу) Задача: в 3-х этажном магазине один лифт, вмещающий не более 4 человек. на вход здания поступает поток посетителей с параметром L. они направляются на 2-й этаж с вероятностью Р1, на 3 - с Р2 (Р1+Р2 =1). попав на этаж, посетитель находится на нем в течение случайного времени Т. после этого он направляется в лифту и спускается на 1-й этаж. время перемещения лифта на один этаж равно А, посадки/высадки одного пассажира равно V. поток пассажиров распределен по нормальному закону, Т имеет экспоненциальное распределение, А - равномерное, V -нормальное Программа: ********************************************************************* *Определяем константы, запустив один транзакт ********************************************************************* generate ,,,1, savevalue Totkr,(normal(1,5,1)) savevalue Tdvig,(uniform(1,2,51)) savevalue NG,(normal(1,5,1)) terminate ********************************************************************* * Магазин ********************************************************************* generate (normal(1,5,1)) ;поток посетителей Weight FUNCTION RN1,C3 ; в зависимости от вероятности определяем на какой этаж нужно человеку ;(я не знаю, как точно эту функцию писать) =( 0.0,0/.33,1/.6,2/.7,3 savevalue pokupatel,FN$Weight queue people ;metka advance X$NG ;просто какое-то время для проверки условий test E X$lift,1,;metka test L X$Num,4,;metka savevalue Num+,1 ;wait advance X$NG test E X$pokupatel,X$lift,;wait savevalue Num-,1 depart people savevalue Tpok,(exponential(1,5,1)) advance X$Tpok queue people ;wait2 advance X$NG test E X$lift,X$pokupatel,;wait2 test L X$Num,4,;wait2 test E X$napravlenie,0,;wait2 savevalue Num+,1 test E X$lift,1 savevalue Num-,1 depart people terminate ********************************************************************* * Лифт ********************************************************************* generate (60#24) ; здесь я просто взяла сутки для работы модели savevalue lift,1 advance X$Totkr savevalue lift,0 savevalue napravlenie,1 advance X$Tdvig savevalue lift,2 advance X$Totkr savevalue lift,0 advance X$Tdvig savevalue lift,3 savevalue napravlenie,0 advance X$Totkr savevalue lift,0 advance X$Tdvig savevalue lift,2 advance X$Totkr savevalue lift,0 advance X$Tdvig terminate 1 ![]() Добавлено фу-фу совсем забылась... ![]() ![]() заранее спасибо ![]() |
Автор: bocharik 03.06.09, 20:20 |
люди добрые... проверьте пожалуйста правильно ли решена задачка... За ранее огромное спасибо. Собранные телевизоры проходят серию испытаний на станции технического контроля. Если оказывается, что функционирование телевизора ненормально, то отбракованный телевизор передают в цех наладки, где заменяют неисправные блоки. После наладки телевизор возвращают на станцию контроля и снова проверяют. Со станции технического контроля телевизоры после одной или нескольких проверок поступают в цех упаковки. Телевизоры попадают на станцию технического контроля каждые 7,0 ± 1,5 минут. На станции работают три контролера одинаковой квалификации. Операция контроля одного телевизора состоит из двух проверок: 1) для первой проверки каждому контролеру необходимо 6 ± 5 минут; 2) для второй проверки на всех контролеров имеется один тестовый прибор (продолжительность тестирования - 1,5 минут). 95% телевизоров успешно проходят проверку и попадают в цех упаковки, а другие 5 процентов - в цех наладки, в котором находится один рабочий - наладчик. Время наладки (замены) неисправных блоков распределено в соответствии с равномерным законом в интервале 35 ± 9 минут. Написать на GPSS модель функционирования этого подраздела производственной линии. Время моделирования - 8 ч. Определить сколько мест на стеллажах необходимо предусмотреть на входе станции контроля и в цехе наладки. ;задаем количество контролеров TECH_CONTROL STORAGE 3 ;поступление телевизоров GENERATE 70,15 ;станция технического контроля QUEUE Q_TECH_CONTROL ENTER TECH_CONTROL DEPART Q_TECH_CONTROL ;1-ая проверка ADVANCE 60,50 ;2-ая проверка QUEUE Q_PRIBOR SEIZE PRIBOR DEPART Q_PRIBOR ADVANCE 15 RELEASE PRIBOR LEAVE TECH_CONTROL TRANSFER 0.95,L_UPAKOVKA,L_NALADKA ;цех наладки L_NALADKA QUEUE Q_NALADKA SEIZE NALADKA DEPART Q_NALADKA ADVANCE 350,90 RELEASE NALADKA L_UPAKOVKA TERMINATE ;8-ми часовой рабочий день GENERATE 28800 TERMINATE 1 START 1 |
Автор: СоучастнеГ 04.06.09, 18:21 |
Привет! На обработку поступает поток заявок с интервалом 10±1 единица времени. Нечетные заявки обрабатываются на первом приборе со временем 15±2 единицы, четные заявки - на втором приборе со временем 17±3 единицы. Смоделировать работу системы при прохождении 100 заявок. С помощью какого оператора можно определить нечетные заявки? |
Автор: TEMENb 05.06.09, 19:39 |
СоучастнеГ, ну для этих вечей обычно делают гейт с ключем, который инвертируется сразу после прохождения гейта.. можно сделать тест, который будет отсеивать чет и нечет.. но это выглядит страшнее (не сложнее, а именно замудренней) |
Автор: bocharik 07.06.09, 18:00 |
TEMENb посмотри пожалуйста мою задачку.... Мож че дельного подсказать можешь. |
Автор: TEMENb 07.06.09, 18:08 |
bocharik, на рабзор чужого кода необходимо время. а его нет. Если есть какие то конкретные вопросы - пожалуйста. а в код считываться - ты уж прости. |
Автор: bocharik 07.06.09, 18:47 |
модель вроде работает нормально... замечаний нет вроде. просто хотел услышать твоё мнение по поводу кода. |
Автор: eaglle 08.06.09, 17:10 |
Помогите люди! Мне нужна срочно модель СМО в GPSS World. Походу простенькая, но я них не шарю. тип СМО: M/M/n, n=2; входной поток: exp; распределение времени обслуживания: normal; дисциплина обслуживания: с ограниченным временем пребывания в очереди; Исследовать: распределение времени пребывания в очереди; Параметры распределений любые. Можно расчитывать на помощь??? |
Автор: rob_tex 17.06.09, 16:05 |
Помогите пожайлуста!замученному студенту до смерти!:( необходимо решить задачу по gpss ! а я вообще ни во что тут не врубаюсь а через пару дней сдавать Условие: На сборочный участок цеха предприятия из трёх независимых источников через интервалы времени, которые имеют экспоненциальное расположение со средним значением 10 мин., поступают детали. Каждая деталь с вероятностью 0,5 должна пройти обработку на протяжении 7 мин. На сборку подаются одна обработанная и одна не обработанная детали. В результате получают готовое изделие. Процесс сборки занимает 6 мин . В каждый момент времени может собираться только одно изделие. Потом изделие поступает на регулирование, которое продолжается в среднем 8 мин (экспоненциальное распределение). Промоделировать работу цеха на протяжении 24ч. Цели моделирования: Оценить загруженность операций и распределения времени пребывания в системе. Заранее всех примного благодарю! |
Автор: Eugen 21.06.09, 15:59 |
основа для последней задачи, подробные решения здесь Задачи по GPSS (сообщение #2292025) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE (Exponential(1,0,10)) TRANSFER 0.5,,met1 SAVEVALUE count1+,1 TERMINATE met1 SEIZE - обработка ADVANCE RELEASE TEST E ((U$обработка'E'0)&&(x$count1'G'0)),1 SEIZE - сборка SAVEVALUE count1-,1 ADVANCE RELEASE SEIZE -регулировка ADVANCE RELEASE TERMINATE Добавлено опечатка TEST E ((U$сборка'E'0)&&(x$count1'G'0)),1 |
Автор: Kaze 22.06.09, 15:00 |
Всем доброго времени суток! Обращаюсь за помощью в связи с необходимостью получения зачёта. Поставили следующую задачу: написать и исследовать модель автостоянки. Никаких дополнительных условий поставлено не было. Прошу помочь с программой. P.S.: и, если можно, посоветуйте хорошую литературу по изучению статистики |
Автор: Eugen 22.06.09, 17:46 |
Венцель Е.С. например Добавлено в марте/апреле была подобная задача про стоянку, ищите в этой или других темах |
Автор: Kaze 28.06.09, 01:31 |
Вот здесь Не хватает Студенческой версии GPSS нашёл подобную задачу. Судя по комментариям автора это модель двухэтажной автостоянки. Мне нужна модель одноэтажной - что нужно удалить из этой модели?: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Etag STORAGE 7 ;количество свободных мест GENERATE (Exponential(1,0,6.5)) ;поступление автомобилей на стоянку QUEUE Stoyanka ;посановка в очередь перед стоянкой GATE SNF Etag ;проверка доступности свободных мест ENTER Etag ;въезд на стоянку ;РАСПРЕДЕЛЕНИЕ ПО МЕСТАМ GATE NU Lt_Dal_1,RDal1 TRANSFER ,RLFT1 RDal1 GATE NU Rt_Dal_1,LDal2 TRANSFER ,RRGHT1 LDal2 GATE NU Lt_Dal_2,RDal2 TRANSFER ,RLFT2 RDal2 GATE NU Rt_Dal_2,LBlig1 TRANSFER ,RRGHT2 LBlig1 GATE NU Lt_Blig_1,RBlig1 TRANSFER ,FLFT11 RBlig1 GATE NU Rt_Blig_1,RBlig2 TRANSFER ,FRGHT11 RBlig2 GATE NU Rt_Blig_2,LBlig2 TRANSFER ,FRGHT21 LBlig2 GATE NU Lt_Dal_2 TRANSFER ,FLFT21 ;НА ЛЕВОЕ ДАЛЬМЕ МЕСТО 1 RLFT1 SEIZE Lt_Dal_1 DEPART Stoyanka ADVANCE 32,2 GATE NU Rt_Blig_1,AFLFT2 PREEMPT Lt_Blig_1,,FRGHT1,,re ADVANCE 1,1 RETURN Lt_Blig_1 RELEASE Lt_Dal_1 TRANSFER ,NEX AFLFT2 GATE NU Lt_Blig_2,AFRGHT2 PREEMPT Lt_Blig_1,,FLFT2,,re ADVANCE 1,1 RETURN Lt_Blig_1 RELEASE Lt_Dal_1 TRANSFER ,NEX AFRGHT2 GATE NU Rt_Blig_2,ASVOB PREEMPT Lt_Blig_1,,FRGHT2,,re ADVANCE 1,1 RETURN Lt_Blig_1 RELEASE Lt_Dal_1 TRANSFER ,NEX ASVOB RELEASE Lt_Dal_1 TRANSFER ,NEX ;НА ПРАВОЕ ДАЛЬНЕЕ МЕСТО 1 RRGHT1 SEIZE Rt_Dal_1 DEPART Stoyanka ADVANCE 43,2 GATE NU Lt_Blig_1,BFRGHT2 PREEMPT Rt_Blig_1,,FLFT1,,re ADVANCE 1,1 RETURN Rt_Blig_1 RELEASE Rt_Dal_1 TRANSFER ,NEX BFRGHT2 GATE NU Rt_Blig_2,BFLFT2 PREEMPT Rt_Blig_1,,FRGHT2,,re ADVANCE 1,1 RETURN Rt_Blig_1 RELEASE Rt_Dal_1 TRANSFER ,NEX BFLFT2 GATE NU Lt_Blig_2,BSVOB PREEMPT Rt_Blig_1,,FLFT2,,re ADVANCE 1,1 RETURN Rt_Blig_1 RELEASE Rt_Dal_1 TRANSFER ,NEX BSVOB RELEASE Rt_Dal_1 TRANSFER ,NEX ;НА ЛЕВОЕ ДАЛЬНЕЕ МЕСТО 2 RLFT2 SEIZE Lt_Dal_2 DEPART Stoyanka ADVANCE 32,2 GATE NU Rt_Blig_2,CFLFT1 PREEMPT Lt_Blig_2,,FRGHT2,,re ADVANCE 1,1 RETURN Lt_Blig_2 RELEASE Lt_Dal_2 TRANSFER ,NEX CFLFT1 GATE NU Lt_Blig_1,CFRGHT1 PREEMPT Lt_Blig_2,,FLFT1,,re ADVANCE 1,1 RETURN Lt_Blig_2 RELEASE Lt_Dal_2 TRANSFER ,NEX CFRGHT1 GATE NU Rt_Blig_1,CSVOB PREEMPT Lt_Blig_2,,FRGHT1,,re ADVANCE 1,1 RETURN Lt_Blig_2 RELEASE Lt_Dal_2 TRANSFER ,NEX CSVOB RELEASE Lt_Dal_2 TRANSFER ,NEX ;НА ПРАВОЕ ДАЛЬНЕЕ МЕСТО 2 RRGHT2 SEIZE Rt_Dal_2 DEPART Stoyanka ADVANCE 43,2 GATE NU Lt_Blig_2,DFRGHT1 PREEMPT Rt_Blig_2,,FLFT2,,re ADVANCE 1,1 RETURN Rt_Blig_2 RELEASE Rt_Dal_2 TRANSFER ,NEX DFRGHT1 GATE NU Rt_Blig_1,DFLFT1 PREEMPT Rt_Blig_2,,FRGHT1,,re ADVANCE 1,1 RETURN Rt_Blig_2 RELEASE Rt_Dal_2 TRANSFER ,NEX DFLFT1 GATE NU Lt_Blig_1,DSVOB PREEMPT Rt_Blig_2,,FLFT1,,re ADVANCE 1,1 RETURN Rt_Blig_2 RELEASE Rt_Dal_2 TRANSFER ,NEX DSVOB RELEASE Rt_Dal_2 TRANSFER ,NEX ;НА ЛЕВОЕ БЛИЖНЕЕ МЕСТО 1 FLFT11 DEPART Stoyanka FLFT1 SEIZE Lt_Blig_1 ADVANCE 32,2 RELEASE Lt_Blig_1 TRANSFER ,NEX ;НА ПРАВОЕ БЛИЖНЕЕ МЕСТО 1 FRGHT11 DEPART Stoyanka FRGHT1 SEIZE Rt_Blig_1 ADVANCE 34,2 RELEASE Rt_Blig_1 TRANSFER ,NEX ;НА ЛЕВОЕ БЛИЖНЕ МЕСТО 2 FLFT21 DEPART Stoyanka FLFT2 SEIZE Lt_Blig_2 ADVANCE 32,2 RELEASE Lt_Blig_2 TRANSFER ,NEX ;НА ПРАВОЕ БЛИЖНЕ МЕСТО 2 FRGHT21 DEPART Stoyanka FRGHT2 SEIZE Rt_Blig_2 ADVANCE 34,2 RELEASE Rt_Blig_2 TRANSFER ,NEX ;ВЫХОД СО СТОЯНКИ NEX SAVEVALUE Ave_Queue,QT$Stoyanka LEAVE Etag TERMINATE ;РЕЖИМ РАБОТЫ GENERATE 480 TERMINATE 1 START 1 P.S.:ещё хотелось бы чтобы были комментарии (что происходит в каждой строчке), блок-схема работы модели и схема самой СМО. Конечно же всё это не за простое Спасибо. P.P.S.:завтра сдавать, помогите плиз. |
Автор: TM_GreeN 08.11.09, 15:19 |
Всем вечер добрый! ребята,помогите пожалуйста дописать прогу..пишу на GPSS первый раз в жизни,так что не критикуйте сильно. условие задачи: Система автоматизации проектирования (САПР) создана на базе ЭВМ, функционирующей в режиме множественного доступа. Пять инженеров-проектировщиков с помощью своих дисплеев одновремен- но и независимо проводят диалог с ЭВМ, определяя очередной вариант расчета. Каждый диалог состоит из 10 циклов ввода-вывода данных. Во время одного цикла происходит следующее: за 10 ± 5с инженер обдумывает и вводит текст строки; в течение 2 с работает процессор ЭВМ, подготавливая текст ответа; в течение 5 с текст ответа выводится на дисплей. После ввода 11-й строки начинается работа процессора по расчету конструкции и продолжается 30± 10 с. За 5 с результат расчета выводится на экран, после чего инженер в течение 15 ± 5 с ана- лизирует его и начинает новый диалог. Операции по подготовке текста ответа имеют абсолютный приоритет над расчетными, т. е. прерывают выполнение последних. Смоделировать процесс работы САПР при условии, что расчет вариантов конструкции повторяется 100 раз. Определить среднее время выполнения диалога и расчетных операций, а также коэффициент загрузки про- цессора. листинг того,что я сумел написать: GENERATE 15,5,,5000,1; генерируются строки каждые 10(+-5)секунд.Имеют максимальный приоритет QUEUE QSTRING; введенная встает в очередь на подготовку текста ответа SEIZE PROC; строка занимает процессор ЭВМ DEPART QSTRING; строка уходит из очереди на подготовку текста ответа по принципу FIFO ADVANCE 2; подготавливается текст ответа в течение 2 секунд RELEASE PROC; освобождается процессор ЭВМ TERMINATE 0; GENERATE 170,50,,500,2; генерируются варианты расчета.имеют приоритет ниже,чем подготовка текста ответа QUEUE QBLOCK; варианты расчета встают в очередь на обработку процессором ЭВМ SEIZE PROC; занимается процессор ЭВМ(в случае,если он не занят обработкой текста ответа) DEPART QBLOCK; вариант расчета уходит из очереди по принципу FIFO ADVANCE 50,15; процессор ЭВМ расчитывает конструкцию и выводит данные на проверку инженером RELEASE PROC; освобождается процессор ЭВМ TERMINATE 1; после каждой обработки варианта конструкции ,количество повторов уменьшается на 1 TERMINATE 1; START 500 ; процесс моделируется для 500 расчетов конструкции(по 100 от каждого инженера) |
Автор: Антонина 11.11.09, 16:48 |
Проверьте,пожалуйста правильность написания программного кода. вот условия задачи:Распределенный банк данных организован на базе трех удаленных друг от друга вычислительных центров А, В и С. Все центры связаны между собой каналами передачи данных, рабо¬тающими в дуплексном режиме независимо друг от друга. В каж¬дый из центров с интервалом времени 50 ± 20 мин поступают заяв¬ки на проведение информационного поиска. Если ЭВМ центра, получившего заявку от пользователя, сво¬бодна, в течение 2 ± 1 мин производится ее предварительная обра¬ботка, в результате которой формируются запросы для центров А, В и С. В центре, получившем заявку от пользователя, начинается поиск информации по запросу, а на другие центры по соответст¬вующим каналам передаются за 1 мин тексты запросов, после чего там также может начаться поиск информации, который продолжа¬ется: в центре А — 5 ±2 мин, в центре В — 10+ 2 мин, в центре С — 15 ± 2 мин. Тексты ответов передаются за 2 мин по соответст¬вующим каналам в центр, получивший заявку на поиск. Заявка считается выполненной, если получены ответы от всех трех цен¬тров. Каналы при своей работе не используют ресурсы ЭВМ цен¬тров. Смоделировать процесс функционирования распределенного банка данных при условии, что всего обслуживается 100 заявок. Подсчитать число заявок, поступивших и обслуженных в каждом центре. Определить коэффициенты загрузки ЭВМ центров. [COLOR=purple]Вот что у меня получилось: 2.2. Текст программы – модели. Generate 50,20;Поступление заявок на проведение информационного поиска с интервалом 50±20 минуты Transfer .100 Gte1 ;Безусловный переход к ЭВМ 1 Transfer .100 Gte2 ;Безусловный переход к ЭВМ 2 Transfer .100 Gte3 ;Безусловный переход к ЭВМ 3 Gte1 Gate NU Evm1,Gte2 ;Проверяется свободна ли ЭВМ1 QUEUE OCH1 ;Занять очередь в ЭВМ1 Seize Evm1 ;Занять ЭВМ1 Advance 7,3 ; Задержка на предварительную обработку запроса и поиск информации Release Evm1 ;Освобождение устройства ЭВМ1 Advance 2 ;Задержка на передачу текстов ответов DEPART OCH1 ;Покинуть очередь в ЭВМ1 Transfer ,Out ;Переход к метке ОUT (удаление транзакта) Gte2 Gate NU Evm2,Gte3 ;Проверяется свободна ли ЭВМ2 QUEUE OCH2 ;Занять очередь в ЭВМ2 Seize Evm2 ;Занять ЭВМ2 Advance 13,3 ; Задержка на предварительную обработку запроса и поиск информации Release Evm2 ; Задержка на предварительную обработку запроса и поиск информации Advance 2 ;Задержка на передачу текстов ответов DEPART OCH2 ;Покинуть очередь в ЭВМ1 Transfer ,Out ;Переход к метке ОUT (удаление транзакта) Gte3 Gate NU Evm3,Gte1 ;Проверяется свободна ли ЭВМ3 QUEUE OCH3 ;Занять очередь в ЭВМ3 Seize Evm3 ;Занять ЭВМ3 Advance 18,3 ; Задержка на предварительную обработку запроса и поиск информации Release Evm3 ; Задержка на предварительную обработку запроса и поиск информации Advance 2 ;Задержка на передачу текстов ответов DEPART OCH3 ;Покинуть очередь в ЭВМ1 Out Terminate 1 ;Конец симуляции |
Автор: TEMENb 11.11.09, 16:59 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Generate 1 Transfer .100 Gte1 Transfer .100 Gte2 Transfer .100 Gte3 terminate Gte1 terminate Gte2 terminate Gte3 terminate generate 100000 terminate 1 start 1 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 99999 0 0 2 TRANSFER 99999 0 0 3 TRANSFER 10094 0 0 4 TRANSFER 997 0 0 5 TERMINATE 98 0 0 GTE1 6 TERMINATE 89905 0 0 GTE2 7 TERMINATE 9097 0 0 GTE3 8 TERMINATE 899 0 0 9 GENERATE 1 0 0 10 TERMINATE 1 0 0 дальше читать не стал |
Автор: Антонина 12.11.09, 10:55 |
ну мне же надо сгенерировать 100 заявок.я что-то ничего не поняла.объясни,пожалуйста. |
Автор: Eugen 13.11.09, 18:08 |
за это отвечает четвертый параметр блока GENERATE |
Автор: Антонина 14.11.09, 15:14 |
так правильно решено или нет?если нет,то в каком месте ошибка? |
Автор: TEMENb 14.11.09, 15:17 |
да на самом старте ошибка. должно быть <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Generate 50,20;Поступление заявок на проведение информационного поиска с интервалом 50±20 минуты Transfer ,Gte1 ;Безусловный переход к ЭВМ 1 Generate 50,20;Поступление заявок на проведение информационного поиска с интервалом 50±20 минуты Transfer ,Gte2 ;Безусловный переход к ЭВМ 2 Generate 50,20;Поступление заявок на проведение информационного поиска с интервалом 50±20 минуты Transfer ,Gte3 ;Безусловный переход к ЭВМ 3 Я смысла не вижу читать дальше, если, даже после явного указания, ошибка не была выявлена вами Добавлено и не сгенерировать 100 транзактов, а обслужить сто транзактов. Это совершенно разные вещи. Собственно условие завершения моделлирвоания. Добавлено для чего там нужны гейты - совесем вообще не понятно. вы проследите как должен двигатся один транзакт 1. попадает в первую эвм 2. проходит предварительную обработку 3. делается две копии и отправляются во торую и третью (у вас начиная с этого места несоответствие) 4. поиск в первой, второй и третьей и передача на первую эвм 5. склейка трех транзактов в один - обычный асембл. три транзакта одного семейства 6. задание считается выполненым аналогично для второй и третьей |
Автор: Антонина 14.11.09, 19:23 |
Спасибо большое.значит я даже задание неправильно поняла.ну что поделаешь?первый раз с этим сталкиваюсь. Добавлено а гейты можно оставить или нужно убрать? |
Автор: Антонина 14.11.09, 20:16 |
а каким образом сделать две копии и склеить три транзакта?можешь мне одну ЭВМ разобрать? |
Автор: TEMENb 15.11.09, 00:31 |
копии делаются с помощью SPLIT склейка с помощью ACCEMBLE |
Автор: Антонина 15.11.09, 12:59 |
Я попыталась сделать для первой эвм.проверь,пожалуйста: Gte1 QUEUE OCH1 Seize Evm1 Advance 2,1 Split 2,Gte2,Gte3 Advance 5,2 Release Evm1 Seize Evm2 Advance 11,2 Release Evm2 Seize Evm3 Advance 16,2 Release Evm3 Advance 2 ASSEMBLE 3 DEPART OCH1 Transfer ,Out |
Автор: TEMENb 15.11.09, 13:09 |
честно.. я смотрю на ЭТО и не понимаю как ЭТО должно работать..... собственно даже генератора нету. |
Автор: Антонина 17.11.09, 14:57 |
Здраствуйте,эта программа написана для GPSS PC.Ответьте,пожалуйста что в ней нужно изменить чтобы она работала в GPSS World? Требуется промоделировать решение задач в двухпроцессорной ЭВМ с общей памятью, разделенной на восемь блоков. Каждой задаче отводится при ее решении один блок. Интервалы времени между поступлениями задач распределены равномерно в интервале [2,14] единиц времени, время обработки порции информации подчинено экспоненциальному закону с интенсивностью v1=5 в процессоре CPU1 и с v2=2 в процессоре CPU2. Между обработкой порций с вероятностью 0.6 возможно обращение к внешней памяти, в которой время обслуживания распределено равномерно в диапазоне [2,8]. С вероятностью 0.4 задачи оказываются решенными и покидают систему. Моделирование выполнить на отрезке времени, соответствующем решению не менее 100 задач. Ниже текст программы на языке GPSS. MEM STORAGE 8 EXP FUNCTION RN1,C12 0,0/.2,.22/.4,.51/.5,.69/.6,.92/.7,1.2/.8,1.61/ .9,2.3/.95,3/.99,4.6/.999,6.9/1,100 GENERATE 8,6,,100 QUEUE A1 ENTER MEM,1 DEPART A1 M6 QUEUE A2 TRANSFER BOTH,M1,M2 M1 SEIZE CPU1 DEPART A2 ADVANCE 5,FN*EXP RELEASE CPU1 TRANSFER ,M3 M2 SEIZE CPU2 DEPART A2 ADVANCE 2,FN*EXP RELEASE CPU2 M3 TRANSFER .6,M5,M4 M4 QUEUE A3 SEIZE DISK DEPART A3 ADVANCE 5,3 RELEASE DISK TRANSFER ,M6 M5 LEAVE MEM,1 TERMINATE 1 |
Автор: TEMENb 17.11.09, 14:59 |
абсолютно все 100% задач, работающих на пс работают и на верде. обратного сказать не могу ) |
Автор: Антонина 17.11.09, 15:04 |
может быть,но он мне кучу ошибок выдал,такого плана: 11/17/09 18:05:45 Model Translation Begun. 11/17/09 18:05:45 Line 2, Col 4. Invalid keyword. Expecting a Label or GPSS Verb. 11/17/09 18:05:45 EXP FUNCTION RN1,C12 11/17/09 18:05:45 Line 3, Col 2. Line numbers must begin in the first column. 11/17/09 18:05:45 0,0/.2,.22/.4,.51/.5,.69/.6,.92/.7,1.2/.8,1.61/ 11/17/09 18:05:45 Line 4, Col 2. Line numbers must begin in the first column. 11/17/09 18:05:45 .9,2.3/.95,3/.99,4.6/.999,6.9/1,100 11/17/09 18:05:45 Line 11, Col 4. Invalid SNA. Expecting a Label or GPSS Verb. 11/17/09 18:05:45 M1 SEIZE CPU1 11/17/09 18:05:45 Line 13, Col 25. Invalid SNA Entity Specifier. 11/17/09 18:05:45 ADVANCE 5,FN*EXP 11/17/09 18:05:45 Line 18, Col 25. Invalid SNA Entity Specifier. 11/17/09 18:05:45 ADVANCE 2,FN*EXP 11/17/09 18:05:45 **** Model Translation Aborted **** |
Автор: TEMENb 17.11.09, 15:08 |
EXP замените на expon по всему тексту программы M1 замените на met1 по всему тексту программы FN*EXP на FN$EXPon вообще на писЯх она тоже работать не должна |
Автор: unaware 18.11.09, 08:51 |
Здравствуйте. Подскажите как сделать пункт b? Задача такая: оценить надежность изделия (в соответствии с вариантом), состоящего из трех узлов и устройств A, B, C, D, E, F. Узел выходит из строя, когда выходят из строя все устройства, входящие в узел. Изделие выходит из строя, когда отказывает хотя бы один из его узлов. Вероятности безотказной работы всех устройств равны соответственно: P(A) = 0,8; P(B) = 0,7; P(C) = 0,95; P(D) = 0,85; P(E) = 0,9; P(F) = 0,7. 1 узел состоит из А,В,С; 2 узел - из D; 3 узел - из E,F. a. Рассчитать аналитически вероятность безотказной работы всей системы. b. Оценить вероятность безотказной работы системы с помощью имитационных методов. Количество имитационных экспериментов N = 100. Аналитически вероятность расчитал быстро. Что предпринять для решения b? |
Автор: TEMENb 18.11.09, 08:54 |
программу надо писать. большую и сложную )) Добавлено Ничего подобного не писал ранее. ну решение мне видится как то так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PA EQU 800 PB EQU 700 PC EQU 950 PD EQU 850 PE EQU 900 PF EQU 700 VPA VARIABLE RN1>PA VPB VARIABLE RN2>PB VPC VARIABLE RN3>PC VPD VARIABLE RN4>PD VPE VARIABLE RN5>PE VPF VARIABLE RN6>PF generate ,,,100 ASSIGN Y1,((V$VPA+V$VPA+V$VPA)=3) ASSIGN Y2,V$VPD ASSIGN Y3,((V$VPE+V$VPF)=2) SAVEVALUE VER+,((P$Y1+P$Y2+P$Y3)>0) terminate 1 start 100 вероятность безотказной работы получилась 0,83 Добавлено из моих познаний теории вероятности, должно быть нечто такое abc=(1-pa)(1-pb)(1-pc) d=1-pd ef=(1-pe)(1-pf) P=(1-abc)(1-d)(1-ef)=0.822 |
Автор: unaware 18.11.09, 11:03 |
Уважаемый TEMENb, спасибо за такой быстрый ответ. Скажу честно: не ожидал такой оперативности! |
Автор: Mur-Mur 29.11.09, 16:35 |
Здравствуйте! Очень нужна Ваша помощь! Проверьте, пожалуйста, то что мне удалось сотворить ( в этом деле знания и умения мои довольно скудны): Система автоматизации проектирования (САПР) создана на базе ЭВМ, функционирующей в режиме множествен¬ного доступа. Пять инженеров проектировщиков с помощью своих дисплеев одновременно и независимо проводят диалог с ЭВМ, определяя очередной вариант расчета. Каждый диалог со¬стоит из 10 циклов ввода-вывода данных. Во время одного цикла происходит следующее: за 10 ± 5 с.Инженер обдумывает и вводит текст строки; в течение 2 с работает процессор ЭВМ, подготавли¬вая текст ответа; в течение 5 с текст ответа выводится на дисплей. После ввода 11 -й строки начинается работа процессора по расчету конструкции и продолжается 30 ± 10 с. За 5 с результат расчета вы¬водится на экран, после чего инженер в течение 15 ± 5 с анализи¬рует его и начинает новый диалог. Операции по подготовке текста ответа имеют абсолютный приоритет над расчётными, т. е. преры¬вают выполнение последних. Смоделировать процесс работы САПР при условии, что расчет вариантов конструкции повторяется 100 раз. Определить среднее время выполнения диалога и расчетных операций, а также коэф¬фициент загрузки процессора. Текст программы: Generate 10,5; генерируются транзакты Queue PROС; занятие очереди Depart PROС; обеспечивает освобождение в очереди Seize PROС; занятие устройства DIS STORAGE 5; ENTER DIS; вхождение транзакта в накопитель Advance 2,0; задерживает транзакт на время 2,0 Advance 5,0; задерживает транзакт на время 5,0 Priority 1; присваивает входящему транзакту приоритет Test E DIS,11,C; проверяет соотношение C Advance 30,10; задерживает транзакт на время 30,10 Advance 5,0; задерживает транзакт на время 5,0 Advance 15,5; задерживает транзакт на время 15,5; LEAVE DIS; освобождение памяти Release PROС; освобождает усройство с 10 циклами Transfer 10,T; изменяет направление движения транзактов согласно режиму САПР T Terminate 1; уничтожение транзактов |
Автор: AngelOFFgrief 30.11.09, 23:04 |
Здравствуйте. Подскажите пожалуйста как сделать, чтобы прерывание выполнялось через определенное время? |
Автор: TEMENb 30.11.09, 23:07 |
смотря что вы подразумеваете под прерыванием. окончание модаллирования? сбор статистики через определенные периоды времени? вообщем уточните вопрос. |
Автор: AngelOFFgrief 30.11.09, 23:48 |
Идет моделирование обработки задачи на ЦПУ, затем через определенное время она должна прерываться и ставится в конец очереди,а на ее место приходит другая и т.д.И вот я никак не пойму как сделать так чтоб блок прерывания срабатывал через определенные промежуток времени. |
Автор: TEMENb 01.12.09, 00:03 |
ну вот пример на скорую руку <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 50 assign tim,(40+20#rn1/1000) ;время обработки 40+-20 met1 queue och seize zp depart och mark povt advance 1 assign tim-,1 test e ((p$tim<=0)|(m1>=10)),1,povt ;квант работы процессора - 10. Если время вышло или время обработки превысило 10 - то дальше, иначе на метку release zp test le p$tim,0,met1 terminate 1 start 100 или так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 50 assign tim,(40+20#rn1/1000) ;время обработки 40+-20 met1 assign ttt,10 ;квант работы процессора - 10 queue och seize zp depart och povt advance 1 assign tim-,1 test g p$tim,0,met3 ;время вышло - на метку loop ttt,povt ;делаем цикл met3 release zp test le p$tim,0,met1 terminate 1 start 100 Добавлено возможно вам надо не квантовать время процессора, а выход по какому то событию.. тогда просто меняете условие (m1>=10) на нужное вам и вуаля. Добавлено вообще, на самом деле способов значительно больше двух. можно прерывать операторами, например премитом или фавайлом...или накомбинировать со списками пользователя ) Все зависит от конкретной задачи. |
Автор: WoodenArow 02.12.09, 05:07 |
Всем здрасти! Народ выручайте!нужна помощь в решении задачи Поток самолетов, требующих посадки в аэропорту, - пуасоновский с интенсивностью 15 самолетов в час. В аэропорту есть 4 посадочных полос. самолет, совершивший посадкку на полосу, освобождает ее через 70 минут. Если самолет требующий посадки, застает все полосы занятыми, то он становится в "очередь" самолетов, ожидающих посадки. Через 80+-10 минут после затребования посадки самолет нуждается в дозаправке. что обходится аэропорту в 1200+-250 ед. стоимости. После 120 минут безуспешного ожидания самолет отправляется на посадку в другой аэропорт. За каждый самолет, совершивший посадку без жидания, аэропорт получает прибыль 2500 ед.стоимости. За каждый самолет, севший после ожидания, - 1200+-200 ед. стоимости. эксплуатация одной посадочной полосы обходится в 5000000 ед.стоимости в месяц. Определить количество посадочных полос, при котором достигается максимальная экономическая эффективность. Я хз чо с ней делать, а сдавать надо ![]() ![]() ![]() Хелп ми!!!! |
Автор: AngelOFFgrief 02.12.09, 11:55 |
Спасибо большое,теперь все получилось ![]() |
Автор: Nort0n 02.12.09, 13:31 |
Добрый день, господа. Сел я тут за GPSS и немножко офигел, т.к. ранее, никогда не писал на языке, на котором можно сделать только структуру ![]() В свете этого, выкладываю Вам на рассмотрение "свой" опус, который был мною скопипащен, отредактирован и адаптирован. Посомтрите, плз, если не сложно, соответствует ли код исходному заданию. Задание. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Распределенный банк данных системы сбора информации организован на базе ЭВМ, соединенных дуплексным каналом связи. Поступающий запрос обрабатывается на первой ЭВМ [B]и с вероятностью 50% необходимая информация обнаруживается на месте[/B]. В противном случае необходима посылка на вторую ЭВМ. Запросы поступают через 3 сек, первичная обработка запроса занимает 2 сек., выдача ответа требует 2 сек., передача по каналу связи занимает 3 сек. Временные характеристики первой ЭВМ аналогичны второй. Смоделировать прохождение 400 запросов. Определить необходимую ёмкость накопителей перед ЭВМ, обеспечивающую безотказную работу системы, и функцию распределения времени обслуживания заявки. ЗЫ я до сих пор не осознал реализации условия, выделенного жирным шрифтом. Понятно, что надо запихать его в проверку занятости/свободности приборов, но как это сделать - ума не приложу. ЗЫЫ И ещё вопрос, если у меня время "постоянное", т.е. не плавает от .. и до .., то обязательно ли писАть в ADVANCE 0 после запятой? Код. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> evm1 Storage 1 evm2 Storage 2 Generate 3, 0 ;3 сек QUEUE OCH ;очередь на обслуживание TEST G (R$evm1 + R$evm2),0 ;число свободных приборов> 0 TRANSFER BOTH, ,label2 ; если может занять место на первом приборе - занимает, ; Иначе на метку label2 и занимает там место ENTER evm1 DEPART OCH ADVANCE 2,0 ;время обработки заявки LEAVE evm1 ADVANCE 2 ;ответ по перовму прибору LEAVE evm1 TERMINATE ; Работа второго прибора ADVANCE 3,0 ; Время на передачу заявки от 1-го прибора до 2-го label2 ENTER evm2 DEPART OCH ADVANCE 2,0 ;время обработки заявки LEAVE evm2 ADVANCE 2 ;время ответа по второму прибору LEAVE evm2 TERMINATE GENERATE 400 ; для 400 заявок TERMINATE 1 START 1 |
Автор: TEMENb 02.12.09, 13:59 |
Цитата Nort0n @ ЗЫ я до сих пор не осознал реализации условия, выделенного жирным шрифтом. Понятно, что надо запихать его в проверку занятости/свободности приборов, но как это сделать - ума не приложу. не знаю для чего.. но если очень нужно - <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> test e f$ystr,0,met ;если устройство свободно - то дальше, иначе на метку <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> test e r$ystr,0,met ;если все каналы устройства заняты- то дальше, иначе на метку <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> test e s$ystr,0,met ;если все каналы устройства свободны - то дальше, иначе на метку Цитата Nort0n @ ЗЫЫ И ещё вопрос, если у меня время "постоянное", т.е. не плавает от .. и до .., то обязательно ли писАть в ADVANCE 0 после запятой? в жпсс не много блоков, которые имеют обязательные параметры. адванс в число этих блоков не входит. т.е. возможно встретить адванс без параметров вообще, что будет эквивалентно "адванс 0" Проверять правильность реализации не буду ибо время. |
Автор: museik 02.12.09, 14:03 |
Всем привет. Помогите пожалуйста разобраться с моделированием в среде GPSS. Есть задача: Моделирование работы операционной системы пакетного режима коллективного пользования с чередованием фаз. Все сводится к проектированию выполнения N числа задач в мультипрограммной системе Суть проблемы: в GPSS необходимо написать программу, выводящую динамическую временную диаграмму выполнения задач. Есть блок-схема выполнения задач и рисунок как это должно выглядеть. Вообщем-то сложность вся в построении этой диаграммы. Если кто-нибудь может помочь, пожалуйста свяжитесь со мной. Аська: 391037687 Мыло: extremez4z@yandex.ru или же на сайте в ЛС Заранее спасибо! |
Автор: Ogram 06.12.09, 12:34 |
Всем привет! Дали задание на GPSS/PС. Магистраль передачи данных состоит из двух каналов (основного и резервного) и общего накопителя. При нормальной работе сообщения передаются по основному каналу за 7±3 с. В основном канале происходят сбои через интервалы времени 200±35 с. Если сбой происходит во время передачи, то за 2 с запускается запасной канал, который передает прерванное сообщение с самого начала. Восстановление основного канала занимает 23±7 с. После восстановления резервный канал выключается и основной канал продолжает работу с очередного сообщения. Сообщения поступают через 9±4 с и остаются в накопителе до окончания передачи. В случае сбоя передаваемое сообщение передается повторно по запасному каналу. Смоделировать работу магистрали передачи данных в течение 1 ч. Определить загрузку запасного канала, частоту отказов канала и число прерванных сообщений. Определить функцию распределения времени передачи сообщений по магистрали. Ногами не бейте плиз, на заочке ниче не объясняют ![]() Вот что у меня получается: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SIMULATE 10 GENERATE 3600; Передача сообщений в течение часа 20 TERMINATE 1 30 GENERATE 9,4; Поступление сообщений через 9±4 с 40 GATE FNV 1,FACIL2; Проверка первого (основного) канала на недоступность 50 FACIL1 SEIZE 1; Занимаем первый канал 60 ADVANCE 7,3; Передача сообщения за 7±3 с 70 RELEASE 1; Освобождение первого канала 80 TERMINATE 90 GENERATE 9,4,2; Сообщения идущие на второй (резервный) канал с задержкой в 2 с. ????????? 100 FACIL2 SEIZE 2; Занимаем второй канал 110 ADVANCE 7,3; Передача сообщения за 7±3 с 120 RELEASE 2; Освобождение второго канала 130 TERMINATE 140 GENERATE 200,35; Генерация команд недоступности через интервалы времени 200±35 с 150 FUNAVAIL 1,RE,FACIL2; Удаление транзакта с первого канала и перенаправление его на второй канал 160 ADVANCE 23,7; Задержка в 23±7 (восстановление первого канала) 170 FAVAIL 1; Снятие недоступности с первого канала 180 TERMINATE START 1 END В отчете данные очень странные, такое чувство, что каналы местами перепутаны. Или просто у меня не отключается второй канал после восстановления первого? Еще гложат сомнения на счет строки 90, правильно ли я задаю генерацию сообщений на второй канал? В общем, укажите плиз на ошибки, если можно. ![]() |
Автор: TEMENb 06.12.09, 12:51 |
90 - совсем неправильно. нарушается логика модели. требуется ведьотправлять на второй те, которые должны были ити на первый. А вы выставили еще один поток. а первый... ну транзакты постоят потупят перед гейтом... канал освободится и они пойдут дальше. иными словами никакого перенаправления нету. банальная задержка в обслуживании. З.Ы.: РС - зло. Требуйте у препода werld. в разы меньше заморочек. |
Автор: Ogram 06.12.09, 12:57 |
TEMENb, спасибо! Требовать у нашего препода что-то бесполезно, с нами заочниками вообще разговор короткий. Я тогда еще подумаю. |
Автор: TEMENb 06.12.09, 12:57 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> тут мыслишь в правильном направлении. 140 GENERATE 200,35; Генерация команд недоступности через интервалы времени 200±35 с 150 FUNAVAIL 1,RE,FACIL2; Удаление транзакта с первого канала и перенаправление его на второй канал 160 ADVANCE 23,7; Задержка в 23±7 (восстановление первого канала) 170 FAVAIL 1; Снятие недоступности с первого канала 180 TERMINATE А вообще... задача сложная. |
Автор: Ogram 06.12.09, 13:12 |
Зато если не справлюсь, знаю к кому обратиться ![]() |
Автор: user85vv 10.12.09, 15:20 |
Люди, подскажите пожалуйста как символизируется оператор многоканального устройства? |
Автор: TEMENb 10.12.09, 15:22 |
смотря что ты имеешь ввиду A storage B - емкость enter A,B - вхождение leave A,B - покидание |
Автор: user85vv 10.12.09, 15:27 |
На ВЦ в обработку принимаются три класса задач: А, B, C. Исходя из наличия оперативной памяти ЭВМ, задачи A и B могут решаться одновременно, а задача С монополизирует ЭВМ. Задания поступают на решение: задание типа А через 30+-15 минут, типа В - 20+-10 мин., типа С - 25+-10 мин.. Для выполнения задач требуется: тип А - 15+-5 мин., тип В -15+-10 мин., тип С - 20+-15 мин. Помогите решить, горим сейчас. |
Автор: TEMENb 10.12.09, 16:42 |
десять баксов ) |
Автор: Tesag 12.12.09, 19:04 |
Добрый вечер. Пробежалась я ctrl+F по страничке (предварительно нажав "все"), но задачи своей не нашла (тоже и с поиском в разделе ПОМОЩЬ СТУДЕНТАМ). Задача следующая: Смоделировать систему Mk|Em|9|Rk. Рассматривать при моделировании следующий смлучай: на систему поступает k>=6 пуассоновских потоков заявок. Для каждого потока имеется отдельный накопитель, причем ограничение идет только на суммарное количество заявок во всех очередях. Число фаз обслуживания m>=18. После окончания обслуживания, заявка с вероятностью, зависящей от состояния k-очередей, поступает в одну из очередей, а с доп. вероятностью уходит из системы. Все параметры - в виде сохраняемых величин. Саму задачу решать не надо, но пожалуйста, помогите с одним вопросом: как организовать очереди? Ну, т.е. писать QUEUE que1, QUEUE que2, QUEUE que3 и т.д. не прикольно, ведь k у меня может равняться и 50 и 100500. Я записала следующее: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> draw FUNCTION RN1 D6 .1,1/.2,2/.35,3/.5,4/.7,5/1,6 GENERATE(exponential(1,0,21)) ; one stream TEST L Q$fall,5,out ; testing the fortune of queue QUEUE fall ; QUEUE FN$draw ; ceating of queues ENTER aod,1 ; take a devise DEPART ; DEPART fall ; Что мне надо написать в первом DEPART? Или же что еще можно добавить? Заранее спасибо. |
Автор: dmnyakov 14.12.09, 23:18 |
здраствуйте темень, просмотрев весь форум понял что обращаться с проблемкой нужно к вам. Дело вот в чем у меня в курсовом есть такое правило: если ЭВМ не справляется с потоком данных 10+-2, то интенсивность потока уменьшается на 20+-4. т.е. если эвм занята то должен идти не поток 10+-2, а поток 20+-4. все остальные правила реализовал, осталось только это, преподователь помогать откащывается)))))) говорит используй блоки link unlink, начал использовать вот что получилось: generate 10,2 link 1,fifo generate 20,4, link 2,fifo generate 10,2,,1 transfer ,i1 i1 seize 1 advance(exponential(1,0,3)) (это время обработки данных в ЭВМ) release 1 unlink 1,i1,1,F1 unlink 2,i1,1 generate 3600 terminate 1 start 1 но выдает ошибку, Error Stop. 12/15/09 02:14:08 Halt. XN: 3. Block 10 Next. 12/15/09 02:14:08 Clock:13.830468. Next: UNLINK. Line 10. 12/15/09 02:14:08 unlink 1,i1,1,F1 12/15/09 02:14:08 Parameter number must be a positive integer. говорит что F1 должен быть положительным целым, а это ведь булева функция, нов лекциях написанно что ставить ее unlink можно главное поле Е тогда не заролнять. Помогите плиз. |
Автор: TEMENb 15.12.09, 05:20 |
я так понял, это задача про горячий резерв? нафиг линки анлинки используй сохраняемые величины или параметры транзактов.. или функции <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GEN VARIABLE (10-2+(2#2#RN1/1000))#X$TEMP ;вычисляем интервал генерации транзактов (8..12 при X$TEMP=1 или 16..24 при X$TEMP=2) GENERATE V$GEN ;генерирование сигнала через интервалы времени, определенные вычисляемой величиной GEN TEST E X$YPSIG,1,MET1 ;Если YPSIG равен 1 (управляющий сигнал получен), то дальше, иначе на метку SAVEVALUE TEMP,1 ;в переменную TEMP положить единиццу (нормальный режим) TRANSFER ,MET2 ;отправить на метку MET1 SAVEVALUE TEMP,2 ;в переменную TEMP положить двойку (заторможеный режим) met2 ... ну это моя реализация. ты можешь в сейвалуе просто сохранять значеня времени и подставлять их в адванс. |
Автор: dj_kovrik 15.12.09, 17:34 |
Здравствуйте! Подскажите, пожалуйста, правильность решения (и, если оно неправильное - чего добавить/убавить). Задача Цитата Одноканальная СМО с отказами представляет собой одну телефонную линию. Заявка (вызов), пришедшая в момент, когда линия занята, получает отказ. Все потоки событий простейшие. Интенсивность потока λ= 0,95 вызова в минуту. Средняя продолжительность разговора t = 1 мин. Определите вероятностные ха¬рактеристики СМО в установившемся режиме работы. Код: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ; Единица измерения времени - минута Line STORAGE 1 GENERATE 0.95 ENTER Line ADVANCE 1,0.2 LEAVE Line TERMINATE Line START 600 Либо задание простое, либо не все так просто как я понял ![]() |
Автор: TEMENb 15.12.09, 17:38 |
ну вопервых надо использовать не ентер/лив, а сейз/релайз хотя это и не ошибка а вовторых отсутствует блок отказов после дженерейта надо вставить test e f$Line,0,otkaz Добавлено да и тут ошибочка GENERATE 0.95 надо GENERATE (1/0.95) |
Автор: dj_kovrik 15.12.09, 18:15 |
Спасибо за замечания! А по отказу что делать? Просто test e f$Line,0 как я понял нельзя ![]() p.s. ок ) |
Автор: TEMENb 15.12.09, 18:41 |
учи мат часть ) |
Автор: Volk101188 16.12.09, 16:11 |
люди, помогите написать программу на GPSS! Пожалуйста! Автоматизированная система управления АСУ продажей железнодорожных билетов состоит из двух параллельно работающих ЭВМ. При выходе из строя одной ЭВМ АСУ продолжает нормально функционировать за счет работы другой ЭВМ. Поток отказов каждой ЭВМ простейший. Среднее время безотказной работы одной ЭВМ равно 10 суткам. При выходе из строя отказавшую ЭВМ начинают ремонтировать. Время ремонта ЭВМ распределено по показательному закону и в среднем составляет двое суток. В начальный момент обе ЭВМ исправны. Найти среднюю производительность АСУ, если при исправности хотя бы ЭВМ ее производительность равна 100%, а при отказе обеих ЭВМ продажа билетов производится вручную, обеспечивая 30% общей производительности АСУ. |
Автор: marsovi4 17.12.09, 21:24 |
РЕБЯТ ПОДСКАЖИТЕ , КАК СДЕЛАТЬ ТАК ЧТОБ ТРАНЗАКТ ПОСТУПАЛ НА ОБРАБОТКУ ЧЕРЕЗ ИНТЕРВАЛ ВРЕМЕНИ, РАСПРЕДЕЛЕННЫЙ ПО ЭКСПОНЕНЦИАЛЬНОМУ ЗАКОНУ СО СРЕДНИМ 2 Добавлено ДУМАЛ ЗАДАЕТСЯ КАК GENERATE (EXPONENTIAL(0,1,2)), АН НЕТ... РУГАЕТСЯ. НАШЕЛ В ИНЕТЕ ВОТ ТАКОЕ EXP FUNCTION RN$1,C14 0.,0./.1,.104/.3,.555/.5,.69/.6,.915 .7,1.2/.8,1.6/.85,1.95/.9,2.3/.95,3 .98,3.9/.99,4.6/.995,5.3/.999,7. ЭТО ПРАВИЛЬНО? |
Автор: TEMENb 17.12.09, 21:32 |
marsovi4 ENERATE (EXPONENTIAL(1,0,2)) генератор, сдвиг, среднее учи мат часть ) EXP FUNCTION RN$1,C14 0.,0./.1,.104/.3,.555/.5,.69/.6,.915 .7,1.2/.8,1.6/.85,1.95/.9,2.3/.95,3 .98,3.9/.99,4.6/.995,5.3/.999,7. ENERATE 2,fn$EXP |
Автор: marsovi4 17.12.09, 22:45 |
как сделать так чтобы ПРИОРИТЕТ задачи был определен функцией распределения PRI(0.4,0.5,0.1) |
Автор: marsovi4 18.12.09, 00:25 |
Ребят помогите,никак домозговать не могу... вот задание МОДЕЛЬ СПЕЦИАЛИЗИРОВАННОЙ ЭВМ Построить модель системы, состоящей из источника задач и специализированной ЭВМ (СЭВМ). В конфигурацию ЭВМ входят процессор и оперативная память. Из источника задачи поступают на обработку в СЭВМ через интервалы времени, распределенные по экспоненциальному закону со средним 2. Каждая задача занимает раздел оперативной памяти и становится в очередь к процессору. Количество разделов равно 64. Процессор обслуживает задачи по относительному приоритету.Приоритеты имеют 3 уровня. Приоритет задачи определен функцией распределения PRI(0.4,0.5,0.1). Отсутствие свободного раздела опеpативной памяти (ОП) влечет за собой отказ на обслуживание. В этом случае вновь поступившая задача покидает СЭВМ, т.е. уничтожается. Аналогично происходит с задачей, обслуженной процессором. Время обработки задачи 0,4 мс. процессором распределенно экспоненциально дообслуживанием по приоритету. Определить: - коэффициент загрузки процессора; - среднее время обслуживания задачи в СЭВМ; - вероятность отказа и гистограмму времени нахождения задачи в СЭВМ. Исходный текст модели и результаты моделирования приведены ниже. вот что я уже сделал op storage 64 proz storage 1 transit table M1,10,10,20 generate (EXPONENTIAL(1,0,2)) savevalue kolsgen+,1 gate snf op,otkazy enter op queue och seize proz depart och leave op advance release proz tabulate transit terminate 1 otkazy savevalue otkaz+,1 savevalue verOTKAZA,(X$otkaz/X$kolsgen) terminate start 500 что надо приписать к задержке чтоб выполнялось условие из задания: Время обработки задачи 0,4 мс. процессором распределенно экспоненциально дообслуживанием по приоритету. |
Автор: TEMENb 18.12.09, 06:51 |
marsovi4 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> pri function rn1,d3 .4,1/.9,2/1,3 .............. priority fn$pri |
Автор: marsovi4 18.12.09, 18:15 |
т.е. вот так будет выглядить готовый вариант? или есть ошибки? op storage 64 proz storage 1 transit table M1,10,50,10 generate (EXPONENTIAL(1,0,2)) pri function rn1,d3 .4,1/.9,2/1,3 savevalue kolsgen+,1 gate snf op,otkazy enter op queue och seize proz depart och leave op advance 4,fn$pri release proz tabulate transit terminate 1 otkazy savevalue otkaz+,1 savevalue verOTKAZA,(X$otkaz/X$kolsgen) terminate start 100 |
Автор: Skam 20.12.09, 12:00 |
Подскажите пожайлуста с чего начать решение этой задачи : В карьере грузовики доставляют руду от трех экскаваторов к другу дробилки. Грузовики приписаны к определенным экскаваторов, так что каждый грузовик всегда возвращается к своему экскаватора после того, как выгрузили руду у дробилки Используются грузовики двух видов; грузоподъемностью 20 и 50 тонн. Грузоподъемность влияет на время погрузки машин экскаватором, время переезда в дробилки, время разгрузки и время возвращения к экскаваторам Числовые характеристики этих величин приведены в таблице. Процесс Время для 20-тонного грузовика Время для 50-тонного грузовика Погрузка Случайная величина с экспоненциальным распределением со средним значением 5 минут Случайная величина с экспоненциальным распределением со средним значением 10 минут Переезда в дробилки Постоянная величина 2,5 минуты Постоянная величина 3 минуты Разгрузка Случайная величина с экспоненциальным распределением со средним значением 5 минут Случайная величина с экспоненциальным распределением со средним значением 4 минуты Возврат к экскаваторам Постоянная величина 1,5 минуты Постоянная величина 2 минуты К каждому экскаваторы закреплены два грузовика 20-тонный и 50-тонна Все очереди к экскаваторам имеют дисциплину обслуживания FIFO. В очереди к дробивкы машины стоят в порядке уменьшения их грузоподъемности, а при одинаковой грузоподъемности - по правилу FIFO. Целью моделирования является определение: среднего количества грузовиков у каждого экскаватора и в дробилки; коэффициенты загрузки каждого экскаватора и дробилки. |
Автор: DIANKA2010 21.12.09, 15:27 |
ЗДРАВСТУЙТЕ, ПОМОГИТЕ ПОЖАЛУЙСТО. СДЕЛАТЬ ЭТУ ЗАДАЧУ В GPSS!!! ОЧЕНЬ-ОЧЕНЬ НАДО ![]() ![]() ![]() На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4% брака, второй соответственно 60 мин и 8% брака. Вс бракованные детали возвращаются на повторную обработкуна второй станок. Детали, попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводят так же 2 станка в среднем 100 мин каждый. Причём первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше трёх деталей. Все интервалы времени распределены по экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку вторго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обратотке. ЗАРАНЕЕ ВСЕМ БОЛЬШОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Добавлено ЗДРАВСТВУЙТЕ ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ В GPSS!!! ОЧЕНЬ ОЧЕНЬ НАДО ![]() ![]() ![]() На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4% брака, второй соответственно 60 мин и 8% брака. Вс бракованные детали возвращаются на повторную обработкуна второй станок. Детали, попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводят так же 2 станка в среднем 100 мин каждый. Причём первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше трёх деталей. Все интервалы времени распределены по экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку вторго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обратотке. ЗАРАНЕЕ ВСЕМ ОГРОМНОЕ СПАСИБО!!!! |
Автор: WoodenArow 23.12.09, 17:05 |
Всем здрасти вот несколько задач и их решений... это задачи с курсовой по имитационнму моделированию... решал сам ну в общем как смог. Поток самолетов, требующих посадки в аэропорту, - пуассоновский с интенсивностью λ, самолетов в час. В аэропорту есть n посадочных полос. Самолет, совершив посадку на полосу, освобождает ее через t1 минут. Если самолет, требующий посадки, застает все полосы занятыми, то он становится в «очередь» самолетов, ожидающих посадки. Через t2 ± t3 минут после затребования посадки самолет нуждается в дозаправке, что обходится аэропорту в S1 ± S2 ед. стоимости. После t4 минут безуспешного ожидания самолет отправляется на посадку в другой аэропорт. За каждый самолет, совершивший посадку без ожидания, аэропорт получает прибыль S3 ед. стоимости. За каждый самолет, севший после ожидания, - S4 ± S5 ед. стоимости. Эксплуатация одной посадочной полосы обходится в S6 ед. стоимости в месяц. Определить количество n посадочных полос, при котором достигается максимальная экономическая эффективность. Параметры λ 10 n 2 t1 35 t2±t3 70±10 S1±S2 1000±200 t4 140 S3 2000 S4±S5 1500±100 S6 1000000 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> T4 variable 140 T2T3 variable 35 S1S2 variable 1100 S4S5 variable 1550 Sob variable 0 aero storage 2 initial X$Zap,0 initial X$Sev,0 initial X$STn,0 generate (poisson(1,4)) queue och test g qt$och,V$T2T3,aaa savevalue Zap+,V$S1S2 aaa test l qt$och,V$T4,ddd enter aero depart och advance 70 leave aero savevalue Sev+,V$S4S5 transfer ,ccc ddd depart och ccc terminate generate 43200 savevalue STn+,2000000 savevalue Sob+,X$Sev Savevalue Sob-,X$Zap Savevalue Sob-,X$STn terminate 1 start 1 единственно не смог решить пробелму с переменными t2±t3,S1±S2,S4±S5, по этому пришлось усреднять значения(( решение не супер но как вариант, если предложите что нить другое тоже с удовольствием посмотрел бы)) Частный магазин покупает партию из N единиц товара по оптовой цене S единиц стоимости. Деньги на приобретение товара владелец магазина берет в кредит. Процентная ставка за кредит составляет k процентов от суммы непогашенного кредита в день (табл. 13). Поток покупателей, приходящих в магазин, - пуассоновский с параметром λ мин-1. Вероятность того, что покупатель не будет покупать товар и сразу уйдет из магазина, зависит от длины очереди и розничной цены товара: Руход=1 - р1*р2, (1) где р1 - вероятность того, что длина очереди «устраивает» покупателя, р2 - вероятность того, что он купит товар по установленной розничной цене. Время обслуживания покупателя в магазине - равномерно распределенная случайная величина в интервале А ± В мин. Определить наиболее выгодную розничную цену продажи товара в магазине с учетом платы за кредит. Примечание. Считать, что после продажи единицы товара величина кредита уменьшается на отпускную цену проданного товара (если долг еще существует). Это приводит к тому, что величина кредита и выплата процентов по нему уменьшаются. Параметры N 600 S 1000 k, % 1 λ 0,05 p1 - очередь до 3 человек 0,55 4 - 6 человек 0,2 7 - 10 человек 0,15 Свыше 11 человек 0,1 p2 - цена до 1,5 S 0,67 1,5S - 2S 0,14 2S - 3S 0,11 3S - 4S 0,08 A 20 B 4 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> RST variable 0.67 Pst variable 1500 Initial X$STob,0 initial X$Kred,600000 initial X$tov 600 initial X$Vremk 0 initial X$Vremt 0 initial X$Vrem 0 initial X$SumS 0 initial X$Den 1440 Den1 variable 1440 Generate (poisson(1,20)) test G X$Kred,0,yyy savevalue Vremk,C1 yyy test G X$tov,0,ttt savevalue Vremt,C1 test LE Q$och,3,aaa transfer 0.55,aaa,bbb aaa test LE Q$och,6,ccc transfer 0.2,ccc,bbb ccc test LE Q$och,10,ddd transfer 0.15,ddd,bbb ddd test GE Q$och,11,ttt transfer 0.1,ttt,bbb bbb transfer V$RST,ttt,eee eee queue och seize mag depart och advance 20,4 release mag savevalue Vrem,C1 test G X$Kred,0,iii test GE X$Vrem,X$Den,iii Stav FVariable X$Kred/100 savevalue SumS,V$Stav Savevalue Kred+,X$SumS Savevalue Den+,V$Den1 iii Savevalue tov-,1 savevalue STob+,V$Pst savevalue Kred-,V$Pst ttt terminate generate 43200 terminate 1 start 1 Задание 4. В цех на участок обработки поступают партии деталей по три в каждой. Интервалы между приходом партий - случайные величины, равномерно распределенные в интервале A ±B минут. Первичная обработка деталей происходит на одном из двух типов станков. Деталь поступает на обработку на станок с меньшей очередью. Станок первого типа обрабатывает деталь за Т1 минут и допускает k1 процентов брака, второго типа - соответственно, Т2 минут и k2 процентов брака. Все бракованные детали возвращаются на повторную обработку на свой станок. Детали, которые были забракованы дважды, считаются отходами и отправляются на утилизацию. После первичной обработки детали поступают в накопитель, а из него - на вторичную обработку, которую проводят два параллельно работающих станка за время, распределенное по экспоненциальному закону со средним Т3 минут на одну деталь каждый. Причем второй станок подключается к работе, только если в накопителе находится более трех деталей. Затраты на содержание станков первого и второго типов составляют, соответственно, S1 и S2 единиц стоимости в час, независимо от того, используется станок или нет. Цена реализации готовой детали составляет S3 единиц стоимости, а стоимость покупки необработанной детали - S4 единиц стоимости. Есть возможность повысить качество первичной обработки деталей. Уменьшение уровня брака в работе станков на r процентов требует дополнительных затрат r*S5 единиц стоимости на каждую деталь. Действия по повышению эффективности качества первичной обработки могут проводиться для обоих типов станков независимо друг от друга. Определить, сколько станков первого и второго типов необходимо иметь и в каком объеме проводить мероприятия по повышению качества первичной обработки, чтобы достичь максимума прибыли за единицу времени. Параметры A±B k1 k2 T1 T2 T3 S1 S2 S3 S4 S5 60±10 4 11 45±12 80±20 30 6 2 300 50 5 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> initial x$prib,0 stan1 storage 1 stan2 storage 1 stan3 storage 1 stan4 storage 1 Generate 60,10 Split 2,aaa aaa test LE Q$och1,Q$och2,zzz bbb queue och1 enter stan1 depart och1 advance 45,12 leave stan1 transfer .04,xxx,yyy yyy assign 1+,1 test L P1,2,ttt transfer ,bbb zzz queue och2 enter stan2 depart och2 advance 80,20 leave stan2 transfer .11,xxx,www www assign 1+,1 test L P1,2,ttt transfer ,zzz xxx savevalue prib-,50 test LE Q$och,3,rrr queue och enter stan3 depart och advance (exponential(1,0,30)) leave stan3 transfer ,uuu rrr enter stan4 advance (exponential(1,0,30)) leave stan4 uuu savevalue prib+,350 ttt terminate generate 2400 savevalue prib-,640 //единственно не понял почему здесь отнимаем 640 сказали вставить))) terminate 1 start 1 |
Автор: Hawk 24.12.09, 21:47 |
Здравствуйте. У меня возникла проблема в создании многоканальной модели в среде GPSS. Необходимо создать модель мастерской по ремонту бытовой техники. Количество каналов обслуживания равно 5 (мастера). Интервал времени между поступлениями заказов является случайной величиной, равномерно распределенной в пределах от 48 до 120 минут. Продолжительность обслуживания одного заказчика также является случайной величиной, равномерно распределенной в пределах от 420 до 480 минут. Модель я создал, но по результатам её работы выяснилось, что эти каналы работают не совместно, а отдельно. Собственно, по данным, которые я внёс в GPSS, это и видно. Вопрос в следующем: как мне сделать так, чтобы каналы обслуживания работали совместно? Т.е. если заявка поступает к мастеру, который уже занят, то первая уже переходит к следующему мастеру. Заранее благодарен. Вот моя модель в GPSS <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ SEIZE ZAKAZ ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ RELEASE ZAKAZ ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ SEIZE ZAKAZ_2 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ RELEASE ZAKAZ_2 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ SEIZE ZAKAZ_3 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ RELEASE ZAKAZ_3 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ SEIZE ZAKAZ_4 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ RELEASE ZAKAZ_4 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ SEIZE ZAKAZ_5 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ RELEASE ZAKAZ_5 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА *таймер-сегмент GENERATE 480 ;ВРЕМЯ МОДЕЛИРОВАНИЯ 8 ЧАС=480МИН TERMINATE 1 ;ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ START 1 |
Автор: TEMENb 24.12.09, 22:14 |
ужас! ) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ZAKAZ stprage 5 GENERATE 84,36 ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ QUEUE QZAKAZ ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ enter ZAKAZ ;ЗАКАЗ ВЗЯТ МАСТЕРОМ DEPART QZAKAZ ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ ADVANCE 300,30 ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ leave ZAKAZ ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА TERMINATE ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА *таймер-сегмент GENERATE 480 ;ВРЕМЯ МОДЕЛИРОВАНИЯ 8 ЧАС=480МИН TERMINATE 1 ;ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ START 1 |
Автор: Hawk 25.12.09, 05:20 |
Я делал ранее разными способами. Через STORAGE тоже делал, но забыл указать строку "leave ZAKAZ", поэтому и не сработало. Спасибо, что исправил ошибку. |
Автор: perluhina 26.12.09, 12:53 |
можно ли в GPSS в место TRANSFER .333, ProstSS,SL записать TRANSFER (1/3), ProstSS,SL, работает это одинаково, а вот с точки зрения синтаксиса??? ![]() |
Автор: TEMENb 26.12.09, 12:58 |
perluhina, можно. Собственно в качестве любого параметра можно записать любое выражение. единственное условие - обязательно нужно заключить его в скобки. Добавлено особенно это правило помогает при составлении всякого рода условий. например <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> что означает - если устройство 1 занято или устройство 2 занято или устройство 3 свободно - то перейти к следующему блоку )) test e (f1|f2|(f3=0)),1 |
Автор: perluhina 26.12.09, 18:48 |
TEMENbСпасибо, а как доказать это преподу??? есть ли какая книженция, где это написано??? или другой Официальный источник??? |
Автор: TEMENb 26.12.09, 19:02 |
можно доказать эксперементальным путем. |
Автор: perluhina 26.12.09, 19:07 |
эксперемиентально я доказала, получила за курсач 5, а к экзаману говорит, вы мне принесите источник где написано, что с точки зрения синтаксиса эт не ошибка!!!! |
Автор: TEMENb 26.12.09, 19:10 |
ыч.. я думаю только в английской оффиыиальной документации. А с точки зрения синтаксиса уже даже дробное время не ошибка.. и отритцательный приоритет - не ошибка... вообщем много ньюансов за последние лет 10 появилось )))) |
Автор: bra1nout 27.12.09, 11:59 |
Программа для 4 источников, буфера и 1 приёмника SIMULATE GENERATE 4, 1.5 mark 1 queue 1 seize 1 depart 1 advance (Normal(1,5,1)) release 1 mark 2 savevalue i1+,1 savevalue m0,*2 savevalue m0-,*1 test g m0,m1,met1 savevalue m1,*1 met1 terminate GENERATE 4, 1.5 mark 1 queue 1 seize 1 depart 1 advance (Normal(1,5,1)) release 1 mark 2 savevalue i2+,1 savevalue m0,*2 savevalue m0-,*1 test g m0,m2,met2 savevalue m2,*1 met2 terminate GENERATE 4, 1.5 mark 1 queue 1 seize 1 depart 1 advance (EXPONENTIAL(1,5,1)) release 1 mark 2 savevalue i3+,1 savevalue m0,*2 savevalue m0-,*1 test g m0,m3,met3 savevalue m3,*1 met3 terminate GENERATE 4, 1.5 mark 1 queue 1 seize 1 depart 1 advance (EXPONENTIAL(1,5,1)) release 1 mark 2 savevalue i4+,1 savevalue m0,*2 savevalue m0-,*1 test g m0,m4,met4 savevalue m4,*1 met4 terminate GENERATE 600 START 1 TERMINATE 1 Выводит ошибку 12/27/09 14:58:51 test g m0,m3,met3 12/27/09 14:58:51 Operand B. Invalid expression. 12/27/09 14:58:51 Datum has not been initialized. Как можно это исправить? Помогите, пожалуйста. Мозг уже набекрень ![]() m1, m2, m3, m4 - максимальные отклики системы для источника. С m1, m2 - проходит, а дальше - нет. |
Автор: TEMENb 27.12.09, 16:49 |
test g x$m0,x$m3,met3 Учи мат. часть |
Автор: irdis_13 11.01.10, 01:42 |
вот мучусь-мучусь - никак не получается протабулировать сколько создавался времени мой транзакт если можете - помогите!!!плиз!!! очень нужно!!! |
Автор: TEMENb 11.01.10, 13:47 |
irdis_13, не понял вопрос. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> tab table m1,0,1,100 generate ,,,1000 mark advance 40,30 tabulate tab terminate 1 start 1000 |
Автор: irdis_13 11.01.10, 15:34 |
вопрос в общем в том, какое количество времени потратилось на генерацию транзакта, а ты мне написал сколько времени потратилось на его обработку! проблему решил следующим образом Цитата EXPON FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69 .6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85 .88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99 .96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3 .998,6.2/.999,7/.9998,8 Time VARIABLE AC1-X1 ;занёс в таблицу значение разницы абсолютного текущего времени и времени появления последнего транзакта TAB table v$Time,0,500,13 SIMULATE GENERATE 900,FN$EXPON,,1000 TABULATE TAB savevalue 1,AC1 ;запомнил время появления последнего транзакта GATE NU VERST1,JUMP2 SEIZE VERST1 ADVANCE 2880,FN$EXPON RELEASE VERST1 TERMINATE 1 JUMP2 GATE NU VERST2,JUMP3 SEIZE VERST2 ADVANCE 2880,FN$EXPON RELEASE VERST2 TERMINATE 1 JUMP3 GATE NU VERST3,JUMP4 SEIZE VERST3 ADVANCE 2880,FN$EXPON RELEASE VERST3 TERMINATE 1 JUMP4 GATE NU VERST4,KILL SEIZE VERST4 ADVANCE 2880,FN$EXPON RELEASE VERST4 TERMINATE 1 KILL TERMINATE 1 START 1000 мне просто нужно было проверить в курсовой закон распределения создания транзактов (а не их обработки) для проверки адекватности!! вопрос понят? а еще вопрос: как мне создать такую систему, в которой обслуживающих станков, которые обрабатывают заготовки, было бы не 1, а несколько, 4 к примеру. Я реализовал это в коде, который находится выше, а нельзя ли это реализовать как-то покороче? НАКОПИТЕЛЕЙ НЕТ. ЕСЛИ УСТРОЙСТВО ЗАНЯТО, ТО ЗАЯВКА ОТБРАСЫВАЕТСЯ!!!! ![]() ![]() |
Автор: Atnos 20.01.10, 10:03 |
здраствуите, помогите пожалуста надо смоделировать систему в среде GPSS World студенческая версия задания: ЭВМ обслуживает три терминала по круговому циклическому алгоритму, предоставляя каждому терминалу 30 с. Если в течение этого времени задание обработалось, то обслуживание завершаетсяЖ если нет, то остаток задачи становится в спецальную очередь, которая использует свободные циклы терминалов, т.е. задача обслуживается, если на каком либо терминале нет заявок. Заявки на терминал поступают через 30+-5 секунд и имеют длину 300+-50 символов. Скорость обработки задании ЭВМ 10символов / секунда. Смоделировать 5 часов работы ЭВМ. Определить загрузку ЭВМ, параметры очереди неоконченных заданий. Определить велечину цикла терминалов, при котори все заявки обработаются без специальной очереди. текст программы котори я пытался написать, прадо у меня не че не получается( хотя ребятам из группы написат курсовые на вскидку, а со своеи такои запар вышел INITIAL X1,3 {инициализация ячеек} INITIAL X2,1 INITIAL X3,1 INITIAL X4,30 INITIAL X5,30 INITIAL X6,30 INITIAL X7,1 GENERATE 30,5 {генераия транзакта} TRANSFER ALL,MET1,MET4 {если занято устроиство по метке 1 то на метку 4} MET4 TRANSFER ALL,MET2,MET3 {если занято устроиство по метке 2 то на метку 3} MET1 PRIORITY X1 {первый терминал} TRANSFER ALL,MET5 MET2 PRIORITY X2 {второи терминал} TRANSFER ALL,MET5 MET3 PRIORITY X3 {третии терминал} TRANSFER ALL,MET5 MET5 PREEMPT EBM,PR SEIZE EBM ADVANCE X5 TEST E P1,X4,MET6 {проверка равно ли 1 значение транзакта Р1 30} RELEASE EBM TERMINATE 1 SAVEVALUE X6-,X5 TEST L X6,1,MET9 {проверка если значение ячеики Х6 меньше 1го то востановить значения ячек} SAVEVALUE X4,30 SAVEVALUE X4-,P1 TRANSFER ALL,MET12 MET6 TEST G P1,X4,MET8 {прроверка если Р1 больше 30} SAVEVALUE P1-,XL4 QUEUE q1 SAVEVALUE X7+,1 TRANSFER all,MET33 MET8 SAVEVALUE X4-,P1 {изменение ячек если значение Р1 меньше 30 и переход на метку 5} SAVEVALUE X5-,4 SAVEVALUE X4,P1 TRANSFER all,MET5 MET9 SAVEVALUE X4,30 SAVEVALUE X5,30 SAVEVALUE X7+,1 TEST E X7,4,MET10 TRANSFER all,MET12 MET10 SAVEVALUE X7,1 TRANSFER all,MET12 MET12 SEIZE OCH dEPART q1 ADVANCE 0 RELEASE OCH TRANSFER all,MET33 MET33 TEST E X7,1,MET21 TEST E X7,2,MET22 TEST E X7,3,MET23 MET21 SAVEVALUE X1,1 SAVEVALUE X2,0 SAVEVALUE X3,0 TRANSFER all,MET1 MET22 SAVEVALUE X1,0 SAVEVALUE X2,1 SAVEVALUE X3,0 TRANSFER all,MET2 MET23 SAVEVALUE X1,0 SAVEVALUE X2,0 SAVEVALUE X3,1 TRANSFER all,MET3 GENERATE 18000 TERMINATE 1 START 1 |
Автор: TEMENb 20.01.10, 10:26 |
Atnos, воспользуйтесь пользовательскими списками. вы удивитесь насколько простая это задача. |
Автор: Alex_bu 20.01.10, 11:50 |
Привет всем. Нужна помощь. Если кому не сложно. Помогите доделать модель Супермаркета. Необходимо промоделировать работу супермаркета, например, «Лента» (кстати, ничего там хорошего нет). Супермаркет имеет парковку на 130 автомобилей. В том случае, если все места заняты, автомобиль покидает территорию магазина. Припарковав автомобиль, покупатели входят в помещение магазина. При входе в зал, покупатель может взять тележку (130 штук) или корзинку (60 штук), для перевозки (переноски) купленных товаров. Магазин имеет 15 кассовых терминалов. В обычном режиме работает 8 терминалов. Из них один – для быстрого обслуживания покупателей с небольшим количеством покупок (до 12). На выходе из магазина находится контролер-интервьюер, спрашивающий качество обслуживания и выборочно проверяющий соответствие чеков и покупок. В обычном режиме опрашиваются все покупатели. Параметры функционирования торгового комплекса следующие. • Поток машин, прибывающий на стоянку, и покупателей, входящих в магазин нормальный. • Время прихода покупателей в магазин, колеблется в пределах, от 45 до 70 сек включительно. • Если производится покупка более 12 видов товара, покупатель берет тележку. • Время обслуживания кассиром покупателя с тележкой составляет от 6.5 до 10.0 мин включительно. • Время обслуживания покупателя с корзинкой занимает от 5.5 до 7.8 мин включительно • На интервью тратится от 1.0 до 1.6 мин включительно. Необходимо промоделировать работу торгового комплекса в течение 10.0 часов Выделил то что мне не понятно.. Про интервьюера вроде сделал , но возможно не правильно. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> RMULT 1187 Kassa_2 EQU 2 Kassa_N EQU 8 Time_work VARIABLE 10#60#60 N_Pokupok VARIABLE (RN1@96+5) Finance VARIABLE (RN1@3+1)#40+150 Time_system TABLE M1,1000,1000,7 Pokupki TABLE P$Kol_pokupok,10,10,10 N_Pokupatel TABLE X$Pokupatel,100,50,12 Park STORAGE 130 Telejka STORAGE 130 Korzina STORAGE 60 Kassir VARIABLE (P$Kol_pokupok)#2+P$Oplata Time_mag VARIABLE P$Kol_pokupok#100 INITIAL X$Pokupatel,0 **************************************************************** Parking TRANSFER Both,,Lost ENTER Park ADVANCE 57.5,12.5 SAVEVALUE Pokupatel+,1 ASSIGN Kol_pokupok,V$N_Pokupok ASSIGN Oplata,V$Finance TEST L P$Kol_pokupok,12,QTelejka GATE SNF Korzina,QTelejka **************************************************************** QUEUE Korzina_Q ENTER Korzina DEPART Korzina_Q ASSIGN Tara,Korzina TRANSFER ,Magazin_Lenta **************************************************************** QTelejka QUEUE Telejka_Q ENTER Telejka DEPART Telejka_Q ASSIGN Tara,Telejka **************************************************************** Magazin_Lenta ADVANCE V$Time_mag TEST LE P$Kol_pokupok,12,Min_och COUNT L Kassir_0,Kassa_2,Kassa_N,1,Q TEST E P$Kassir_0,0,Min_och **************************************************************** QUEUE Express_Q SEIZE Express DEPART Express_Q ADVANCE V$Kassir RELEASE Express LEAVE P$Tara TRANSFER ,Fin ****************************************** Min_och SELECT MIN Min_ochered,Kassa_2,Kassa_N,,Q QUEUE P$Min_ochered SEIZE P$Min_ochered DEPART P$Min_ochered ADVANCE V$Kassir RELEASE P$Min_ochered LEAVE P$Tara ******************************************** Fin ADVANCE 78,18 TABULATE Time_system TABULATE Pokupki SAVEVALUE Pokupatel-,1 ADVANCE 57.5,12.5 LEAVE Park TERMINATE Lost TERMINATE **************************************** [B] GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,Parking GENERATE (Exponential(1,0,40)),,1800,400 TRANSFER ,Parking GENERATE (Exponential(1,0,80)),,5400,300 TRANSFER ,Parking GENERATE (Exponential(1,0,120)),,9000 TRANSFER ,Parking[/B] ***************************************** GENERATE V$Time_work TABULATE N_pokupatel TERMINATE 1 START 1 |
Автор: Atnos 20.01.10, 15:53 |
Цитата TEMENb @ Atnos, воспользуйтесь пользовательскими списками. вы удивитесь насколько простая это задача. спасибо за совет, ток я не фига не могу понять эти списки( ![]() полазил по инету, книгу почитал, весь день седни убил чтоб понять как они работают, не фига не могу понять( наверно я туп. если можно, не могли бы вы простинькую программу с их работаи дать? для того чтобы разобратся можно было. |
Автор: TEMENb 20.01.10, 16:51 |
циклический алгоритм, три терминала. время цикла - 1 емд. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 3 link 1,fifo generate 3 link 2,fifo generate 3 link 3,fifo met1 queue 1 seize 1 depart 1 advance 1 release 1 terminate 1 generate ,,,1 assign 1,0 met assign 1,((p1@3)+1) test g ch*1,0 unlink p1,met1,1 advance 1 transfer ,met start 1000 |
Автор: hotar 14.02.10, 18:45 |
Всем привет, если не сложно помогите. Есть вот такая задачка, возможно она уже встречалась, никак не могу ее найти нигде. Текст зачади: На ВЦ принято планово-профилактическое обслуживание. ВЦ с небольшим парком ЭВМ, поэтому ремонтом ЭВМ занимается всего один радиомеханик (в терминах СМО - ремонтник). Это означает: что одновременно можно выполнять обслуживание только одной ЭВМ. Все ЭВМ должны регулярно проходить профилактический осмотр. Определенное число ЭВМ подвергающееся ежедневному осмотру согласно графику технического обслуживания, распределено равномерно и составляет от 1 до 3. Время, необходимое для осмотра и обслуживания каждой ЭВМ примерно распределено в интервале от 45 мин. до 1 ч. 15 мин. За это время необходимо проверить саму ЗВМ, а также такие внешние устройства как цветные струйные принтеры, нуждающиеся в смене или заправке картриджей красителем или лазерные принтеры, нуждающиеся в заправке тонером. Несколько ЭВМ имеют в качестве внешних устройств цветные плоттеры, у которых достаточно сложный профилактический осмотр. Рабочий день ремонтника длится 8 ч, но возможна и многосменная работа. В некоторых случаях профилактический осмотр прерывается для устранения внезапных отказов сетевых серверов, работающих в три смены, т.е 24 ч в сутки. В этом случае текущая профилактическая работа прекращается, и ремонтник начинает без задержки ремонта сервера. Тем не менее, машина-сервер, нуждающаяся в ремонте, не может вытеснить другую машину-сервер, уже стоящую на внеплановом ремонте. Распределение времени между поступлениями машин-серверов является пуассоновским со средним интервалом равным 42 ч. Если ремонтник отсутствует в момент поступления ЭВМ эти ЭВМ должны ожидать до 8ч утра. Время их обслуживания распределено по экспоненте со средним значение в 17 ч. Необходимо построить GPSS-модель для имитации производственной деятельности ВЦ. По полученной модели необходимо оценить распределение случайной переменной "число машин-серверов, находящихся на внеплановом ремонте". Выполнить прогон модели, имитирующей работу ВЦ в течении 25 дней, введя промежуточную информацию по окончании каждых пяти дней. Для упрощения можно считать, что ремонтник работает 8 ч в день без перерыва, и не учитывать выходные. Это аналогично тому, что ВЦ работает 7 дней в неделю. Для решения было принято 5 сегментов. В общем и в целом все понятно, не могу разобраться как работает 4 сегмент (и вообще правильно ли он написан). Описание сегмента: Сегмент "сбор данных для неработающих ЭВМ-серверов" используется для сбора данных, позволяющих оценить распределение числа неработающих ЭВМ-приборов. Для этих целей используется взвешенные таблицы, которые позволяют вводить в них в один и тот же момент времени наблюдаемые случайные величины. Для этих целей включаются два блока - TABULATE, но если ввод в таблицу случаен (значение величин >= 2), то этот подход не годен. В этом случае используется необязательный элемент олеранд, называемый весовым фактором, обозначающий число раз, которое величина, подлежащая табулированию, должна вводится в таблицу. Это позволяет назначать разные веса различным наблюдаемым величинам. Собственно сам код: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> XPDIS FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915 .7,1.2/.75,138/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52 .94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3 .998,6.2/.999,7.0/.9997,8.0 JOBS FUNCTION RN1,C2 0,1/1,4 TAB1 TABLE P2,0,1,6 * *Model segment 1 * GENERATE 1440,,1,,2 SPLIT FN$JOBS,NEXT1 NEXT1 queue TO SEIZE REM ADVANCE 60,15 RELEASE REM depart TO TERMINATE * *Model segment 2 * GENERATE 2520,FN$XPDIS,,,2 QUEUE TRUBL PREEMPT REM ADVANCE 1020,FN$XPDIS RETURN REM DEPART TRUBL TERMINATE * *Model segment 3 * GENERATE 1440,,481,,3 PREEMPT REM,PR ADVANCE 960 RETURN REM TERMINATE * *Model segment 4 * GENERATE 35041,,1,,1 WATCH MARK 1 ASSIGN 2,FR$TRUBL TEST NE 1,0 TABULATE TAB1,1 TRANSFER ,WATCH TERMINATE * *Model segment 5 * GENERATE 7200,,6241 TERMINATE 1 START 5,,1,1 |
Автор: vista1243 16.03.10, 15:26 |
Здравствуйте! Помогите пожалуйста! Каким образом можно не используя М1 и оператор MARK сохранить работоспособность оператора TABULATE в моем коде? [ code ] FUNC1 FUNCTION RN1,C2 0,13/1,32. FUNC2 FUNCTION RN2,C11 0,0/.125,2/.25,7/.375,12/.45,20/.5,25/.625,40/.75,55/.875,80/.9,90/1,100. FUNC3 FUNCTION RN3,C25 0,-5/.00003,-4/.00135,-3 .00621,-2.5/.02275,-2/.06681,-1.5 .11507,-1.2/.15866,-1/.21186,-.8 .27425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4 .72575,.6/.78814,.8/.84134,1 .88493,1.2/.93319,1.5/.97725,2 .99379,2.5/.99865,3/.99997,4/1,5 NORM VARIABLE FN$FUNC3 # 3 + 20 FUNC4 FUNCTION RN7,D4 .25,20/.5,60/.75,80/1,100. TAB1 TABLE M1,50,10,12 ****************************************************************** GENERATE FN$FUNC4 ; Генерация транзактов ADVANCE V$NORM ; Задержка 1 ADVANCE FN$FUNC1 ; Задержка 2 ADVANCE 23,9 ; Задержка 3 ADVANCE FN$FUNC2 ; Задержка 4 TABULATE TAB1 ; Табулирование TRANSFER .587,LBL1,LBL2 ; Случайный переход LBL1 TERMINATE 1 ; Удаление транзактов 1 LBL2 TERMINATE 1 ; Удаление транзактов 2 ****************************************************************** START 500 ; Повторить 500 раз [ /code ] |
Автор: TEMENb 16.03.10, 15:36 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> FUNC1 FUNCTION RN1,C2 0,13/1,32. FUNC2 FUNCTION RN2,C11 0,0/.125,2/.25,7/.375,12/.45,20/.5,25/.625,40/.75,55/.875,80/.9,90/1,100. FUNC3 FUNCTION RN3,C25 0,-5/.00003,-4/.00135,-3 .00621,-2.5/.02275,-2/.06681,-1.5 .11507,-1.2/.15866,-1/.21186,-.8 .27425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4 .72575,.6/.78814,.8/.84134,1 .88493,1.2/.93319,1.5/.97725,2 .99379,2.5/.99865,3/.99997,4/1,5 NORM VARIABLE FN$FUNC3 # 3 + 20 FUNC4 FUNCTION RN7,D4 .25,20/.5,60/.75,80/1,100. TAB1 TABLE (AC1-p1),50,10,12 ****************************************************************** GENERATE FN$FUNC4 ; Генерация транзактов assign 1,ac1 ADVANCE V$NORM ; Задержка 1 ADVANCE FN$FUNC1 ; Задержка 2 ADVANCE 23,9 ; Задержка 3 ADVANCE FN$FUNC2 ; Задержка 4 TABULATE TAB1 ; Табулирование TRANSFER .587,LBL1,LBL2 ; Случайный переход LBL1 TERMINATE 1 ; Удаление транзактов 1 LBL2 TERMINATE 1 ; Удаление транзактов 2 ****************************************************************** START 500 ; Повторить 500 раз Добавлено mark сохраняет в параметр транзакта (или в отметку времени транзакта, если прописан без параметров), значение сча AC1. Так же значение сча АС1 прописывается в отметку времени транзакта при создании транзакта. Если явно использовать марк нельзя, то тогда сделаем вручную его работу. попросту сохраняем значение времени в параметр транзакта. М1 (МРj, MP$j) - соответствует разнице СЧА АС1 и времени, сохраненной в отметке времени транзакта (сохраненному в параметре транзакта с числовым/символьным именем j) соответственно, вместо M1 вручную пропишем (AC1-параметр) Вот и вся магия ) |
Автор: vista1243 16.03.10, 22:23 |
Огромнейшее спасибо! ![]() |
Автор: Yurkam 20.03.10, 20:09 |
Помогите смоделировать, пожалуйста. Как правильно задать количесвто посетителей, по какому закону? Задание: В студенческой столовой «Колобок» есть N столов, 4*N стульев и M официантов. Посетители приходят в столовую и занимают места за столами. Официанты обслуживают столы в порядке очереди с дисциплиной FIFO с приоритетами (сначала столы, за которыми большее количество человек). Если свободных столов нет, посетитель покидает столовую. Посетитель может пересаживаться с одного стола за другой, допускаем, что переход занимает 3 минуты. Создать имитационную модель работы столовой. Предусмотреть расчет оптимального количества официантов. Допускаем, что завершение моделирования не нуждается ни в каких событиях. |
Автор: masher 30.03.10, 18:04 |
Есть N устройств. Как равновероятностно перейти на одно из них? |
Автор: TEMENb 30.03.10, 18:16 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> transfer all,met1,met2 met1 transfer ,ystr1 transfer ,ystr2 transfer ,ystr3 transfer ,ystr4 transfer ,ystr5 met2 transfer ,ystr6 |
Автор: masher 30.03.10, 18:38 |
Цитата TEMENb @ <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> transfer all,met1,met2 met1 transfer ,ystr1 transfer ,ystr2 transfer ,ystr3 transfer ,ystr4 transfer ,ystr5 met2 transfer ,ystr6 Это хорошо с небольшим количеством устройств. А если их 100 штук, например. |
Автор: TEMENb 30.03.10, 18:43 |
Говорите сразу чего хотите. вариантов далеко не два. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 1 assign 1,(duniform(1,1,100)) seize p1 release p1 terminate 1 start 100 |
Автор: masher 30.03.10, 18:55 |
Это, я так понимаю, дискретное равномерное распределение? Что ж, спасибо огромное. Моя жажда познаний удовлетворена ![]() |
Автор: TEMENb 30.03.10, 18:56 |
именно так. равномерное расределение, возвращающее целые значения. |
Автор: olia-la-26 31.03.10, 20:29 |
Есть задача и есть текст программы!Помогите описать программу!!! САПР состоит из ЭВМ и трех терминалов. Каждый из проектировщиков формирует задания на расчет в интерактивном режиме. Набор строки задания занимает 105с. После набора 10 строк задание считается сформированным и поступает на решение, при этом в течение 103с ЭВМ прекращает принимать другие задания. Анализ результата занимает у проектировщиков 30 с, после чего цикл повторяется. Данные по всем проектировщикам одинаковы. Смоделировать работу системы в течение 6 часов. Определить вероятность простоя проектировщика из-за занятости ЭВМ и коэффициент загрузки ЭВМ. GENERATE 10,5 ONE STORAGE 10 GATE FV PRO,UNI SEIZE PRO ENTER ONE RELEASE PRO GATE SNF ONE,OTP TERMINATE OTP LEAVE ONE,10 FUNAVAIL PRO ADVANCE 30 FAVAIL PRO TRANSFER,QEV UNI TERMINATE GENERATE 10,5 ONE STORAGE 10 GATE FV PROT,UNI SEIZE PROT ENTER ONE RELEASE PROT GATE SNF ONE,OTPR TERMINATE OTPR LEAVE ONE,10 FUNAVAIL PROT ADVANCE 30 FAVAIL PROT TRANSFER,QEV GENERATE 10,5 ONE STORAGE 10 GATE FV PROTO,UNI SEIZE PROTO ENTER ONE RELEASE PROTO GATE SNF ONE,OTPRA TERMINATE OTPRA LEAVE ONE,10 FUNAVAIL PROTO ADVANCE 30 FAVAIL PROTO TRANSFER,QEV QEV QUEUE RED SEIZE EVM DEPART RED ADVANCE 10,3 RELEASE EVM TERMINATE GENERATE 500 TERMINATE 1 START 1 |
Автор: Frein 07.04.10, 20:09 |
Привет! Хотелось бы спросить, допустима ли такая запись? Среда не пускает. Может кто знает почему и как исправить? cre VARIABLE UNIFORM(1,10,50) ..... simulate .... ASSIGN 2,v$cre .... Спасибо за ответы) |
Автор: TEMENb 07.04.10, 20:14 |
simulate - вообщем то лишний оператор (просто бесполезный. не ошибка.), а в остальном все верно. ищите ошибку в другом месте. впрочем сам текст ошибки был бы совсем не лишним |
Автор: Frein 07.04.10, 20:42 |
Ошибка вот такая: Line 11, Col 1. Expecting right parenthesis. 04/08/10 00:41:11 ASSIGN 2,v$cre кстати на всякий случай приведу весь код модели: cpu EQU 1 b1 EQU 1 pri VARIABLE P4 tim VARIABLE P2 cre VARIABLE UNIFORM(1,10,50) simulate Generate (Poisson(1,35) ASSIGN 2,v$cre ASSIGN 4,4 MET1 ASSIGN 2-20 ASSIGN 4-1 PRIORITY v$pri Queue b1; Seize cpu; Depart b1; Advance 20 Release cpu; TEST GE v$tim,0,MET1 Terminate; Generate 5000; Terminate 1; Start 1; а делает эта модель по моему замыслу должна: Первоначальная заявка обслуживается в системе не более 20 с (квант времени) и если время обслуживания данной заявки (задаваемое как некоторая случайная величина, равновероятно распределенная на интервале 10 –50 с) не больше кванта, то заявка удаляется из системы, иначе поступает в очередь на дообслуживание. Приоритет заявок из второй очереди меньше приоритета первоначальных заявок, а повторное прерывание заявки уменьшает ее приоритет и по отношению к заявкам, имеющим одно прерывание. |
Автор: TEMENb 07.04.10, 20:58 |
скобку закрой |
Автор: Frein 07.04.10, 21:13 |
спасибо |
Автор: veamin 08.04.10, 04:07 |
Ребята помогите, Пожалуйста, мне помогли с задачей, решили, а я дальше не могу ни чего понять, мне просто нужен отчет по работе, я сама много чего не понимаю, преподаватель сказал что нужна оформленная работа и все, получу долгожданный зачет))) БУДУ ВАМ ОЧЕНЬ БЛАГОДАРНА!!!))) хоть что нибудь))) блок схему нарисовать или таблицы))) 1. В машинный зал с интервалом времени 5-15 мин заходят пользователи, желающие произвести расчеты на ЭВМ. В зале имеется одна ЭВМ, работающая в однопрограммном режиме. Время6 необходимое для решения задач, включая вывод результатов на печать, характеризуется интервалом 10-20 мин. Третья часть пользователей после окончания решения своей задачи производит вывод текста программы на перфоленту (продолжительность перфорации - 1-5 мин). В машинном зале не допускается, чтобы более семи пользователей ожидали своей очереди на доступ к ЭВМ. Вывод программы на перфоленту не мешает проведению расчетов на ЭВМ. Смоделировать процесс обслуживания 100 пользователей. Подсчитать число пользователей, не нашедших свободного места в очереди. Определить среднее число пользователей в очереди, а также коэффициенты загрузки ЭВМ и ленточного перфоратора. FUNC FUNCTION RN1,D2 .667,0/1,1 GENERATE 10,5,,100 ASSIGN 1,FN$FUNC TEST L Q1,7,OUT QUEUE QPC SEIZE BYF DEPART QPC ADVANCE 15,5 TEST E P1,0,MET1 RELEASE BYF TERMINATE 1 MET1 QUEUE QPRINT RELEASE BYF SEIZE PRINT DEPART QPRINT ADVANCE 3,2 RELEASE PRINT TERMINATE 1 OUT TERMINATE 1 START 100 2. Метод построения модели (структура модели, количество необходимых сегментов, возможные варианты решения задачи и т.д.). 3. Таблица определений. 4. Блок-схема (блок-схема структуры модели с использованием условных обозначений блоков и пояснениями). 5. Листинг модели (с комментариями, если в задании требуется построить различные варианты модели, привести листинги для всех вариантов). 6. Выходные данные (полученные результаты, графики, таблицы). 7. Выводы (анализ выходных данных и рекомендации по улучшению модели (если необходимо)). |
Автор: Liza_Liza 10.04.10, 14:56 |
На маршруте работают два микроавтобуса (А и Б), каждый из которых имеет 10 мест. Микроавтобус А пользуется большей популярностью, нежели микроавтобус Б, поскольку водитель микроавтобуса А ездит аккуратнее и быстрее. Поэтому пассажир, подойдя к остановке, са¬дится в микроавтобус Б только в том случае, если микроавтобуса А нет. Микроавтобус отправляется на маршрут только в том случае, если все места в нем заняты. Пассажиры приходят к остановке через 0,5 ± 0,2 минут и, если нет микроавтобусов, становятся в очередь. Если очередь больше 30 человек, потенциальный пассажир уходит из очереди. Предполагает¬ся, что все пассажиры едут до конца маршрута. На прохождение мар¬шрута микроавтобус А тратит 20 ± 5 минут, микроавтобус Б - 30 ± 5 ми¬нут. После того, как пассажиры освободят микроавтобус (время осво¬бождения – 2 ± 1 минут), он едет в обратном направлении. Плата за проезд составляет 2 единицы стоимости. Автопредприятие столько же теряет (недополучает), если пассажир, придя на остановку, не ждет, а уходит (учесть это при определении затрат). Найти оценку времени ожидания в очереди и времени, которое тратит пассажир на поездку. Определить, при каком числе мест в микроавтобусах (не более 25) время ожидания в оче¬реди будет минимальным. Для этого значения числа мест определить выручку автопредприятия за день, если микроавтобусы работают 10 часов в сутки. Помогите!!!!!!!!!!!!!!!!!!!!!!!!!!Очень очень надо!!!!!!!!!!!!!!!!!!!!! |
Автор: TEMENb 10.04.10, 17:29 |
Liza_Liza, такая помощь не бесплатна. |
Автор: TEMENb 11.04.10, 14:03 |
Цитата irinak @ Такой вопрос по GPSS: Допустим есть два входных потока заявок с разными интенсивностями, заявки должны обслуживаться в устройстве с определенной интенсивностью. Имеется накопитель на две заявки. Причем, условие такое, что нужно чтобы в накопителе было равное представительство заявко каждого входного потока, т е одна заявка первого входного потока, вторая - со второго. Честно, немного задумалась, может подскажите, как реализовать такое условие? Спасибо) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate ,,,1 split 1,met2 met1 advance (poisson(1,2)) split 1,met1 met3 match met4 queue qqq seize 1 depart qqq advance 1 release 1 transfer ,term met2 advance (poisson(2,2)) split 1,met2 met4 match met3 queue qqq seize 1 depart qqq advance 1 release 1 term terminate 1 start 1000 очередь ограничивается либо тестом, либо вместо очереди ставим МКУ. По правде не очень ясен смысл. если разные интенсивтости, то тогда на одной из точек синхронизации возникнет накопление транзактов. А если мы будем уничтожать лишние, то где гарантии, что не уничтожим нужные.. |
Автор: TEMENb 11.04.10, 14:26 |
Цитата irinak @ Нужно чтобы в накопителе (к примеру, TURN3 STORAGE 2), заявки чередовались: т е заявка 1(с превого входного потока), заявка 2(со второго вх потока), заявка 1, заявка 2. Логично, что потери будут, если приходит заявка1 , затем опять заявка 1, то последняя заявка 1 должна уйти на потери или другую метку. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate (poisson(1,2)) test e ((x1=0)&(q$qqq<2)),1,nafig savevalue 1,1 queue qqq seize 1 depart qqq advance 1 release 1 transfer ,term generate (poisson(2,3)) test e ((x1=1)&(q$qqq<2)),1,nafig savevalue 1,0 queue qqq seize 1 depart qqq advance 1 release 1 term terminate 1 nafig terminate start 1000 Добавлено не думаю что сторидж подходит. т.к. тогда будет образовыватся вторая очередь.. перед накопителем |
Автор: irinak 11.04.10, 14:34 |
Спасибо, TEMENb ! А только вопрос:как я учту ограничение на 2 заявки? - очередь перед устройством ограничена 2-умя заявками, поэтому я и использую STORAGE. |
Автор: TEMENb 11.04.10, 14:34 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> initial x1,1 gentim function p1,d2 1,2/2,3 obrtim function p1,d2 1,2/2,3 generate ,,,1 split 1,,1 povt advance (poisson(1,(fn$gentim))) split 1,povt test e ((x1=p1)&(q$qqq<2)),1,nafig savevalue 1,((p1=1)+1) queue qqq seize 1 depart qqq advance fn$obrtim release 1 terminate 1 nafig terminate start 1000 ![]() ![]() Добавлено это уже сделано. проверьте максимальную длинну очереди |
Автор: TEMENb 11.04.10, 14:41 |
irinak, разрешаю поставить мне плюсик ![]() |
Автор: TEMENb 12.04.10, 10:21 |
сохраните номер потока в параметре транзакта, а в нужный момент разделите обычным тестом. |
Автор: TEMENb 13.04.10, 21:55 |
ответ очень прост и лаконичен. ХЗ ищите ошибку в другой части кода. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> initial x1,1 generate 40 assign 15,1 transfer ,T3_1 generate 40 assign 15,2 T3_1 TEST E ((x1=P15)&(q$O3<2)),1,T77 SAVEVALUE 1,((P15=1)+1) TEST E P15,1,PROTR SAVEVALUE COUNTTIP1+,1 PROTR QUEUE O3 SEIZE DEVICE_S3 DEPART O3 ADVANCE (Exponential(1,0,20)) RELEASE DEVICE_S3 terminate 1 t77 terminate start 10000 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - Untitled Model 1.10.1 Wednesday, April 14, 2010 00:54:43 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 292176.719 16 1 0 NAME VALUE COUNTTIP1 10001.000 DEVICE_S3 10002.000 O3 10000.000 PROTR 10.000 T3_1 6.000 T77 16.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 7304 0 0 2 ASSIGN 7304 0 0 3 TRANSFER 7304 0 0 4 GENERATE 7304 0 0 5 ASSIGN 7304 0 0 T3_1 6 TEST 14608 0 0 7 SAVEVALUE 10001 0 0 8 TEST 10001 0 0 9 SAVEVALUE 5001 0 0 PROTR 10 QUEUE 10001 0 0 11 SEIZE 10001 1 0 12 DEPART 10000 0 0 13 ADVANCE 10000 0 0 14 RELEASE 10000 0 0 15 TERMINATE 10000 0 0 T77 16 TERMINATE 4607 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY DEVICE_S3 10001 0.699 20.410 1 14607 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY O3 2 1 10001 4243 0.535 15.632 27.151 0 SAVEVALUE RETRY VALUE 1 0 2.000 COUNTTIP1 0 5001.000 CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE 14607 0 292160.000 14607 11 12 15 1.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 14609 0 292200.000 14609 0 4 14610 0 292200.000 14610 0 1 |
Автор: shurik671 14.04.10, 16:01 |
Здравствуйте!!!мучает меня GPSS World не по-детски.... помогите, пожалуйста, знаю, что подобную задачу решали... но у меня есть пару отличительных черт... в которых я не могу разобраться (а точнее категорически нет времени) Вот сама задача: На участке термической обработки выполняются цементация и закаливание шестерен, поступающих партиями по 10 шт. через 15±3 мин. Для цементации шестерни загружают в контейнеры по 6 шт. Цементация занимает 6±2 мин, а закаливание — 7±3 мин. Качество определяется суммарным временем обработки. Шестерни с временем обработки больше 15 мин покидают участок, с временем обработки от 11 до 15 мин передаются на повторную закалку и при времени обработки меньше 11 мин должны пройти повторную полную обработку. Детали с суммарным временем обработки меньше 12 мин считаются вторым сортом. Смоделировать процесс обработки на участке 10000 шестерен. Определить функцию распределения времени обработки и вероятности повторения полной и частичной обработки. При выходе продукции без повторной обработки менее 90% обеспечить на участке мероприятия, дающие гарантированный выход продукции первого сорта 90%. Помогите, кто чем может, заранее глагодарю ![]() |
Автор: TEMENb 14.04.10, 16:19 |
могу сделать все задание. за дЭньги |
Автор: ksukp2 15.04.10, 12:24 |
Здравствуйте! Помогите пожалуйста! Написала курсовую по GPSS, но не уверена, что правильно( как-то странно работает)... Задание: Система автоматизации проектирования (САПР) создана на базе ЭВМ, функционирующей в режиме множественного доступа. Пятеро инженеров-проектировщиков с помощью своих дисплеев одновременно и независимо проводят диалог с ЭВМ, определяя очередной вариант расчета. Каждый диа-лог состоит из десяти циклов ввода вывода данных. Во время одного цикла происходит следующее: за 10+5 с инженер обдумывает и вводит текст стро-ки; в течение 2 с работает процессор ЭВМ, подготавливая текст ответа; в те-чение 5 с текст ответа выводится на дисплей. После ввода 11й строки начи-нается работа процессора по расчету конструкции и продолжается 30+10 с. За 5 с результат расчета выводится на экран, после чего инженер в течение 15+5 с анализирует его и начинает новый диалог. Операции по подготовке текста ответа имеют абсолютный приоритет над расчетными, т.е. прерывают выполнение последних. Смоделировать процесс работы САПР при условии, что расчет вариан-тов конструкции выполняется 100 раз Текст программы: KOL EQU 5 NCIC EQU 11 KOLPR VARIABLE KOL-1 GENERATE ,,,1 SPLIT V$KOLPR,COM1,1 COM1 SEIZE P1 ASSIGN 2,NCIC ABC ADVANCE 10,5 PREEMPT CPU ADVANCE 2 RETURN CPU ADVANCE 5 LOOP 2,ABC SEIZE CPU ADVANCE 30,10 RELEASE CPU ADVANCE 5 ADVANCE 15,5 RELEASE P1 TRANSFER ,COM1 GENERATE 100000 TERMINATE 1 |
Автор: TEMENb 15.04.10, 12:31 |
не запускал не тестировал, но выглядит правильно и код очень даже симпатичный. Единственное замечание - не реализовано условие завершения моделирования. сделать это можно при помощи оператора split, отправляя одну копию в новый цикл, а вторую в терминейт |
Автор: ksukp2 15.04.10, 13:08 |
Спасибо) А после чего его нужно вставить? |
Автор: NATAFFFka 17.04.10, 12:54 |
помогите пожалуйста с задачей Вот условие:На вычислительный центр через 300100 секунд поступают задания длинной 500200 байт. Скорость ввода, вывода и обработки заданий 100 б\мин. Задания проходят последовательно ввод, обработку и вывод буферизуясь перед каждой операцией. После вывода 5% заданий оказываются выполненными неправильно вследствие сбоев и возвращаются на ввод. Для ускорения обработки задания в очередях располагаются по возрастанию их длинны, то есть короткие сообщения обслуживаются в первую очередь. Задания выполненные неверно возвращаются на ввод и во всех очередях обслуживаются первыми Задание смоделировать работу вычислительного центра в течении 30 часов. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. Вот текс программы:input equ 1 obr equ 2 output equ 3 tdl equ 4 tpr equ 5 tvr equ 9 och1 equ 6 och2 equ 7 och3 equ 8 tdl fvariable (RN$1/999)*400+300 tvr fvariable P$1*60/100 tpr fvariable (700-P$1)/400*127 simulate generate 300,100 assign 1,v$tdl assign 2,v$tvr priority v$tpr M1 queue och1 seize input advance P$2 release input depart och1 M2 queue och2 seize obr advance P$2 release obr depart och2 M3 queue och3 seize output advance P$2 release output depart och3 priority 127 transfer .95,M1,OUT OUT terminate generate 108000 terminate 1 start 1 выдает следующие ошибки:04/17/10 16:53:28 Model Translation Begun. 04/17/10 16:53:28 Line 10, Col 17. Invalid character. 04/17/10 16:53:28 tdl fvariable (RN$1/999)*400+300 04/17/10 16:53:28 Line 11, Col 15. Invalid character. 04/17/10 16:53:28 tvr fvariable P$1*60/100 04/17/10 16:53:28 Line 12, Col 20. Invalid character. 04/17/10 16:53:28 tpr fvariable (700-P$1)/400*127 04/17/10 16:53:28 Line 18, Col 1. Invalid SNA. Expecting a Label or GPSS Verb. 04/17/10 16:53:28 M1 queue och1 04/17/10 16:53:28 **** Model Translation Aborted **** что не правильно не могу понять.заранее спасибо! |
Автор: TEMENb 17.04.10, 13:21 |
звездочка(*) - это знак косвенной адресации умножение - это диез (#) Добавлено ksukp2, не думал, что для человека, написавшего такой код, станет эта проблема. |
Автор: NATAFFFka 18.04.10, 17:25 |
большое спасибо!!! Добавлено что то все равно не работает и ошибку указывает на знак $, помогите пожалуйста не знаю что уже сделать просто голову сломала |
Автор: TEMENb 18.04.10, 17:56 |
$ ставится только перед символными именами. перед числовыми не ставится. должно быть просто P1 |
Автор: vista1243 20.04.10, 09:50 |
Здравствуйте! Помогите пожалуйста еще раз. Код правильный, но на всякий случай опишу само задание, чтобы понятнее было о чем речь. Имеется вычислительная система с конвейерной структурой, состоящей из трех процессоров П1, П2, П3. На вход системы поступает поток сообщений, которые последовательно обрабатываются в каждом из процессоров. На входе каждого процессора имеется буфер (Б1, Б2, Б3), необходимый для приема сообщений и предотвращения их потери при пиковых нагрузках. Сообщения в буфере образуют очередь и обрабатываются соответствующим процессором в порядке их поступления. Обработанные сообщения образуют выходной поток сообщений. Требуется собрать информацию об интервалах между прибытиями транзактов в заданных точках. Нужно использовать МКУ. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> FUNC1 FUNCTION RN1,C2 0,13/1,32. FUNC2 FUNCTION RN2,C11 0,0/.125,2/.25,7/.375,12/.45,20/.5,25/.625,40/.75,55/.875,80/.9,90/1,100. FUNC3 FUNCTION RN3,C25 0,-5/.00003,-4/.00135,-3 .00621,-2.5/.02275,-2/.06681,-1.5 .11507,-1.2/.15866,-1/.21186,-.8 .27425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4 .72575,.6/.78814,.8/.84134,1 .88493,1.2/.93319,1.5/.97725,2 .99379,2.5/.99865,3/.99997,4/1,5 NORM VARIABLE FN$FUNC3 # 3 + 20 FUNC4 FUNCTION RN7,D4 .25,20/.5,60/.75,80/1,100. INITIAL X$TIM,0 TABL TABLE (AC1-X$TIM),0,10,10; IA - режим использования таблицы, начало - 0, длина интервала - 10, количество интервалов 20 ****************************************************************** GENERATE FN$FUNC4; BUF STORAGE 1000; ENTER BUF; SEIZE PROC1; занять прибор LEAVE BUF; покинуть очередь ADVANCE V$NORM; задержать транзакт RELEASE PROC1; освободить прибор ENTER BUF; SEIZE PROC2; LEAVE BUF; ADVANCE FN$FUNC1; RELEASE PROC2; TEST G N$MET1,0,MET1; TABULATE TABL; точка Д met1 SAVEVALUE TIM,AC1; ENTER BUF; SEIZE PROC3; LEAVE BUF; ADVANCE 23,9; RELEASE PROC3; TERMINATE 1 ; удаление транзакта ****************************************************************** START 100; Отчет имеет вид: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - Lab2.1.2 Sunday, April 11, 2010 21:43:30 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 6564.060 20 3 1 NAME VALUE BUF 10007.000 FUNC1 10000.000 FUNC2 10001.000 FUNC3 10002.000 FUNC4 10004.000 MET1 14.000 NORM 10003.000 PROC1 10008.000 PROC2 10009.000 PROC3 10010.000 TABL 10006.000 TIM 10005.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 100 0 0 2 ENTER 100 0 0 3 SEIZE 100 0 0 4 LEAVE 100 0 0 5 ADVANCE 100 0 0 6 RELEASE 100 0 0 7 ENTER 100 0 0 8 SEIZE 100 0 0 9 LEAVE 100 0 0 10 ADVANCE 100 0 0 11 RELEASE 100 0 0 12 TEST 100 0 0 13 TABULATE 99 0 0 MET1 14 SAVEVALUE 100 0 0 15 ENTER 100 0 0 16 SEIZE 100 0 0 17 LEAVE 100 0 0 18 ADVANCE 100 0 0 19 RELEASE 100 0 0 20 TERMINATE 100 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY PROC1 100 0.303 19.902 1 0 0 0 0 0 PROC2 100 0.337 22.136 1 0 0 0 0 0 PROC3 100 0.356 23.344 1 0 0 0 0 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY BUF 1000 1000 0 3 300 1 0.035 0.000 0 0 TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.% TABL 64.940 29.570 0 10.000 - 20.000 12 12.12 20.000 - 30.000 7 19.19 30.000 - 40.000 5 24.24 40.000 - 50.000 4 28.28 50.000 - 60.000 10 38.38 60.000 - 70.000 14 52.53 70.000 - 80.000 11 63.64 80.000 - _ 36 100.00 SAVEVALUE RETRY VALUE TIM 0 6539.150 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 101 0 6580.000 101 0 1 Из него видно, что максимальная загруженность МКУ = 3. Не могли бы вы помочь ответить мне на вопрос: почему 100 транзактов достаточно для создания адекватной модели? При этом это как-то связано с объемом МКУ ![]() |
Автор: zhenya_jek 23.04.10, 15:06 |
Доброго времени суток, уважаемые. Сори за небольшой оффтоп - тем не менее более подходящей ветки в форуме не нашел. Подскажите, плиз - имеется ли возможность запустить в GPSS world (либо в GPSS PC) написанную модель из командной строки и получить стандартный отчет? (Задача возникла в связи с необходимостью использования результатов моделирования в программе на C++ Builder. Соответственно, по входящим параметрам формируется файл *.gps, который необходимо запустить на моделирование, а из отчета "выковырять" значения.) Как вы считаете, каким образом это возможно реализовать??? |
Автор: TEMENb 23.04.10, 15:11 |
невпервой задачка поставлена но пока никто еще не реализовал |
Автор: irinak 25.04.10, 05:14 |
Такая мини-задачка: есть два потока, после генерации заявки поступают в очередь на устройство, к примеру Device_S1, очередь ограничена 4 заявками, причем должно выполняться равное представительство заявко каждого типа. Проблема в том, как учесть возможный вариант 1-1-2-2, или 2-2-1-1, или 2-1-1-2, а не только 1-2-1-2. Спасибо! |
Автор: TEMENb 25.04.10, 16:11 |
irinak, чет не понял задачу |
Автор: Megera 28.04.10, 08:37 |
Помогите пожалуйста! написала вроде програмку, а окно report не вылетает. в чем дело? не могли бы подсказать. задача такая: рассмотреть работу телефонной сети, имеющей 50 абонентских линий связи, причем одновременно может работать быть задействовано не более 10 связей между абонентами. каждый абонент может соединиться с остальными, если свободны его входная линия связи и входная линия вызываемого абонента. из 50 линий для организации связи могут использоваться любые две свободные линии. необходимо промоделировать работу телефонной сети для 1000 вызовов. интервалы между вызовами и длительность разговора распределены по экспотенциальному закону. предусматривается, что первые 15 вызовов образуют переходный процесс в сети и эти данные не нужно учитывать при моделировании. вот что у меня получилось: POISS FUNCTION RN1,C24 ;функция интервалов между вызовами 0.0,0.0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69 0.6,0.915/0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,7.12 0.9,2.3/0.92,2.52/0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5 0.98,3.9/0.99,4.6/0.995,5.3/0.998,6.2/0.999,7/0.9997,8 GENERATE 12,FN$POISS ;генерация вызова TEST G V$FREELN,2,ABND ;система заполнена ASN1 ASSIGN 1,V$LINE ;если нет, указывается номер входной линии абонента вызывающего другого для разговора GATE LR *1,ASN1 ;проверка занятости линии ASN2 ASSIGN 2,V$LINE ;выбор адресата связи TEST NE P1,P2,ASN2 ;повторить если адресат совпадает со входной линией абонента LOGIC S *1 ;установить выходную линию абонента занятой TRANSFER BOTH,BLKD ;дождаться связи GETL ENTER LNKS ;установить связь GATE LR *2,BUSY ;проверка занятости LOGIC S *2 ;установить адресата занятым ADVANCE 120,FN$POISS ;разговор LOGIC R *1 установить входную линию абонента свободной LOGIC R *2 ;установить адресата свободным LEAVE LNKS ;освободить связь CKCH TEST G CH$WAIT,O,MTRM ;проверить есть ли ожидание вызовов GATE LR 1,GETF ;проверить свободна ли выходная линия UNLINK WAIT,GETL,1,2,GETF MTRM TERMINATE 1 GETF UNLINK WAIT,GETL,1 подключить первый ожидающий вызов TRANSFER ,MTRM ABND TERMINATE отказаться от ожидания BLKD LINK WAIT,P1 ожидать в порядке поступления вызовов BUSY LOGIC R *1 освободить линю LEAVE LNKS освободить связь TRANSFER ,CKCH LNKS STORAGE 10 колличество одновременных связей между абонентами LINE VARIABLE X$NRLINES#RN1/1000+1 FREELN VARIABLE X$NRLINES-2#S$LNKS-CH$WAIT INITIAL X$NRLINES,50 колличество линий для связи START 15,NP проходы RESET сброс статистики START 1000 моделирование 1000 вызовов |
Автор: TEMENb 28.04.10, 09:25 |
Megera, мам с пап не говорили, что обманывать не хорошо? Если же всетаки вы сами писали, то откуда же вы взяли параметры некоторых операторов, о которых обычно не упоминают в учебниках и из за которых отчет и не появляется? |
Автор: Megera 28.04.10, 15:11 |
просто было дано задание в ней разобраться. преподователь хочет что бы изучила че кого и объяснила ему. . .вот и сижу пыхчу. . .пытаюсь на примерах понять |
Автор: TEMENb 28.04.10, 15:16 |
а препод у вас суров, раз дает такие тексты с нуля для разбора. на всяк случай.. # - умножение * - косвенная адресация Напримет F*1 - индикатор занятости устройства, номер которого сохранен в первом параметре транзакта R *2 - колличество свободных каналов многоканального устройства, имя которого лежит во втором параметре транзакта. S *1 - текущее содержимое многоканального устройства, номер которого лежит в первом параметре транзакта ^ лишние пробелы советую удалить |
Автор: Megera 28.04.10, 15:22 |
аааааа!спасибо вам. . .хоть маленько помогли. . .а можно еще вопрос! вы не подскажете, тут в учебнике написано, что команда report выводит стандартный статистический отчет о работе модели. ее получается нужно в программе указать, что бы появилось? или нет? я пару коротких заданий делала, так там они сами появлялись) |
Автор: TEMENb 28.04.10, 15:28 |
Цитата TEMENb @ Megera, мам с пап не говорили, что обманывать не хорошо? Если же всетаки вы сами писали, то откуда же вы взяли параметры некоторых операторов, о которых обычно не упоминают в учебниках и из за которых отчет и не появляется? NP удали. это означает not print т.е. не выводить отчет. |
Автор: Megera 28.04.10, 15:34 |
ага! да вам цены нет!!!!! |
Автор: Megera 29.04.10, 05:13 |
у меня тут такой вопрос объявился, точнее ситуация. . .вот задача:В узел коммутации сообщений, состоящий из входного буфера, процессора, двух исходящих буферов и двух выходных линий, поступают сообщения с двух направлений. Сообщения с одного направления поступают во входной буфер, обрабатываются в процессоре, буферируются в выходном буфере первой линии и передаются по выходной линии. Сообщения со второго направления обрабатываются аналогично, но передаются по второй выходной линию применяемый метод контроля потоков требует одновременного присутствия в системе не более трех сообщений на каждом направлении. Сообщения поступают через интервалы 15±7 мс. Время обработки в процессоре равно 7 мс на сообщение, время передачи по выходной линии равно 15±5 мс. если сообщение поступает при наличии трех сообщений в направлении, то оно получает отказ. Смоделировать работу узла коммутации в течении 10 с. определить загрузки устройств и вероятность отказа в обслуживании из-за переполнения буфера направления. Определить изменения в функции распределения времени передачи при снятии ограничений, вносимых методом контроля потоков. time1 table m1,15,1,50 time2 table m1,15,1,50 generate 15,7,,,1 создание сообщений напрвления 1 TEST L X$napr1,3,out b1 savevalue napr1+,1 transfer ,buf TRANSFER ,buf generate 15,7,,,2 создание сообщений направления 2 generate 15,7,,,2 TEST L X$NAPR2,3,OUT savevalue napr2+,1 buf queue 1 seize 1 depart 1 advance 7 release 1 test e pr,1,buvx2 buvx1 queue 2 seize 2 depart 2 advance 15,5 release 2 savevalue napr1-,1 tabulate time1 terminate buvx2 queue 3 seize 3 depart 3 advance 15,5 release 3 savevalue napr2-,1 tabulate time2 terminate out savevalue otkaz+,1 terminate generate 10000 terminate 1 start 1 в начале не было ошибок и выдавал результат, но! вот он: GPSS World Simulation Report - Untitled Model 1.16.1 Thursday, April 29, 2010 11:09:49 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 10000.000 33 2 0 NAME VALUE B1 3.000 BUF 8.000 BUVX1 14.000 BUVX2 22.000 NAPR1 10002.000 NAPR2 10003.000 OTKAZ 10004.000 OUT 30.000 TIME1 10000.000 TIME2 10001.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 676 0 0 2 TEST 676 0 0 B1 3 SAVEVALUE 3 0 0 4 TRANSFER 3 0 0 5 GENERATE 661 0 0 6 TEST 661 0 0 7 SAVEVALUE 656 0 0 BUF 8 QUEUE 659 0 0 9 SEIZE 659 0 0 10 DEPART 659 0 0 11 ADVANCE 659 1 0 12 RELEASE 658 0 0 13 TEST 658 0 0 BUVX1 14 QUEUE 0 0 0 15 SEIZE 0 0 0 16 DEPART 0 0 0 17 ADVANCE 0 0 0 18 RELEASE 0 0 0 19 SAVEVALUE 0 0 0 20 TABULATE 0 0 0 21 TERMINATE 0 0 0 BUVX2 22 QUEUE 658 2 0 23 SEIZE 656 0 0 24 DEPART 656 0 0 25 ADVANCE 656 1 0 26 RELEASE 655 0 0 27 SAVEVALUE 655 0 0 28 TABULATE 655 0 0 29 TERMINATE 655 0 0 OUT 30 SAVEVALUE 678 0 0 31 TERMINATE 678 0 0 32 GENERATE 1 0 0 33 TERMINATE 1 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 1 659 0.461 6.998 1 1338 0 0 0 0 3 656 0.984 14.999 1 1332 0 0 0 2 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 1 2 0 659 655 0.002 0.036 5.928 0 3 5 2 658 44 1.628 24.741 26.514 0 TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.% TIME1 0.000 0.000 0 TIME2 46.814 19.191 0 17.000 - 18.000 4 0.61 18.000 - 19.000 5 1.37 19.000 - 20.000 7 2.44 20.000 - 21.000 5 3.21 21.000 - 22.000 11 4.89 22.000 - 23.000 13 6.87 23.000 - 24.000 11 8.55 24.000 - 25.000 11 10.23 25.000 - 26.000 19 13.13 26.000 - 27.000 20 16.18 27.000 - 28.000 16 18.63 28.000 - 29.000 9 20.00 29.000 - 30.000 14 22.14 30.000 - 31.000 17 24.73 31.000 - 32.000 16 27.18 32.000 - 33.000 20 30.23 33.000 - 34.000 13 32.21 34.000 - 35.000 10 33.74 35.000 - 36.000 16 36.18 36.000 - 37.000 11 37.86 37.000 - 38.000 11 39.54 38.000 - 39.000 4 40.15 39.000 - 40.000 12 41.98 40.000 - 41.000 12 43.82 41.000 - 42.000 13 45.80 42.000 - 43.000 9 47.18 43.000 - 44.000 10 48.70 44.000 - 45.000 7 49.77 45.000 - 46.000 11 51.45 46.000 - 47.000 7 52.52 47.000 - 48.000 11 54.20 48.000 - 49.000 10 55.73 49.000 - 50.000 16 58.17 50.000 - 51.000 10 59.69 51.000 - 52.000 16 62.14 52.000 - 53.000 12 63.97 53.000 - 54.000 12 65.80 54.000 - 55.000 8 67.02 55.000 - 56.000 14 69.16 56.000 - 57.000 13 71.15 57.000 - 58.000 12 72.98 58.000 - 59.000 7 74.05 59.000 - 60.000 11 75.73 60.000 - 61.000 16 78.17 61.000 - 62.000 12 80.00 62.000 - 63.000 8 81.22 63.000 - _ 123 100.00 SAVEVALUE RETRY VALUE NAPR1 0 3.000 NAPR2 0 1.000 OTKAZ 0 678.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 1338 2 10001.066 1338 11 12 1332 2 10003.635 1332 25 26 1339 2 10006.114 1339 0 5 1340 0 10014.229 1340 0 1 1341 0 20000.000 1341 0 32 отказов у меня 678!!!!!!!!!!!!! я начала искать ошибку и в результате теперь он мне выдает что неправильно generate 15,7,,,2 может вы чем нибудь сможете помочь? |
Автор: Василий_Н 03.05.10, 17:00 |
Приветствую! Начал осваивать GPSS. Вот задачка, которую пытаюсь реализовать: В африканском порту танкеры загружаются сырой нефтью, которую затем морским путём доставляют по назначению. Мощности порта позволяют загружать не более трёх танкеров одновременно. Танкеры, прибывающие в порт через каждые 11+-7ч, относятся к 3-м различным типам. Относительная частота появления танкеров данного типа и время требуемое на их погрузку: тип - 1, относительная частота - 0.25, время погрузки - 18+-2ч; тип - 2, относительная частота - 0.55, время погрузки - 24+-3ч; тип - 3, относительная частота - 0.20, время погрузки - 36+-4ч; (Относительную частоту следует понимать, как вероятность того, что прибывший танкер относится к данному типу) В порту имеется один буксир, услугами которого пользуются все танкеры при причаливании и отчаливании. Причаливание и отчаливание занимает занимает по одному часу, причём, если в услугах буксира нуждаются сразу несколько танкеров, приоритет отдаётся операции причаливания. Судовладелец предлагает дирекции порта заключить контракт на перевозку нефти в Великобританию и обеспечить выполнение условий контракта с помощью 5 танкеров особого, четвёртого типа, для погрузки которых требуется 12+-3ч. После погрузки танкер отчаливает и следует в Великобританию, там разгружается и затем снова возвращается в африканский порт для погрузки. Время обращения танкера, включая время разгрузки, составляет 240+-24ч. Фактором осложняющим перевозку нефти, являются штормы, которым подвергается порт. Интервал времени между штормами распределён экспоненциально с математическим ожиданием 48ч, причём шторм продолжается 4+-2ч. Во время шторма буксир не работает. Перед заключением контракта руководство порта решило определить влияние, которое окажут пять дополнительных танкеров на функционирование порта. Выводы предлагается сделать по результатам имитации работы порта в течение одного года(8760ч) при условии заключения предлагаемого контракта. Оцениваемые величины - время пребывания в дополнительных танкеров и уже работающих танкеров трёх типов. Вот как я это переложил на GPSS: SIMULATE A3 STORAGE 3 ; Одновременно не более 3-х загружаемых танкеров A5 STORAGE 5 ; 5 дополнительных танкеров GENERATE 11,7 QUEUE AA3 ; Занимаем очередь для погрузки ENTER A3 ; Занимаем место для погрузки DEPART AA3 ; Освобождаем очередь PRIORITY 2 ; Причаливание начало/ SEIZE BUKSIR ADVANCE 1 RELEASE BUKSIR PRIORITY 1 ; Причаливание конец\ TRANSFER .550,,type_2 ; Погрузка начало/ TRANSFER .200,,type_3 ADVANCE 18,2 TRANSFER ,metka1 type_2 ADVANCE 24,3 TRANSFER ,metka1 type_3 ADVANCE 36,4 TRANSFER ,metka1 ; Погрузка конец\ metka1 SEIZE BUKSIR ; Отчаливание начало/ ADVANCE 1 RELEASE BUKSIR ; Отчаливание конец\ LEAVE A3 ; Освобождаем место для погрузки TERMINATE GENERATE (EXPONENTIAL(1,0,48)) ; Шторм SEIZE BUKSIR ADVANCE 4,2 RELEASE BUKSIR TERMINATE GENERATE 1 ENTER A5 ; -1 свободный дополнительный танкер QUEUE AA3 ; Занимаем очередь для погрузки ENTER A3 ; Занимаем место для погрузки DEPART AA3 ; Освобождаем очередь PRIORITY 2 ; Причаливание начало/ SEIZE BUKSIR ADVANCE 1 RELEASE BUKSIR PRIORITY 1 ; Причаливание конец\ ADVANCE 31,3 ; Погрузка /\ SEIZE BUKSIR ; Отчаливание начало/ ADVANCE 1 RELEASE BUKSIR ; Отчаливание конец\ LEAVE A3 ; Освобождаем место для погрузки ADVANCE 240,24 ; Плывём в Великобританию LEAVE A5 ; Танкер вернулся и свободен TERMINATE GENERATE 8760 TERMINATE 1 Правильно ли я решил поставленную задачу? Т.к. это моя первая задача, боюсь, что мог накосячить. Особенно сомневаюсь в следующих местах: 1)PRIORUTY. Правильно ли я применил этот оператор? Увы, о мне удалось найти очень уж скудное и не совсем понятное описание этого оператора, возможно я его не правильно применил. 2)GENERATE (EXPONENTIAL(1,0,48)) - По условию мне нужно экспоненциальное распределение с мат. ожиданием 48. Увы нагуглить адекватное решение сей проблемы не удалось, мне показалось, что выглядеть это должно так, но я не уверен. 3)С дополнительными танкерами у меня ещё большие сомнения, мне кажется что генерировать через 1 ед. и там проверять на наличие свободного доп. танкера не очень красивое решение, но увы по другому я придумать не смог ![]() 4)И собственно говоря не понятно как правильно сделать окончательные выводы. Из отчёта получается, что танкер загружен на 31%, погрузчики на 97%. А вот как определить Сколько времени какие танкеры там стоят и как провести анализ влияния дополнительных танкеров? Заранее огромное спасибо за помощь! |
Автор: TEMENb 03.05.10, 21:17 |
сижу с телефона, текст программы не вижу. могу ответить только на второй (все верно) и третий (неверно, нужно строить отдельный сегмент)вопросы |
Автор: Василий_Н 04.05.10, 09:28 |
Цитата TEMENb @ сижу с телефона, текст программы не вижу. могу ответить только на второй (все верно) и третий (неверно, нужно строить отдельный сегмент)вопросы Так вроде у меня и есть отдельный сегмент? Блок между GENERATE и TERMINATE это же и есть сегмент или я не правильно понял специальную терминологию GPSS? И если я не правильно реализовал сей момент, подскажите, пожалуйста, в каком направлении мне нужно двигаться, чтобы сделать правильно? |
Автор: TEMENb 04.05.10, 16:29 |
еще раз повторюсь, что я в "круизе" и ява на телефоне не очень, а текст программы в спойлере. да, действительно сегмент. но в жпсс-в время не дискретно. если ну очень хочется именно иаким методот - генегигуйте транзакт каждую тысячную евм. но я лично сгенерировал бы один единственный транзакт и зациклил бы его. мет марк тест е ... сейввалуе тест не ... трансфер ,мет |
Автор: Василий_Н 05.05.10, 04:54 |
Ок, понял, убрал спойлер. Посмотрите, пожалуйста, сам код. Буду очень благодарен! |
Автор: Василий_Н 06.05.10, 07:27 |
Цитата TEMENb @ но я лично сгенерировал бы один единственный транзакт и зациклил бы его. мет марк тест е ... сейввалуе тест не ... трансфер ,мет Т.е. правильно ли я понял, что нужно вместо 3-х моих сегментов делать один общий? А как внутри их разделять? Скажем как я смогу проверить что подошёл нужный момент для шторма? Цитата TEMENb @ если ну очень хочется именно иаким методот - генегигуйте транзакт каждую тысячную евм. А это будет допустимым решением или всё-таки это ошибка? И всё-таки уже который день пытаюсь разобраться с анализом отчёта GPSS, но пока не всё понятно, вы не могли подтолкнуть в нужном направлении? Заранее огромное спасибо! |
Автор: Василий_Н 06.05.10, 09:15 |
Вот отчёт без сегмента с дополнительными 5-ю танкерами: FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY BUKSIR 1798 0.269 1.311 1 0 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY AA3 3 0 805 594 0.142 1.543 5.888 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY A3 3 0 0 3 805 1 2.309 0.770 0 0 A5 5 5 0 0 0 1 0.000 0.000 0 0 А вот с дополнительными 5-ю(GENERATE 0.01): FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY BUKSIR 2093 0.305 1.277 1 875276 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY AA3 8 0 953 127 1.756 16.137 18.618 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY A3 3 0 0 3 953 1 2.910 0.970 0 0 A5 5 0 0 5 154 1 5.000 1.000 0 875846 Теперь мой анализ: 1)Из второго отчёта мы видим, что UTIL. STORAGE A5 = 1.000, следовательно дополнительные 5 танкеров работают на полную мощь, а значит погрешность моей реализации(GENERATE 0.01) пренебрежимо мала и на модели не видна. 2)Загруженность буксира ранее мы имели 26.9%, при дополнительных 5-и танкерах она поднимается до 30.5% 3)Без доп танкеров максимальная очередь была 3, а среднее время ожидания в очереди 1.543часа, после введения дополнительных 5-и танкеров, длина очереди возросла до 8-и, а среднее время ожидание в очереди до 16.137часа 4)В первом отчёте мы получаем загруженность погрузочных мес равную 77%, а во втором отчёте 97%(т.е. после введения доп. танкеров занятость погрузчиков выросла на 20%). Правильны ли мои выводы? И всё таки до сих пор не могу разобраться, что означают: AVE.CONT., AVE.C., ENTRY(0), AVE.(-0), DELAY, RETRY |
Автор: TEMENb 06.05.10, 10:33 |
скажем так, на мой взгяд это будет кривое решение. но тем не менее оно даст результат похожий на адекватный. Цитата Василий_Н @ Т.е. правильно ли я понял, что нужно вместо 3-х моих сегментов делать один общий? А как внутри их разделять? Скажем как я смогу проверить что подошёл нужный момент для шторма? неправильно. генерация шторма и прочие действия пусть остаются как есть. просто в модель добавляем еще один сегмент. вот вам задачка для примера. будем в отдельном сегменте считать время одновременной работы двух устройств <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> в итоге получим, что время одновременной работы составило около 256 емв, при времени моделлирования в 1027 емв, что очень несложно проверить аналитически. initial x$sum,0 generate (exponential(1,0,2)) seize 1 advance 1 release 1 terminate 1 generate (exponential(1,0,2)) seize 2 advance 1 release 2 terminate 1 generate ,,,1 met mark test ne (f1+f2),2 savevalue sum+,m1 test e (f1+f2),2 transfer ,met start 1000 Добавлено т.е. проверяем состояние системы вообще отдельным сегментом. условие можно поставить абсолютно любое.. в том смысле, что можно составить условие, оценивающее любое состояние системы.. собственно по этой причине я никогда не использую гейты и булевы переменные )) Добавлено и что б совсем уж для сравнения <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> initial x$sum1,0 initial x$sum2,0 generate (exponential(1,0,2)) seize 1 advance 1 release 1 terminate 1 generate (exponential(1,0,2)) seize 2 advance 1 release 2 terminate 1 generate ,,,1 met mark test ne (f1+f2),2 savevalue sum1+,m1 test e (f1+f2),2 transfer ,met generate .001 savevalue sum2+,(((f1+f2)=2)/1000) terminate start 1000 обратите внимание на время, которое проходит от момента запуска на выполнение до момента получения отчета ![]() Добавлено Megera тут вхождение в блок дженерейт. один из них надо бы удалить и все заработает ![]() |
Автор: ivx2 06.05.10, 12:06 |
Помогите, дан код, реализующий работу робата манипулятора: mode FUNCTION RN1,D2 0.5, mode1/1, mode2 INITIAL X1,0 ;прием запросов разрешен INITIAL X2,0 ;флаг функционнирования СМО в первом режиме ;флаг функционнирования СМО во втором режиме ;-- запуск СМО -- GENERATE (Gamma(1,0,10,3)) ;генерация запроса TEST NE X1,1,ERROR_OUT ;если устройство занято, поступивший запрос теряется SAVEVALUE 1,1 ;установить флаг занятости устройства в единицу TERMINATE 1 ;вывести запрос из системы TRANSFER ,FN$mode ;использование функции распределения запросов ;-- режим 1 -- mode1 SAVEVALUE 2,1 GENERATE (Exponential(1,0,0.35)) ;контроль устройством S1 TRANSFER ALL,con111,con1l2 ;распределение сиг. контроля для первого режима con111 QUEUE OCH2 ;контроль устройства S2 SEIZE S2 ;поместить сигнал контроля в устройство DEPART OCH2 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.62)) ;обслуживание устройства RELEASE S2 ;высвобождение устройства TERMINATE 1 ;вывести сигнал контроля из устройства TRANSFER ,move ;перейти на генерацию команд conl12 QUEUE OCH7 ;контроль устройства SEIZE S7 ;поместить сигнал контроля в устройство DEPART OCH7 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.74)) ;обслуживание устройства RELEASE S7 ;высвобождение устройства TERMINATE 1 ;вывести команду из системы TRANSFER ,move move GENERATE (Exponential(1,0,0.2)) ;генерация команды TRANSFER ALL,com11,com12 ;генерация команды com11 QUEUE OCH8 ;поместить команду в очередь SEIZE S8 ;поместить команду в устройство DEPART OCH8 ;изъять команду из очереди ADVANCE (Exponential(1,0,2.86)) ;начать процесс обслуживания устройства RELEASE S8 ;высвобождение устройства TERMINATE 1 ;вывести команду из системы TRANSFER ,conend ;переход на контроль com12 QUEUE OCH13 ;поместить команду в очередь SEIZE S13 ;поместить команду в устройство DEPART OCH13 ;изъять команду из очереди ADVANCE (Exponential(1,0,3.03)) ;начать процесс обслуживания устройства RELEASE S13 ;высвобождение устройства TERMINATE 1 ;вывести команду из системы TRANSFER ,conend conend GENERATE (Exponential(1,0,0.35)) ;генерация контрольного сигнала TRANSFER ALL,con121,con122 ;распред. сиг. кон. контроля для 1-го режима con121 QUEUE OCH2 ;контроль устройства SEIZE S2 ;поместить сигнал контроля в устройство DEPART OCH2 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.62)) ;обслуживание устройства RELEASE S2 ;высвобождение устройства TERMINATE 1 ;вывести сиг. контроля из системы SAVEVALUE 1,0 TRANSFER ,OUT ;переход на метку NEXT_MODE con122 QUEUE OCH7 ;контроль устройства SEIZE S7 ;поместить сигнал контроля в устройство DEPART OCH7 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.74)) ;обслуживание устройства RELEASE S7 ;высвобождение устройства TERMINATE 1 ;вывести сиг. контроля из системы SAVEVALUE 1,0 TRANSFER ,OUT mode2 TEST NE X2,0,genmod2 ;-- ожидание -- GENERATE (Exponential(1,0,0.2)) ;ожидание (переход из первого режима во второй) QUEUE OCH1 ;поместить сигнал ожидания в очередь SEIZE S1 ;поместить сигнал ожидания в S1 DEPART OCH1 ;изъять сигнал ожидания из очереди ADVANCE (Exponential(1,0,0.1)) ;обслуживания с МО=0.1 RELEASE S1 ;изъять сигнал ожидания из устройства SAVEVALUE 2,0 TERMINATE 1 ;-- режим 2 -- genmod2 GENERATE (Exponential(1,0,0.35)) TRANSFER ALL,con211,con212 ;запуск функции контроля для первого режима con211 QUEUE OCH4 ;контроль устройства SEIZE S4 ;поместить сигнал контроля в устройство DEPART OCH4 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.62)) ;обслуживание устройства RELEASE S4 ;высвобождение устройства TERMINATE 1 ;вывести сиг. контроля из системы TRANSFER ,shwopen ;переход на открытие схвата con212 QUEUE OCH5 ;контроль устройства SEIZE S5 ;поместить сигнал контроля в устройство DEPART OCH5 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.74)) ;обслуживание устройства RELEASE S5 ;высвобождение устройства TERMINATE 1 ;вывести сиг. кон. из системы TRANSFER ,shwopen shwopen GENERATE (Exponential(1,0,0.2)) ;сигнал: закрыть схват QUEUE OCH1 ;поместить сиг откр. схвата в OCH1 SEIZE S1 ;занять S1 сиг. откр. схвата DEPART OCH1 ;изъять сиг. откр. схвата ADVANCE (Exponential(1,0,4)) ;обслуживание с МО=4 RELEASE S1 ;изъять сиг. откр. схвата TERMINATE 1 ;вывести сиг. откр. схвата из системы GENERATE (Exponential(1,0,0.2)) ;генерация команды TRANSFER ALL,com21,com22 ;распределение команд по устр. com21 QUEUE OCH8 ;поместить команду в очередь SEIZE S8 ;поместить команду в устройство DEPART OCH8 ;изъять команду из очереди ADVANCE (Exponential(1,0,2.86)) ;начать процесс обслуживания устройства RELEASE S8 ;высвобождение устройства TERMINATE 1 ;вывести ком. из системы TRANSFER ,shwclose ;переход на закрытие схвата com22 QUEUE OCH11 ;поместить команду в очередь SEIZE S11 ;поместить команду в устройство DEPART OCH11 ;изъять команду из очереди ADVANCE (Exponential(1,0,3.03)) ;начать процесс обслуживания устройства RELEASE S11 ;высвобождение устройства TERMINATE 1 ;вывод СМО из СМО TRANSFER ,shwclose shwclose GENERATE (Exponential(1,0,0.2)) ;сигнал: открыть схват QUEUE OCH1 ;поместить в OCH1 сиг. закр. схвата SEIZE S1 ;занять устройство S1 сиг. закр. схвата DEPART OCH1 ;изъять сиг. закр.схвата ADVANCE (Exponential(1,0,4)) ;обслуживание МО=4 RELEASE S1 ;изъять сиг. закр. схвата TERMINATE 1 ;вывод сиг. закр. схвата из СМО GENERATE (Exponential(1,0,0.35)) ;Генерация сигналов контроля TRANSFER ALL,con221,con222 ;запуск функции контроля для первого режима con221 QUEUE OCH4 ;контроль устройства SEIZE S4 ;поместить сигнал контроля в устройство DEPART OCH4 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.62)) ;обслуживание устройства RELEASE S4 ;высвобождение устройства TERMINATE 1 ;вывести сиг. контроля из СМО TRANSFER ,OUT ;переход на завершение con222 QUEUE OCH5 ;контроль устройства SEIZE S5 ;поместить сигнал контроля в устройство DEPART OCH5 ;изъять сигнал из очереди ADVANCE (Exponential(1,0,0.74)) ;обслуживание устройства RELEASE S5 ;высвобождение устройства TERMINATE 1 ;вывод сигнала контроля из системы TRANSFER ,OUT ;переход на метку OUT ;-- вывод заявок -- OUT TERMINATE 1 ;вывод сиг. контроля из системы SAVEVALUE 1,0 ;установить флаг занятости устройства в единицу ERROR_OUT GENERATE 60000 TERMINATE 1 ;вывод запроса из системы START 1 ;установить число прогонов Почему выводится следующая ошибка: 05/06/10 15:04:48 Model Translation Begun. 05/06/10 15:04:48 Ready. 05/06/10 15:04:48 Simulation in Progress. 05/06/10 15:04:48 Error Stop. 05/06/10 15:04:48 Halt. XN: 5. Block 60 Next. 05/06/10 15:04:48 Clock:0.010555. Next: SEIZE. Line 67. 05/06/10 15:04:48 SEIZE S1 ;поместить сигнал ожидания в S1 05/06/10 15:04:48 Reference to a non-existent Storage entity. |
Автор: TEMENb 06.05.10, 12:20 |
колличество занятых каналов многоканального устройства номер 1 иными словами - поменяйте название устнойства на любое другое и старайтесь избегать названий состоящих из одной буквы |
Автор: TEMENb 06.05.10, 13:55 |
Василий_Н, ищи ответы тут. |
Автор: Lilly 06.05.10, 21:01 |
To TEMENЬ: здравствуйте! срочно требуется ваша помощь. но у меня, к сожалению, нет аськи. пожалуйста, если это возможно, дайте свой e-mail или номер телефона, либо другой какой-то способ, как к вам можно обратиться |
Автор: Lexa88 07.05.10, 08:52 |
Помогите, пожалуйста с такой задачей: Производственная линия состоит из двух станков ЧПУ, на каждом из которых работает отдельный оператор. Изделие обязательно проходит обработку на обеих станках последовательно. Перед первым станком может храниться неограниченное число изделий, однако, между первым и вторым станками может поместиться только одно изделие, ожидающее обработку. Оператор первого станка вынужден ждать освобождения места хранения между станками, даже если он закончил свою работу над следующим изделием. Изделия поступают на первый станок каждые 30±20 минут, время обработки на первом станке 25±10 минут, а на втором станке 30±10 минут. Время установки изделия на первый станок, со станка на ожидание, а затем установка и снятие со второго станка не учитывается. Условия варианта: • Определить эффективность работы линии при проведении обработки 100 изделий • Определить время простоя первого станка • Определить результаты моделирования за пять дней работы, используя операторы DO- ENDDD • Временная дискрета – 1 минута - Станки – устройства, - изделия - транзакты Набросок текста программы у меня получился такой: SIMULATE GENERATE 30,20 QUEUE STONEQ SEIZE STONE DEPART STONEQ ADVANCE 25,10 TEST LE STTWOQ,1 RELEASE STONE QUEUE STTWOQ SEIZE STTWO DEPART STTWOQ ADVANCE 30,10 RELEASE STTWO TERMINATE 1 START 100 END Как правильно реализовать условие "между первым и вторым станками может поместиться только одно изделие, ожидающее обработку", и "определить результаты моделирования за пять дней работы, используя операторы DO- ENDDD"? |
Автор: TEMENb 07.05.10, 10:23 |
Цитата Lexa88 @ "между первым и вторым станками может поместиться только одно изделие, ожидающее обработку" как то так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> queue stan1 seize ograni4enie seize stan1 depart stan1 advance release stan1 queue stan2 seize stan2 release ograni4enie depart stan2 advance release stan2 Добавлено а вообще вариантов великое множество. это первый пришедший на ум |
Автор: Lexa88 07.05.10, 11:03 |
Вроде все правильно, спасибо за ответ. |
Автор: Lilly 07.05.10, 12:43 |
TEMENb здравствуйте! срочно требуется ваша помощь. но у меня, к сожалению, нет аськи. пожалуйста, если это возможно, дайте свой e-mail или номер телефона, либо другой какой-то способ, как к вам можно обратиться |
Автор: TEMENb 07.05.10, 12:46 |
Lilly, я уже писал. смотрите в теме "" задачи по жпсс. кроме того можно посмотреть в профиле или написать в приват на форуме. вообщем вариантов, как обычно, море. |
Автор: Ura2007 09.05.10, 20:31 |
Всем привет!!! Нужна помощь нужно разобраться что делает программа не очень понятно.Листинг в файле с названием 1,отчет в вордовском документе. Есть ли редакторы где можно строить стуктуру программы (рисовать точнее) Заранее спасибо! |
Автор: TEMENb 10.05.10, 15:32 |
в визио можно строить |
Автор: irinak 14.05.10, 18:52 |
Подскажите, пожалуйста, как сделать такое: есть 4 абонента, которые соединяются между собой для пересылки сообщений. Соединяются хаотичным образом. Периодичность соединения, к примеру, распределяется по экспоненц закону с лямбда = 1. Кроме каркаса по этому есть ещё вопрос: заявки будут уходить из системы, когда их получит назначенный абонент? Спасибо большое заранее) |
Автор: TEMENb 14.05.10, 19:05 |
irinak, вопрос слишком уж абстрактный. имеет множество реализаций. у каждой свои плюсы и минусы. к тому же условие можно понять неравнозначно. периодичность соединения для каждого абонента или для всех вместе. для примера могу предложить вам такую реализацию. 4 абонента звонят друг-другу. звонки в системе осуществляются с периодом 4 единицы времени и имеют продолжительность 1 единицу. Если вызываемый абонент занят, то вызывающий продолжает ему звонить, пока не дозвонится. вызывающий абонент является занятым. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 4 test l (f1+f2+f3+f4),4,otk ;что бы избежать зацикливаний в след двух строчках povt assign 1,(duniform(1,1,4)) test ne f*1,1,povt ;если абонент занят, то ищем другого вызывающего абонента. (при различных значениях времени, тут возможны зацикливания, если убрать вторую строку программы) povt2 assign 2,(duniform(1,1,4)) test ne p1,p2,povt2 queue p1 seize p1 depart p1 queue p2 seize p2 depart p2 advance 1 release p1 release p2 terminate 1 otk terminate start 1000 |
Автор: irinak 14.05.10, 19:51 |
Уточняю))) Есть 4 абонента, с заданной периодичностью происходит соединение между парой несоединенных абонентов. Время соединения 3 секунды. Передаются сообщения. оно состоит из 20 +- 2 заявки. Передача сообщения составляет 0.15+-0.02секунд. В режиме А заявки передаются поочередно, а в режиме В заявки передаются одновременно. Вот) Спасибо) |
Автор: Imortal 16.05.10, 08:43 |
У меня в задании "все величины заданы экспоненциально. Там приход блоков, и соотвественно их задержка на устройствах. Блоки приходят по 2. Здесь уже было по поводу Цитата GENERATE (EXPONENTIAL (5,0,30)) А первый параметр (5) на что влияет? Это "номер генератора", но при изменение его, изменяется и среднее время задержки(ну и прихода). И в задержке писать Цитата ?advance (EXPONENTIAL (5,0,30)) |
Автор: irinaD 16.05.10, 10:31 |
Люди, помогите, пожалуйста. Лабораторная: На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4 % брака, второй соответственно 60 мин и 8 % брака. Все бракованные детали возвращаются на повторную обработку на второй станок. Детали, попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводят также два станка в среднем 100 мин каждый. Причём первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше трёх деталей. Все интервалы времени распределены по экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку второго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обработке. Я написала код: GENERATE 50; каждые 50 мин по 1 детали ASSIGN WasError,0 TRANSFER 0.5,SSS SEIZE STANOK1; занимаем 1 станок. ADVANCE 40,0; обработка детали 40 мин RELEASE STANOK1 TRANSFER 0.96,ERR ; 4% возможность брака TRANSFER 0,SECOND SSS TEST L WasError,2,EXT SEIZE STAN; ADVANCE 60,0; обработка детали 60 мин RELEASE STAN; Освобождение устройства. TRANSFER 0.92,ERR ; 8% возможность брака TRANSFER ,SECOND ERR ASSIGN WasError+,1 TRANSFER ,SSS SECOND QUEUE NAC1 TEST L Q$NAC1,3,Place_2 SEIZE STANOK1 ADVANCE 100,0 RELEASE STANOK1 ; DEPART NAC1 TRANSFER ,BEFEXT Place_2 SEIZE STAN ADVANCE 100,0 RELEASE STAN ; DEPART NAC1 BEFEXT DEPART NAC1 EXT TERMINATE 1 Start 500 Но в отчете 3 детали зависают. Можете объяснить, в чем ошибка? GPSS World Simulation Report - right.54.1 Sunday, May 16, 2010 14:29:44 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 25150.000 27 2 0 NAME VALUE BEFEXT 26.000 ERR 15.000 EXT 27.000 NAC1 10002.000 PLACE_2 23.000 SECOND 17.000 SSS 9.000 STAN 10003.000 STANOK1 10001.000 WASERROR 10000.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 503 0 0 2 ASSIGN 503 0 0 3 TRANSFER 503 1 0 4 SEIZE 240 0 0 5 ADVANCE 240 1 0 6 RELEASE 239 0 0 7 TRANSFER 239 0 0 8 TRANSFER 232 0 0 SSS 9 TEST 269 0 0 10 SEIZE 0 0 0 11 ADVANCE 0 0 0 12 RELEASE 0 0 0 13 TRANSFER 0 0 0 14 TRANSFER 0 0 0 ERR 15 ASSIGN 7 0 0 16 TRANSFER 7 0 0 SECOND 17 QUEUE 232 0 0 18 TEST 232 1 0 19 SEIZE 116 0 0 20 ADVANCE 116 0 0 21 RELEASE 116 0 0 22 TRANSFER 116 0 0 PLACE_2 23 SEIZE 115 0 0 24 ADVANCE 115 0 0 25 RELEASE 115 0 0 BEFEXT 26 DEPART 231 0 0 EXT 27 TERMINATE 500 0 0 FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY STANOK1 356 0.843 59.522 1 500 0 0 0 2 STAN 115 0.457 100.000 1 0 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY NAC1 9 1 232 0 2.573 278.922 278.922 0 |
Автор: TEMENb 16.05.10, 10:38 |
а разве это ошибка? просто не успели выйти. на момент окончания моделирования. |
Автор: irinaD 16.05.10, 10:51 |
И судя по отчету 1 TEST непроходит ни одна деталь. Почему? Добавлено Просто получается что, на второй станок не попадает ни одна деталь. Я неправильно с параметрами работаю? |
Автор: TEMENb 16.05.10, 11:00 |
прибор чтения мыслей на расстоянии подсказывает мне, что должно быть <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SSS TEST L p$WasError,2,EXT ![]() |
Автор: irinaD 16.05.10, 11:15 |
Спасибо, так действительно заработало. Зато теперь в отчесте на NEST зависает кучу деталей LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1436 0 0 2 ASSIGN 1436 0 0 3 TRANSFER 1436 0 0 4 SEIZE 700 0 0 5 ADVANCE 700 1 0 6 RELEASE 699 0 0 7 TRANSFER 699 0 0 8 TRANSFER 672 0 0 SSS 9 TEST 789 416 0 10 SEIZE 372 1 0 11 ADVANCE 371 0 0 12 RELEASE 371 0 0 13 TRANSFER 371 0 0 14 TRANSFER 345 0 0 ERR 15 ASSIGN 53 0 0 16 TRANSFER 53 0 0 SECOND 17 QUEUE 1017 0 0 18 TEST 1017 518 0 19 SEIZE 4 0 0 20 ADVANCE 4 0 0 21 RELEASE 4 0 0 22 TRANSFER 4 0 0 PLACE_2 23 SEIZE 495 0 0 24 ADVANCE 495 0 0 25 RELEASE 495 0 0 BEFEXT 26 DEPART 499 0 0 EXT 27 TERMINATE 500 0 0 |
Автор: TEMENb 16.05.10, 11:22 |
пожалуйста, оформляйте текст и отчет как код. глаза сломать можно. Добавлено было бы очень клево, по человечески поставить очереди перед устройствами. ато у вас транзакты зависают в тестах и фиг поймешь куда они ити собираются |
Автор: irinaD 16.05.10, 11:28 |
В том-то и дело, что я сначала освобождала устройство RELEAS, а потом переходила TRANSFER Сейчас попробую очереди поставить |
Автор: irinaD 16.05.10, 11:55 |
Измененный код <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> STAN STORAGE 1 STANOK1 STORAGE 1 GENERATE 50; каждые 50 мин по 1 детали ASSIGN WasError,0 TRANSFER 0.5,SSS QUEUE och1 ENTER STANOK1 DEPART och1 ADVANCE 40,0; обработка детали 40 мин LEAVE STANOK1 TRANSFER 0.96,ERR ; 4% возможность брака TRANSFER 0,SECOND SSS TEST L p$WasError,2,EXT QUEUE och2; ENTER STAN DEPART och2 ADVANCE 60,0; обработка детали 60 мин LEAVE STAN TRANSFER 0.92,ERR ; 8% возможность брака TRANSFER ,SECOND ERR ASSIGN WasError+,1 TRANSFER ,SSS SECOND QUEUE NAC1 TEST L Q$NAC1,3,Place_2 QUEUE OCH1 ENTER STANOK1 DEPART OCH1 ADVANCE 100,0 LEAVE STANOK1 TRANSFER ,BEFEXT PLACE_2 QUEUE OCH2 ENTER STAN DEPART OCH2 ADVANCE 100,0 LEAVE STAN BEFEXT DEPART NAC1 EXT TERMINATE 1 Start 500 Но отчет приблизительно такой же <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 1436 0 0 2 ASSIGN 1436 0 0 3 TRANSFER 1436 0 0 4 QUEUE 700 0 0 5 ENTER 700 0 0 6 DEPART 700 0 0 7 ADVANCE 700 1 0 8 LEAVE 699 0 0 9 TRANSFER 699 0 0 10 TRANSFER 672 0 0 SSS 11 TEST 789 0 0 12 QUEUE 788 416 0 13 ENTER 372 1 0 14 DEPART 371 0 0 15 ADVANCE 371 0 0 16 LEAVE 371 0 0 17 TRANSFER 371 0 0 18 TRANSFER 345 0 0 ERR 19 ASSIGN 53 0 0 20 TRANSFER 53 0 0 SECOND 21 QUEUE 1017 0 0 22 TEST 1017 0 0 23 QUEUE 4 0 0 24 ENTER 4 0 0 25 DEPART 4 0 0 26 ADVANCE 4 0 0 27 LEAVE 4 0 0 28 TRANSFER 4 0 0 PLACE_2 29 QUEUE 1013 518 0 30 ENTER 495 0 0 31 DEPART 495 0 0 32 ADVANCE 495 0 0 33 LEAVE 495 0 0 BEFEXT 34 DEPART 499 0 0 EXT 35 TERMINATE 500 0 0 |
Автор: TEMENb 16.05.10, 12:00 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY STAN 1 0 0 1 867 1 0.999 0.999 0 934 STANOK1 1 0 0 1 704 1 0.395 0.395 0 0 загрузка станка 99.9% он просто не успевает обработать все поступающие транзакты. сделайте stan storage 3 и все получится |
Автор: irinaD 16.05.10, 12:09 |
т.Е ДОБАВИТЬ 3-Й СТАНОК? и ЕСЛИ 2-ОЙ ЗАНЯТ ОТПРАВЛЯТЬ НА НЕГО? |
Автор: TEMENb 16.05.10, 12:12 |
ну сами посмотрите за время моделирования через станок прошло Цитата 867 деталей. а в очереди перед станком осталось STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY STAN 1 0 0 1 867 1 0.999 0.999 0 934 Цитата 935 деталей. т.е. в более чем два раза больше, чем обслужено. => надо повышать производительность в более чем два раза. QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCH2 935 935 1801 1 466.401 18596.480 18606.811 0 |
Автор: irinaD 16.05.10, 12:16 |
Да я понимаю. Просто в условии говорится только двух станках. Добавлено в принципе я сделала проверку, если 2-ой занят отправлять на первый. Но Все равно часть деталей зависает на <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TEST L Q$NAC1,3,Place_2 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 996 0 0 2 ASSIGN 996 0 0 3 TRANSFER 996 0 0 SSS1 4 QUEUE 1028 0 0 5 SEIZE 1028 0 0 6 ADVANCE 1028 1 0 7 RELEASE 1027 0 0 8 DEPART 1027 0 0 9 TRANSFER 1027 0 0 10 TRANSFER 992 0 0 SSS 11 TEST 524 0 0 12 GATE 523 0 0 13 QUEUE 2 0 0 14 SEIZE 2 0 0 15 ADVANCE 2 0 0 16 RELEASE 2 0 0 17 DEPART 2 0 0 18 TRANSFER 2 0 0 19 TRANSFER 2 0 0 ERR 20 ASSIGN 35 0 0 21 TRANSFER 35 0 0 SECOND 22 QUEUE 994 0 0 23 TEST 994 494 0 24 QUEUE 5 0 0 25 SEIZE 5 0 0 26 ADVANCE 5 0 0 27 RELEASE 5 0 0 28 DEPART 5 0 0 29 TRANSFER 5 0 0 PLACE_2 30 SEIZE 495 1 0 31 ADVANCE 494 0 0 32 RELEASE 494 0 0 BEFEXT 33 DEPART 499 0 0 EXT 34 TERMINATE 500 0 0 |
Автор: Imortal 16.05.10, 13:11 |
Цитата Imortal @ У меня в задании "все величины заданы экспоненциально. Там приход блоков, и соотвественно их задержка на устройствах. Блоки приходят по 2. Здесь уже было по поводу Цитата GENERATE (EXPONENTIAL (5,0,30)) А первый параметр (5) на что влияет? Это "номер генератора", но при изменение его, изменяется и среднее время задержки(ну и прихода). И в задержке писать Цитата advance (EXPONENTIAL (5,0,30)) ? Все ещё в силе |
Автор: TEMENb 16.05.10, 13:14 |
Imortal, абсолютно ничего не изменится. |
Автор: iriska_187 17.05.10, 20:04 |
на входе есть равномерное распределение, и 2 обслуживающих канала,1 задан по экспоненциальному закону,а второй по пуассону. загрузка системы = о,6 SIMULATE ..//тут надо задавать точки,но жпсс вроде как равномерное понимает,но как это записать? и надо ли задавать законы обслуживающих приборов? GENERATE FIV $Ravn QUEUE qu MKS STORAGE 2 ENTER MKS LEAVE MKS TERMINATE TERMINATE 1 DEPART Pribor1 RELEASE Pribor1 DEPART Pribor12 RELEASE Pribor2 DEPART System GENERATE 100000 TERMINATE 1 я впервые пишу на жпсс,и наверное много где накосячила(((( |
Автор: Wrenka 17.05.10, 20:25 |
Здравствуйте! Обращаюсь к вам за помощью. Нам в магистратуре внезапно дали задания по GPSS World, хотя читали только MatLab LabVieW, и то как физикам)(это я к тому, что в программировании, а особенно в очередях очень плохо разбираюсь) Знаю, что есть подобные задачи, но не могу понять как сделать так, чтобы сообщение ждало не больше N секунд, а потом удалялось. то есть для этого нужно использовать "TEST", но непонятно как считать время. Сама задача сформулирована так: Каждые 3+-1 сек генерируется сообщение, они идут в буфер, где обрабатываются по очереди, время обработки 5+-2 сек, если сообщение ждет обработки больше 12 сек, то оно удаляется вот то, что я смогла написать. [ code ] GENERATE 3,1,0,200 ; генерирует 200 сообщений, через каждые 3+-1 сек, mr EQU 12 ; константа, может пригодится SAVEVALUE OBRABOTAN,0 ; число обработанных (почем-то при работе они не обнуляются... SAVEVALUE UDALEN,0 ; число удаленных QUEUE OZD ;заняло место в очереди на обработку в буфере Где-то здесь, как я понимаю, должно быть условие с TEST SEIZE BUF ;ожидание на обработку DEPART OZD ;выход из очереди на обработку ADVANCE 5,2 ;обрабатывается в буфере 5+-2 сек RELEASE BUF ;освобождение буфера Proshlo TERMINATE 1 ; SAVEVALUE OBRABOTAN+,1 ; изменить число обработанных Dele TERMINATE 1 ;удалить сообщение по условию SAVEVALUE UDALEN+,1 ;изменить число удаленных ;Время всего процесса GENERATE 1 ;моделирование времени работы системы SAVEVALUE 1+,1 ;счетчик времени (в сек) TRM TERMINATE 1 ;одна сек системного времени прошла CCL STORAGE 1 ;вместительность обработчика START 3000 ;общее время, чтоб с запасом хватило MWT TABLE M1,15,15,15 [ /code ] Буду рада любым подсказкам, или хотя бы ссылкам на книги, где можно найти подобные примеры. Заранее большое спасибо! |
Автор: iriska_187 18.05.10, 19:15 |
переделала и привела в божеский вид,но всё равно выдаёт ошибку PUAS FUNCTION RN2, C25 0,1/0.04,0.96/0.08,0.92/0.12,0.88/0.16,0.85/0.2,0.8187 0.24,0.786/0.28,0.755/0.32,0.726/0.36,0.698/0.4,0.67/0.44,0.64/0.48,0.619 0.52,0.59/0.56,0.57/0.6,0.549/0.64,0.527/0.68,0.507/0.72,0.487/0.76,0.468/0.8,0.449 0.84,0.342/0.88,0.414/0.92,0.398/0.96,0.383 EXPO FUNCTION RN2,C25 0,0/0.04,0.0082/0.08,0.0167/0.12,0.0255/0.16,0.0349/0.2,0.0446/0.24,0.0549/0.28,0.0657 0.32,0.0771/0.36,0.0892/0.4,0.1022/0.44,0.1160/0.48,0.1308/0.52,0.1468/0.56,0.1642 0.6,0.1833/0.64,0.2043/0.68,0.2279/0.72,0.2546/0.76,0.2854/0.8,0.3219/0.84,0.3666 0.88,0.4241/0.92,0.5051/0.96,0.6438 Simulate MKS STORAGE 2 Generate 5,0.33 QUEUE System QUEUE ochered Enter MKS Depart ochered Advance FN$PUAS Leave MKS Depart System Generate 5,0.33 QUEUE System QUEUE ochered Advance FN$EXPO Leave MKS Depart System Terminate Generate 10000 Terminate 1 Start 1 |
Автор: TEMENb 18.05.10, 19:28 |
iriska_187, в описании функции удалите пробел после запятой и вообще никогда не ставьте пробелы после запятых. жпсс их трактует как разделитель между параметрами транзакта З.Ы.: впрочем на этом ваши проблемы не оканчиваются З.з.Ы.: откуда вы взяли такие цифры экспоненциального распределения??? |
Автор: great_dndz 19.05.10, 12:27 |
Подскажите как сделать проверку многоканального устройства на занятость GATE NU имя_устройства,метка - работает,но все транзакты поступают в последующий блок, а между меткой не распределяются |
Автор: TEMENb 19.05.10, 12:31 |
great_dndz, пользуйтесь тестом и СЧА МКУ СЧА МКУ Sj Текущее содержимое многоканального устройства j. Содержимое многоканального устройства может изменяться блоками ENTER и LEAVE. Rj Число свободных единиц многоканального устройства j. Эта величина может изменяться блоками ENTER и LEAVE. SRj Коэффициент использования многоканального устройства j в тысячных долях, т.е., если коэффициент равен 0.65, то SRj равно 650. SAj Среднее содержимое многоканального устройства j (целая часть). SMj Максимальное содержимое многоканального устройства j. SCj Общее число входов в многоканальное устройство j. STj Среднее время пребывания транзактов в многоканальном устройстве j. SEj Флаг незанятости многоканального устройства j: 1 - свободно, 0 - занято. SFj Флаг заполненности многоканального устройства j: 1 - заполнено, 0 - не заполнено. SVj Флаг готовности многоканального устройства j: 1 - готово, 0 - не готово. SNVj Флаг неиспользуемости многоканального устройства j: 1 - неиспользуется, 0 - используется. |
Автор: great_dndz 19.05.10, 12:37 |
Пользуюсь TEST E SE$Имя_устройства,1,BACK1 пишет ошивку в параметре B теста, независимо от 0 или 1 (((((((((((((( |
Автор: TEMENb 19.05.10, 12:39 |
текст шедевра в студию. З.Ы.: я лично предпочел бы написать TEST E S$Имя_устройства,0,BACK1 ;полностью свободное устройство TEST G R$Имя_устройства,0,BACK1 ;Устройство имеет свободные каналы |
Автор: great_dndz 19.05.10, 12:44 |
В такой записи работает, но аналогично Gate. Транзакты идут либо ниже, либо в бэк1. Подскажите кто знает, наверно в логике ошибка KD1 EQU 2 ;количество деталей на первичню регулир. PERV_REG STORAGE 2 ;выделяем для устр. первичн регул. 2 канала VTOR_REG STORAGE 2 ;выделяем для устр. вторичн. регул. 2 канала NAKOPITEL STORAGE 2 INITIAL X$KOLAGR1SORT,0 ;начальное колич. деталей первого сорта INITIAL X$KOLAGR2SORT,0 ;начальное колич. деталей второго сорта INITIAL X$PRIBDET1,500 ;прибыль от реализации деталей первого сорта INITIAL X$PRIBDET2,220 ;прибыль от реализации деталей второго сорта ;PERVERV_REG STORAGE 2 ; выделяем емкость уст-ва перв.регул. GENERATE 40,8,,2 ;генерация входа агрегатов по времени ; SPLIT 2,AGR ;создаём 2 копии агрегатов ; GATE NU PERV_REG,BACK1 ;проверка устройства на занятость, если занято то переход в бэк1 KOL1 SAVEVALUE KOLAGR1SORT+,1 TEST G S$PERV_REG,0,BACK1 QUEUE PERV_DET ;встать в очередь для сбора статистики на первичн. регул. ENTER PERV_REG,2 ;посылка агрегатов,занять уст-во перв. регул. DEPART PERV_DET ;освободить очередь ADVANCE 40 ;,FN$EXPDIS ;задержка на первичной регулировке LEAVE PERV_REG,2 ;покидаем уст-во TRANSFER ,BACK2 ;переход на втор. регулир. ;ВТОРИЧНАЯ РЕГУЛИРОВКА BACK2 QUEUE VTOR_DET ;встать в очередь для сбора статистики на ВТОР. регул. ENTER VTOR_REG ;занимаем уст-во втор. регул-ки DEPART VTOR_DET ;освободить очередь ADVANCE 80 ;,EXPDIS ;задержка на втор. регулир. LEAVE VTOR_REG ;покидаем уст-во TRANSFER ,KOL1 ;перенаправление на подсчет количества ;НАКОПИТЕЛЬ BACK1 ENTER NAKOPITEL ;занять уст-во накопитель LEAVE NAKOPITEL ;покинуть накопитель TRANSFER ,BACK3 ;переход агрегатов из накоп. на частичн регул. ;ЧАСТИЧНАЯ РЕГУЛИРОВКА BACK3 QUEUE CHASTICH_DET SEIZE CHAST_REG ;занять однокан. уст-во - частичн.регул. DEPART CHASTICH_DET ADVANCE 60 ;,EXPDIS ;задержка на частичн.регул. RELEASE CHAST_REG ;покидаем уст-во SAVEVALUE KOLAGR2SORT+,1 TRANSFER ,back1 ;перенаправление на подсчет количества terminate 0 ; GENERATE 10080 ;таймер 24 часа terminate 1 ; start 1 ; |
Автор: iriska_187 19.05.10, 15:08 |
Цитата TEMENb @ iriska_187, в описании функции удалите пробел после запятой и вообще никогда не ставьте пробелы после запятых. жпсс их трактует как разделитель между параметрами транзакта З.Ы.: впрочем на этом ваши проблемы не оканчиваются З.з.Ы.: откуда вы взяли такие цифры экспоненциального распределения??? по обратной формуле -1/lambda*Ln(1-x) Кстати программа теперь работает,но не выдаёт нужных цифр |
Автор: dima3x 26.05.10, 15:59 |
Помогите надо решить задачу на gpss В телефонный коммутатор включены 4 внутреннии и 3 внешнии линии .Звонки распределяются с отношением 60% и 40% .Определить показатели эффективности системы есть интенсивность звонков y=0.02 c(показательное распределение) а среднее время обработки вызова линией 60 сек. |
Автор: ninja7 12.06.10, 10:49 |
В обробатывающий цех через 5±1 мин поступают детали двух типів с вероятностью 0.4 первого типа, с веростяностью 0.6 второго типа. Детали первого типа обрабатываются верстатом А, время обработки 15±5 мин и в каждый момент времни может обрабатываться 1 деталь. Детали второго типа обрабатываются верстатом В (время роботы 8±4). Смоделируйте работу цеха в течении двух суток. Пожалуйста помогите с задачей а то в GPSS я вообще не в теме... Надеюсь для тех кто шарит такие задачи 5 мин дела... Заранее спасибо С уважением. |
Автор: ninja7 13.06.10, 12:36 |
Ладно я уже понял что решение задачи никто не скинет... Тогда возьму попроще вот эту... На станцію технічного обслуговування, що складається з боксу для ремонту і боксу для технічного огляду, кожні 25±10 хв. Надходять автомобілі. З них 73% потребують ремонту, який триває 45±15 хв, а 27% проходять технічний огляд, який триває 17±8 хв. Змоделюйте 40 год. роботи станції технічного обслуговування. |
Автор: TEMENb 13.06.10, 12:42 |
Хоть бы на русский перевел ![]() <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GENERATE 25,10 TRANSFER .73,MET1 QUEUE REM SEIZE REM DEPART REM ADVANCE 45,15 RELEASE REM TERMINATE MET1 QUEUE TEH SEIZE TEH DEPART TEH ADVANCE 17,8 RELEASE TEH TERMINATE GENERATE 2400 TERMINATE 1 STATR 1 |
Автор: ninja7 13.06.10, 13:01 |
GENERATE 25,10 TRANSFER .73,MET1 QUEUE REM SEIZE REM DEPART REM ADVANCE 45,15 RELEASE REM TERMINATE MET1 QUEUE TEH SEIZE TEH DEPART TEH ADVANCE 17,8 RELEASE TEH TERMINATE GENERATE 2400 TERMINATE 1 START 1 Добавлено TEMENb спасибо большое) а я уже и не ждал помощи по своему делать начал) |
Автор: TEMENb 13.06.10, 13:04 |
исправить можно так ставим курсор в тексте модели, нажимаем ctrl+a, del выделяем мое сообщение, нажимаем ctrl+c возвращаемся в текст модели и нажимаем ctrl+v, ctrl+s |
Автор: ninja7 13.06.10, 13:11 |
Может там вместо 2400 нужно ставить 144000? |
Автор: TEMENb 13.06.10, 13:18 |
40 часов по 60 минут = 2400 минут. но если очень нужно - можно и 144000 поставить |
Автор: ninja7 13.06.10, 15:07 |
Да мне лучше в секундах, и последний вопрос как оформить отчёт к проге типа количество транзактов, среднее время пребывания транзакта в очереди, кол-во ремонтов и осмотров, процент задействования а то чё то я не совсем разобрался в отчёте... |
Автор: TEMENb 13.06.10, 15:10 |
http://www.simulation.kiev.ua/index.php?menu=help_report |
Автор: Katsee 26.06.10, 14:50 |
Помогите имне пожалуйста!!! Добавлено Надо в GPSS смоделировать канал связи с многолучевостью . Если в виде задачи, то это примерно так получается: есть несколько каналов, для каждого надо задать задержку(все задержки разные), и умножить на коэффициент свой в каждом канале. Вконце все три канала суммируются. Значения я так понимаю можно брать любые. У меня получилось вот что: GENERATE 6 SPLIT 1,CHAN2 SPLIT1,CHAN3 CHAN1 SEIZE1 ADVANCE T1 RELEASE1 TRANSFER OUT CHAN2 SEIZE 2 ADVANCET2 RELEASE2 TRANSFEROUT CHAN3SEIZE3 ADVANCET3 RELEASE3 OUTASSEMBLE4 TERMINATE1 START100 END Здесь я смогла только задержку задать. Не знаю что делать с коэффициентом. Ивообще, программа мне в каждой строке почти ошибку выдает: Line 3, Col 5. Invalid Delimiter. Expecting a GPSS Verb. Помогите пожалууууйста!!! Вроде не очень сложная задачка для профессионалов))) Добавлено ВСЁ, Я ПОНЯЛА - ОШИБКИ ИЗ-ЗА ПРОБЕЛОВ))) НО ПРОГРАММА ВСЕ-РАВНО МНЕ КАЖЕТСЯ НЕПРАВИЛЬНАЯ У МЕНЯ)) ТАК ЧТО ВОПРОС АКТУАЛЕН Добавлено И ЛИСТИНГ НИКАКОЙ НЕ ВЫВОДИТСЯ(( |
Автор: jekahm 27.06.10, 17:51 |
Уважаемые специалисты в области GPSS, необходима ваша помощь в решении вот такой задачи: Построить иммитационную модель процесса обслуживания заказов, которые поступают в вычислительную систему, состоящей из n ЭВМ. Время поступления заказов распределенный по нормальному закону з мат ожиданием "альфа" и стандартным отклонением "сигма". Задания становятся в очередь, если очередь составляет менее, чем 3 заказа. В ином случае задания оставляют систему. Время выполнения заданий равномерно распределенный в интервале от 16 до 20 сек на всех ЭВМ. Провести моделирование при таких значениях: "альфа"=10 и "сигма"=2, начальное значение n=2, конечное значение n=10 с шагом 2. Работа модели происходит напротяжении 6 часов модельного времени. Заранее благодарен! ![]() |
Автор: jekahm 30.06.10, 20:30 |
Как я понял, здесь помощи не дождёшься! |
Автор: TEMENb 27.09.10, 11:37 |
дык ты вопрос неправильно поставил. тебе не помощь в решении, а решение нужно. а это в "разовые заказы и подработка" |
Автор: 2323 06.10.10, 05:02 |
ПОМОГИТЕ, ПОЖАЛУЙСТА!!!! сегодня сдавать, а ниче еще не сделали((( всего несколько простеньких задач... 4. Увеличить на три единицы длину очереди с номером 5. 5. Увеличить длину очереди QP в 2 раза. 6. Приведите программу, которая иллюстрирует обработку детали на станке. Устройство MACHINE, время обработки – 15±4 ед. модельного времени. Как определить среднее время пребывания деталей в очереди на обслуживание станком? 7. Уменьшить длину очереди с номером 7 на две единицы. 8. Обнулить длину очереди QPP. 9. На некотором станке четыре работника по очереди обрабатывают детали. Время обработки детали – 10±2 минуты. Промоделируйте работу станка на протяжении 8 часов (транзакты – работники). 10. На станцию технического обслуживания, которая состоит из бокса для ремонта и бокса для техосмотра, каждые 20±10 минут поступают автомобили. Из них 73% требуют ремонта, который продолжается 45±15 минут, а 27% проходят техосмотр (18±8 минут). Промоделируйте 50 часов работы станции технического обслуживания. 11. В магазине работают 2 кассира, один из которых более проворный, поэтому покупатели и отдают ему предпочтение. Покупатели заходят в магазин каждые 7±2 минут. Первый кассир обслуживает покупателя за 2±1 мин, а второй за 3±2 мин. Промоделируйте работу магазина на протяжении 40 часов. |
Автор: itz 20.10.10, 09:04 |
Здравствуйте! В задаче моделируется цех, куда через 9±2 минуты прибывают детали двух типов(с вероятностью 0,75 1ого типа, и 0,25 - 2ого). Причем приоритет у деталей 2ого типа выше. Далее они обрабатываются на станках A и B соответственно. После обработки детали с вероятностью 0,05 не проходят контроль качества и отправляются на повторную обработку. Если контроль качества пройден, они переходят на обработку на станок С. Моделируется 32 часа работы цеха. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PRIOR FUNCTION RN1,D2 .25,1/1,2 GENERATE 9,2,,,FN$PRIOR QQ QUEUE Q1 TEST E PR,2,B A SEIZE ST_A DEPART Q1 ADVANCE 26,8 RELEASE ST_A TRANSFER .05,C,QQ B SEIZE ST_B DEPART Q1 ADVANCE 18,6 RELEASE ST_B TRANSFER .05,C,QQ C QUEUE Q2 SEIZE ST_C DEPART Q2 ADVANCE 11,5 RELEASE ST_C TERMINATE GENERATE 1920 TERMINATE 1 START 1 Выдает следующую ошибку: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 10/20/10 13:00:41 Model Translation Begun. 10/20/10 13:00:41 Ready. 10/20/10 13:00:41 Simulation in Progress. 10/20/10 13:00:41 Error Stop. 10/20/10 13:00:41 Halt. XN: 1. Block 2 Next. 10/20/10 13:00:41 Clock:10.369464. Next: QUEUE. Line 7. 10/20/10 13:00:41 QQ QUEUE Q1 10/20/10 13:00:41 Use of a nonpositive entity number. Подскажите, в чем проблема? UPD: Решение обнаружено:) Оказалось, Q1 - недопустимое имя для очереди |
Автор: Korzhik_89 20.10.10, 13:04 |
Здравствуйте!!!! Помогите пожалуйста с программой!!! Завтра сдавать!!! Задание: Система автоматизации проектирования (САПР) создана на базе ЭВМ, функционирующей в режиме множественного доступа. Четверо инженеров-проектировщиков с помощью своих дисплеев одновременно и независимо проводят диалог с ЭВМ, определяя очередной вариант расчета. Каждый диалог состоит из 11 циклов ввода–вывода данных. Во время одного цикла происходит следующее: за 11 ± 6 с инженер обдумывает и вводит текст строки, в течение 3 с работает процессор ЭВМ, подготавливая текст ответа, в течение 6 с текст ответа выводится на дисплей. После ввода 12-й строки начинается работа процессора по расчету конструкции и продолжается 35 ± 12 с. За 6 с результат расчета выводится на экран, после чего инженер в течение 14 ± 4 с анализирует его и начинает новый диалог. Операции по подготовке текста ответа имеют абсолютный приоритет над расчетными, т. е. прерывают выполнение последних. Смоделировать процесс работы САПР при условии, что расчет вариантов конструкции повторяется 120 раз. Определить среднее время выполнения диалога и расчетных операций, а также коэффициент загрузки процессора. Очень очень нужна помощь! Заранее спасибо. |
Автор: vovik13 26.10.10, 18:04 |
Доброе время суток!!!! Не могли бы вы мне помочь с решением задачи, а то я вообще не вдупляю в gpss Магистраль передачи данных состоит из двух каналов (основного и резервного) и общего накопителя. При нормальной работе сообщения передаются по основному каналу за 7 ± 3 с. В основном канале происходят сбои через интервалы времени 200 ± 35 с. Если сбой происходит во время передачи, то за 2 с запускается запасной канал, который передает прерванное сообщение с самого начала. Восстановление основного канала занимает 23 ± 7 с. После восстановления резервный канал выключается и основной канал продолжает работу с очередного сообщения. Сообщения поступают через 9 ± 4 с и остаются в накопителе до окончания передачи. В случае сбоя передаваемое сообщение передается повторно по запасному каналу. Смоделировать работу магистрали передачи данных в течение 1 ч. Определить загрузку запасного канала, частоту отказов канала и число прерванных сообщений. Определить функцию распределения времени передачи сообщений по магистрали. |
Автор: CB9TOIIIA 30.10.10, 18:48 |
Просьба помочь в решение задачи ссылка ![]() |
Автор: vert 02.11.10, 17:36 |
Помогите пожалуйста составить маленькую программку. Есть генератор, бесконечный накопитель и какое-то обрабатывающее устройство. Входной закон и закон обслуживания - экспоненциальный. Какой з-н выходного потока? Создать частотную таблицу времени нахождения в системе, времени ожидания, обслуживания и генерации(описать с function и без). ![]() |
Автор: ALEX123123 05.11.10, 19:12 |
Помогите решить курсовик Плиз!!!!!!!!! Смоделировать обслуживание 5000 заявок к операторам информационной системы. Подсчитать количество включений резрвного аппарата, среднее время выполнение задачи и коэффициенты загрузки операторов. Пять операторов работают в информационной системе, обрабатывая запросы аюонентов. Автоматический коммутатор переключает абонента на того оператора, в очереди которого ожидает наименьшее количество абонентов, причем наибольшая допустимая длина очереди перед оператором 3 абонента. Если все очереди имеют максимальную длину, вновь поступивший вызов поступает на резервный аппарат, очереди к которому нет, а при его занятости получает отказ. Обслуживание абонентов операторами длится 15 +/- 5 с. вызовы поступают в справочную в среднем через каждые 10 с. |
Автор: Myreg 03.12.10, 12:13 |
Добрый день!) Подскажите, возможно ли обращение к конкретному каналу(устройству) внутри МКУ? Т.е. как то узнать индекс, чтобы, например, использовать для выборки первого свободного. Пытался так получить: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ... stor1 EQU 1 stor1 STORAGE 20 ... SELECT SE icount,1,1 ... Но так получается, что селектом тут ищется не внутри МКУ, а среди всех МКУ, если я правильно понимаю. |
Автор: rock squirrel 05.12.10, 12:30 |
Помогите пожалуйста с кодом GPSS (синтаксис), логика вроде соблюдена, а вот работать прога не хочет... [ code ]*********** Приема в больнице на медкомиссии имеется 4 врача которых должен пройти транзакт-посетитель D1 storage 1 ; не более 1 посетителя в кабинете D2 storage 1 ; не более 1 посетителя в кабинете D3 storage 1 ; не более 1 посетителя в кабинете D4 storage 1 ; не более 1 посетителя в кабинете var1 VARIABLE P1+QD1; посетитель за счет использования блока select заходит в первый кабинет с меньшей очередью var2 VARIABLE P2+QD2; а т.к. кабинетов=докторов всего 4, и дважды заходить в кабинет не надо то select выбирает var3 VARIABLE P3+QD3; не меньшую очередь, а меньшее значение функции, где P2 - параметр, который до прохода, в данном случае 2 кабинета, var4 VARIABLE P4+QD4; (P2 - второй параметр транзакта)=0, а после P2=1000, чтоб значение функции оказалось заведомо большим time2 table MP3,0,3,5; таблица, куда должны заноситься данные о времени прохождения медкомиссии ;Специально взял конструкцию Enter-Leave, а не SEIZE-RELEASE т.к. по модели может быть будет увеличить число докторов того или иного профиля PH1 Matrix ,4,2; матрица с данными о времени прохождения того или иного врача initial MX$PH1(1,1),5; заполнение матрицы данными initial MX$PH1(1,2),2 initial MX$PH1(2,1),8 initial MX$PH1(2,2),5 initial MX$PH1(3,1),10 initial MX$PH1(3,2),3 initial MX$PH1(4,1),4 initial MX$PH1(4,2),2 Generate 7,5; генерация транзактов mark M11; отметка времени входа select MIN P5,V$var1,V$var4; выбор кабинета QUEUE DP5; Вход в очередь к кабинету enter DP5; вход на прием DEPART DP5; выход из очереди advance MX$PH1(P5,1),MX$PH1(P5,2); длительность приема leave DP5 ; прием окончен ASSIGN PP5,1000; TEST NE V10,4,vyhod advance 1 ; задержка по времени transfer , STK1; переход к следующему врачу tabulate time2 vyhod TERMINATE *********** сегмент таймера Generate 480 ; 8 часов (1 день) работы terminate 1 start 1 [ /code ] и при запуске ошибка 12/05/10 06:32:24 Model Translation Begun. 12/05/10 06:32:24 Ready. 12/05/10 06:32:24 Simulation in Progress. 12/05/10 06:32:24 Error Stop. 12/05/10 06:32:24 Halt. XN: 1. Block 3 Next. 12/05/10 06:32:24 Clock:10.423660. Next: SELECT. Line 34. 12/05/10 06:32:24 select MIN P5,V$var1,V$var4; выбор кабинета 12/05/10 06:32:24 Reference to a non-existent Parameter. Подскажите пожалуйста где ошибка? |
Автор: Marya4ka 05.12.10, 16:29 |
Привет,помогите ,пожалуста.Не могу понять как сделать вторую половину задачи:...(1часть)....После обработки на первом станке деталь поступает на второй конвейер и в течение 5 минут движется ко второму станку. На втором станке выполняется сборка изделий из двух деталей, занимающая от 5 до 9 минут (сборка начинается после того, как на станке окажется две детали). Если на станке уже имеются две детали (т.е. произво¬дится сборка изделия), то деталь продолжает двигаться по конвейеру и возвращается к станку ровно через 12 минут. Проблема с Assemble и split! GENERATE ,,,1 PPE5 ADVANCE 10 SPLIT 1,PPE5 QUEUE OCH ADVANCE 3 TEST E F$STANOK,1,PPE PPE1 ADVANCE 9 TEST E F$STANOK,0,PPE1 PPE SEIZE STANOK DEPART OCH ADVANCE (EXPONENTIAL(1,0,2.5)) RELEASE STANOK QUEUE OCH1 ADVANCE 5 TEST G Q$OCH1,1,PPE2 PPE3 ADVANCE 12 TEST E Q$OCH1,1,PPE3 PPE2 SEIZE STANOK1 DEPART OCH1 ASSEMBLE 2 ADVANCE 7,2 RELEASE STANOK1 TERMINATE GENERATE 2880 TERMINATE 1 |
Автор: Lady_Lol 05.12.10, 17:10 |
Помогите пожалуйста, колдую на курсовым, голову уже сломала. На вычислительный центр через 300100 секунд поступают задания длинной 500200 байт. Скорость ввода, вывода и обработки заданий 100 б\мин. Задания проходят последовательно ввод, обработку и вывод буферизуясь перед каждой операцией. После вывода 5% заданий оказываются выполненными неправильно вследствие сбоев и возвращаются на ввод. Для ускорения обработки задания в очередях располагаются по возрастанию их длинны, то есть короткие сообщения обслуживаются в первую очередь. Задания выполненные неверно возвращаются на ввод и во всех очередях обслуживаются первыми Задание смоделировать работу вычислительного центра в течении 30 часов. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. 3 VIVOD EQU 3 4 RAZ EQU 4 5 TRI EQU 5 6 DVA EQU 9 7 OCH1 EQU 6 8 OCH2 EQU 7 9 OCH3 EQU 8 10 RAZ FVARIABLE (RN1/999)#400+300 11 DVA FVARIABLE P1#30/100 12 TRI FVARIABLE (700-P1)/400#127 13 SIMULATE 14 GENERATE 300,100 15 ASSIGN 1,V$RAZ 16 ASSIGN 2,V$DVA 17 PRIORITY V$TRI 18 M1 QUEUE OCH1 19 SEIZE VVOD 20 ADVANCE P2 21 RELEASE VVOD 22 DEPART OCH1 23 M2 QUEUE OCH2 24 SEIZE OBR 25 ADVANCE P2 26 RELEASE OBR 27 DEPART OCH2 28 M3 QUEUE OCH3 29 SEIZE VIVOD 30 ADVANCE P2 31 RELEASE VIVOD 32 DEPART OCH3 33 PRIORITY 127 34 TRANSFER .95,M1,OUT 35 OUT TERMINATE 36 GENERATE 108000 37 TERMINATE 1 38 START 1 Выдает следующую ошибку: 12/05/10 19:10:15 Model Translation Begun. 12/05/10 19:10:15 Ready. 12/05/10 19:10:15 Simulation in Progress. 12/05/10 19:10:15 Error Stop. 12/05/10 19:10:15 Halt. 12/05/10 19:10:15 Clock:0.000000. 12/05/10 19:10:15 There are no Transactions. Check Transaction limits and blocking. |
Автор: enotik303 05.12.10, 17:15 |
Доброе время суток. помогите пожалуста выйти из ступора студентке-неудачнице. В специализированной вычислительной системе периодически выполняется три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 50 30 с. После запуска задания оно требует для своего выполнения 100 50 с времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 30 10 секунд, после чего производится их анализ в течение 60 20 секунд, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется. Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. Подсчитать число циклов выполнения остальных заданий и определить коэффициенты загрузки технических средств системы. GENERATE 30,20 SEIZE DISPLAY ADVANCE 50,30 RELEASE DISPLAY QUEUE OCH1,1 SEIZE PROC DEPART OCH1,1 ADVANCE 100,50 RELEASE PROC SAVEVALUE L1+,1 TRANSFER, MET1 GENERATE 30,10,,,1 SEIZE DISPLAY ADVANCE 50,30 RELEASE DISPLAY QUEUE OCH1,1 PREEMPT PROC,PR DEPART OCH1,1 ADVANCE 100,50 RETURN PROC SAVEVALUE L2+,1 TRANSFER, MET1 GENERATE 30,5,,100,2 SEIZE DISPLAY ADVANCE 50,30 RELEASE DISPLAY QUEUE OCH1,1 PREEMPT PROC,PR DEPART OCH1,1 ADVANCE 100,50 RETURN PROC SAVEVALUE L3+,1 TEST L L3,100,MET1 TRANSFER, MET2 MET1 QUEUE OCH2,1 SEIZE PRINT DEPART OCH2,1 ADVANCE 30,10 RELEASE PRINT PRIORITY 3 QUEUE OCH1,1 SEIZE PROC DEPART OCH1,1 ADVANCE 60,20 RELEASE PROC MET2 TERMINATE 1 START 100 Короче 100 заявок высшего приоритета проходят до конца. а остальные генерируются и только одна из каждого потока доходит до обработки в процесоре но обработаной не выходит. Думаю проблема в генерэйтах. Раздуплите пожаааалуста! |
Автор: lgk 06.12.10, 20:56 |
Помогите пожайлуста с задачей, может кто исходник видел, хотябы примерно как делать. Пожалуйста! Из системы сканирования графической информации на узел обработки и визуализации поступают задачи через 15-25 с. Треть из них обрабатывается в течение 60 с и поступает на финишную обработку. Две трети обрабатывается за 30 с перед финишной обработкой, которая требует наличия одной задачи первого типа и двух задач второго. После этого все 3 задачи подаются на визуализацию, которая занимает 58-62 с для первой задачи и 52-68 с для двух других, причем они участвуют в визуализации одновременно. При наличии на выходе одновременно всех трех за- дач они покидают участок. Смоделировать работу узла в течение 100 мин. Определить места образования и характеристики возможных очередей. |
Автор: TEMENb 08.12.10, 12:20 |
Myreg, совершенно верно. селект ищет среди всех ПРОНУМЕРОВАННЫХ мку. т.е. мку, которые имеют числовое имя. могу предположить с высокой степерью вероятности, что в вашей модели таких нет..... т.е. теоритически они есть, но находятся в состоянии покоя ![]() если хотите определить ТТХ каждого канала - используйте одноканальные устройств внутри многоканального например <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> yst storage 3 generate 1 queue och enter yst depart och select min 1,1,3,,f seize p1 advance 3 release p1 leave yst terminate generate 1000 terminate 1 start 1 хотя на мой взгляд подобный код абсолютно бессмысленный. все каналы в мку имеют одиннаковые характеристики, а значит легко вычисляются по характеристикам МКУ в целом. Добавлено rock squirrel, вы обращаетес к несуществующему параметру. Кроме того, в select не указана сча, по которой вы хотите осуществить выбор select MIN P5,V$var1,V$var4 - попытка записать результат в параметр, номер которого записан в пятом параметре и тогда, возможно, весь этот кусок предпологает не DP5, а просто P5. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> select MIN P5,V$var1,V$var4; выбор кабинета QUEUE DP5; Вход в очередь к кабинету enter DP5; вход на прием DEPART DP5; выход из очереди advance MX$PH1(P5,1),MX$PH1(P5,2); длительность приема leave DP5 ; прием окончен ASSIGN PP5,1000; Единтвенное что, необходимо будет определить числовые имена многоканальным устройствам <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MKY EQU 1 MKY STORAGE 5 ... Добавлено Marya4ka, лучше было бы если бы вы дали полный текст задания. читал-читал, соответствия между задачей и кодом не уловил. А какая именно проблема с асемблом? может не с асемблом а с одноканальным устройством? ![]() в устройство сборки должно поступить две детали. а значит необходимо использовать МКУ. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> queue www match 2 enter sborka depart www assemble 2 ; обязательно перед адвансом, иначе результаты могут вас удивить advanke 1234 leave sborka,2 ; пришло две детали и уйти тоже должно две Добавлено Lady_Lol, 1. нельзя делать метку M1. это системная сча. зарезервированное слово. 2. тоже касается слова out в остальном - что то моделирует ) Добавлено приложу на всяк случай <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 3 VIVOD EQU 3 4 RAZ EQU 4 5 TRI EQU 5 6 DVA EQU 9 7 OCH1 EQU 6 8 OCH2 EQU 7 9 OCH3 EQU 8 10 RAZ FVARIABLE (RN1/999)#400+300 11 DVA FVARIABLE P1#30/100 12 TRI FVARIABLE (700-P1)/400#127 13 SIMULATE 14 GENERATE 300,100 15 ASSIGN 1,V$RAZ 16 ASSIGN 2,V$DVA 17 PRIORITY V$TRI 18 Met1 QUEUE OCH1 19 SEIZE VVOD 20 ADVANCE P2 21 RELEASE VVOD 22 DEPART OCH1 23 M2 QUEUE OCH2 24 SEIZE OBR 25 ADVANCE P2 26 RELEASE OBR 27 DEPART OCH2 28 M3 QUEUE OCH3 29 SEIZE VIVOD 30 ADVANCE P2 31 RELEASE VIVOD 32 DEPART OCH3 33 PRIORITY 127 34 TRANSFER .95,Met1,OUT1 35 OUT1 TERMINATE 36 GENERATE 108000 37 TERMINATE 1 38 START 1 Добавлено enotik303, на том этапе, транзакты не проходят потому, что они очень быстро негерируются. у вас несколько генераторов, которые генерируют транзакты каждые 20 ЕМВ, и отправляют в устройсво, обработка в котором длится в среднем 50 ЕМВ. естественно обрабатываться успевает только малая толика транзактов.. и естественно с высшим приоритетом. но это не все ваши проблемы не заканчиваются. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> должны выглядеть так и именно такTRANSFER ,met <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> такой вид вызовет ошибку. TRANSFER, met Добавлено lgk, могу написать программу и коменты к каждой строке за 10$ |
Автор: aidarkin 11.12.10, 13:38 |
Помоги решить пожалуйста! Система управления качеством производственного процесса включает две операции обработки изделия с соответствующим контролем. Параметры производственного процесса таковы: – поток изделий, поступающих на обработку, подчиняется экспоненциальному распределению с параметрами λ=0 мин. и β=24 мин. – время выполнения первой операции подчиняется равномерному закону и равно 23±5 мин.; время на контроль этой операции составляет 3 мин.; – время выполнения второй операции подчиняется нормальному закону с математическим ожиданием 21 мин. и среднеквадратическим отклонением 3 мин.; время на контроль этой операции составляет 1 мин. Требуется определить следующие параметры производственного процесса (время работы 8 час.): – коэффициент загрузки каждого контролера (на каждой операции свой контролер); – среднее время обслуживание каждым контролером; – максимальное и среднее число изделий у каждого контролера. поток изделий подчиняется экспоненциальному распределению с параметрами λ=0 мин. и β=24 мин- GENERATE (Exponential(1,12,12)) так? ремя выполнения первой операции подчиняется равномерному закону и равно 23±5 мин- GENERATE 23,5 |
Автор: Arni 12.12.10, 18:59 |
Есть загвоздка в решении задачи. Если кто-нибудь поможет разобраться, будет замечательно. Задача: В аэропорт доставляются грузы для их отправки транспортными самолетами. Самолеты совершают рейсы по мере загрузки. С 8.00 до 20.00 автомобили с грузами прибывают в аэропорт через каждый час ± 10 минут; в остальное время автомобили прибывают через каждые 2 часа ± 30 минут. Каждый автомобиль доставляет в аэропорт 60 контейнеров груза. В аэропорту имеется 4 самолета: по два самолета грузоподъем¬ностью 80 и 120 контейнеров. В первую очередь используются самоле¬ты меньшей грузоподъемности. Затраты времени при погрузке состав¬ляют 1 минуту на каждый загружаемый контейнер (эту величину можно считать постоянной). Затраты на один рейс самолета грузоподъем¬ностью 80 и 120 контейнеров составляют соответственно 4000 и 9000 долларов. За каждый перевезенный контейнер заказчик платит предп¬риятию – владельцу самолетов 100 долларов. По окончании каждого рейса самолет проходит проверку, занима¬ющую 1 час. После пяти рейсов самолет проходит полную проверку, занимающую 6 часов. Во время проверок загрузка самолета не произ¬водится. Время полета каждого самолета (от вылета с грузом до возвра¬щения в аэропорт) распределено по гауссовскому закону. В среднем полет занимает 3 часа, среднеквадра¬тическое отклонение – 20 минут. Разработать имитационную программу для анализа процесса рабо¬ты аэропорта в течение 30 дней Вопрос : транзакты стопоряться на Assemble 80 (дальше вообще ни одна не проходит), но для Assemble 60 все работает нормально. В чем беда? Мое еще неполное решение: S80_1 STORAGE 2 S120_1 STORAGE 2 DEN BVARIABLE (C1>=480)'AND'(C1<=1200) TEST E BV$DEN,0,NET GENERATE 60,10 TRANSFER ,ZAGRUZ NET GENERATE 120,30 ZAGRUZ SPLIT 59 ASSEMBLE 80 GATE SNF S80_1,V_S120 QUEUE OCH_S80 ENTER S80_1 DEPART OCH_S80 ADVANCE 80 ADVANCE (NORMAL(1,180,20)) ADVANCE 60 LEAVE S80_1 SAVEVALUE S80_reis+,1 SAVEVALUE S80_pribil+,4000 TRANSFER ,KON V_S120 ASSEMBLE 2 QUEUE OCH_S120 ENTER S120_1 DEPART OCH_S120 ADVANCE 80 ADVANCE (NORMAL(1,180,20)) ADVANCE 60 LEAVE S120_1 SAVEVALUE S120_reis+,1 SAVEVALUE S120_pribil+,4000 KON TERMINATE GENERATE 1440 TERMINATE 1 |
Автор: AnriDuBushazh 13.12.10, 11:29 |
Здравствуйте Не поможете ли с курсовой задачей ? ( Кроме неё еще 3 курсовые. одну написал, вторую пишу, а с этой по GPSS что-то плохо, и сдавать надо через неделю макс 2) На ремонтный участок МТС, который состоит из 2ух боксов(для ремонта и техосмотра) через каждые 20+-3 мин поступают тракторы. Из них 60% требуют ремонта, который продолжается 40+-15 мин, 40% тракторов проходят технический осмотр продолжительностью 20+-5. Смоделировать наботу участка в течении 100 ч. Определить вероятность системы отказа в обслуживании. Рассмотреть основные характеристики работы системы. Предложить меры по оптимизации обслуживания техники, используя инструмент АNOVA. Какова общая стоимость выполненной работы, если стоимость ремонта состовляет 200р., а техосмотра 50 р. Если можно, хотя бы образец подобной задачи. или методички . Заранее спасибо. |
Автор: quared 16.12.10, 14:31 |
Доброго времени суток. Помогите решить задачу, пожалуйста: Поток желающих оформить вызов врача на дом – простейший. В среднем абоненты в период эпидемии гриппа звонят через каждые 10 с. Время приёма вызова распределено по показательному закону со средним значением 12 с. Считается, что в случае неудачи дозвониться, абонент не предпринимает больше попыток дозвониться. 2)Определить наименьшее число телефонов в регистратуре, при котором вызов принимается не менее чем от 90 % абонентов. 3)Определить вероятность отказа в обслуживании. 4)Определить вероятность того, что абонент не получит отказа в заявке. Сдача послезавтра... Изначально смоделировал работу на Java, а оказалось, что принимают только на GPSS %) Этой среды до сегодняшнего дня в глаза не видел, к сожалению. |
Автор: tarot3107 17.12.10, 18:22 |
Товарищи помогите написать программку: "В телевизионное ателье поступают заявки на ремонт телевизоров двух типов: на мелкий ремонт, производимый на дому, и на крупный ремонт, производимый в ателье. Время поступления заявок составляет, соответственно, (2+0.5) часа и (5+1.5) часа. Мастер затрачивает на ремонт телевизора в среднем, соответственно, (1+0.5) часа и (5+3) часа. Кроме того, для ремонта на дому мастер затрачивает время на дорогу в среднем (1+0.4) часа. Определить оптимальное количество мастеров, если заявка ставится в очередь, только, если очередь составляет не более десяти заказов, остальные заявки теряются; убытки при потери заявок составляют в среднем 100 рублей; потери от простоя мастера составляют 10 рублей в час. Рассмотреть возможность приоритетного обслуживания в мастерской и на дому." Задачка то вроде простая. Я почти написал, вот только не знаю как описать вот это Цитата потери от простоя мастера составляют 10 рублей в час. Очень буду признателен за помощь! |
Автор: kuzzzko 20.12.10, 08:27 |
Доброго времени суток! помогите смоделировать задачу: Буду признателен за помощь На обработку ЭВМ принимают три класса заданий: А, В и С. Исходя из наличия оперативной памяти ЭВМ, задания классов А и В могут выполняться одновременно. То есть задание класса А (В) может выполняться параллельно с заданием своего класса или с заданием класса В (А). Задания класса С монополизируют ЭВМ. Задания класса А поступают в среднем через Т1 минут, класса В - через Т2 минут, класса С - через Т2, минут и требуют для выполнения: класс А – Т4 минут, класс В - Т5 минут и класс С - Т6 минут. Все величины Ti (i = 1,..,6) - экспоненциально распределенные случайные величины, параметры λi (i = 1,..,6) входящих потоков заданий и времен обслуживания приведены в табл. 14.1. Дисциплина обслуживания определяется комбинацией приоритетов заданий. Возможны следующие комбинации: А (В) - высший, В (А) - средний, С - низкий; А и В - высокий, С - низкий; С - высший, В (А) - средний, А (В) - низкий; С - высокий, А и В - низкий. Оценить влияние разных дисциплин обслуживания при разных значениях интенсивностей поступления (в таблице 14.1 дополнительная интенсивность приведена в скобках) на такие параметры вычислительной системы: • средняя длительность прохождения заданий через систему; • средняя длина очереди; • среднее время ожидания в очереди; • средневзвешенное время ожидания в очереди (весовые коэффициенты заданий класса А, В, С - 1, 2, 3, соответственно); Анализ системы необходимо проводить для переходного режима работы. Выполнить оценку основных показателей эффективности – затраты, доход и прибыль в заданных режимах. Таблица 14.1 Параметры λ1 λ2 λ3 λ4 λ5 λ6 0,200 0,125 0,066 0,25 0,16 0,08 Буду признателен за помощь. Мое мыло: kuzzzko@gmail.com |
Автор: Nikola 24.12.10, 20:38 |
помогите доработать На комплектовочный конвейер сборочного цеха каждые Т1 минут поступают N1 деталей первого типа и каждые Т2 минут – N2 деталей второго типа. Изделие комплектуется из N3 деталей каждого типа. Комплектация начинается только при наличии деталей обоих типов в необходимом количестве Конвейер движется ритмично с шагом Т3 минут. При отсутствии необходимого количества деталей секция конвейера перемещается пустой («холостой ход»). Определить целесообразность перехода на другие режимы работы конвейера, оперируя такими параметрами: 1)размерами секции – количеством деталей каждого типа, из которых комплектуется изделие (возможны дополнительные варианты – по N4 и N5 изделий); 2) шагом конвейера (возможны дополнительные варианты – Т4 и Т5 минут). Оценить вероятность «холостого хода», средних и максимальных длин очередей каждого типа изделий. Варианты заданий Вариант Параметры Т1 N1 Т2 N2 N3 Т3 N4 N5 Т4 Т5 1 5±1 5 20±5 20 10 10 20 5 20 5 zd1 storage 10; объявление накопителя для изделий 1 izd2 storage 10; объявление накопителя для изделий 2 pust variable 0; poln variable 0; generate 480; задание общего времени моделирования terminate 1; generate 5,1; генерация деталей 1 первого типа queue o1; enter izd1; вход деталей в накопитель 1 terminate; generate 20,5; генерация деталей 1 первого типа queue o2; split 1; создание 1 копии выходящего в блок транзакта enter izd2,2; вход деталей 2 в накопитель terminate; generate 10; задание числа секций test GE s$izd2,1,pst; проверка наличия деталей в накопителе 1 test GE s$izd1,2,pst; проверка наличия деталей в накопителе 2 leave izd1,2; освобождение накопителя 1 leave izd2,1; освобождение накопителя 2 advance 10; обработка savevalue poln+,1; подсечет кол-ва полных секций terminate; pst savevalue pust+,1; кол-во пустых секций terminate; start 1; |
Автор: xorg 24.12.10, 22:31 |
Приветствую. Есть задание на курсовой, которое здесь уже упоминалось: ЭВМ обслуживает три терминала по круговому циклическому алгоритму, предоставляя каждому терминалу 30 с. Если в течение этого времени задание обработалось, то обслуживание завершается, если нет, то остаток задачи становится в специальную очередь, которая использует свободные циклы терминалов, т.е. задача обслуживается, если на каком либо терминале нет заявок. Заявки на терминал поступают через 30+-5 секунд и имеют длину 300+-50 символов. Скорость обработки задании ЭВМ 10символов / секунда. Смоделировать 5 часов работы ЭВМ. Определить загрузку ЭВМ, параметры очереди неоконченных заданий. Определить величину цикла терминалов, при которой все заявки обработаются без специальной очереди. Вот что удалось написать: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 30,5 ;terminal 1 link 1,fifo generate 30,5 ;terminal 2 link 2,fifo generate 30,5 ;terminal 3 link 3,fifo met1 queue och1 ;ставим заявку в очередь seize EOM ;занимаем устройство ЕОМ depart och1 ;выводи заявку из очереди assign 1,(25+10#rn1/1000) ;задаем время обработки как первый параметр test le p1,30,met2 ;проверяем время обработки, если >30 идем в met2, если <=30 входим в блок test advance p1 ;задержка транзакта на время р1 release EOM ;освобождение устройства ЕОМ terminate 1 ;удаление транзакта met2 advance 30 ;задержка транзакта на 30с assign 1-,30 ;вычитание из р1 30с release EOM ;освобождение устройства ЕОМ link och,fifo ;помещаем транзакт в список пользователя och generate ,,,1 assign 1,0 met assign 1,((p1@3)+1) test g ch*1,0,met4 ;проверка длины списка пользователя, если >0 входим в блок test, если <=0 переходим на met4 unlink p1,met1,1 ;вывод транзакта из списка пользователя transfer ,met5 met4 test g CH$och,0,met5 ;проверка длины списка och, если >0 входим в блок test, если <=0 переходим на met5 unlink och,met1,1 met5 advance 1 transfer ,met GENERATE 18000 ;время моделирования 5 часов TERMINATE 1 START 1 В данном варианте не задается время моделирования, приходится указывать START больше 1, куда-то пропадают транзакты при обработке. Помогите пожалуйста исправить ошибки. |
Автор: Роман Стадник 87 28.12.10, 23:10 |
Помогите У меня задача На комплектовочный конвейер сборочного цеха каждые 4-6 мин поступают 5 изделий первого типа и каждые 13-27 мин поступают 20 изделий второго типа. Конвейер состоит из секций, имеющих по 10 изделий каждого типа. Комплектация начинается только при наличии деталей обоих типов в требуемом количестве и длится 10 мин. При нехватке деталей секция конвейера остается пустой. Смоделировать работу конвейера сборочного цеха в течение 8 ч. Определить вероятность пропуска секции, средние и максимальные очереди по каждому типу изделия. определить экономическую целесообразность перехода на секции по 20 изделий с временем комплектации 20 мин. Я сделал вот так NN1 STORAGE 10 NN2 STORAGE 10 MET1 GENERATE 5,1 SPLIT 4 QUEUE QUE1 ENTER NN1 DEPART QUE1 TRANSFER ,MET3 LEAVE NN1,10 TERMINATE 9 MET2 GENERATE 20.7 SPLIT 19 QUEUE QUE2 ENTER NN2 DEPART QUE2 TRANSFER ,MET3 LEAVE NN2,10 TERMINATE 9 MET3 SEIZE KAN ADVANCE 10 RELEASE KAN TERMINATE GENERATE 480 TERMINATE 1 START 1 правильный ли текст. У меня в результате выдает LEAVE 0 0 0 0 |
Автор: LilyM 10.01.11, 12:57 |
Привет всем! При написании курсовой по GPSS столкнулась с проблемой, не могу написать корректно работающую программу. Задача: На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин. и имеет до 4% брака, второй соответственно 60 мин. и 8% брака. Все бракованные детали возвращаются на повторную обработку на второй станок. Детали, попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводят также два станка в среднем 100 мин. каждый. Причем первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше трех деталей. Все интервалы времени распределены по экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку второго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обработке. Вот что у меня получилось написать: EXP FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915 .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3 .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9 .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8 NAK3 STORAGE 1000 GENERATE 50,FN$EXP ASSIGN 1,0 TRANSFER .5,MET11,MET12 MET11 QUEUE NAK1 SEIZE KAN1 DEPART NAK1 ADVANCE 40,FN$EXP RELEASE KAN1 TRANSFER .04,MET2,MET3 MET12 QUEUE NAK2 SEIZE KAN2 DEPART NAK2 ADVANCE 60,FN$EXP RELEASE KAN2 TRANSFER .08,MET2,MET3 MET2 ASSIGN 1,0 PRIORITY 0 ENTER NAK3 TEST LE Q$NAK3,3,MET5 TRANSFER ,MET4 MET5 TRANSFER BOTH MET4,MET6 MET3 TEST NE P$1,2,OTXOD ASSIGN 1+,1 PRIORITY 2 TRANSFER ,MET12 OTXOD TERMINATE MET4 SEIZE KAN3 LEAVE NAK3 ADVANCE 100,FN$EXP RELEASE KAN3 TRANSFER ,OUT MET6 SEIZE KAN4 LEAVE NAK3 ADVANCE 100,FN$EXP RELEASE KAN4 TRANSFER ,OUT OUT TERMINATE 1 START 500 Пожалуйста помогите доработать программу. |
Автор: kandrey58reg 12.01.11, 18:38 |
Здравствуйте.. Задали курсовой проект по GPSS.. "В системе передачи данных осуществляется обмен пакетами данных между пунктами A и B по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени между ними 10 ± 3 мс. Передача пакета занимает 10 мс. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктами системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетов данных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ. Смоделировать обмен информацией в системе передачи данных в течение 1 минуты. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможности отказов определить необходимый для безотказной работы системы объем буферных регистров." Полазив по интернету, нашел два варианта исполнения: 1) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> INITIAL X$LOST,0 SAT_FREQ TABLE C1,10000,10000,6 BUF_A STORAGE 2 BUF_B STORAGE 2 GENERATE 10,3 GATE SNF BUF_A,SAT ENTER BUF_A ADVANCE 10 LEAVE BUF_A TRANSFER ,KILL GENERATE 10,3 GATE SNF BUF_B,SAT ENTER BUF_B ADVANCE 10 LEAVE BUF_B TRANSFER ,KILL SAT TABULATE SAT_FREQ,1 GATE NU SAT_LINE,OUT SEIZE SAT_LINE ADVANCE 10,5 RELEASE SAT_LINE TRANSFER ,KILL OUT SAVEVALUE LOST+,1 KILL TERMINATE GENERATE 1,,60000 TERMINATE 1 2) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> BUFA STORAGE 2 BUFB STORAGE 2 SAVEVALUE PAKAB,0 SAVEVALUE PAKBA,0 SAVEVALUE CALLSAT,0 SAVEVALUE PAKSAT,0 SAVEVALUE OTAKZSAT,0 GENERATE 10,3 GATE SNF BUFA,SAT ENTER BUFA SEIZE AB LEAVE BUFA ADVANCE 10 SAVEVALUE PAKAB+,1 RELEASE AB OUT TERMINATE OTKAZ SAVEVALUE OTKAZSAT+,1 TRANSFER ,OUT GENERATE 10,3 GATE SNF BUFB,SAT ENTER BUFB SEIZE BA LEAVE BUFB ADVANCE 10 SAVEVALUE PAKBA+,1 RELEASE BA TRANSFER ,OUT SAT SAVEVALUE CALLSAT+,1 GATE NU LINES,OTKAZ SEIZE LINES ADVANCE 10,5 SAVEVALUE PAKSAT+,1 RELEASE LINES TRANSFER ,OUT GENERATE 60000 TERMINATE 1 START 1 Первый как я считаю, какойто странный и работает некорректно.. Второй уже получше.. и вроде корректен.. Может быть кому-нибудь попадался такой вариант задания..?? Если у кого есть какие наброски поделитель пожалуйста.. или может у кого-нибудь имеется q-схема с более корректным вариантом, чем эти..?? |
Автор: Andriy99 24.02.11, 20:38 |
Здравствуйте!! Очень нужно мнение специалиста. Я смоделировал задачу но не совсем уверен что правильно. Помогите пожалуйста!!!! Вот постановка задачи: На маршруте работают два микроавтобуса (А и Б), каждый из которых имеет 12 мест. Микроавтобус А пользуется большей популярностью, нежели микроавтобус Б, поскольку водитель микроавтобуса А ездит аккуратнее и быстрее. Потому пассажир, подойдя к остановке, садится в микроавтобус Б только в том случае, если микроавтобуса А нет. Микроавтобус отправляется на маршрут только в том случае, если все места в нём заняты. Пассажиры приходят к остановке через 1 ± 0,2 минут и, если нет микроавтобусов, становятся в очередь. Если очередь больше 35 человек, потенциальный пассажир уходит из очереди. Предполагается, что все пассажиры едут до конца маршрута. На прохождение маршрута микроавтобус А тратит 25 ± 6 минут, микроавтобус Б – 30 ± 10 минут. После того, как пассажиры освободят микроавтобус (время освобождения – 4 ± 1 минут), он едет в обратном направлении. Плата за проезд составляет 1 единиц стоимости. Автопредприятие столько же теряет (недополучает), если пассажир, придя на остановку, не ждёт, а уходит (учесть это при определении затрат). Определить выручку автопредприятия за день, если микроавтобусы работают 10 часов в сутки. А от и модель: Please EQU 12 initial X$Pass,0 initial X$Cherga,0 initial X$Vtratu,0 initial X$CASH,0 initial X$Kilk_A,0 initial X$Kilk_B,0 Bus_A STORAGE 25 Bus_B STORAGE 25 ;VAR FVARIABLE (X$Pass#2)-(X$Vtratu#2) VAR FVARIABLE ((N$mit_10 + N$mit_11)) - (N$mit_12) GENERATE 1,0.2 GATE SF Bus_A,mit_1 GATE SF Bus_B,mit_2 savevalue Cherga+,1 TEST G X$Cherga,30,mit_9 savevalue Cherga-,1 transfer ,mit_12 mit_12 advance 0 savevalue Vtratu+,1 TERMINATE mit_9 assign s4et4ik,2000 mit_3 GATE SF Bus_A,mit_1 GATE SF Bus_B,mit_2 ADVANCE 0.1 LOOP s4et4ik,mit_3 mit_1 TEST G X$Cherga,0,mit_4 savevalue Cherga-,1 mit_4 ENTER Bus_A savevalue Kilk_A,0 GATE SF Bus_A ADVANCE 25,6 ADVANCE 4,1 transfer ,mit_10 mit_10 advance 0 savevalue Pass+,1 ADVANCE 25,6 LEAVE Bus_A TERMINATE mit_2 TEST G X$Cherga,0,mit_5 savevalue Cherga-,1 mit_5 ENTER Bus_B savevalue Kilk_B,0 GATE SF Bus_B ADVANCE 30,10 ADVANCE 4,1 transfer ,mit_11 mit_11 advance 0 savevalue Pass+,1 ADVANCE 30,10 LEAVE Bus_B TERMINATE GENERATE 600 ;SAVEVALUE CASH,(X$Pass#2-X$Vtratu#2) savevalue CASH,V$VAR TERMINATE 1 ;start 1 |
Автор: zhenya 20.03.11, 15:14 |
Здравствуйте!!!помогите пожалуйста не могу понять где ошибка.Сама задача:Вычислительная система содержит три ЭВМ, работа которых организована по следующему алгоритму: с интервалом 30±2 с задания поступают в очередь на обработку первой ЭВМ, время обработки составляет 30 с. После задание поступает одновременно во вторую и третью ЭВМ, время обработки которых соответственно 14±5 с. и 16±1с. Окончание обработки задания на любой ЭВМ означает снятие ее с решения с той и другой машины. Смоделировать 7 ч. работы системы. Определить необходимую емкость накопителей перед всеми ЭВМ, коэффициенты загрузки ЭВМ и функцию распределения времени обслуживания заданий. Текст программы:savevalue KOL,0 инициализация переменной KOL savevalue K1,0 инициализация переменной K1 savevalue K2,0 инициализация переменной K2 savevalue K3,0 инициализация переменной K3 savevalue ENTER_NAK1,0 инициализация переменной ENTER_NAK1 savevalue ENTER_NAK2,0 инициализация переменной ENTER_NAK2 savevalue ENTER_NAK3,0 инициализация переменной ENTER_NAK3 nac1 storage 1 объявление емкости накопителя 1 nac2 storage 1 объявление емкости накопителя 2 nac3 storage 1 объявление емкости накопителя 3 time1 table ft$1,25,1,6 инициализация таблицы time1 time2 table ft$2 ,10,1,6 инициализация таблицы time2 time3 table ft$3 ,13,1,5 инициализация таблицы time3 generate 30 генерирование заявок savevalue KOL+,1 сохранение количества сгенерированных заявок enter nac1,1 занятие накопителя 1 savevalue ENTER_NAK1+,1 сохранение количества заявок вошедших в накопитель 1 seize 1 занятие устройства 1(ЭВМ1) leave nac1,1 освобождение накопителя 1 advance 30 задержка заявки в устройстве на обработку savevalue K1+,1 сохранение количества заявок обработанных в ЭВМ1 tabulate time1 вывод функции распределения времени обработки заявок в ЭВМ1 release 1 освобождение ЭВМ1 split 1,pcc3 переход от ЭВМ1 к ЭВМ2 и ЭВМ3 pcc2 enter nac2,1 занятие накопителя у ЭВМ2 savevalue ENTER_NAK2+,1 сохранение количества заявок вошедших в накопитель 2 seize 2 занятие ЭВМ2 leave nac2,1 освобождение накопителя 2 advance 14,5 обработка заявки в ЭВМ2 tabulate time2 вывод функции распределения времени обработки заявок в ЭВМ2 out1 release 2 освобождение ЭВМ2 gate U nac3,ONac3 проверка занятости накопителя 3 leave nac3 освобождение накопителя 3 ONac3 gate SF 3,O3 проверка занятости устройства 3, если оно еще занято, то release 3 освободить O3 savevalue K2+,1 сохранение количества заявок вышедших с устройства 3 transfer ,out удаление транзакта, т.е. снятие задания pcc3 enter nac3,1 занятие накопителя у ЭВМ3 savevalue ENTER_NAK3+,1 сохранение количества заявок вошедших в накопитель 3 seize 3 занятие ЭВМ3 leave nac3,1 освобождение накопителя 3 advance 16,1 задержка заявки на обработку tabulate time3 вывод функции распределения времени обработки заявок в ЭВМ3 out2 release 3 освобождение ЭВМ3 gate U nac2,ONac2 проверка занятости накопителя 2 leave nac2 освобождение накопителя 2 ONac2 gate SF 2,O2 проверка занятости устройства 2, если оно еще занято, то release 2 освободить O2 savevalue K3+,1 сохранение количества заявок вышедших с устройства 3 out terminate 2 удаление транзактов, т.е. снятие задания с ЭВМ2 и ЭВМ3 generate 1 terminate 1 start 25200 начальное значение счетчика завершений |
Автор: Nastyaorkina 23.03.11, 04:03 |
Здравствуйте!!Помогите ,пожалуйста)есть прога в GPSS ,но она не запускается ,выдает ошибку,не могу понять в чем проблема.Если можете ПОДСКАЖИТЕ плиз!!! Вот задание Самолёты прибывают для посадки в район крупного аэропорта каждые 105 мин. Если взлётно-посадочная полоса свободна, прибывший самолет получает разрешение на посадку. Если полоса занята, самолет выполняет полет по кругу и возвращается к аэропорту через каждые 4 минуты. Если после пятого круга самолет не получает разрешения на посадку, он отправляется на запасной аэродром. В аэропорту через каждые 102 мин. К взлетно-посадочной полосе выруливают готовые к взлету машины и получают разрешение на взлет, если полоса свободна. Для взлета и посадки самолеты занимают полосу равно на 2 мин. Если при свободной полосе одновременно один самолет прибывает для посадки, а другой для взлета, полоса предоставляется взлетающей машине. Смоделировать работу аэропорта в течение суток. Подсчитать количество самолетов, которые взлетели, сели и были направлены на запасной аэродром. Определить коэффициент загрузки взлетно-посадочной полосы. А вот код проги line equ 1; основной аэродром line2 equ 2; запасной аэродром ready equ 3; очередь готовых на взлёт самолётов ;-------< самолёты, идущие на посадку >----------- generate 10,5 ; <- с приоритетом 0 assign 2,0 ; инициализация второго параметра ;----------< попытка занять полосу >-------------- LAND gate nu line,WAIT_LAND seize line advance 2 release line transfer ,OUT ;--------< кольцо, где ждут 4 минуты >------------ WAIT_LAND test L PS2,5,LAND2 mark 1 ; транзакт запоминает время начала ожидания assign 2+,1 ; количество кругов ожидания test GE MPS1,4 ; время прошло - следующая попытка transfer ,LAND ;--------------< запасной аэродром >-------------- LAND2 seize line2 ; для статистики release line2 transfer ,OUT ;--------------< взлетающий самолёт >------------- generate 10,2,,,1 ; <- с приоритетом 1 queue ready seize line depart ready advance 2 release line ;--------------------< конец >-------------------- OUT terminate ;--------< время моделирования = 1 сутки >-------- generate 0,,1440 terminate 1 start 1 |
Автор: ВЕТА 06.04.11, 08:29 |
Здравствуйте! Помогите пожалуйста разобраться в тексте программы. Задание: ИМИТАЦИЯ РАБОТЫ БАНКА Текст программы: *Имитация работы банка* GENERATE 300,100; Создание потока клиентов QUEUE ZAPR; Вход в очередь SEISE KASSA; Ожидание свободной кассы/окна DEPART ZAPR; Выход из очереди ADVANSE 400, 200; Обслуживание клиента RELEASE KASSA; Освобождение кассы/окна TERMINATE 1; Уход клиента START 100; Имитация 100 клиентов Вот что выдаёт: 04/06/11 12:19:35 Model Translation Begun. 04/06/11 12:19:35 Line 4, Col 6. Invalid identifier. Expecting a GPSS Verb. 04/06/11 12:19:35 SEISE KASSA; Ожидание свободной кассы/окна 04/06/11 12:19:35 Line 6, Col 8. Invalid number. Expecting a GPSS Verb. 04/06/11 12:19:35 ADVANSE 400, 200; Обслуживание клиента 04/06/11 12:19:35 **** Model Translation Aborted **** Делала по примеру... Что здесь не правильно? ![]() |
Автор: aeronx 17.04.11, 11:30 |
Добрый день! Помогите пожалуйста решить задачу по GPSS. В Принципе она легкая, но вот с количеством мест выходит загвоздка =( Моделирование процесса функционирования автомойки Исходные данные. 1. Автомойка имеет N мест на стоянке для автомоби¬лей. Если клиенты подъезжают и не застают свободного места для ожидания, они уезжают. 2. Поток автомобилей является пуассоновским с интенсив¬ностью λ. Время мойки автомобиля распределено экспоненциаль¬но с интенсивностью μ. Цель. Разработать GPSS-модель и использовать ее для выбо¬ра оптимального числа мест N на стоянке так, чтобы число уе¬хавших машин было минимальным. Перечень данных: λ = 5 авт/мин, μ = 4 авт/мин, 3 < N < 7. В долгу не останусь =) |
Автор: unlike777 29.04.11, 13:03 |
Помогите разобраться, даже препод не может понять в чем фигня, писал прогу сам препод =) Условие задачи Условие задачи Рассмотрим пример работы компьютера, задействованного в управлении технологическим оборудованием. Для контроля состояния оборудования каждые 20 мин запускается одна из трех типов задач. Через каждые 5 мин работы процессора каждая задача выводит результаты работы в базу данных. При обращении двух и более задач к базе данных (БД) образуется очередь, которая обслуживается по правилу FIFO. Общий объем памяти компьютера 1024Кбайт. В первоначальный момент запуска компьютера загружается ОС, ядро которой постоянно находится в памяти и занимает 200 Кбайт. Компьютер работает в мультипрограммном режиме и во время выполнения операций вывода в БД процессор может выполнять другую задачу, если она загружена в память. После последнего вывода в БД задача выгружается из памяти и завершает свою работу. Периодически c интенсивностью λ=0,005 мин-1 и экспоненциальным распределением возникает аварийный режим оборудования, при котором немедленно запускается на выполнение задача четвертого типа, выводящая оборудование из аварийного режима. Она прерывает работу задачи, занимающей процессор, и позволяет закончить вывод в БД, если такой имеется, когда запущена задача 4-го типа. Прерванная задача выгружается из памяти. По окончании выполнения задачи четвертого типа, она выводит в БД результаты своей работы. Вытесненная задача c магнитного диска загружается в память и продолжает работу: загружает процессор, осуществляет вывод в базу данных. Необходимые данные для моделирования приведены в табл. 4.38. Таблица 4.38 Тип задачи 1 2 3 4 Вероятность возникновения 0,5 0,35 0,15 – Объем памяти, Кбайт 200 300 400 200 Время обработки ЦП, мин 15 20 25 5 Время вывода в БД, мин 3 5 7 2 Необходимо промоделировать работу компьютера в течение пяти суток и оценить размер очереди к памяти, ее загрузку и загрузку процессора. Учитывая, что программа полностью прокомментирована, дадим только некоторые пояснения к ней. Задачи 1-го, 2-гo, 3-го типов имеют приоритет равный 0. Задача четвертого типа, обрабатывающая аварийную ситуацию, имеет приоритет 3. При ее появлении немедленно занимается процессор и, если в это время выполняется задача другого типа, то она прерывается и выгружается из памяти (операнд C блока PREEMPT направляет прерванный транзакт в блок c меткой SWAP). Для запуска работы компьютера используется один транзакт c приоритетом 5, который занимает 2 единицы памяти (200 Кбайт) и имитирует загрузку ядра ОС в память. Программа полностью работает, вот текст Текст проги TYPE FUNCTION RN1,D3 ; Тип задачи .5,1/.85,2/1,3 VRAM FUNCTION P1,D3 ; Объем ОЗУ для задач 1, 2, 3 типов. Кратен ;100Кбайт 1,2/2,3/3,4 TIME_CP FUNCTION P1,D3 ; Время работы процессора для задач 1, 2, 3 типов 1,15/2,20/3,25 TIME_BD FUNCTION P1,D3 ; Время вывода в БД для задач 1, 2, 3 типов 1,3/2,5/3,7 RAM STORAGE 9 ; Объем ОЗУ 100*10 Кбайт TOB FVARIABLE EXPONENTIAL(5,0,100) ; Показательное ;распределение со средним 200 минут ************************************************************************ ;Появление задач T_OST1 TABLE P3,0,1,30 T_OST TABLE P5,0,1,10 T_PRER TABLE M1,0,50,10 T_TYPE TABLE P1,1,1,3 TQ_RAM QTABLE Q_RAM,0,20,10 TQ_RAM1 QTABLE Q_RAM1,0,20,10 TQ_RAM3 QTABLE Q_RAM3,0,20,10 GENERATE 20 ;Время появления задач 1, 2, 3 типов ; ;Создание параметров транзактов и назначение параметрам значений ASSIGN 1,FN$TYPE ;Определение типа задачи TABULATE T_TYPE ASSIGN 2,FN$VRAM ;Определение нужного объема ОЗУ для задачи данного ;типа ASSIGN 3,FN$TIME_CP ; Определение требуемого времени процессора для ;задачи ;данного типа ASSIGN 4,FN$TIME_BD ; Определение требуемого времени вывода в БД для ;задачи ;данного типа ASSIGN 5,0 ; В этом параметре(№ 5) будет записан остаток времени работы с ;процессором прерванной задачи **************************************************************************** QUEUE Q_RAM ;Ждать освобождения памяти ENTER RAM,P2 ; Занять память для задачи данного типа DEPART Q_RAM ; Освободить очередь к памяти CALC SEIZE CP ; Занять процессор ADVANCE 5 ; Работать 5 минут RELEASE CP ; Освободить процессор SEIZE BD ; Начать вывод в БД ADVANCE P4 ; Время вывода в БД RELEASE BD ; Закончить вывод в БД ASSIGN 3-,5 ; Сколько времени процессора еще требуется задаче ;данного типа? TEST LE P3,0,CALC ; Задача закончилась? LEAVE RAM,P2 ; Да, освободить ОЗУ TERMINATE ; Завершить задачу (по умолчанию параметр А ;равен 0) *************************************************************************** ; Аварийная ситуация, появление задачи 4 ;T4 QTABLE Q_RAM3,0,5,25 ;INITIAL X$TIM,0 T4 TABLE V$TOB,0,100,10 ;ASSIGN 6,0 ;Perem VARIABLE 0 ;T4 TABLE (AC1-M1-X$Perem),0,100,20 GENERATE V$TOB,,,,3 TABULATE T4 ;SAVEVALUE 6,AC1 QUEUE Q_RAM3 ENTER RAM,2 ; Задача 4 занимает память DEPART Q_RAM3 PREEMPT CP,PR,SWAP,5,RE ;Занять немедленно процессор, выгрузить ;прерванную задачу из памяти ;PREEMPT CP,PR ;в параметр 5 заносится остаток времени занятия ;процессора прерванной задачей ADVANCE 5 ; Работать 5 минут ;RELEASE CP RETURN CP ; Освободить процессор SEIZE BD ;Занять БД ADVANCE 2 ; Время вывода в БД - 2 мин RELEASE BD ; Закончить вывод в БД LEAVE RAM,2 ; Освободить память ;TABULATE T4 ;SAVEVALUE Perem,AC1PREEMPT TERMINATE ; Завершить задачу 4 *************************************************************************** ; Удаленная из процессора задача завершает работу SWAP TABULATE T_OST TABULATE T_PRER LEAVE RAM,P2 ; «Запись» на жесткий диск PRIORITY 2 ; Более высокий приоритет дает прерванной задаче ;преимущество в занятии ресурсов QUEUE Q_RAM1 ;Ждать освобождения памяти ENTER RAM,P2 ; Занять память для задачи данного типа DEPART Q_RAM1 ; Освободить очередь к памяти CALC1 SEIZE CP ; Занять процессор ADVANCE P5 ; Работать оставшееся время RELEASE CP ; Освободить процессор SEIZE BD ; Начать вывод в БД ADVANCE P4 ; Время вывода в БД RELEASE BD ; Закончить вывод в БД TABULATE T_OST1 ASSIGN 3-,5 ; Сколько времени процессора еще требуется задаче ;данного типа? ASSIGN 5,P3 ;Теперь время работы на процессоре считывается из ;параметра 5 TEST LE P3,0,CALC1 ; Задача закончилась? LEAVE RAM,P2 ; Да, освободить ОЗУ TERMINATE ; Завершить задачу **************************************************************************** ************************************************************************* ; Запуск компьютера в момент времени 0 GENERATE ,,,1,5 ENTER RAM,2 ; Загрузить в ОЗУ ядро ОС ADVANCE 7200 ; Работать 5 суток (5*24*60 мин) LEAVE RAM,2 ; Выгрузить ядро ОС из ОЗУ TERMINATE 1 ; Завершить работу компьютера *************************************************************************** START 1 Суть в чем... Работает компьютер, поступают некоторые задачи 3х типов, они занимают процессор и некоторое количество оперативной памяти Но иногда возникает аварийная ситуация, в это время запускается программа 4ого типа, он прерывает текущую программу и перенаправляет его к метке SWAP, где он выгружается из памяти, а из процессора она прерывается предыдущим PREEMPT'ом и снова становиться в очередь за памятью чтобы доработать оставшееся время PREEMPT CP,PR,SWAP,5,RE Но когда мы ставим обычный PREEMPT без перехода на метку SWAP, т.е. весь блок от SWAP и до конца пропадает и программа как бы продолжает занимать память и ждет пока пока освободиться процессор после прерывания чтобы доработать оставшееся время PREEMPT CP,PR В первом случае все очереди возрастают в 2 раза, то есть система в целом работать начинает в 2 раза хуже, хотя по логике должно быть все наоборот, ну или на крайняк также Все перепроверили, логика программы правильная, но этот факт объяснить никто не может Профи и гуру помогите плиз, надеюсь достаточно понятно все обьяснил! |
Автор: olsheu 30.04.11, 11:47 |
Уважаемый aeronx. Я написал Вашу модель. Все получилось. Пишите на oes2@mail.ru |
Автор: avchent 01.05.11, 12:51 |
Привет всем! Вопрос такой: в GPSS есть блоки SPLIT и ASSEMBLE которые позволяют соответственно разбивать транзакт на несколько и собирать из нескольких транзактов одного семейства один. Есть ли здесь кто-нибудь кто-знает аналогичные системы моделирования, в частности SimEvents из пакета MathLab. Каким образом там можно организовать то же самое (SPLIT - ASSEMBLE) ? PS. Вообще, я удивлен тем, что в GPSS можно порождать сколько угодно транзактов из одного, причем указывать это можно в параметре транзакта. В SimEvents нужно целую подсистему нагородить, чтобы достичь того же, что в GPSS делается одной строкой. |
Автор: mininaalena 02.05.11, 14:11 | |||||||||||||||
Привет. Ребята, помогите пожалуйста с задачей по gpss world, завтра уже сдавать надо, пожалуйста. На станцию технического обслуживания (СТО) согласно закону Эрланга второго порядка со средним временем прибытия 14 мин прибывают автомобили для технического обслуживания (36% автомобилей) и ремонта (64% автомобилей). На СТО есть два бокса для технического обслуживания и три бокса для ремонта. Выполнение простого, средней сложности и сложного ремонтов – равновероятно. Время и стоимость выполнения работ по техническому обслуживанию и ремонту зависит от категории выполняемых работ (табл. 7.17). После технического обслуживания 12% автомобилей поступают для выполнения ремонта средней сложности. Построить гистограмму времени обслуживания автомобилей. Оценить выручку СТО за пять дней работы. Таблица 7.17
|
Автор: Vlastilena 04.05.11, 12:52 |
Привет! Умные, хорошо знающие gpss люди не оставьте в беде! Помогите решить задачу, курсовой сдавать надо, а я gpss совсем не понимаю(( Фирма «Happy New Year», работающая по системе «сегодня на сегодня», имеет в своем штате N актеров, играющих роль Деда Мороза, и M актрис, играющих роль Снегурочки. Время прихода заказов распределено по закону Эрланга третьего порядка со средним временем Т1 минут. Характеристики заказов приведены в табл. 17. Таблица 17 - Варианты к заданию 17 Вид поздравления Вероятность прихода заказа на поздравление Время выполнения заказа (поздравления),минут Стоимость поздравления С Дедом Морозом p1 t1±t4 s1 Со Снегурочкой p2 t2±t5 s2 С Дедом Морозом и Снегурочкой p3 t3±t6 s3 При заказе поздравления клиент указывает желаемый срок выполнения T2 (минут). Если поздравление выполняется позже заявленного срока, то клиенту предоставляется 20% скидка от начальной стоимости поздравления. Заработная плата актера составляет z рублей в месяц. В начале своей работы фирма делает одноразовые затраты (костюмы, реквизит, лицензия, литературные тексты и прочее) на сумму S единиц стоимости. Фирма работает только один месяц в году (считать, что в другое время она не несет никаких затрат). Найти оценку периода окупаемости T (в годах) фирмы по формуле T=S/P, где Р - прибыль, полученная за один год работы. Определить величины N и M, при которых время окупаемости фирмы и соответствующее среднее время ожидания клиентом выполнения заказа будет минимальным. Если возможно снижение цен на услуги, то до какого уровня? Варианты заданий приведены в табл. 17.1. Таблица 17.1 - Варианты к заданию 17 Параметры Варианты 4 N 5 M 4 p1 0,25 p2 0,25 p3 0,5 T1 35 T2 175±15 t1±t4 70±20 t2±t5 55±15 t3±t6 80±10 s1 50 s2 60 s3 100 S 13000 z 400 Заранее благодарю не оставшихся равнодушными!))) |
Автор: sado 05.05.11, 13:56 |
Здравствует. Помогите пожалуйста разобраться. Я смоделировала СМО. Он выдает результаты, но я не понимаю что к чему. Мне нужны результаты нагрузки СМО. Подскажите что к чему относиться (где нагрузка и вообще где что). <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> GPSS World Simulation Report - 2.8.1 Thursday, May 05, 2011 17:25:13 START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 500.000 30 0 1 NAME VALUE COUNT1 10000.000 NAK 10001.000 OUT 27.000 OUT1 28.000 QUE 10002.000 T1 18.000 T2 22.000 T3 21.000 LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 40 0 0 2 TEST 40 0 0 3 ENTER 40 0 0 4 ADVANCE 40 0 0 5 LEAVE 40 0 0 6 TRANSFER 40 0 0 7 GENERATE 20 0 0 8 TEST 20 0 0 9 ENTER 20 0 0 10 ADVANCE 20 0 0 11 LEAVE 20 0 0 12 TRANSFER 20 0 0 13 GENERATE 10 0 0 14 TEST 10 0 0 15 ENTER 10 0 0 16 ADVANCE 10 0 0 17 LEAVE 10 0 0 T1 18 TEST 10 0 0 19 QUEUE 10 0 0 20 TRANSFER 10 0 0 T3 21 TRANSFER 2 0 0 T2 22 SEIZE 0 0 0 23 DEPART 0 0 0 24 ADVANCE 0 0 0 25 RELEASE 0 0 0 26 TERMINATE 0 0 0 OUT 27 TERMINATE 60 0 0 OUT1 28 TERMINATE 10 0 0 29 GENERATE 1 0 0 30 TERMINATE 1 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY QUE 10 10 10 0 9.480 473.999 473.999 0 STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY COUNT1 50 50 0 5 70 1 0.252 0.005 0 0 SAVEVALUE RETRY VALUE NAK 0 10.000 FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 72 0 1000.000 72 0 29 |
Автор: Vlastilena 05.05.11, 15:59 |
Возвращаясь к задаче про фирму с дедами морозами и снегурочкой. Прога с горем пополам и с божьей помощью но написана. ded STORAGE 5; Количество актеров, играющих роль Деда Мороза sneg STORAGE 3; Количество актрис, играющих роль Снегурочки INITIAL X$SUM,0; INITIAL X$SUM1,0; INITIAL X$SUM2,0; INITIAL X$SUM3,0; zp VARIABLE 8#300; Заработная плата GF FUNCTION RN1,D3 .5,u_ded/.7,u_sneg/1,u_des; Функция задания распределения числа GENERATE (Exponential(1,0,8.33) + Exponential(2,0,8.33) + Exponential(3,0,8.33)); генерация транзактов по закону эрланга 3го порядка TRANSFER ,FN$GF Переход транзактов в блок функции u_ded TEST GE ded,1,u_ded; Проверяем устройство, если свободно, то можно занять QUEUE Qded; Занимаем очередь MARK 1; Ставим метку 1 ENTER ded; Занимаем дедушку DEPART Qded; Покидаем очередь ADVANCE 60,15; Обслуживаем 45-75 минут LEAVE ded; Освобождаем дедушку TEST L MP1,160,minus1; Сравниваем время в метке 1 с желаемым сроком выполнения, если больше то переходим к minus1 чтобы посчитать скидку savevalue sum1+,1; Увеличиваем сумму на единицу TERMINATE 0 u_sneg TEST GE sneg,1,u_sneg; Проверяем устройство, если свободно, то можно занять QUEUE Qsneg; Занимаем очередь MARK 2; Ставим метку 2 ENTER sneg; Занимаем снегурочку DEPART Qsneg; Покидаем очередь ADVANCE 50,11; Обслуживание 39-61 минут LEAVE sneg; Освобождение снегурочки TEST L MP2,160,minus2; Сравниваем время в метке 2 с желаемым сроком выполнения, если больше то переходим к minus2 чтобы посчитать скидку savevalue sum2+,1; Увеличиваем сумму на единицу TERMINATE 0 u_des TEST GE ded,1,u_des; Проверяем устройство, если свободно, то можно занять TEST GE sneg,1,u_des; Проверяем устройство, если свободно, то можно занять QUEUE Qds; Постановка в очередь MARK 3; Ставим метку 2 ENTER ded ENTER sneg; Занимаем дедушку и снегурочку DEPART Qds; Покидаем очередь ADVANCE 90,12; Обслуживание 78-102 минуты LEAVE ded; Освобождение актеров LEAVE sneg; TEST L MP3,160,minus3; Сравниваем время в метке 3 с желаемым сроком выполнения, если больше то переходим к minus3 чтобы посчитать скидку savevalue sum3+,1; Увеличиваем сумму на единицу TERMINATE 0 minus1 savevalue sum1+,0.8; учитываем скидку 20% TERMINATE 0 minus2 savevalue sum2+,0.8 TERMINATE 0 minus3 savevalue sum3+,0.8 TERMINATE 0 GENERATE 18000; Модельное время 1 минута. 30 рабочих дней по 10 часов. nss VARIABLE (X$sum1#50) + (X$sum2#33) + (X$sum3#90) SAVEVALUE SUM,V$nss; Вычет зарплаты из общей суммы SAVEVALUE SUM-,V$zp; Вычет зарплаты из общей суммы TERMINATE 1 START 1 Понятно практически все, за исключением пары моментов. Если кто может помочь, объясните пожалуйста как работают эти моменты. По какому принципу работает распределение чисел в функции и как работает последний кусок проги со слова "nss". |
Автор: gpss 10.05.11, 23:41 |
программа generate 21000,5 transfer 2,,Kassao Kassa queue kas seize kass depart kas advance 50 release kass terminate generate 35,5 queue kass seize kas depart kass advance 5 release kas queue ocher seize prod depart ocher advance 40 release prod terminate generate 480 terminate 1 start 365 помогите пожалуйста! Есть программа, но она работает неправильно, помогите доработать. Идея такая: Касса за год ломается 8 раз, из-за этого необслужено н-покупателей. Потом по просьбе преподавателя нужно сделать так, чтобы касса ломалась допустим 4 раза и необслуженных клиентов было в 2 раза меньше. как это реализовать? |
Автор: yuriy67 17.05.11, 18:24 |
kant1288 Привет. ТЫ как-то писал на этом форуме по поводу задачи по gpss. Цитата Здравствуйте! Моё задание:В специализированной вычислительной системе периодически выполняется три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 20-80 секунд. После запуска задания оно требует для своего выполнения 50-150 секунд времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 20-40 секунд, после чего производится их анализ в течение 40-80 секунд, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется. Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. Подсчитать число циклов выполнения остальных заданий и определить коэффициенты загрузки технических средств системы. У тебя не осталось чего-нибудь по ней? у меня курсач по этой задаче. |
Автор: benderchatko 30.05.11, 20:26 |
Здравствуйте, помогите пожалуйста с программой. не знаю как сделать следующий кусочек: в систему на обработку поступает заявка, которая разбивается на случайное количество заявок, из которых 10% обрабатываются первым устройством, 40% - вторым и 50% - третьим. после обслуживания тремя устройствами, все части этой заявки собираются воедино. как это реализовать? посоветуйте пожалуйста, если кто-то знает |
Автор: Аэлита 12.06.11, 10:12 |
Помогите пожалуйста!!!Как задать модель регулируемого перекрестка? Их надо по отодельности задавать или компоновать? У меня не хочет работать одновременно 2 дороги одного направления. |
Автор: no_nick891 12.06.11, 11:29 |
Доброго времени суток, ув. форумчане. Если написал не в ту тему, просьба тапками не швырять. Появилась небольшая загвоздка со сбором статистики. Необходимо в ниже приведённой программе собрать статистику входа транзактов, времени пребывания, и т.п. Проблема состоит в том, что блок, с которого необходимо собрать статистику - Transfer. Как понимаете, простым объектом QUEUE не обойтись, ибо будет регистрироваться вход, а выход транзакты "пролетают". Пробовал сразу же перенаправлять на DEPART, но статистика в итоге какая-то непонятная получается. Блок TABULATE по моему, мне необходимой информации не соберёт, или я ошибаюсь? В общем, буду рад даже если меня просто пнут в нужном направлении. Цитата 1 SIMULATE 10 OLD STORAGE 2 15 NEW STORAGE 5 20 GENERATE 5,3 30 TRANSFER BOTH,OLDPR,NEWPR 40 OLDPR ENTER OLD 50 ADVANCE 40,10 60 LEAVE OLD 70 TRANSFER ,BYE 80 NEWPR ENTER NEW 90 ADVANCE 20,5 100 LEAVE NEW 110 TRANSFER ,BYE 120 BYE TERMINATE 1 130 START 300 |
Автор: Apocalyptica 19.06.11, 11:45 |
Здравствуйте, нужна Ваша помощь и опыт в решении задачи. К миниЭВМ подключено четыре терминала, с ко¬торых осуществляется решение задач. По команде с терминала выполняют операции редактирования, трансляции, планирова¬ния и решения. Причем, если хоть один терминал выполняет планирование, остальные вынуждены простаивать из-за нехват¬ки оперативной памяти. Если два терминала выдают требование на решение, то оставшиеся два простаивают, и если работают три терминала, выдающих задания на трансляцию, то оставший¬ся терминал блокируется. Интенсивности поступления задач раз¬личных типов равны. Задачи одного типа от одного терминала поступают через экспоненциально распределенные интервалы времени со средним значением 160 с. Выполнение любой опера¬ции длится 10 с. Смоделировать работу миниЭВМ в течение 4 ч. Определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. GENERATE ,,,4 REDAKT ADVANCE 160 QUEUE OBRABOTKA SEIZE TERMINAL DEPART OBRABOTKA ADVANCE 10 RELEASE TERMINAL TERMINATE ******************************************** GENERATE ,,,1 PLAN FUNAVAIL TERMINAL,RE,TRANS,,RE,REDAKT,RE,RESHENIE ADVANCE 160 FAVAIL TERMINAL TERMINATE ******************************************** GENERATE ,,,3 TRANS FUNAVAIL TERMINAL,RE,PLAN,,RE,REDAKT,RE,RESHENIE ADVANCE 160 FAVAIL TERMINAL TERMINATE ******************************************** GENERATE ,,,2 RESHENIE FUNAVAIL TERMINAL,RE,PLAN,,RE,TRANS,RE,REDAKT ADVANCE 160 FAVAIL TERMINAL TERMINATE GENERATE 14400 TERMINATE 1 START 1 как видно по заданию нужно определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. в отчете такого не происходит. Подскажите. как и что мне надо сделать, чтоб результат был нужным. |
Автор: Dukalys 06.09.11, 09:25 |
День добрый знатоки! Вот кто мне поможет с таким вопросиком. Есть параллельно работающие ПРИБОРЫ, у каждого СВОЯ СОБСТВЕННАЯ очередь. в модели выглядит так - Дак в этом ХХХХХХ, мне нужна знать размер текущей очереди т.е. поидее это Q$P5 - но так записать нельзя, т.к. требуется жёсткое определение типа Q$10. С EQU тут тоже непрокатит, я же незнаю название того прибора в котором крутится заяка, темболее приборов может быть много. Подскажите как выкрутиться из этой ситуации. |
Автор: olsheu 06.09.11, 09:37 |
Вообще-то в ADVANCE задается время работы прибора. Зачем задавать размер текущей очереди в этом операторе? Т.е, Вы хотите сказать что время работы прибора = длине очереди? Мне кажется это не корректно. |
Автор: Dukalys 06.09.11, 09:48 |
Время обслуживания зависит от длины очереди ( классика) . Чем длиннее очередь, тем прибор работает быстрее. Мне нужна длина очереди для формирования сложной зависимости. - Как вариант ставить ещё одну БОЛЬШУЮ ОБЩУЮ очередь для всех этих приборов, а потом её значение /(делить) на кол-во приборов - получим среднее значение на прибор - но это не красиво в моей модели, и может нарушить логику функционирования. |
Автор: olsheu 06.09.11, 10:20 |
Если задать перед advance оператор savevalue 1,q$P5 а потом advance x1 Попробуйте. |
Автор: Dukalys 06.09.11, 10:28 |
Говорю же, не хочет он структуру Q$P5 кушать (P5 он вычислять не хотит!!!), ему подавай прямое только - например Q$1, Q$WAIT i t.d. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 09/06/11 16:26:13 Line 29, Col 14. Invalid SNA Entity Specifier. 09/06/11 16:26:13 SAVEVALUE 1,Q$P1 09/06/11 16:26:13 **** Model Translation Aborted **** GPSS 5.1.1 |
Автор: olsheu 06.09.11, 12:11 |
Тогда задайте savevalue 1,q$5 потом advance x1 Я так понимаю, что в параметре P5 хранится номер прибора. |
Автор: Dukalys 06.09.11, 12:17 |
Да в параметре ТРАНЗАКТА (P5) хранится номер прибора, очереди который он займёт. Если указать Q$5 - это будет 5ый прибор, мне он не нужен. У меня есть 10 обслуживающих приборов(с очередями) - P5, мне чётко нужно знать транзакт такойто - длинна очереди онлайн такаято. ещё раз повторяю как перезаписать структуру Q$P5!!! |
Автор: olsheu 06.09.11, 13:49 |
А Вы можете дать полное условие Вашей задачи? |
Автор: Dukalys 06.09.11, 14:12 |
Полное условие вам ни к чему, моделируется работа локальной подсистемы хранения информации, элемент который я очень кратко вынес - элемент работы определённой "ветки(куска)" технологии. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> СЕЛЕКТ 5,10,10+V$N,... ; Короче в 5 параметр записываем куда идёт на обслуживание транзакт, для этого выделены очереди(приборы) с 10, по 10+N QUEUE P5 SEIZE P5 DEPART P5 ADVANCE (1/Q$P5) ;Для простоты допустим так RELEASE P5 Дак вот когда транзакт входит к АДВАНС, требуется знать длину очереди в к данному прибору, а какая она(очередь) 10, 11, 12, 13 ... - знает только P5 (Q$P5) и никто другой. Может быть, можно какой нибудь хитрый блочек(связку) сделать, описывающих case P5: 10: savevalue 1,Q$10; 11:savevalue 1,Q$10; но как это реализовать + с увеличением N идея конечно превращается в муд)) |
Автор: olsheu 06.09.11, 15:05 |
Попробуйте так generate 1 assign 5,10 QUEUE P5 SEIZE P5 DEPART P5 savevalue 1,q*5 ADVANCE x1 ;Для простоты допустим так RELEASE P5 terminate generate 10 terminate 1 |
Автор: Dukalys 06.09.11, 15:20 |
![]() ![]() |
Автор: olsheu 06.09.11, 15:30 |
Теперь у Вас все должно работать как надо! q*5 означает текущее значение длины очереди, номер которой является значением параметра 5 активного транзакта. * означает косвенную адресацию. Извините, что сразу не понял, что Вам надо. |
Автор: Dukalys 06.09.11, 15:34 |
Большое вам спасибо за своевременную и квалифицированную помощь! P.S. Да прибудет с нами Шрайбер)) |
Автор: olsheu 06.09.11, 15:36 |
Рад был помочь. |
Автор: Dukalys 06.09.11, 15:59 |
А вот могли бы ещё по такому вопросу проконсультировать - в процессе создания моделей, изучения литературы - в голову приходят интересны мысли, например в модели мне интересно было бы использовать следующие структуры: 1. Динамически изменяемая ёмкость памяти (STORAGE) - да это может привести к сбою программы в случае уменьшения счётчика и т.д. НО если мне нужно всё время увеличивать очередь, а не уменьшать? Или скажем в начальных исходных данных размер определяется однократно( но зависит от нескольких исходных переменных). Как верно записать, и возможно ли это (выводить и вводить transferom заявки не вариант, выводить и выводить не по 1 тоже не вариант) Пример - Размер очереди(некая общая очередь) зависит от кол-во устройств и ихней(собственной) памяти (компилятор ругаеца) (обе переменные const, и задаются в начале программы. При изменении одной из них(новый прогон) автоматически должна меняться ёмкость памяти) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> QUE STORAGE (V$N#V$P) 2. Как правильно записать следующую функцию и возможно ли это. пример - В зависимости от псевдослучайного значения ГСЧ FN$PRIMER примет одно из след значений (компилятор ругаеца) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> PRIMER FUNCTION RN1,D2 .15,V$I/1,V$Y |
Автор: Vlad_Sh 06.09.11, 16:00 |
Привет всем! Прошу посоветовать по следующему вопросу: Пусть имееться некая модель (я ее упростил, но для примера думаю сойдет): XPDIS FUNCTION RN7,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38 .8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2 .97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9999,8 MOBILITY_IN FUNCTION RN2,D3 .10,0/.6,0.03364/1,0.6723 MOBILITY_OUT FUNCTION RN2,D3 .10,0/.6,60/1,1149 INT_IN FUNCTION C1,D3 7200,0.0336/14400,0.0336/28800,0.0336 INT_OUT FUNCTION C1,D3 7200,61/14400,61/28800,61 SOTA STORAGE 100000 Timer EQU 300 ************************************************************* GENERATE (FN$INT_IN+FN$MOBILITY_IN),FN$XPDIS DURATION_CALL ASSIGN 2,(FN$XPDIS#54) SAVEVALUE XN1,C1 COUNTER_ ENTER SOTA ADVANCE P2 LEAVE SOTA TERMINATE ************************************************************* GENERATE 600 TERMINATE 1 ************************************************************* В данной модели появляються транзакты (с некой интенсивностью), затем определяеться время пребывания его в сторадже (SOTA). В ячейку с номером транзакта записываеться время его появления. Транзакт отбывает время в SOTA и терминируется. Мне необходимо обработать собранные данные о входах в модель (данные хранящиеся в ячейках), результатом обработки будет число. Я попытался сделать это в виде процедуры: PROCEDURE Decision_liner () BEGIN TEMPORARY tcr, tsum, Dsum, D_, N_, M_; N_=1; M_=1; tsum=0; Dsum=0; WHILE (N_<SC$SOTA) DO BEGIN tsum=tsum+X$N_; N_=N_+1; END; tcr=tsum/SC$SOTA; WHILE (M_<SC$SOTA) DO BEGIN Dsum=Dsum+(X$M_-tcr)^2; M_=M_+1; END; D_=Dsum/SC$SOTA; VAL_Dec1=((Timer/2-tcr)^2)/D_; RETURN VAL_Dec1; END; Вопрос: не могу никак понять как их соединить в одном окне модели и вызвать процедуру после истечения периода моделирования. Подскажите пожайлуста. ![]() |
Автор: Snezok 18.10.11, 06:31 |
Уважаемые форумчане!Подскажите начинающему ответ на вот такой вопрос(изучаю GPSS World самостоятельно, литература есть,но терзают смутные сомнения):что задается в START?Количество проходов программы?Или время работы программы?Поясню свой вопрос на примере:допустим нужно смоделировать работу какой либо системы за полный рабочий день-8часов,т.е.при старте я задам 8 часов(в минутах допустим)?Так? А если нужно по заданию узнать время обработки 300 заявок например,то в старте 300 будем писать?Так? Или я не так все понимаю ![]() Сразу извиняюсь за такой школьный вопрос ![]() ![]() ![]() |
Автор: olsheu 18.10.11, 09:20 |
Чтобы обработать 300 заявок необходимо указывать start 300, но в тексте модели надо при удалении заявки из системы указывать terminate 1 |
Автор: Snezok 18.10.11, 22:39 |
Цитата olsheu @ Чтобы обработать 300 заявок необходимо указывать start 300, но в тексте модели надо при удалении заявки из системы указывать terminate 1 Спасибо за ответ ![]() А тогда чем будет отличаться код,программа для 8часового рабочего дня например? |
Автор: olsheu 19.10.11, 07:15 |
Надо сделать дополнительный сегмент модели и если единица модельного времени = 1 мин, то надо написать generate 480 terminate 1 start 1 480=8*60 - в одном часе 60 мин. А в тексте модели при уничтожении транзакта использовать terminate без единицы. |
Автор: Snezok 20.10.11, 00:52 |
Цитата olsheu @ Надо сделать дополнительный сегмент модели и если единица модельного времени = 1 мин, то надо написать generate 480 terminate 1 start 1 480=8*60 - в одном часе 60 мин. А в тексте модели при уничтожении транзакта использовать terminate без единицы. Спасибо большое!!!Теперь мне понятно ![]() Добавлено У меня еще один вопрос:если start прописать в тексте программы-обязательно\не обязательно выполнять команду start, после симуляции? |
Автор: olsheu 20.10.11, 05:41 |
Если start в тексте программы, то после команды create simulation, модель будет выполнена автоматически и появится отчет. |
Автор: Snezok 21.10.11, 00:45 |
Цитата olsheu @ Если start в тексте программы, то после команды create simulation, модель будет выполнена автоматически и появится отчет. Т.е. ничего "страшного" не будет если я не в тексте,а командой задам Start? Спасибо за ответ Вам ![]() |
Автор: olsheu 21.10.11, 12:49 |
Да. Можно или так, или так. |
Автор: Snezok 23.10.11, 01:37 |
![]() |
Автор: olsheu 23.10.11, 07:00 |
Пожалуйста |
Автор: Юляшечка24 21.11.11, 08:30 |
Здравствуйте ребят, нужна ваша помощь очень, очень сильно помогите с задачкой. К миниЭВМ подключено четыре терминала, с ко¬торых осуществляется решение задач. По команде с терминала выполняют операции редактирования, трансляции, планирова¬ния и решения. Причем, если хоть один терминал выполняет планирование, остальные вынуждены простаивать из-за нехват¬ки оперативной памяти. Если два терминала выдают требование на решение, то оставшиеся два простаивают, и если работают три терминала, выдающих задания на трансляцию, то оставший¬ся терминал блокируется. Интенсивности поступления задач раз¬личных типов равны. Задачи одного типа от одного терминала поступают через экспоненциально распределенные интервалы времени со средним значением 160 с. Выполнение любой опера¬ции длится 10 с. Смоделировать работу миниЭВМ в течение 4 ч. Определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. GENERATE ,,,4 REDAKT ADVANCE 160 QUEUE OBRABOTKA SEIZE TERMINAL DEPART OBRABOTKA ADVANCE 10 RELEASE TERMINAL TERMINATE ******************************************** GENERATE ,,,1 PLAN FUNAVAIL TERMINAL,RE,TRANS,,RE,REDAKT,RE,RESHENIE ADVANCE 160 FAVAIL TERMINAL TERMINATE ******************************************** GENERATE ,,,3 TRANS FUNAVAIL TERMINAL,RE,PLAN,,RE,REDAKT,RE,RESHENIE ADVANCE 160 FAVAIL TERMINAL TERMINATE ******************************************** GENERATE ,,,2 RESHENIE FUNAVAIL TERMINAL,RE,PLAN,,RE,TRANS,RE,REDAKT ADVANCE 160 FAVAIL TERMINAL TERMINATE GENERATE 14400 TERMINATE 1 START 1 по заданию нужно определить загрузку процессора, вероятности простоя терминалов и частоту одновременного выполнения трансляции с трех терминалов. в отчете такого не происходит. Помогите. как и что сделать, чтоб все работало , заранее спасибо)))) |
Автор: Blingq 25.11.11, 13:51 |
ОЧЕНЬ ОЧЕНЬ ПРОШУ ПОМОЧЬ задачку решить! ПОЖААААААЛУСТА! На склад готовой продукции предприятия каждые 5±2 минут поступают изделия типа А партиями по 500 штук, а каждые 20±5 минут – изделия типа В партиями по 2000 штук. С интервалом времени 10±5 минут к складу подъезжают автомобили, в каждый из которых надо погрузить по 1000 штук изделий типа А и В. Погрузка начинается, если изделия обоих типов имеются на складе в нужном количестве, и продолжается 10±2 минуты. У склада одновременно могут находиться не более трех автомобилей, включая автомобиль, стоящий под погрузкой. Автомобили, не нашедшие места у склада, уезжают с его территории без груза. Смоделировать работу склада при условии, что загрузиться должны 50 автомобилей. Подсчитать число автомобилей, уехавших без груза. Определить среднее и максимально число изделий каждого типа, хранящихся на складе. |
Автор: dimoon67 26.11.11, 12:01 |
Здравствуйте. Помогите пожалуйста разобраться с отчетом. Есть задиние, есть готовая программа, но не могу понять какие данные из отчета мне необходимы чтобы проанализировать. Привожу текст самого задания и решенной задачки: Отдел обслуживания ЭВМ готовит носители с программами для металлорежущих станков с числовым программным управлением. Чертежи деталей поступают из конструкторско-технологического отдела. Программист изучает чертеж и пишет программу управления станком, обрабатывающим заготовки. Программирование занимает интервал времени, распределенный по экспоненциальному закону со средним временем Т1 минут. Затем текст программы вводится в ЭВМ, обрабатывается и записывается на носитель (длительность операции - экспоненциально распределенная случайная величина со средним временем Т2 минут). Потом носитель с программой устанавливается на соответствующий станок для испытания. Этот процесс занимает промежуток времени, распределенный экспоненциально со средним временем T3 минут. Заказы на подготовку носителей с программами поступают че¬рез промежутки времени, распределенные равномерно в интервале А ± В минут. В момент прихода заказа для него определяют директивное время - время, до которого заказ должен быть выполнен. Директивное время определяется как сумма времени поступления заказа и технологического времени выполнения работы. Технологическое время выполнения работы - это общее время обработки (Ti+T2+T3) плюс дополнительное время, равномерно распределенное в интервале С ± D минут. Руководство отдела желает проанализировать несколько спосо¬бов очередности обработки заказов с целью определения наилучшего из них. Предложено четыре возможных порядка выполнения ожидающих в каждой из очередей работ: 1. сначала выполняются те заказы, которые имеют самое маленькое технологическое время выполнения; 2. сначала выполняются те заказы, которые имеют самое большое технологическое время выполнения; 3. сначала выполняются те заказы, которые имеют наименьшее оставшееся время обработки; 4. сначала выполняются те заказы, которые имеют ближайший директивный срок. Самостоятельно выбрать критерий оценки эффективности системы и оценить предложенные дисциплины выбора из очереди. Время моделирования необходимо выбирать так, чтобы модель работала в переходном режиме. Параметры модели приведены в таблице. Параметры T1 T2 T3 А В С D 90 70 60 100 20 40 10 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> matrixvar EQU 1 matrixvar matrix ,1,7 initial mx1(1,1),90 ;T1 initial mx1(1,2),70 ;T2 initial mx1(1,3),60 ;T3 initial mx1(1,4),100 ;A initial mx1(1,5),20 ;B initial mx1(1,6),40 ;C initial mx1(1,7),10 ;D prov matrix ,1,4 GENERATE ,,,1 met1 ADVANCE mx1(1,4),mx1(1,5) ;заказы поступают через промежутки времени A+-B SPLIT 1,met1 ;чтобы сравнить "четыре варианта порядка выполнения ожидающих в каждой из очередей работ", время обработки в каждой стадии "разыгрываем" заранее, потом создаем 3 копии этого транзакта и распределяем их по спискам пользователя(1 - 1й порядок и 1я стадия; 2 - 1й порядок и 2я стадия; 3 - 1й порядок и 3я стадия; 4 - 2й порядок и 1я стадия;...; 12 - 4й порядок и 3я стадия) номера списка совпадают с номерами устройств. ASSIGN 1,(Exponential(1,mx1(1,1),1)) ; ASSIGN 2,(Exponential(1,mx1(1,2),1)) ASSIGN 3,(Exponential(1,mx1(1,3),1)) ASSIGN 4,(AC1 + mx1(1,1)+mx1(1,2)+mx1(1,3)+Uniform(1,(mx1(1,6)-mx1(1,7)),(mx1(1,6)+mx1(1,7)))) ;Директивное время, определяется как сумма времени поступления заказа и технологического времени выполнения работы - это общее время обработки (Т1 + Т2 + Т3) плюс дополнительное время, равномерно распределенное в интервале С±D минут. ASSIGN 5,1 ;стадия подготовки программ SPLIT 3,,6 ASSIGN Ttexn,1 ASSIGN TminObr,(mx1(1,1)+mx1(1,2)+mx1(1,3)) ;минимальное время обработки, т.е. предполагаемое оставшееся время обработки met4 GATE U ((P6-1)#3+P5),met2 ;занято, присоединить транзакт к списку пользователя TRANSFER ,(met4+1+P6) LINK ((P6-1)#3+P5),P$Ttexn ;помещает транзакт в список пользователя с номером 1 или 2 или 3, упорядочивая их по возрастанию значения параметра с именем P$Ttexn LINK ((P6-1)#3+P5),P$Ttexn ;с номером 4 или 5 или 6 LINK ((P6-1)#3+P5),P$TminObr ;с номером 7 или 8 или 9 LINK ((P6-1)#3+P5),P4 ;с номером 10 или 11 или 12 met2 SEIZE ((P6-1)#3+P5) ADVANCE P*5 ;задержать на время указанное в параметре, номер которого определяет параметр №5 ASSIGN Ttexn+,P*5 ;для 1,2 "варианта очередей" ASSIGN TminObr-,mx1(1,1) ;для 3-го RELEASE ((P6-1)#3+P5) ASSIGN 5+,1 ;переход к следующей стадии TEST L P5,4,met3 ;2,3 стадии - создать копию (вниз) и направить на доработку(к метке met4) SPLIT 1,met4 ;оригинал выведет из списка пользователя транзакт и уничтожится met3 ASSIGN 7,((P6-1)#3+P5-1) TRANSFER ,(met3+P6#2) UNLINK P7,met2,1 ;вывести один транзакт с начала списка (которые имеют самое маленькое технологическое время выполнения TERMINATE UNLINK P7,met2,1,BACK ;вывести один транзакт с конца (которые имеют самое большое технологическое время выполнения TERMINATE UNLINK P7,met2,1 ;вывести один транзакт с начала списка (которые имеют наименьшее оставшееся время обработки TERMINATE UNLINK P7,met2,1 ;вывести один транзакт с начала списка(которые имеют ближайший директивный срок) TERMINATE GENERATE ,,12000,1 ;1месяц(25дн.) по 8часов TERMINATE 1 start 1 Заранее благодарю за помощь |
Автор: SteAlzzer 27.11.11, 16:13 |
Народ, кто шарит, помогите понять (именно понять!), почему не работает данный исходник. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> trolleybus STORAGE 5 taxi STORAGE 5 GENERATE 4,2 TRANSFER 0.4,ToTaxi,ToTrolley ToTaxi GATE SNF taxi,ToTaxiQueue ENTER taxi ADVANCE 15,5 LEAVE taxi TERMINATE ToTaxiQueue QUEUE TaxiQueue GATE SF taxi,ToTaxiQueue DEPART TaxiQueue TRANSFER , ToTaxi ToTrolley GATE SNF trolleybus,ToTrolleyQueue ENTER trolleybus ADVANCE 25,5 LEAVE trolleybus TERMINATE ToTrolleyQueue QUEUE TrolleyQueue GATE SF trolleybus,ToTrolleyQueue DEPART TrolleyQueue TRANSFER , ToTrolley GENERATE 480 TERMINATE 1 START 1 Он не компилируется, выдает следующую ошибку: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 11/27/11 19:09:46 Model Translation Begun. 11/27/11 19:09:46 Ready. 11/27/11 19:09:46 Simulation in Progress. 11/27/11 19:09:46 Error Stop. 11/27/11 19:09:46 Halt. XN: 17. Block 21 Next. 11/27/11 19:09:46 Clock:59.880888. Next: GENERATE. Line 29. 11/27/11 19:09:46 GENERATE 480 11/27/11 19:09:46 Invalid attempt to enter a GENERATE Block. А если увеличу память для троллейбусов, то все равботает, но в отчете нет данных об очередях. Почему возникает эта ошибка? |
Автор: dimoon67 30.11.11, 17:17 |
SteAlzzer что ты указываешь в этом блоке: GENERATE 480? 480 - это что у тебя? |
Автор: Bestslip 05.12.11, 10:42 |
Здравствуйте, Уважаемые форумчане! Помогите, пожалуйста решить в среде GPSS World следующую задачу: Задание: - написать программу моделирования изучаемой системы в среде GPSS; - отладить программу. Изучить оценку влияния независимых переменных (факторов) на реакцию системы. Для проведения эксперимента по исследованию характеристик изучаемой системы массового обслуживания требуется: - для выделенных факторов выбрать основной (нулевой) уровень и интервалы варьирования для каждого фактора, заполнить таблицу 1 (приложена в файле); - составить матрицу планирования, соответствующую полному факторному эксперименту (учитывающую взаимодействия только между двумя факторами); - провести имитационный эксперимент с моделью системы в каждой точке факторного пространства при числе заявок N=100, определить реакцию системы при выбранных уровнях факторов и занести данные в матрицу планирования; - построить модель зависимости реакции системы от выделенных факторов в виде полинома первой степени, учитывающего все эффекты взаимодействия между двумя факторами. Задача 1. В цех на участок обработки поступают детали в соответствии с равномерным законом распределения 5000-7000 мили секунд. Первичная обработка деталей происходит на станке 1, который обрабатывает деталь в соответствии с экспоненциальным законом распределения со средним значением 5500 мили секунд. Далее деталь передается для вторичной обработки одному из трех станков 2, 3, 4 соответственно с вероятностью 0,5; 0,2; 0,3. Время обработки деталей на станках подчиняется равномерному закону распределения и составляет 400-800, 700-900, 600-800 мили секунд. Затем детали передаются на заключительный этап обработки. Время обработки детали станком 5 на заключительном этапе подчинено нормальному закону распределения со средним значением 2000 мили секунд и имеет стандартное отклонение 300 мили секунд. Реализовать моделирование работы участка обработки в течение 2 часов. Независимые переменные (факторы): - интенсивность входного потока деталей; время обработки детали станком 1, время обработки детали станком 2. Отклик модели: - вероятность простоя станка 4. Пожалуйста, помогите! ОЧЕНЬ ОЧЕНЬ БУДУ БЛАГОДАРЕН!!! ![]() |
Автор: SteAlzzer 08.12.11, 04:19 |
dimoon67, на сколько я понимаю, этот блок отвечает за общее время моделирования. Т.е. в моем листинге моделирование происходит в течении 480 единиц времени. Я думаю, что тут возможна ошибка из-за того, что я неправильно организовал обработку очереди, т.к. как-то уж не очень выглядит логика этого куска кода. |
Автор: SteAlzzer 08.12.11, 09:21 |
и вот допустим есть код обработки очереди: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ... SetQueue QUEUE TrainQueue GATE SNF Train,SetQueue DEPART TrainQueue TRANSFER ,EnterTheTrain ... Он же по идее зациклиться и все. Как это сделать по человечестки? Мне просто ничего в голову не приходит, кроме как сделать задержку какую-нибудь после проверки. Что-то типа: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ... SetQueue QUEUE TrainQueue Check GATE SNF Train,GetQueueAwaiting DEPART TrainQueue TRANSFER ,EnterTheTrain GetQueueAwaiting ADVANCE 1 TRANSFER ,Check ... Но мне кажется это весьма некрасиво |
Автор: Candyman 11.12.11, 14:46 |
Помогите пожалуйста с GPSS моделью Задание. Распределенный банк данных системы сбора информации организован на базе ЭВМ, соединенных дуплексным каналом связи. Поступающий запрос обрабатывается на первой ЭВМ и с вероятностью 50% необходимая информация обнаруживается на месте. В противном случае необходима посылка на вторую ЭВМ. Запросы поступают через каждые 10 ± 3 с. , первичная обработка запроса занимает 2 сек., выдача ответа требует 18 ± 2 с, передача по каналу связи занимает 3 сек. Временные характеристики первой ЭВМ аналогичны первой. Смоделировать прохождение 400 запросов. Определить необходимую ёмкость накопителей перед ЭВМ, обеспечивающую безотказную работу системы, и функцию распределения времени обслуживания заявки. Вот что есть, но не работает: Цитата evm1 Storage 1 evm2 Storage 2 Generate 10, 3 ;3 сек QUEUE OCH ;очередь на обслуживание TEST G (R$evm1 + R$evm2),0 ;число свободных приборов> 0 TRANSFER BOTH, ,label2 ; если может занять место на первом приборе - занимает, ; Иначе на метку label2 и занимает там место ENTER evm1 DEPART OCH ADVANCE 2,0 ;время обработки заявки LEAVE evm1 ADVANCE 2 ;ответ по перовму прибору LEAVE evm1 TERMINATE ; Работа второго прибора ADVANCE 3,0 ; Время на передачу заявки от 1-го прибора до 2-го label2 ENTER evm2 DEPART OCH ADVANCE 18,2 ;время обработки заявки LEAVE evm2 ADVANCE 2 ;время ответа по второму прибору LEAVE evm2 TERMINATE GENERATE 400 ; для 400 заявок TERMINATE 1 START 1 |
Автор: Xapek88s 15.12.11, 11:18 |
РЕБЯЯЯЯЯЯТ можете пожалуйста проверить, и подправить? Завтра здавать курсач =( Или вдруг у кого есть правильное решение - поделитесь, умоляю.. Система автоматизации проектирования (САПР) создана на базе ЭВМ, функционирующей в режиме множествен¬ного доступа. Пятеро инженеров-проектировщиков с помощью своих дисплеев одновременно и независимо проводят диалог с ЭВМ, определяя очередной вариант расчета. Каждый диалог состоит из 10 циклов ввода-вывода данных. Во время одного цикла происходит следующее: за 10 ± 5с инженер обдумывает и вводит текст строки; в течение 2 с работает процессор ЭВМ, подготавливая текст ответа; в течение 5 с текст ответа выводится на дисплей. После ввода 11-й строки начинается работа процессора по расчету конструкции и продолжается 30± 10 с. За 5 с результат расчета выводится на экран, после чего инженер в течение 15 ± 5 с анализирует его и начинает новый диалог. Операции по подготовке текста ответа имеют абсолютный приоритет над расчетными, т. е. прерывают выполнение последних. Смоделировать процесс работы САПР при условии, что расчет вариантов конструкции повторяется 100 раз. Определить среднее время выполнения диалога и расчетных операций, а также коэффициент загрузки процессора. Текст программы: Generate 10,5; генерируются транзакты Queue EVM; занятие очереди Depart EVM; обеспечивает освобождение в очереди Seize EVM; занятие устройства DIS STORAGE 5; ENTER DIS; вхождение транзакта в накопитель Advance 2,0; задерживает транзакт на время 2,0 Advance 5,0; задерживает транзакт на время 5,0 Priority 1; присваивает входящему транзакту приоритет Test E DIS,11,C; проверяет соотношение C Advance 30,10; задерживает транзакт на время 30,10 Advance 5,0; задерживает транзакт на время 5,0 Advance 15,5; задерживает транзакт на время 15,5; LEAVE DIS; освобождение памяти Release EVM; освобождает усройство с 10 циклами Transfer 10,T; изменяет направление движения транзактов согласно режиму САПР T Terminate 1; уничтожение транзактов start 100 Добавлено В тырнете вот такой вариант нашёл, он правильный вроде?.. 010 SIMULATE 020 TAB1 TABLE M1,0,250,14 030 Q_TAB2 QTABLE Q_TAB2,10,10,20 040 TAB2 TABLE QX$Q_TAB2,25,5,19 050 MTRX MATRIX ,1,5 060 INITIAL MX$MTRX(1,1),0 070 INITIAL MX$MTRX(1,2),0 080 INITIAL MX$MTRX(1,3),0 090 INITIAL MX$MTRX(1,4),0 100 INITIAL MX$MTRX(1,5),0 110 INITIAL LS1,1 120 INITIAL LS2,1 130 INITIAL LS3,1 140 INITIAL LS4,1 150 INITIAL LS5,1 160 GENERATE 150,,,,1 170 ASSIGN 1,0 180 SPLIT 4,MET,1 190 MET GATE LS P1 200 LOGIC R P1 210 VVOD SEIZE P1 220 ADVANCE 10,5 230 RELEASE P1 240 MSAVEVALUE MTRX+,1,P1,1 250 TEST NE MX$MTRX(1,P1),11,RASCH 260 PREEMPT PROC 270 ADVANCE 2 280 RELEASE PROC 290 SEIZE P1 300 ADVANCE 5 310 RELEASE P1 320 TRANSFER ,VVOD 330 RASCH MSAVEVALUE MTRX,1,P1,0 340 TABULATE TAB1 350 PRIORITY 0 360 QUEUE Q_TAB2 370 SEIZE PROC 380 ADVANCE 30,10 390 TABULATE TAB2 400 RELEASE PROC 410 DEPART Q_TAB2 420 SEIZE P1 430 ADVANCE 5 440 RELEASE P1 450 ADVANCE 15,5 460 LOGIC S P1 470 SAVEVALUE PRC,FR$PROC 480 TERMINATE 1 490 START 100 500 WINDOW TABLES |
Автор: strk 15.12.11, 21:56 |
подскажите плз, как можно определить вероятность переполнения входных накопителей?? |
Автор: Erravielle 17.12.11, 05:33 |
Здравствуйте форумчане, очень нужна помощь в моделировании ремонтных работ. GPSS недавно начал осваивать. Задачка: Два специалиста по ремонту обслуживают пять агрегатов, расположенных в механическом цехе завода. Неисправности возникают у каждого из агрегатов в соответствии с пуассоновским законом распределения вероятностей со средней частотой 3 неисправности в час. Продолжительности ремонтных работ в расчете на один агрегат распределены экспоненциально со средним временем, равным 15 мин. Задание по моделированию: 1 Смоделировать работу по ремонту агрегатов в течение 8 часов. 2 Определить вероятность того, что оба механика окажутся незагруженными ремонтными работами. 3 Определить коэффициент загрузки каждого механика в течение 8 ч. Я не прошу решить ее за меня, а прошу помочь разобраться. Мне хотя бы структурную схему процесса правильно составить или обобщенную схему моделирующего алгоритма. Если здесь есть понимающие люди, прошу откликнуться ) P.S. а если примеры подобных программ подкинете, то вообще замечательно ))) |
Автор: Erravielle 17.12.11, 07:28 |
Или может быть кто-нибудь подскажет как реализовать несколько источников транзактов??? |
Автор: DimanEWM 26.12.11, 10:20 |
Народ кто нито сможет откоментить прогу? блин очень надо завтра сдавать надо( Вот прога : Generate 30,25 queue CPU seize display advance 50,30 release display seize CP advance 100,50 release CP depart CPU advance 30,10 advance 60,20 savevalue 1+,1 terminate Generate 70,5,,,1 queue CPU seize display advance 50,30 release display preempt CP,PR advance 100,50 return CP depart CPU advance 30,10 advance 60,20 savevalue 2+,1 terminate Generate 60,2,,100,2 queue CPU seize display advance 50,30 release display preempt CP,PR advance 100,50 return CP depart CPU advance 30,10 advance 60,20 savevalue 3+,1 terminate generate 12000 TERMINATE 1 start 1 Задание : В специализированной вычислительной системе периодически выполняется три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 50+-30 секунд. После запуска задания оно требует для своего выполнения 100+-50 секунд времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 30+-10 секунд, после чего производится их анализ в течение 60+-20 секунд, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется. Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. Подсчитать число циклов выполнения остальных заданий и определить коэффициенты загрузки технических средств системы. |
Автор: olsheu 26.12.11, 11:54 |
Откуда Вы взяли цифры в блоках generate Generate 30,25 - откуда взяли 30 и 25 Generate 70,5,,,1 - откуда 70 и 5 Generate 60,2,,100,2 - откуда 60 и 2 |
Автор: DimanEWM 26.12.11, 11:57 |
Допускаю что ошибки есть... код взят с GPSS .. ребя очень надо откоментить, послде завтра уже экзамен, завтра надо сдать курсач |
Автор: olsheu 26.12.11, 12:11 |
отписался на почту |
Автор: RE_RoRsChaCh 21.01.12, 19:42 |
Здавствуйте есть задача, нужна помощь. ЭВМ обслуживает три терминала по круговому циклическому алгоритму, предоставляя каждому терминалу 30 с. Если в течение этого времени задание обрабатывается, то обслуживание завершается; если нет, то остаток задачи становится в специальную очередь, которая использует свободные циклы терминалов, т. е. задача обслуживается, если на каком-либо тер-минале нет заявок. Заявки на терминалы поступают через 30±5 с и имеют длину 300±50 знаков. Скорость обработки заданий ЭВМ равна 10 знаков/с. Смоделировать 5 ч работы ЭВМ. Определить загрузку ЭВМ, параметры очереди неоконченных заданий. Определить величину цикла терминала, при которой все заявки будут обслужены без специальной очереди. Вот код но я не понимаю где тут длин знаков и скорость обработки ЭВМ указаны подскажи пожалуйста. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> generate 30,5 ;terminal 1 link 1,fifo generate 30,5 ;terminal 2 link 2,fifo generate 30,5 ;terminal 3 link 3,fifo met1 queue och1 ;ставим заявку в очередь seize EOM ;занимаем устройство ЕОМ depart och1 ;выводи заявку из очереди assign 1,(25+10#rn1/1000) ;задаем время обработки как первый параметр test le p1,30,met2 ;проверяем время обработки, если >30 идем в met2, если <=30 входим в блок test advance p1 ;задержка транзакта на время р1 release EOM ;освобождение устройства ЕОМ terminate 1 ;удаление транзакта met2 advance 30 ;задержка транзакта на 30с assign 1-,30 ;вычитание из р1 30с release EOM ;освобождение устройства ЕОМ link och,fifo ;помещаем транзакт в список пользователя och generate ,,,1 assign 1,0 met assign 1,((p1@3)+1) test g ch*1,0,met4 ;проверка длины списка пользователя, если >0 входим в блок test, если <=0 переходим на met4 unlink p1,met1,1 ;вывод транзакта из списка пользователя transfer ,met5 met4 test g CH$och,0,met5 ;проверка длины списка och, если >0 входим в блок test, если <=0 переходим на met5 unlink och,met1,1 met5 advance 1 transfer ,met GENERATE 18000 ;время моделирования 5 часов TERMINATE 1 START 1 |
Автор: Adam_di 05.02.12, 19:20 |
Всем привет, вообщем такая проблема: С интервалом времени 5 ± 2 мин детали поштучно поступают к станку на обработку и до начала обработки хранятся на рабочем столе, который вмещает 3 детали. Если свободных мест на столе нет, вновь поступающие детали укладываются в тележку, которая вмещает 5 деталей. Если тележка заполняется до нормы, ее увозят к другим станкам, а на ее место через 8 ± 3 мин ставят порожнюю тележку. Если во время отсутствия тележки поступает очередная деталь и не находит на столе места, она переправляется к другому станку. Рабочий берет детали на обработку в первую очередь из тележки, а если она пуста — со стола. Обработка деталей производится за 10 ± 5 мин. Смоделировать процесс обработки на станке 100 деталей. Подсчитать число деталей поштучно переправленных к другому станку. Показал преподу этот код, говорит тут минимум 2 generat'a должно быть, но как так не понимаю где, или понимаю но при построение схемы незнаю как её строить с ними. [Spoiler] generate 300,120 test L q$table_q,3,cart queue table_q assign 5,1 transfer ,meet cart test L q$cart_q,5,clear_cart queue cart_q priority 5 assign 5,2 transfer ,meet clear_cart gate LR 1,other logic s 1 advance 480,180 depart cart_q,q$cart_q logic r 1 terminate 0 meet seize proc test E p5,2,dep_1 test G q$cart_q,1,adv depart cart_q adv advance 600,300 release proc terminate 1 dep_1 depart table_q transfer ,adv other savevalue other_advanced+,1 terminate 0 start 100 |
Автор: slawkaqwerty 17.02.12, 12:28 |
kant1288 Здаров,можеш скинуть свой курсач потвоему варианту,а то у меня оч похож |
Автор: ETQW 25.04.12, 15:08 |
Всем доброго времени суток. Прошу вашей помощи в следующей задаче (Нет, не очередной ловец халявы: я уже попытался написать код, но мой преподаватель говорит, что не правильно ) Прошу помощи в этом нелегком деле :3 Постановка задачи: Рассмотрим систему массового обслуживания с заданным числом устройств обслуживания п= 5, действующих параллельно и использующих одну общую очередь. Интервалы времени между поступлениями требований экспоненциально распределены со средним значением 5 (все интервалы времени в этой задаче измеряются в минутах). Требование, поступившее, когда в системе есть свободное устройство, немедленно поступает на обслуживание, Требование, поступившее, когда все устройства заняты, становится в очередь. Когда тре-бование (первый раз) попадает на обслуживание, время его обслуживания равномерно распределено между а = 2 и b = 2,8. Но по завершении первого обслуживания может оказаться, что требование не удовлетворено (вероят¬ность возникновения такой ситуации p = 0,2). Если обслуживание было удов-летворительным, требование покидает систему, в противном случае обслу-живание будет продолжаться. Удовлетворено ли требование обслуживанием, следует определять по его завершении. Если требование не удовлетворено завершившимся обслуживанием и в очереди больше нет других требований, начинается повторное обслуживание этого требования на том же устройстве. Если же по завершении неудовлетворительного обслуживания в очереди еще имеются требования, неудовлетворенное требование должно присоединиться к очереди. В исходном состоянии в системе нет требований и устройства являются свободными. Моделирование должно выполняться в течение 480 мин. Вычислите среднее и максимальное общее время в системе (включая задержки в очереди и время обслуживания требования) и число удовлетворенных об¬служиванием требований, покинувших систему в процессе моделирования. Кроме того, вычислите среднюю и максимальную длину очереди, среднее по времени и максимальное число занятых устройств обслуживания. Считаете ли вы работу системы рациональной? Если нет, то предложите пути улучшения ее эффективности. Обоснуйте свой ответ. |
Автор: TEMENb 30.04.12, 19:01 |
ETQW, вопервых. нет нужды специально показывать, как устройство курсирует по очереди. вот такой код вполне соответствует условию Цитата Рассмотрим систему массового обслуживания с заданным числом устройств обслуживания п= 5, действующих параллельно и использующих одну общую очередь. Интервалы времени между поступлениями требований экспоненциально распределены со средним значением 5 (все интервалы времени в этой задаче измеряются в минутах). Требование, поступившее, когда в системе есть свободное устройство, немедленно поступает на обслуживание, Требование, поступившее, когда все устройства заняты, становится в очередь. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Ustr storage 5 ;Задаем 5-устройств действующих параллельно generate (Exponential(1,0,5)) ;поступление требований экспонециально в среднем 5 мин ustr1 queue Ustr enter Ustr ;вход в устройство depart Ustr ... Добавлено ETQW, не хочу сказать, что этот код не верен <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> advance 2.4,0.4 но настоятельно советую воздержаться от дробных значений времени. Исторически жпсс всегда имел дискретное время. советую придежриваться этого правила и далее. т.е. моделлирвоать в секундах. Добавлено итого. задача должна выглядеть так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> объявление емкости мку генерация транзактов стать в глобальную очередь, для получения общей статистики пребывания транзактов в системе (это избавляет нас от кучи ненужных счетчиков) поступление в очередь поступление в мку задержка на время выполнения выход из мку с определенной вероятностью отправляем обратно в очередь покинуть глобальную очередь транзакт покидает систему generate 480 ;генерация в течение 480 мин terminate 1 ;уменьшение счетчика конца моделирования на 1 start 1 ;задание значения счетчика моделирования равным 1 вам осталось только заменить мой русский текст на жпсс операторы построчно и нести к преподу. удачи. |
Автор: selflessslaeyr 17.05.12, 16:19 |
Здравствуйте. Проблема такая. Вот код программы. GENERATE 10,5 QUEUE myq TRANSFER 0.5,MACHINE1,MACHINE2 DEPART myq MACHINE1 SEIZE mach1 ADVANCE 15,5 RELEASE mach1 TRANSFER ,TST MACHINE2 SEIZE mach2 ASSIGN 1,1 ADVANCE 3,2 RELEASE mach2 TST TEST E P1,1,TABUL MACHINE3 SEIZE mach3 ADVANCE 3,2 RELEASE mach3 TABUL TERMINATE GENERATE 100000 TERMINATE 1 START 1 Выдает ошибку в строке TEST E P1,1,TABUL ("reference to a non-existent parameter"). Значение параметру транзакта P1 задается в строке ASSIGN 1,1. Что сделано неправильно? |
Автор: TEMENb 18.05.12, 08:18 |
selflessslaeyr, вы забыли про транзакты, которые пришли с метки MACHINE1. у них первый параметр не задан. |
Автор: Lazio 18.05.12, 09:46 |
Помогите разобраться в задаче: есть три билетные кассы (работают параллельно). К ним приходят люди по эксп. закону со средним 4. Обслуживание каждой кассы 3.333 в среднем по тому же закону. Проблема в том, что код (см. ниже) работает как то некорректно. Надо чтобы люди приходили и занимали свободную кассу ну или ту в которой очередь меньше (если возможно) SIMULATE GENERATE (EXPONENTIAL(1,0,4)) TRANSFER BOTH,XX,MM MM TRANSFER BOTH,YY,ZZ XX QUEUE OCHER1 SEIZE KASSA1 DEPART OCHER1 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA1 TRANSFER ,OUT YY QUEUE OCHER2 SEIZE KASSA2 DEPART OCHER2 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA2 TRANSFER ,OUT ZZ QUEUE OCHER3 SEIZE KASSA3 DEPART OCHER3 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA3 TRANSFER ,OUT OUT TERMINATE GENERATE 2400 TERMINATE 1 |
Автор: TEMENb 18.05.12, 11:14 |
неверно построена выборка. я бы написал так Цитата TEST E 0,((Q$OCHER3<Q$OCHER2)+(Q$OCHER3<Q$OCHER1)),ZZ TEST L Q$OCHER1,Q$OCHER2,YY ну или так Цитата TEST L Q$OCHER1,Q$OCHER2,MET1 TEST L Q$OCHER1,Q$OCHER3,ZZ TRANSFER ,XX MET1 TEST L Q$OCHER2,Q$OCHER3,ZZ TRANSFER ,YY Но правильней всего будет использовать оператор SELECT например вот так Цитата OCHER1 EQU 1 OCHER2 EQU 2 OCHER3 EQU 3 GENERATE (EXPONENTIAL(1,0,4)) ASSIGN 1,XX ASSIGN 2,YY ASSIGN 3,ZZ SELECT MIN NUM,1,3,,Q TRANSFER ,P*NUM XX QUEUE OCHER1 SEIZE KASSA1 DEPART OCHER1 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA1 TRANSFER ,OUT YY QUEUE OCHER2 SEIZE KASSA2 DEPART OCHER2 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA2 TRANSFER ,OUT ZZ QUEUE OCHER3 SEIZE KASSA3 DEPART OCHER3 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE KASSA3 TRANSFER ,OUT OUT TERMINATE GENERATE 2400 TERMINATE 1 Добавлено или даже вот так Цитата GENERATE (EXPONENTIAL(1,0,4)) SELECT MIN 1,1,3,,Q QUEUE P1 SEIZE P1 DEPART P1 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE P1 OUT TERMINATE GENERATE 2400 TERMINATE 1 start 1 Добавлено а вот вариант на отлично ) Цитата P_COUNT EQU 3 GENERATE (EXPONENTIAL(1,0,4)) SELECT MIN 1,1,P_COUNT,,Q ASSIGN 2,RN1 MET1 ASSIGN 2,(P2@P_COUNT) ASSIGN 2,(P2+1) TEST E Q*2,Q*1,MET1 QUEUE P2 SEIZE P2 DEPART P2 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE P2 OUT TERMINATE GENERATE 2400 TERMINATE 1 start 1 |
Автор: 1never1 18.05.12, 17:54 |
Нужна помощь в решении задачи, отчет, код, ну и скрины результатов моделирования, оплату гарантирую, возможно предоплата! 365574850 моя аська или scype n1ver1986 |
Автор: Lazio 18.05.12, 18:35 |
а то что OWNER 577 и 576 в двух кассах а в другой 0 это что значит? и ещё у нас сгенерировано 577 транзактов а в кассы дошло на один меньше. |
Автор: TEMENb 19.05.12, 06:40 |
один транзакт находится внутри кассы. собственно цифра - это его порядковый номер. будьте уверены, ваш и мой отчеты отличаются, я могу не увидеть этого овнера. жпсс генерирует немного разные отчеты на разных машинах. |
Автор: Lazio 19.05.12, 10:17 |
![]() |
Автор: TEMENb 19.05.12, 11:18 |
Lazio, я не выполнял модель ни разу )) |
Автор: Orjanruusu 23.05.12, 12:11 |
Всем доброго времени суток! ![]() Помогите, пожалуйста, разобраться! Такой вопрос: есть программа, через которую я запускаю GPSS модель в BATCH режиме и получаю sim-файл с отчетом. Также программа генерирует Plus-процедуры дисперсионного анализа. Так вот, в sim файле я получаю только отчет о создании процесса моделирования (Create simulation), а сами наблюдения (Run'ы) вообще не генерируются. Добавление в модель команды CONDUCT ExperimentName() желаемого результата не принесло - выдает ошибку: **** Experiment in Progress. **** 05/23/12 20:04:03 Error Stop. 05/23/12 20:04:03 Halt. 05/23/12 20:04:03 Clock:0.000000. 05/23/12 20:04:03 Reference to a non-existent Matrix entity. 05/23/12 20:04:03 Identifier: ExperimentName_RESULTS. 05/23/12 20:04:03 Error in Argument 1, calling DATATYPE(). 05/23/12 20:04:03 Error in Argument 1, calling STRINGCOMPARE(). 05/23/12 20:04:03 ExperimentName, Line 44. 05/23/12 20:04:03 Experiment ended. 05/23/12 20:04:03 Error Stop. 05/23/12 20:04:03 Halt. 05/23/12 20:04:03 Clock:0.000000. 05/23/12 20:04:03 System error. Internal exception. На 44-ой строке: IF (StringCompare(DataType(ExperimentName_Results[1,1]),"UNSPECIFIED")'E'0) Хотя, если вызывать команду по F11 или из меню, все работает. С GPSS знакома очень поверхностно. Подскажите, правильно ли я действую, почему не генерируются Run'ы? Ну или направьте где что нужно почитать ![]() |
Автор: TEMENb 23.05.12, 12:15 |
Orjanruusu, напишите мне в скайп 400852874 |
Автор: SergeStudent 24.05.12, 12:21 |
Здравствуйте все. Помогите решить задание, Очень надо на завтра. На обрабатывающую участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4% брака, второй соответственно 60 мин и 8% брака. Все бракованные детали возвращаются на повторную обработку на второй станок. Все интервалы времени распределены по экспоненциальному закону. Детали, которые попали в бракдвичи считаются отходами. Смоделировать обработку на участке 500 деталей. Определить загрузки второго станка на вторичной обработке и вероятность появления отходов. Работаем в : GPSS World Student Version Помогите пожалуйста. |
Автор: BSU_Dashka 24.05.12, 13:43 |
Помогите разобраться задача На трикотажной фабрике N швейных машин работают по 8 часов в день и по 5 дней в неделю. В резерве имеется М машин. Время безотказной работы машины распределено по равномерному закону в интервале [а1, b1]. Если машина выходит из строя, ее заменяют резервной либо сразу в случае, когда она имеется в наличии, либо по мере ее появления. Тем временем сломанную машину отправляют в ремонтную мастерскую, где ее чинят и возвращают в цех, но уже в качестве резервной. На ремонт швейной машины уходит время, равномерно распределенное на интервале [а2, b2]. Разработать GPSSV - модель системы с целью минимизации стоимости производства. Первоначальный перечень экспериментов: N = 50, 1 < M < 5, оплата ремонта машины 3.75 руб/час. За машину, находящуюся в резерве, нужно платить 30 руб/день, а1 = 132, b1 = 182, а2 = 4, b2 = 10. мой код Скрытый текст SIMULATE REM STORAGE 1 NOWON STORAGE 50 1 GENERATE ,,,51 2 ENTER NOWON ADVANCE 157,25 LEAVE NOWON ENTER REM ADVANCE 7,3 LEAVE REM TRANSFER ,2 GENERATE 4160 TERMINATE 1 START 1 1 GENERATE ,,,52 CLEAR START 1 1 GENERATE ,,,53 CLEAR START 1 1 GENERATE ,,,54 CLEAR START 1 1 GENERATE ,,,55 CLEAR START 1 вроде что-то делает..вопрос.правильно ли делает? и как мне дальше определить какое количество резервной техники выгоднее? если будут какие-то советы по коду- рада выслушать. Заранее спасибо. |
Автор: TEMENb 24.05.12, 13:53 |
Цитата 1 GENERATE ,,,52 CLEAR Это зачем? )) Добавлено BSU_Dashka, поторопился. реализация похожа на правильную. сбило с толку generate 51 это вроде как 50 основных и одна резервная? и уберите все остальные дженерейты, кроме блока с таймером. Цитата reset clear start 1 вот так очищается модель перед новым запуском Добавлено Скрытый текст REM STORAGE 1 NOWON STORAGE 50 initial x$n,1 GENERATE ,,,x$n transfer ,met1 GENERATE ,,,50 met1 ENTER NOWON ADVANCE 157,25 LEAVE NOWON ENTER REM ADVANCE 7,3 LEAVE REM TRANSFER ,met1 GENERATE 4160 TERMINATE 1 START 1 initial x$n,2 reset CLEAR START 1 initial x$n,3 reset CLEAR START 1 initial x$n,4 reset CLEAR START 1 initial x$n,5 reset CLEAR START 1 Добавлено если допишете реализацию расходов за ремонт, я подскажу как писать реализацию расходов за резерв ![]() |
Автор: BSU_Dashka 24.05.12, 14:33 |
честно..пока даже не представляю как это делается..(( Добавлено как бы теоретически просто надо как-то выдернуть из ADVANCE время задержки..либо просто взять всё время работы ремонтного цеха..но откуда извлечь эту информацию я не знаю.. |
Автор: TEMENb 26.05.12, 08:18 |
Цитата SenslideR @ Всем доброго времени суток! Имеется задачка: Студия выполняет поток заданий (100%) по трем направлениям I. S + PC + P , V=20 , 30% II. S + PC , V=8 , 45% III. S , V=4 , 25% , где S - сотрудники, PC - компьютеры, P - дополнительное оборудование для компьютеров, V - время выполнения работы. Время выполнения по распределению Пуассона со средним значением для заданий. Необходимо создать модель в GPSS World. Заранее спасибо! в задаче мало данных и не совсем четкое условие. воможно первая реальзация может выглядеть так Скрытый текст <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> initial x$ps,0 initial x$ppc,0 initial x$pp,0 generate 1 transfer .203,,mfirst transfer .845,,msec transfer ,mthird mfirst savevalue pp+,1 msec savevalue ppc+,1 mthird savevalue ps+,1 terminate 1 start 1000 |
Автор: Lazio 26.05.12, 20:32 |
Подаскажите по моей проге: P_COUNT EQU 3 GENERATE (EXPONENTIAL(1,0,4)) SELECT MIN 1,1,P_COUNT,,Q ASSIGN 2,RN1 MET1 ASSIGN 2,(P2@P_COUNT) ASSIGN 2,(P2+1) TEST E Q*2,Q*1,MET1 QUEUE P2 SEIZE P2 DEPART P2 ADVANCE (EXPONENTIAL(1,0,10/3)) RELEASE P2 OUT TERMINATE GENERATE 2400 TERMINATE 1 start 1 В итоге выдает средняя длина очереди 0.066 хотя в теории это значение 0.022 ? GPSS как то не так считает или я ? |
Автор: TEMENb 26.05.12, 21:10 |
Lazio, а по какой формуле вы считали среднюю длинну очереди? Скрытый текст Цитата Lazio @ SELECT MIN 1,1,P_COUNT,,Q ASSIGN 2,RN1 MET1 ASSIGN 2,(P2@P_COUNT) ASSIGN 2,(P2+1) TEST E Q*2,Q*1,MET1 давно я не видел подобной реализации. это пятерочка. ![]() |
Автор: SenslideR 27.05.12, 03:47 |
Цитата TEMENb @ в задаче мало данных и не совсем четкое условие. воможно первая реальзация может выглядеть так Данных больше нету... =( А условие: определить оптимальное число сотрудников, компов и оборудования. |
Автор: TEMENb 27.05.12, 08:53 |
SenslideR, ну это зделать можно по этой модели Цитата SAVEVALUE RETRY VALUE PS 0 1000.000 PPC 0 868.000 PP 0 224.000 Выходит что на одного сотрудника должно приходится 0,868 компов и 0,224 единицы доп оборудования |
Автор: Lazio 27.05.12, 09:18 |
См. среднее число требовании вы очереди на обслуживание.![]() |
Автор: TEMENb 27.05.12, 09:31 |
Lazio, вообщем я этой формулы не знаю, результат деления (0,66 на 0,22) позволяют мне думать, что это коим то образом связанно с трехканальностью рассматриваемого устройства. Больше помочь ничем не могу. так глубоко анализ не учили. |
Автор: SenslideR 27.05.12, 14:51 |
TEMENb, спасибо, теперь это надо заставить работать =\ а завтра уже сдать! х_Х |
Автор: Ghza 28.05.12, 09:57 |
Доброго времени суток форумчане! Помогите пожалуйста разобраться с лабораторной, а именно с определением таблиц. Была задача: В парикмахерскую с одним креслом приходят клиенты; интервалы времени между ними случайны и распределены равномерно в интервале [35±15] минут. Время обслуживания также распределено равномерно на интервале [13±4] минут. Клиенты, приходящие в парикмахерскую, обслуживаются в порядке очереди «первый пришел – первым обслужен». Задание: необходимо разработать и отладить имитационную модель парикмахерской в системе моделирования GPSS; модель должна обеспечить получение статистических данных об очереди. Параметры для построения таблицы равномерного распределения [0,60] шаг 5. Таблица в модели будет выглядеть следующим образом: PARIK TABLE M1,0,5,12 ; формирование таблицы (0 - левая граница, 5 - это шаг, 12 - число интервалов (получается 5*12=60, т.е. правая граница, согласно заданию) Правильно ли я рассуждаю? Так вроде бы понятно, но при рассмотрении другого примера моделирования никак не могу понять откуда взялись параметры TABLE: Задача: Переговорный пункт имеет одно помещение с тремя кабинами для переговоров. Если посетитель застает свободной хотя бы одну кабину, то он оплачивает будущий разговор в кассе, затем ждет соединения и ведет переговоры, после чего покидает переговорный пункт. Если посетитель застает все кабины занятыми, он ждет освобождения одной из них у входа в переговорный пункт. Интервал времени между приходами посетителей – случайный, распределенный по равномерному закону, составляет 1,5±0,4 мин. Время ожидания соединения – 3,5±1,1 мин., время разговора посетителя по телефону – 4,4±1,35 мин. Длительность разговора и время ожидания соединения – случайные величины, подчиняются равномерному распределению. Сам текст: ; Вместимость переговорного пункта Punkt STORAGE 3 ; емкость переговорного пункта Transit TABLE M1,.5,1,30 ; формирование таблицы ; Имитация прихода посетителей GENERATE 1.85,1 ; приход посетителей Povtor GATE SNF Punkt,Zanyt ; регулируется поток посетителей ; Имитация работы переговорного пункта ENTER Punkt ; войти на переговорный пункт QUEUE Ocher_kassir ; включение в очередь SEIZE Kassir ; обращение к кассиру DEPART Ocher_kassir ; выход из очереди ADVANCE 1.5,0.4 ; оплата за разговор RELEASE Kassir ; освобождение кассира ADVANCE 4.4,1.35 ; время разговора посетителей LEAVE Punkt ; оставить переговорный пункт TABULATE Transit ; табулировать переговорный пункт TERMINATE ; уход посетителей Zanyt ADVANCE 3.5,1.1 ; время ожидания освобождения телефона TRANSFER ,Povtor ; переход к оператору с меткой Povtor ; Задание времени моделирования GENERATE 480 ; время работы модели TERMINATE 1 ; уменьшение общего времени моделирования на 1 мин START 1 ; пропускаются по одному посетителю Вот откуда взялись эти значения M1,.5,1,30? Это высчитывается как-то? Ткните носом конкретно на этом примере, а то не доперает до меня и все( |
Автор: TEMENb 28.05.12, 20:35 |
katenokcat, у вас несколько неправильно построена логика работы. Если транзакт создаст затор, то вы изымаете его из очереди и уничтожаете. в условии вашей задачи не сказано, что его надо уничтожать статистику по сумарному времени можно снять, используя mark и m1, запоминая время, если транзакт создавал затор, а вот по продолжительности затора - надо расчиплять первый и крайний транзакт.. примерно так, как вы это делаете, только не перенаправлять, а именно расчиплять. что б родитель продолжил движение по маршруту. Добавлено Ghza, да подбирают их. я, например, стандартно ставлю 0,1,1000 потом подганяю, что б небыло лишних интервалов. Цитата Ghza @ PARIK TABLE M1,0,5,12 ; формирование таблицы (0 - левая граница, 5 - это шаг, 12 - число интервалов (получается 5*12=60, т.е. правая граница, согласно заданию) тут вы немного ошибаетесь в суждениях. интервалов на самом деле не 12.. а 10, если память мне не изменяет. т.е. на один или два меньше, чем ожидается. вот ну не помню точно. а лезть проверять - лень ![]() |
Автор: Ghza 28.05.12, 22:20 |
Цитата TEMENb @ katenokcat, у вас несколько неправильно построена логика работы. Если транзакт создаст затор, то вы изымаете его из очереди и уничтожаете. в условии вашей задачи не сказано, что его надо уничтожать статистику по сумарному времени можно снять, используя mark и m1, запоминая время, если транзакт создавал затор, а вот по продолжительности затора - надо расчиплять первый и крайний транзакт.. примерно так, как вы это делаете, только не перенаправлять, а именно расчиплять. что б родитель продолжил движение по маршруту. Добавлено Ghza, да подбирают их. я, например, стандартно ставлю 0,1,1000 потом подганяю, что б небыло лишних интервалов. Цитата Ghza @ PARIK TABLE M1,0,5,12 ; формирование таблицы (0 - левая граница, 5 - это шаг, 12 - число интервалов (получается 5*12=60, т.е. правая граница, согласно заданию) тут вы немного ошибаетесь в суждениях. интервалов на самом деле не 12.. а 10, если память мне не изменяет. т.е. на один или два меньше, чем ожидается. вот ну не помню точно. а лезть проверять - лень ![]() Теперь вообще потерялась:( Ибо в задании где параметры для построения таблицы распределения были [0,50],с шагом 5 в исходнике было указано TABLE M1,0,5,10 Почитала литературу: num TABLE A, B, C, D, E где num – имя или номер таблицы (это понятно) А – поле, в котором может быть записан либо аргумент таблицы (это M1) B – верхняя граница нижнего интервала; (это 0) C – ширина интервала; (это шаг 5) D – число интервалов; (ну тут чисто логически определила, что пять раз по 10 - выйдет 50) В общем непонятно. И как подбирать тоже:( Я понимаю, что не понимаю (простите за тавтологию)самого принципа построения таблиц. И стремаюсь жутко, потому что наверняка задаю тут тупые вопросы), но мне надо писать курсач. Потому очень хочу разобраться:( Помогите кто-нить, а:( |
Автор: TEMENb 29.05.12, 07:21 |
Ghza, ну в чем проблема провести маленький эксперимент? )) <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ttt table rn1,0,5,12 generate 1 tabluate ttt terminate 1 start 1000 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.% TTT 499.794 298.497 0 _ - 0.000 4 0.40 0.000 - 5.000 8 1.20 5.000 - 10.000 9 2.10 10.000 - 15.000 7 2.80 15.000 - 20.000 7 3.50 20.000 - 25.000 4 3.90 25.000 - 30.000 3 4.20 30.000 - 35.000 5 4.70 35.000 - 40.000 4 5.10 40.000 - 45.000 3 5.40 45.000 - 50.000 6 6.00 50.000 - _ 940 100.00 как видите получили 10 полноценных интервала, + два интервала от минусбесконечности до нуля и от 50 до плюс бесконечности. Добавлено кстати, стоит заметить, что 0 попадает в интервал (минус бесконечность; ноль] ну и остальные числа аналогично. |
Автор: Ghza 29.05.12, 08:05 |
Цитата TEMENb @ Спасибо большое, теперь дошло:) |
Автор: TEMENb 29.05.12, 10:38 |
prototype, вам нужно добавить параметр в initial, что бы определить время приохда кроме того вставить блок таймера. |
Автор: qwert-chan 29.05.12, 21:15 |
Здравствуйте. Подскажите пожалуйста, если у меня есть фрагмент программы TARR1 VARIABLE 0 GENERATE 1 TEST E V$TARR1,0,MET1 SAVEVALUE TARR1,4 TEST E V$TARR1,4,MET1 SAVEVALUE TARR1,8 MET1 TERMINATE 1 START 1 то почему по завершению программы значение TARR1 - 4, а не 8? Версия GPSS - 4.1.3 |
Автор: qwert-chan 29.05.12, 21:28 |
...и сразу дополнение: почему в аналогичной программе переменная себя так необычно ведет? если я правильно понимаю - в первый проход я сравниваю ее с нулем, она увеличивается до четырех - затем я сравниваю четыре с четырем и получается что это неверно(!), а затем, на втором проходе - четыре снова увеличивается на четыре и дает восемь. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> TARR1 VARIABLE 0 GENERATE 2 TEST E V$TARR1,0,MET1 SAVEVALUE TARR1+,4 TEST E V$TARR1,4,MET1 SAVEVALUE TARR1+,3 MET1 TERMINATE 1 START 2 |
Автор: TEMENb 29.05.12, 21:35 |
Цитата qwert-chan @ Здравствуйте. Подскажите пожалуйста, если у меня есть фрагмент программы TARR1 VARIABLE 0 GENERATE 1 TEST E V$TARR1,0,MET1 SAVEVALUE TARR1,4 TEST E V$TARR1,4,MET1 SAVEVALUE TARR1,8 MET1 TERMINATE 1 START 1 то почему по завершению программы значение TARR1 - 4, а не 8? Версия GPSS - 4.1.3 потому что V$TARR1 всегда равно нулю и аж никак не четырем наблюдая за ходом ваших мыслей, думаю ваша программа должна выглядеть так initial x$TARR1,0 GENERATE 1 TEST E x$TARR1,0,MET1 SAVEVALUE TARR1,4 TEST E x$TARR1,4,MET1 SAVEVALUE TARR1,8 MET1 TERMINATE 1 START 1 и сразу дополнение. скачайте версию посвежее и больше не путайте переменные с сохраняемыми величинами. |
Автор: qwert-chan 29.05.12, 21:37 |
Черт, а я всю ночь ошибку ищу. Спасибо вам большое.)) =) |
Автор: katenokcat 30.05.12, 14:04 |
TEMENb, спасибо! Вы были правы ![]() |
Автор: Костя030392 03.06.12, 19:08 |
Здравствуйте помогите пожалуйста .. Тема. Решение задачи сетевого планирования средствами имитационного моделирования. Логическая взаимосвязь работ, подлежащих выполнению в ходе технического обслуживания средств вычислительной техники, представлена на рис. Для обозначения каждого вида работы используется пара вершин графа, соединенных дугой. Числа, записанные над дугами, означают продолжительность соответствующих работ в часах. Необходимо построить модель, позволяющую получить распределение времени всего комплекса работ. Найти вероятность того, что все работы будут выполнены не более, чем за 70 часов. Найти наиболее вероятное время завершения технического обслуживания. ![]() |
Автор: spring 27.10.12, 10:40 |
Помогите, пожалуйста, доработать программу, необходимо чтобы выходила гистограмма с такими значениями: λ 1 1.3 1.68 1.7 1.9 2 p 0,000028 0,00007 0,00019 0,00028 0,00038 0,00056 Operator STORAGE 5; GENERATE (Exponential(1,0,0.5)); TEST g R$Operator,0,met QUEUE Other; ENTER Operator; DEPART Other; ADVANCE (Exponential(1,0,1)); LEAVE Operator; TERMINATE ; MET TERMINATE; GENERATE 3600; TERMINATE 1; START 1; |
Автор: spring 27.10.12, 11:55 |
Ребят, ну ответьте пожалуйста!!!! |
Автор: 4er 14.11.12, 06:14 |
Здравствуйте, возникла проблема: в институте дали задание. Задание: На решение в процессор поступает поток программ. Интервалы времени в потоке распределены по экспоненциальному закону со средним временем, распределенным равномерно от 20 до 40 единиц времени. Время решения программ распределено по равномерному закону в диапазоне от 15 до 55 единиц времени. При поступлении на процессор время обработки программы неизвестно (оно становится известно только после окончания ее обработки). Представить модель обработки программ, когда в первую очередь обрабатываются программы с меньшим временем решения. ОПРЕДЕЛИТЬ: 1.Написать модель на языке GPSS/PC-2. Написал 2 рабочие версии: 1 с использованием приоритетов, сказал можно проще и сделать по-другому без приоритетов. 2 с использованием Link/unlink, опять же сказал, что мы на лекциях линки не проходили и написать модель без использования их. Подскажите, пожалуйста, еще варианты решения данной задачи? ![]() |
Автор: kriiisenish 09.03.13, 09:04 |
Доброго дня ребята. Курсач горит, а я тут дубом просто ![]() ![]() Задание 7. В ремонтную мастерскую тракторов ООО «Салют» на капитальный ремонт поступают тракторы каждые 50 ± 10 дн., ремонт длится 20 + 5 дн. Текущий ремонт (замена и ремонт топливного насоса, замена свечей, колес и т.д.) производится за 1,5 ± 0,5 дн. Необходимость в текущем ремонте возникает в среднем каждые 10 ± 3 дн. В мастерскую поступают также машины работников аппарата управления хозяйством через 15 ± 5 дн., которые имеют более высокий приоритет обслуживания, чем капитальный ремонт, но ниже, чем текущий. Их ремонт производится обычно за 5 ± 1 дн. Необходимо: 1)Смоделировать работу мастерской в течение полугода. 2)Определить коэффициент использования мастерской. Мастерская функционирует по принципу хозрасчета. Если капитальный ремонт трактора дает чистый доход в размере 5 0 00 р., а текущий - 3 000, то каков будет чистый доход от проведения ремонта за период моделирования? Если покупка нового оборудования для ремонта увеличит скорость текущего ремонта тракторов с 1,5 до 0,7 дн., существенно ли это отразится на уменьшении очереди. Оценить статистически. |
Автор: Eugen 09.03.13, 13:15 |
примерно так должно быть
![]() |
Автор: kriiisenish 09.03.13, 16:10 |
Спасибо большое за направление) теперь все понятно) буду сидеть дорабатывать) |
Автор: kriiisenish 15.03.13, 08:58 |
Ребята, че тут у меня ошибку постоянно выдает на 15 строке. не знаю в чем дело((( мож кто нить поймет GENERATE 50,10 QUEUE Overhaul TRANSFER Mstr1,Mstr2,Mstr3 Mstr1 SEIZE Mstr1 DEPART Overhaul ADVANCE 20,5 RELEASE Mstr1 TRANSFER ,Mstr1 Mstr2 SEIZE Mstr2 GENERATE 1.5,0.5 QUEUE Spot PREEMPT Maintenance DEPART Spot ADVANCE 10,3 RELEASE Mstr2 TRANSFER Mstr2 Mstr3 SEIZE Mstr GENERATE 15,5 QUEUE Service PREEMPT Maintenance DEPART Service ADVANCE 5,1 RELEASE Mstr3 TRANSFER ,Mstr3 GENERATE 120 TERMINATE 1 START 1 |
Автор: Anjel 02.04.13, 16:25 |
В цехе производится обработка деталей на 3 различных станках с числовым программным управлением(каждый станок настроен на выполнение определенных автоматических операцией).Часть деталей обработывается только на 1станке, часть на 2станках, часть на всех 3станках,Порядок станке деталей на 1 или на 2 станках не имеет значения, но на третьем станке деталь должна быть обработана только после того как будет обработана на первых двух станках,Время поступления заготовки через каждые А±В минут, время обработки на каждом станке Ск±Dk минут, где k номер станка.Задать времена поступления заготовок и обработки и на соотвествующих станках, а так же доли деталей, которые обрабатываются только на 1станке, на 2станках и на 3станках.помогите пожалуйста((( |
Автор: willburninhell 22.04.13, 00:18 |
Приветствую Есть следующая задача: На вход некоторого обрабатывающего цеха, состоящего из трех участков, поступает случайный поток деталей. Интервалы поступления распределены экспоненциально со средним значением времени 4 мин. Поступающая деталь с вероятностью 0,65 имеет тип 1, с вероятностью 0,35 - тип 2. Сначала детали поступают на участок 1, где обрабатываются последовательно одна за другой, время обработки распределено равномерно на интервале от 2 до 5 мин. Детали второго типа имеют больший приоритет при обработке, чем детали первого типа. Далее, после обработки на участке 1, детали 1-го типа поступают на участок 2, а детали 2-го типа - на участок 3. На участке 2 имеется 3 идентичных станка, время обработки детали станком распределено экспоненциально со средним значением 11 мин. На участке 3 имеется 2 станка (время обработки на каждом из них распределено экспоненциально со средним значением 7 мин). Промоделировать работу цеха в течение 40 часов со сбором статистики об очереди деталей перед вторым и третьим участком. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ; начальные условия DEV2 STORAGE 3 ; три станка на втором участке DEV3 STORAGE 2 ; два станка на третьем участке GENERATE (Exponential(1,0,4)) ; случайный поток деталей, экспоненциальное распределение со средним значением 4 минуты TRANSFER .35,TYPE1,TYPE2 ; вероятность детали первого или второго типа TYPE1 PRIORITY 1 ; устанавливаем низкий приоритет для детали первого типа SEIZE DEV1 ; деталь попадает на первый участок ADVANCE 3.5,1.5 ; деталь обрабатывается от 2 до 5 минут RELEASE DEV1 ; деталь покидает первый участок PRIORITY 0 TRANSFER ,ROOM2 ; отправляем на второй участок TYPE2 PRIORITY 2 ; устанавливаем высокий приоритет для детали второго типа SEIZE DEV1 ; деталь попадает на первый участок ADVANCE 3.5,1.5 ; деталь обрабатывается от 2 до 5 минут RELEASE DEV1 ; деталь покидает первый участок PRIORITY 0 TRANSFER ,ROOM3 ; отправляем на третий участок ROOM2 QUEUE QU2 ; очередь перед участком 2 ENTER DEV2 ; попадает на второй участок DEPART QU2 ; покидает очередь перед участком 2 ADVANCE (Exponential(1,0,11)) ; время обработки, экспоненциальное распределение, ср. значение - 11 минут LEAVE DEV2 ; покидает второй участок TRANSFER ,EXT ; отправляем на выход ROOM3 QUEUE QU3 ; очередь перед участком 3 ENTER DEV3 ; попадает на третий участок DEPART QU3 ; покидает очередь перед участком 3 ADVANCE (Exponential(1,0,7)) ; время обработки, экспоненциальное распределение, ср. значение - 7 минут LEAVE DEV3 ; покидает третий участок TRANSFER ,EXT ; отправляем на выход EXT TERMINATE GENERATE 2400 ; время симуляции 40 часов TERMINATE 1 START 1 Вот такое решение у меня получилось, но я сомневаюсь в его правильности, а потому решил спросить ваше мнение, как более опытных в GPSS товарищей Заранее благодарен за помощь |
Автор: darks1de 29.04.13, 18:57 |
Помогите решить задачу, пожалуйста! Исходные данные: На некотором городском маршруте по кольцевому маршруту с десятью остановками работают пять 11-местных и десять 14-местных микроавтобусов. Время движения между остановками имеет равномерное распределение в интервале 5±8 мин. На каждую остановку в соответствии с экспоненциальным за-коном распределения со средним значением 2 мин прибывают пассажиры и ждут микроавтобуса. Микроавтобус подъезжает к остановке и забирает столько пассажиров, сколько имеется свободных мест. Если свободных мест больше, чем пассажиров, то микроавтобус забирает всех. Если на остановке никто не выходит и в микроавтобусе нет свободных мест, он не останавливается. Вероятность того, что пассажир проедет некоторое количество остановок, задана в таблицы.Стоимость проезда - 30 руб. Вероятность 0,1 0,15 0,2 0,25 0.3 Количество остановок 3 4 5 6 7 Промоделировать работу микроавтобусов на протяжении 16 ч. Цели моделирования: Оценить загруженность микроавтобусов, распределение времени поездки пассажиров и выручку со всех микроавтобусов. |
Автор: Timur2013 05.05.13, 10:51 |
Здравствуйте. В моей проге выдается ошибка 05/05/13 14:50:17 Model Translation Begun. 05/05/13 14:50:17 Ready. 05/05/13 14:50:17 Error Stop. 05/05/13 14:50:17 Halt. 05/05/13 14:50:17 Clock:0.000000. 05/05/13 14:50:17 Operand A. Invalid expression. 05/05/13 14:50:17 Datum has not been initialized. Вот сам код: INITIAL ZAPOMINAEM,0 EVM STORAGE 12 GENERATE (EXPONENTIAL(1,0,160)) QUEUE 1 SEIZE terminal DEPART 1 ENTER EVM,3 ADVANCE 10 LEAVE EVM,3 ENTER EVM,4 TEST E EVM,0,Met1 SAVEVALUE ZAPOMINAEM+,1 Met1 ADVANCE 10 LEAVE EVM,4 ENTER EVM,12 ADVANCE 10 LEAVE EVM,12 ENTER EVM,6 ADVANCE 10 LEAVE EVM,6 RELEASE terminal TERMINATE 1 GENERATE (EXPONENTIAL(1,0,160)) QUEUE 2 SEIZE terminal DEPART 2 ENTER EVM,3 ADVANCE 10 LEAVE EVM,3 ENTER EVM,4 TEST E EVM,0,Met2 SAVEVALUE ZAPOMINAEM+,1 Met2 ADVANCE 10 LEAVE EVM,4 ENTER EVM,12 ADVANCE 10 LEAVE EVM,12 ENTER EVM,6 ADVANCE 10 LEAVE EVM,6 RELEASE terminal TERMINATE 1 GENERATE (EXPONENTIAL(1,0,160)) QUEUE 3 SEIZE terminal DEPART 3 ENTER EVM,3 ADVANCE 10 LEAVE EVM,3 ENTER EVM,4 TEST E EVM,0,Met3 SAVEVALUE ZAPOMINAEM+,1 Met3 ADVANCE 10 LEAVE EVM,4 ENTER EVM,12 ADVANCE 10 LEAVE EVM,12 ENTER EVM,6 ADVANCE 10 LEAVE EVM,6 RELEASE terminal TERMINATE 1 GENERATE (EXPONENTIAL(1,0,160)) QUEUE 4 SEIZE terminal DEPART 4 ENTER EVM,3 ADVANCE 10 LEAVE EVM,3 ENTER EVM,4 TEST E EVM,0,Met4 SAVEVALUE ZAPOMINAEM+,1 Met4 ADVANCE 10 LEAVE EVM,4 ENTER EVM,12 ADVANCE 10 LEAVE EVM,12 ENTER EVM,6 ADVANCE 10 LEAVE EVM,6 RELEASE terminal Generate 14400 Terminate 1 start 1 Что нужно исправить в коде, чтоб он работал? |
Автор: Alex 11 22.06.13, 09:24 |
Помогите пожалуйста решить задачу по GPSS, если не трудно. Условие: В парикмахерскую в среднем заходит 10 клиентов в час. В парикмахерской работают два мастера, причем если оба они заняты, то клиент уходит. Среднее время обслуживания одного клиента составляет 20 минут. Содержание одного рабочего места обходится 150руб в час. Доход от обслуживания одного клиента - 150руб. Определить Р0, Ротк, Qотн, А, Кср, общий доход за один час (Д) и прибыль |
Автор: Kykyryza:* 14.11.13, 12:32 |
Помогите кто-нибууудь решить задачу в GPSS:В офис приходят клиенты через 8±3 мин.,причем 45% клиентов приходят к менеджеру,с которым общаются в течении 10±2 мин.,а остальные приходят на оформление документов ,кот. длится 15±4 мин.После чего все клиенты идут на кассу.Определить количество кассиров,при которых длина очереди будет не более 4-X человек. |
Автор: nexusOk 09.12.13, 15:25 |
Cadmusесли у тебя получилось сделать задание на gpss можешь дать исходник? |
Автор: bombadil 19.12.13, 17:31 |
Поток покупателей распределён по экспоненциальному закону Tср=8мин, Тmin=5мин. Есть 2 зала, Вероятность покупки 1зал= 65% 2зал=78% Время покупки 1зал= 10 ± 4 2зал=12 ± 2 Кол-во товаров, шт 1зал= 4 ± 2 2зал=2 ± 1 Время оформление товара 0.5мин TovarA Function RN1,D5 .2,2/.4,3/.6,4/.8,5/1,6 TovarB Function RN1,D3 .33,1/.66,2/1,3 T_oformlenia Fvariable (FN$TovarA+FN$TovarB)#0.5 Generate (Exponential(1,8,5)) TRANSFER .35,,zal2 Advance 10,4 Zal2 TRANSFER .22,,cassa Advance 12,2 Cassa Queue ochered Seize casa Depart ochered Advance V$T_oformlenia Release casa Terminate Generate 840 Terminate 1 Start 1 результат FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY CASA 63 0.221 2.944 1 64 0 0 0 0 QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCHERED 1 0 63 57 0.012 0.157 1.653 0 как определит например среднее время подбора товара или число покупок в течении дня ибо в отчёте этого нету? |
Автор: julya92 11.08.14, 04:25 |
Команду Split(разъединять) в GPSS, чем заменить в Arena? быть может Dispose? у меня установлен только пакет Basic Process в Arena для Student..нужны дополнительные? |
Автор: julya92 11.08.14, 08:32 |
Цитата julya92 @ Dispose разобралась |
Автор: Savandei 03.11.15, 11:54 |
veamin здраствуййте,вы нашли ответ на ваш вопрос? |
Автор: Cameroon 26.03.16, 15:28 |
Всем привет, можете помочь с решение следующей задачи? Промоделировать решение задач в двухпроцессорной ЭВМ с общей памятью, разделенной на 10 блоков. Каждой задаче отводится при её решении один блок. Интервалы времени между поступлениями задач распределены по нормальному закону с параметрами: . Время обработки порции информации подчинено экспоненциальному закону с интенсивностью в первом процессоре и интенсивностью во втором процессоре. Между обработкой с вероятностью, равной 0,39, возможно обращение к устройству вывода графической информации, состоящему из 7 принтеров. Запросы на вывод равновероятны. Интервалы времени между запросами распределены по экспоненциальному закону с интенсивностью. Как правильно доделать? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MEM STORAGE 8 GENERATE 10,2,300 QUEUE SSS1 ENTER MEM,1 DEPART SSS1 RRR1 TRANSFER BOTH,CPU1,CPU2 CPU1 SEIZE PROC1 ADVANCE 20,FN$XPdis RELEASE PROC1 TRANSFER ,RRR2 CPU2 SEIZE PROC2 ADVANCE 50,FN$XPdis RELEASE PROC2 RRR2 TRANSFER 0.6,RRR3,DISK DISK TRANSFER 0.333,CCC2,CCC1 CCC2 TRANSFER 0.5,CCC4,CCC3 CCC1 QUEUE BBB1 SEIZE DISK1 DEPART BBB1 ASSIGN 1,DISK1 ADVANCE 10,FN$XPdis TRANSFER ,CCC5 CCC3 QUEUE BBB2 SEIZE DISK2 DEPART BBB2 ASSIGN 1,DISK2 ADVANCE 10,FN$XPdis TRANSFER ,CCC5 CCC4 QUEUE BBB3 SEIZE DISK3 DEPART BBB3 ASSIGN 1,DISK3 ADVANCE 10,FN$XPdis CCC5 QUEUE BBB4 SEIZE CAN DEPART BBB4 ADVANCE 1 RELEASE CAN RELEASE P1 TRANSFER ,RRR1 RRR3 LEAVE MEM,1 TERMINATE 1 |
Автор: Cameroon 04.04.16, 20:40 |
Сделал так. Результат получился правильный. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> MEM STORAGE 10 GENERATE 10,2,300 QUEUE SSS1 ENTER MEM,1 DEPART SSS1 RRR1 TRANSFER BOTH,CPU1,CPU2 CPU1 SEIZE PROC1 ADVANCE 14,FN$XPdis RELEASE PROC1 TRANSFER ,RRR2 CPU2 SEIZE PROC2 ADVANCE 37,FN$XPdis RELEASE PROC2 RRR2 TRANSFER 0.39,RRR3,printer printer TRANSFER 0.143,CCC2,CCC1 CCC2 TRANSFER 0.167,CCC4,CCC3 CCC4 TRANSFER 0.2,CCC6,CCC5 CCC6 TRANSFER 0.25,CCC8,CCC7 CCC8 TRANSFER 0.333,CCC10,CCC9 CCC10 TRANSFER 0.5,CCC12,CCC11 CCC1 QUEUE BBB1 SEIZE printer1 DEPART BBB1 ASSIGN 1,printer1 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC3 QUEUE BBB2 SEIZE printer2 DEPART BBB2 ASSIGN 1,printer2 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC5 QUEUE BBB3 SEIZE printer3 DEPART BBB3 ASSIGN 1,printer3 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC7 QUEUE BBB3 SEIZE printer4 DEPART BBB3 ASSIGN 1,printer4 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC9 QUEUE BBB3 SEIZE printer5 DEPART BBB3 ASSIGN 1,printer5 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC11 QUEUE BBB3 SEIZE printer6 DEPART BBB3 ASSIGN 1,printer6 ADVANCE 12,FN$XPdis TRANSFER ,CCC15 CCC12 QUEUE BBB3 SEIZE printer7 DEPART BBB3 ASSIGN 1,printer7 ADVANCE 12,FN$XPdis CCC15 QUEUE BBB4 SEIZE CAN DEPART BBB4 ADVANCE 1 RELEASE CAN RELEASE P1 TRANSFER ,RRR1 RRR3 LEAVE MEM,1 TERMINATE 1 |
Автор: pretttymom 01.12.22, 14:40 |
Цитата spring @ Помогите сделать программу, горит фпроектнвя работа: на обработку по равномерному закону в устройство поступает 2 потока заготовок деталей первый - со временем 5+-2 мин, а второй - 25+-2 мин. Второй поток прерывает изготовление деталей первого потока. Время обработки деталей первого потока 7+-2 мин, второго 11+-2 мин. Смоделировать процесс обработки 100 деталей, образующих 2 потока |
Автор: Betelgeuse 21.07.23, 06:37 |
https://cyberforum7.rssing.com/chan-5994357...rticle6289.html |