На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 9 10 [11] 12 13 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Попробовала через LINK написать. Но как в UNLINKе изобразить, что 5% ошибочных идут на повторную обработку???
      ПРРРР
      не влазьте в дебри
      ненужен там линк

      Цитата
      transfer .05,povt
      5% пойдут на метку, остальные пойдут дальше
        народ помогите навалять программку очеень буду признателен

        На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится с вероятностью 60% на первом станке и с вероятностью 40% на втором станке. Первый станок обрабатывает деталь в среднем 40 мин и имеет 4% брака, второй соответственно 60 мин и 8% брака. Все бракованные детали возвращаются на повторную обработку каждый в свой станок.
        Разработать по концептуальной модели программную модель системы с использованием ЯИМ GPSS. Определить среднюю длину очередей перед обработкой на станках.
          Безусловно поможем. Где ваш исходный текст?

          З.Ы.: Между "поможем" и "напишем" принципиальная разница. Последнее обычно за деньги делается.
            Ну собственно вот и есть задание
            Текст задания:
            На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится с вероятностью 60% на первом станке и с вероятностью 40% на втором станке. Первый станок обрабатывает деталь в среднем 40 мин и имеет 4% брака, второй соответственно 60 мин и 8% брака. Все бракованные детали возвращаются на повторную обработку каждый в свой станок.
              Текст программы, которую вы пытались написать по заданию
                я даже не пытался делать! вот и прошу помоши! конечно не безвозместно!
                  15$ - обрабатывающий участок
                  подобная задача должна быть в этом разделе
                    фрагмент решения такой:
                    ExpandedWrap disabled
                      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варианта: попытаешься сделать и/или не безвозместно
                    Цитата Yamakasi @
                    я даже не пытался делать! вот и прошу помоши! конечно не безвозместно!

                    + халява тоже здесь есть GPSS задача (сообщение #2181443)
                      Господа, подскажите правильно ли я понял условие задачи...
                      В начале работы на фирме на счёт корпоративного пользователя мобильной связью перечислено 500р. Ежедневный расход средств – случайная величина, распределенная по случайному закону со средним значением 50 руб. и средним квадратичным отклонением 10 руб. По договору с оператором мобильной связи в конце каждой недели производится контроль остатка средств на счету пользователя. Если на счету меньше 150р. то счёт автоматически в течении 2 плюс минус 1 день пополняется до 500 р. Требуется смоделировать работу системы пополнения счёта в течение 180 дней. Какова вероятность остаться пользователю без мобильной связи?


                      ExpandedWrap disabled
                        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 день пополняется"
                        Какой интересный подход к реализации )
                        Я б делал щет сохраняемой величиной.
                        так же, исходя из кода, если у абонента не хватит денег совершить запланированный звонок - то звонить он не будет вообще )
                          Цитата
                          *Сегмент процесса заказа*
                          GENERATE 7,,,,1 ;генерация транзакта каждые 7 дней
                          - Лучше поменять блоки, тогда не нужна единица
                          ExpandedWrap disabled
                            *Сегмент расхода средств*
                                GENERATE 1  ;генерация транзакта каждый день
                          и только затем
                          ExpandedWrap disabled
                            *Сегмент процесса заказа*
                                GENERATE    7  ;генерация транзакта каждые 7 дней

                          Цитата
                          Met2 TERMINATE 1 ;
                          - поменяй на
                          ExpandedWrap disabled
                            Met2    LEAVE SchAb,S$SchAb
                                TERMINATE 1
                          тогда абонент сможет расходовать средства со счета до 0

                          - и тоже самое с вариантом до
                          ExpandedWrap disabled
                                TEST GE S$SchAb,P1,Met2
                                LEAVE SchAb,P1
                                TERMINATE 1
                            Met2    LEAVE SchAb,S$SchAb
                                TERMINATE 1
                          после
                          ExpandedWrap disabled
                                LEAVE   SchAb,V$write_off
                                TERMINATE 1
                          +
                          ExpandedWrap disabled
                            write_off   VARIABLE    ((S$SchAb'GE'P1)#P1 + (S$SchAb'L'P1)#S$SchAb)


                          Добавлено
                          модельная ед.времени 1 день - 2й вариант
                          ExpandedWrap disabled
                            ADVANCE 2,1 ;время распределено на интвале [1,3)
                            ADVANCE (uniform(1,1,4)\1) ;время дискретно 1 или 2 или 3
                            Цитата
                            ExpandedWrap disabled
                              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
                              Цитата TEMENb @
                              Цитата
                              Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0?

                              отв. только на это
                              ExpandedWrap disabled
                                testing_P1   VARIABLE    ((P1'G'0)#P1)
                                 
                                ASSIGN 1,(Normal(1,10,3))
                                ASSIGN 1,V$testing_P1
                              Сообщение отредактировано: Eugen -
                                Ух
                                Цитата Eugen @
                                testing_P1 VARIABLE ((P1'G'0)#P1)


                                Цитата
                                testing_P1 VARIABLE ((P1>0)#P1)


                                Расшифровал :D

                                Цитата Eugen @
                                testing_P1 VARIABLE ((P1'G'0)#P1)

                                ASSIGN 1,(Normal(1,10,3))
                                ASSIGN 1,V$testing_P1

                                Этот метод, помоему, более правильный.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 9 10 [11] 12 13 ...  53 54


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