Норенков И.П. - Автоматизированное производство (1054022), страница 32
Текст из файла (страница 32)
Если D пусто, то число вырабатываемых транзактов неограничено. Например:GENERATE 6,FN$EXP,,15Этот оператор описывает источник, который вырабатывает 15 транзактов с интервалами, равными произведению числа 6и значения функции EXP;GENERATE 36,12Здесь число транзактов неограничено, интервалы между транзактами — случайные числа в диапазоне [24, 48].Функции, на которые имеются ссылки в операторах должны быть описаны с помощью блока следующего типаM FUNCTION A,Bза которым следует строка, начинающаяся с первой позицииИ.П.НОРЕНКОВ . АВТОМАТИЗИРОВАННОЕПРОЕКТИРОВАНИЕ835@!"! 3%!#*%!#&F*:,$*$I*:+*F*)&* !)!@&'! +($*,#)KH (*L*)&MX0,Y0/X2,Y2/X3,Y3/..../Xn,YnЗдесь метка M — идентификатор функции, A — аргумент функции, B — тип функции, Xi и Yi — координаты узловых точек функции, заданной таблично.
Например:EXP FUNCTION RN0,C020,0/0.2,0.22/0.4,0.50/0.5,0.6/0.6,0.92/... и т.д.Это описание непрерывной (С) функции EXP, заданной таблично 12-ю узловыми точками, аргументом является случайная величина (RN1), равномерно распределенная в диапазоне [0, 1]; илиDDD FUNCTION *4,D60,2/2,5/3,00/4,20/5,08/6,02/7,9Дискретная (D) функция ВВВ задана 6-ю узловыми точками, аргумент — четвертый параметр транзакта, возбудивший обращение к функции ВВВ.Тразакты могут порождаться и оператором размноженияSPLIT A,B,Cкогда в него входит некоторый транзакт. При этом создается семейство транзактов, включающее основной (вошедший вблок) транзакт и А его копий.
Основной транзакт переходит в следующий по порядку блок, а его копии переходят в блокс меткой В. Для различения транзактов параметр С основного транзакта увеличивается на 1, а транзактов-копий — на 2,3, 4,... и т.д.Обратное действие — сборка транзактов выполняется операторамиASSEMBLE Aсогласно которому первый из вошедших в блок транзактов выйдет из него только после того, как в этот блок придут ещеА-1 транзактов того же семейства, или операторомGATHER Aотличающимся от предыдущего оператора тем, что из блока выходят все А транзактов.ОператорSEIZE Aописывает занятие устройства А транзактом, а операторRELEASE Aосвобождение устройства А от обслуживания.Задержка в движении транзакта по СМО описывается операторомADVANCE A,Bгде А и В имеют тот же смысл, что и в операторе GENERATE.+ - 0 B . - 7 . Обслуживание транзакта в устройстве WST продолжительностью a единиц времени, где a — равномерно распределенная в диапазоне [7,11] случайная величина, описывается следующим фрагментом программы...SEIZE WSTADVANCE 9,2RELEASE WST...Аналогично описывается занятие транзактом памяти в накопителеENTER A,B&.+.)$(*),$" .
!"#$%!#&'&($"!))$*+($*,#&($"!)&*845@!"! 3%!#*%!#&F*:,$*$I*:+*F*)&* !)!@&'! +($*,#)KH (*L*)&Mза исключением того, что здесь помимо имени накопителя (А) указывается объем занимаемой памяти (В). ОсвобождениеВ ячеек памяти в накопителе А выполняется операторомLEAVE A,BДля накопителей в модели нужно задавать общий объем памяти, что делается в следующем описании накопителяM STORAGE Aгде М — имя накопителя, А — объем памяти.Если транзакт приходит на вход занятого устройства или на вход накопителя с недостаточным объемом свободнойпамяти, то он задерживается в очереди к этому устройству или накопителю. Слежение за состоянием устройств и очередей выполняет интерпретатор. Но если в модели требуется ссылаться на длину очереди или собирать статистику по ее длине, то нужно явное указание этой очереди в модели.
Делается это с помощью операторов входа в очередьQUEUE Aи выхода из очередиDEPART Aсогласно которым очередь А увеличивается и уменьшается на единицу соответственно.Движение транзактов выполняется в естественном порядке, изменение этого порядка производится операторамиперехода. Оператор условного переходаTEST XX A,B,CВ соответствии с которым переход к оператору, помеченному меткой С, происходит, если не выполняется условие А ХХВ, где ХХ О {E,NE,L,LE,G,GE}, E- равно, NE — неравно, L — меньше, LE — меньше или равно, G — больше, GE — больше или равно (XX размещается в позициях 13 и 14).+ - 0 B . - 2 .
Приходящие пользователи ожидают обслуживания, если длина очереди не более 4, иначе от обслуживания отказываются. Соответствующий фрагмент программы...TEST LE Q$STR,K4,LBLQUEUE STRSEIZE POINTDEPART STRADVANCE 50,06RELEASE POINT...LBL TERMINATE 0...В примере 2 использован оператор выхода транзактов из СМОTERMINATE Aсогласно которому из итогового счетчика вычитается число А.С помощью итогового счетчика задается длительность моделирования. В начале исполнения программы в счетчикзаносится число, указанное в операнде А оператораSTART A,,CМоделирование прекращается, когда содержимое счетчика будет равно или меньше нуля. Операнд С — шаг вывода статистики на печать.+ - 0 B .
- 3 . Общая структура программы на GPSS имеет видSIMULATE<описания, в том числе функций и накопителей ><операторы, моделирующие движение транзактов>&.+.)$(*),$" . !"#$%!#&'&($"!))$*+($*,#&($"!)&*855@!"! 3%!#*%!#&F*:,$*$I*:+*F*)&* !)!@&'! +($*,#)KH (*L*)&MSTART A,,CEND.Оператор безусловного переходаTRANSFER ,Bгде В — метка оператора, к которому следует переход.Используется ряд других разновидностей оператора TRANSFER. Например:TRANSFER P,B,CПереход происходит к оператору с меткой, равной сумме значения параметра В транзакта и числа С.TRANSFER FN,B,CТо же, но вместо параметра транзакта слагаемым является значение функции В.TRANSFER PICK,B,CЭто оператор равновероятного перехода к операторам, метки которых находятся в интервале [B,C].
Важное место в СМОзанимает переход по вероятностиTRANSFER E,B,Cгде А — вероятность перехода к оператору с меткой С, переход к оператору с меткой В будет происходить с вероятностью 1 - А.+ - 0 B . - 4 . Заказы, поступающие в СМО в случайные моменты времени в диапазоне [20,40], выполняет сначалабригада WGR1, затем параллельно работают бригады WGR2 и WGR3, каждая над своей частью заказа. Заданы экспоненциальные законы для времен выполнения работ бригадами WGR1, WGR2 и WGR3 с интенсивностями 0,05, 0,1 и 0,125 соответственно. Моделирование нужно выполнить на временном отрезке, соответствующем выполнению 1000 заказов.Программа:SIMULATEEXP FUNCTION RN0,C020,0/.2,.22//.4,.50/.5,.6/.6,.92/.7,0.2/.8,0.60/.9,2.3/.95,3/.99,4.6/.999,6.9/0,0000GENERATE 30,00SEIZE WGR0ADVANCE 20,FN$EXPRELEASE WGR0SPLIT 0,MET0SEIZE WGR2ADVANCE 00,FN$EXPRELEASE WGR2TRANSFER , MET2MET0 SEIZE WGR3ADVANCE 8,FN$EXPRELEASE WGR3MET2 ASSEMBLE 2%+,.
3.20. ФункцияTERMINATE 0экспоненциального законаSTART 0000,,0000распределенияENDВ этом примере использован экспоненциальный закон распределения с плотностьюP(t) = λ exp(-λT),где λ — интенсивность. Функция распределения экспоненциального законаTF(T) = ∫ p(t)dt = 1 - exp(-λT).0Из рис. 3.20 ясно, что поскольку искомыми являются значения b случайной величины ?, то, задавая значение a, какравномерно распределенной в диапазоне [0,1] случайной величины, по формуле&.+.)$(*),$" .
!"#$%!#&'&($"!))$*+($*,#&($"!)&*865@!"! 3%!#*%!#&F*:,$*$I*:+*F*)&* !)!@&'! +($*,#)KH (*L*)&Mβ = (1/λ) ln(1/(1-α))(3.47)находим искомое значение. Именно в соответствии с (3.47) в операторах ADVANCE (см. пример 4) множителями былизначения 1/λ.Приведем еще несколько операторов языка GPSS.Оператор изменения параметров транзактовASSIGN A,Bгде А — номер параметра транзакта, В — присваиваемое ему значение.
В оператореASSIGN A+,Bпараметр А увеличивается на значение В, а в оператореASSIGN A-,Bуменьшается. Расширение возможностей управления движением транзактов достигается благодаря таким операторам, какLOGIC_X Aкоторый при Х = S устанавливает переключатель А в единичное состояние, а при X= R сбрасывает его в нулевое состояние;GATE_XX A,Bкоторый при XX = LR и А = 1 или при ХХ = LS и А = 0 передает транзакт оператору с меткой В (или задерживает его вблоке GATE, если поле В пусто), а при других сочетаниях XX и А — направляет к следующему оператору. Вычислительный операторM VARIABLE Aприсваивает переменной с номером М значение арифметического выражения А, например в операторе3 VARIABLE K206-S$MEM2переменной номер 3 присваивается разность числа 216 и объема занятой памяти в накопителе MEM2. Оператор синхронизации, имеющий, например, видLBL MATCH NUMBзадерживает приходящий в него транзакт до тех пор, пока в некоторой другой части модели в сопряженный операторNUMB MATCH LBLне войдет транзакт того же семейства.*.-+ ".-8+.
:$&' !$&"' — аппарат для моделирования динамических дискретных систем(преимущественно асинхронных параллельных процессов). Сеть Петри определяется как четверка<P,T,I,O>, где % и M — конечные множества позиций и переходов, I и $ — множества входных и выходных функций. Другими словами, сеть Петри представляет собой двудольный ориентированныйграф, в котором 0#6'='9/ соответствуют вершины, изображаемые кружками, а 0$"$,#-)/ — вершины, изображаемые утолщенными черточками; функциям I соответствуют дуги, направленные от позиций к переходам, а функциям $ — от переходов к позициям.Как и в системах массового обслуживания, в сетях Петри вводятся объекты двух типов: динамические — изображаются /$&%)/' (/)"%$")/') внутри позиций и статические — им соответствуютвершины сети Петри.Распределение маркеров по позициям называют /)"%'"#(%#;.
Маркеры могут перемещаться всети. Каждое изменение маркировки называют +#2.&'$/, причем каждое событие связано с определенным переходом. Считается, что события происходят мгновенно и разновременно при выполнениинекоторых условий.&.+.)$(*),$" . !"#$%!#&'&($"!))$*+($*,#&($"!)&*875@!"! 3%!#*%!#&F*:,$*$I*:+*F*)&* !)!@&'! +($*,#)KH (*L*)&MКаждому условию в сети Петри соответствует определенная позиция. Совершению события соответствует +")2)&.()*'$ (возбуждение или запуск) перехода, при котором маркеры из входных позиций этого перехода перемещаются в выходные позиции. Последовательность событий образует моделируемый процесс.Правила срабатывания переходов (рис.
3.21), конкретизируют следующим образом: переход срабатывает, если для каждой из его входныхпозиций выполняется условие NiX Ki, где Ni — число маркеров в i-й входной позиции, Ki — число дуг, идущих от i-й позиции к переходу; при срабатывании перехода число маркеров в i-й входной позиции уменьшаетсяна Ki, а в j-й выходной позиции увеличивается на Mj, где Mj — число дуг, %+,.3.2). Фрагмент сети Петрисвязывающих переход с j-й позицией.На рис. 3.21 показан пример распределения маркеров по позициям перед срабатыванием, этумаркировку записывают в виде (2,2,3,1).