На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 39 40 [41] 42 43 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Цитата Василий_Н @
    А это будет допустимым решением или всё-таки это ошибка?

    скажем так, на мой взгяд это будет кривое решение. но тем не менее оно даст результат похожий на адекватный.
    Цитата Василий_Н @
    Т.е. правильно ли я понял, что нужно вместо 3-х моих сегментов делать один общий? А как внутри их разделять? Скажем как я смогу проверить что подошёл нужный момент для шторма?

    неправильно. генерация шторма и прочие действия пусть остаются как есть. просто в модель добавляем еще один сегмент. вот вам задачка для примера. будем в отдельном сегменте считать время одновременной работы двух устройств
    ExpandedWrap disabled
          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
    в итоге получим, что время одновременной работы составило около 256 емв, при времени моделлирования в 1027 емв, что очень несложно проверить аналитически.

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

    Добавлено
    и что б совсем уж для сравнения
    ExpandedWrap disabled
          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
    Цитата Megera @
    generate 15,7,,,2 создание сообщений направления 2

    generate 15,7,,,2

    тут вхождение в блок дженерейт.
    один из них надо бы удалить и все заработает ;)
      Помогите, дан код, реализующий работу робата манипулятора:
      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.
        Цитата ivx2 @
        S1

        колличество занятых каналов многоканального устройства номер 1
        иными словами - поменяйте название устнойства на любое другое и старайтесь избегать названий состоящих из одной буквы
          Василий_Н, ищи ответы тут.
            To TEMENЬ:
            здравствуйте! срочно требуется ваша помощь. но у меня, к сожалению, нет аськи. пожалуйста, если это возможно, дайте свой e-mail или номер телефона, либо другой какой-то способ, как к вам можно обратиться
              Помогите, пожалуйста с такой задачей:
              Производственная линия состоит из двух станков ЧПУ, на каждом из которых работает отдельный оператор. Изделие обязательно проходит обработку на обеих станках последовательно. Перед первым станком может храниться неограниченное число изделий, однако, между первым и вторым станками может поместиться только одно изделие, ожидающее обработку. Оператор первого станка вынужден ждать освобождения места хранения между станками, даже если он закончил свою работу над следующим изделием. Изделия поступают на первый станок каждые 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"?
                Цитата Lexa88 @
                "между первым и вторым станками может поместиться только одно изделие, ожидающее обработку"

                как то так
                ExpandedWrap disabled
                  queue stan1
                  seize ograni4enie
                  seize stan1
                  depart stan1
                  advance
                  release stan1
                  queue stan2
                  seize stan2
                  release ograni4enie
                  depart stan2
                  advance
                  release stan2


                Добавлено
                а вообще вариантов великое множество. это первый пришедший на ум
                  Вроде все правильно, спасибо за ответ.
                    TEMENb
                    здравствуйте! срочно требуется ваша помощь. но у меня, к сожалению, нет аськи. пожалуйста, если это возможно, дайте свой e-mail или номер телефона, либо другой какой-то способ, как к вам можно обратиться
                      Lilly, я уже писал. смотрите в теме "" задачи по жпсс. кроме того можно посмотреть в профиле или написать в приват на форуме. вообщем вариантов, как обычно, море.
                        Всем привет!!!
                        Нужна помощь нужно разобраться что делает программа не очень понятно.Листинг в файле с названием 1,отчет в вордовском документе.
                        Есть ли редакторы где можно строить стуктуру программы (рисовать точнее)
                        Заранее спасибо!
                        Сообщение отредактировано: Ura2007 -

                        Прикреплённый файлПрикреплённый файлgpss.rar (132.52 Кбайт, скачиваний: 210)
                          в визио можно строить
                            Подскажите, пожалуйста, как сделать такое:
                            есть 4 абонента, которые соединяются между собой для пересылки сообщений. Соединяются хаотичным образом. Периодичность соединения, к примеру, распределяется по экспоненц закону с лямбда = 1.
                            Кроме каркаса по этому есть ещё вопрос: заявки будут уходить из системы, когда их получит назначенный абонент?
                            Спасибо большое заранее)
                              irinak, вопрос слишком уж абстрактный. имеет множество реализаций. у каждой свои плюсы и минусы. к тому же условие можно понять неравнозначно. периодичность соединения для каждого абонента или для всех вместе.
                              для примера могу предложить вам такую реализацию.

                              4 абонента звонят друг-другу. звонки в системе осуществляются с периодом 4 единицы времени и имеют продолжительность 1 единицу. Если вызываемый абонент занят, то вызывающий продолжает ему звонить, пока не дозвонится. вызывающий абонент является занятым.

                              ExpandedWrap disabled
                                    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
                                Уточняю)))
                                Есть 4 абонента, с заданной периодичностью происходит соединение между парой несоединенных абонентов. Время соединения 3 секунды. Передаются сообщения. оно состоит из 20 +- 2 заявки. Передача сообщения составляет 0.15+-0.02секунд. В режиме А заявки передаются поочередно, а в режиме В заявки передаются одновременно.
                                Вот)
                                Спасибо)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 39 40 [41] 42 43 ...  53 54


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0979 ]   [ 14 queries used ]   [ Generated: 18.06.25, 16:00 GMT ]