На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 25 26 [27] 28 29 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Сенсей снова с нами TEMENb в чем же тогда причина, что очереди забиты уж очень сильно..??
    Los_Caballeros Основной гемор здесь
    Цитата
    (при этом должен использоваться ближайший из роботов).
    тут возникает много вариантов и лучше спросить у препода, уточнить процедуру перехода роботов из А в Б... моделька оч.большая и ошибокой мож. быть много. Логику управления передвижениями роботов лучше вынести в PLUS процедуры...
      Исходные данные к проектированию: средство реализации 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



      Вот что у меня получилось.

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

        Добавлено
        Цитата Angellina @
        1) Как в программе прописать определенное время моделирования;
        для этого надо поставить еще один сегмент.
        ExpandedWrap disabled
          generate 1000
          terminate 1
        что означает, что моделирование закончится через 100 емв. (не забудьте поубирать единицы их прочих терминейтов)
        Цитата Angellina @
        2) Как учесть то, что заявки, обслуживание которых прервано из-за обслуживания более приоритетной типа C, должны дообслуживаться;
        блок примит сам по себе ставит заявки в список будущих событий, т.е. на дообслуживание. исключение, если вы посылаете транзакты, получившие отказ, в альтернативный блок. Впрочем даже в этом случае транзакт стоит в списке будущих событий и устройство вроде как не покидал, но я не вкурсе как его тогда вернуть на дообслуживание. Впрочем на сколько я вижу вы не посылаете на альтернативный блок => транзакты сами по себе дообслуживаются после обслуживания более приоритетного транзакта. более подробно тут.
        Цитата Angellina @
        3) Как учесть то, что запросы, поступающие во время корректировки, ожидают ее завершения во входной очереди;
        сразу признаюсь, что код ваш я не читал. и зарание приношу извинения, если отвечу невпопад.
        Но.
        Если вам надо сделать какую то задержку по условию - попробуйте воспользоваться блоком TEST.
        Как ваша система выглядит во время коректировки?
        Если ввести переменную, которая в начале коректировки получает значение 1, а по окончании коректировки получает значение 0, то должна подойти структура вроде этой
        ExpandedWrap disabled
          test ne x$kor,1 ;если флаг коректировки не равен единице (значит коректировка не осуществляется), то дальше. иначе ожидать
        ну или на метку отправить - в очередь, а выход из очереди - по аналогичному условию.
        Цитата Angellina @
        4) И как сделать так, чтобы вероятность выдачи правильного ответа не могла превышать 1.
        А как сделать так, что бы ВЕРОЯТНОСТЬ могла превысить 1? :D
          TEMENb, всё с тобой ясно, короче... Дольше отмазываешься, мог бы уже 5 раз объяснить, если бы хотел...
            Eugen, причина забитости очередей абсолютно всегда одна и та же - высокая интенсивность входящего потока и маленькая интенсивность пропускной способности канала.. что то вроде забитого унитаза :whistle:
            а я к сожалению вантус дома забыл.. :D

            Добавлено
            andreynov, в этом нет ничего удивительного. я помогаю только тем, кто что то делает сам. Ито, к сожалению не хватает времени всем помочь. отдыхать всетаки мне тоже надо.
            У вас же МОЙ код. я не считаю нужным его разжовывать.
              TEMENb, я и не отрицаю, что твой! Задача схожая, всё что требуется в моем варианте, я подправил.
              Отдыхать всем надо, но три строчки написать - не большой труд.
                пересмотрел свой архив. оба моих решения этой программы нормально функционируют. из этого делаю вывод, что причина плохого поведения модели в ваших апгрейдах.
                  Ну ты же знаешь эту задачу, делал уже... Посмотри, может где ошибку увидишь?
                  Вот например, после сборки 4% деталей отправляется на предварительную обработку, но они уже собраны, их опять надо разобрать на 2 части? Хотя, я думаю не в этом дело...
                    Люди добрые помоги!!!!нужно решить задачу на языке GPSS/PS.Этот язык вообще не понимаю и не знаю!!!!
                    Задание:
                    В центре координации работ в одном из подразделений предполагается организовать обслуживание так же, как в системе с одним прибором и очередью; входящий поток является пуассоновсим с интенсивностью 4.5 клиентов в день. Несмотря на то, что клиенты делятся на три различных типа, время, необходимое для направления на работу, для них одинаково, распределено по экспоненциальному закону и имеет среднее значение 0.2 дня. Обслуживание клиентов происходит по принципу "первым пришел - первым обслужен". Однако важно то, что клиенты первого типа не могут долго ждать. Клиенты второго типа спешат, но не очень, а клиентам третьего типа почти безразлично время ожидания. Клиенты трех типов приходят со средней интенсивностью 1.5; 2.0 и 1.0 в день соответственно. Поскольку для всех трех типов среднее время ожидания достаточно велико, было предложено обслуживать клиентов на приоритетной основе.
                    Сравните время ожидания (включая время обслуживания) по каждому типу клиентов при дисциплине обслуживания:

                    • "первым пришел - первым обслужен";

                    • "первым пришел - первым обслужен внутри одного класса приоритетов".
                    Зарание огромное спасибо!!!!
                    Сообщение отредактировано: murzik -
                      Привет! В моей программе не работает параметр с именем 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
                        Petroid
                        Можешь кинуть мне эту работу, уже в пятницу сдавать!
                        В системепередачиданныхосуществляетсяобмен пакетамиданных между пунктами А и В по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени 10 ± 3 мс. Передача пакета занимает 10 см. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетовданных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ.
                        Смоделироватьобмен информацией в системепередачиданных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможных отказов определить необходимый для безотказной работы системы объем буферных регистров.
                        mds86@bk.ru заранее благодарю!
                          Цитата
                          В системе передачи данных осуществляется обмен пакетами данных между пунктами A и B по дуплексному каналу связи. Пакеты поступают в пункты системы от абонентов с интервалами времени между ними 10 ± 3 мс. Передача пакета занимает 10 мс. В пунктах имеются буферные регистры, которые могут хранить два пакета (включая передаваемый). В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на спутниковую полудуплексную линию связи, которая осуществляет передачу пакетов данных за 10 ± 5 мс. При занятости спутниковой линии пакет получает отказ.
                          Смоделировать обмен информацией в системе передачи данных в течение 1 мин. Определить частоту вызовов спутниковой линии и ее загрузку. В случае возможности отказов определить необходимый для безотказной работы системы объем буферных регистров.


                          ExpandedWrap disabled
                            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. Могу скинуть с отчётом. Это была моя курсовая работа :)
                          В отчёте даже блок схема-модели имеется, сам всё делал 8-)
                          Сообщение отредактировано: andreynov -
                            andreynov,скин если не сложно! буду очень признателен!!!! БОЛЬШОЕ ТЕБЕ СПАСИБО!!!
                              mds86, большое тебе пожалуйста :) я не жадный...
                              куда скинуть то?
                                скинь на mds86@bk.ru! еще раз спасибо!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 25 26 [27] 28 29 ...  53 54


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0676 ]   [ 15 queries used ]   [ Generated: 20.06.25, 13:23 GMT ]