Программа модели

Предполагается, что количество типов СС в системе предоставления услуг связи может изменяться от одного до максимального значения n1_. Программа модели построена для n1_ =5.

Для хранения результатов моделирования используются матрицы. В целях придания неизменности программы модели при варьировании количеством типов СС матрицы должны быть пронумерованы. Однако GPSS World при описании матриц командой MATRIX не позволяет вместо имени указывать число. Матрицы нужно вначале описать, дав им имена, а затем пронумеровать.

Результаты моделирования для одного типа СС хранятся в трех матрицах, например, для СС типа 1 (СС1) с идентификаторами:

  • Prib1 - матрица ожидаемой прибыли СС1;
  • KPr1 - матрица коэффициентов прибыли СС1;
  • KZen1 - матрица коэффициентов использования СС1.

Значит, аналогичных матриц будет пятнадцать. Да плюс еще матрица KRem коэффициентов использования мастеров - ремонтников. Именам этим шестнадцати матрицам даны номера.

Три матрицы для хранения суммарных результатов моделирования для СС всех типов не нумеровались:

  • Pribil - матрица суммарной прибыли;
  • SrKPrib - матрица средних коэффициентов прибыли СС всех типов;
  • SrKIsp - матрица коэффициентов использования СС всех типов.

Именам пяти МКУ СС1_, СС2_, СС3_, СС4_ и СС5_, имитирующим по типам СС, находящиеся на дежурстве, даны номера 1 … 5. Это позволяет сократить число блоков в модели за счет того, что вместо пяти (в данном варианте модели) сегментов имитации постановки на дежурство СС используется один сегмент.

Для записи исходных данных (количества СС всех типов (в том числе и резервных), среднего времени наработки до отказа и среднего времени восстановления по типам СС, дохода по типам от одного СС, находящегося на дежурстве, убытка по типам при отсутствии одного СС на дежурстве, стоимости по типам одного резервного СС) используются функции KolSS, KollSSRes, NarOtk,SrVrRem, S1_, S2_, S3_ соответственно. По сравнению с использованием матриц для записи этих же данных программа модели сокращается на двадцать пять строк.

В начале работы модели генератор сразу вырабатывает количество транзактов, равное соответствующему количеству типов СС, и перестает быть активным.

Далее блоками SAVEVALUE и ASSIGN в параметр 1 каждого из транзактов последовательно заносятся коды 1 … n1_ - признак типа СС.

Затем каждый из транзактов с помощью блока SPLIT расщепляется (копируется, размножается) по количеству СС (с учетом резервных) соответствующего типа. После расщепления транзакты в соответствии с типом СС сразу занимают все каналы МКУ, имитирующие нахождение СС на дежурстве.

Вышедшее из строя СС снимается с дежурства, поступает в ремонтное подразделение - транзакт либо занимает свободный канал МКУ Rem, если такой есть, либо при отсутствии свободного канала помещается в список задержки этого МКУ - список тран-зактов, ожидающих возможность занять освободившиеся каналы МКУ.

После ремонта СС отправляется либо сразу на дежурство, либо в резерв. В обоих случаях транзакт направляется на метку Met1. Здесь также транзакт либо занимает свободный канал, либо помещается в список задержки МКУ, соответствующего типу СС.

Ниже приводится программа только (в целях сокращения) для моделирования случая три мастера-ремонтника, а резервных СС2 - четыре, пять и шесть. Количество типов СС - n1_ = 4.

; Модель бизнес-процесса; Задание номеров матрицамPrib1 EQU 1; Матрица ожидаемой прибыли СС1KPr1 EQU 2; Матрица коэффициентов прибыли СС1KZen1 EQU 3; Матрица коэффициентов использования СС1Prib2 EQU 4; Матрица ожидаемой прибыли СС2KPr2 EQU 5; Матрица коэффициентов прибыли СС2KZen2 EQU 6; Матрица коэффициентов использования СС2Prib3 EQU 7; Матрица ожидаемой прибыли СС3KPr3 EQU 8; Матрица коэффициентов прибыли СС3KZen3 EQU 9; Матрица коэффициентов использования СС3Prib4 EQU 10; Матрица ожидаемой прибыли СС4KPr4 EQU 11; Матрица коэффициентов прибыли СС4KZen4 EQU 12; Матрица коэффициентов использования СС4Prib5 EQU 13; Матрица ожидаемой прибыли СС5KPr5 EQU 14; Матрица коэффициентов прибыли СС5KZen5 EQU 15; Матрица коэффициентов использования СС5KRem EQU 16; Матрица коэффициентов использования Rem; Задание номеров МКУ, имитирующих дежурство ССCC1_ EQU 1; Задание номера МКУ СС1CC2_ EQU 2; Задание номера МКУ СС2CC3_ EQU 3; Задание номера МКУ СС3CC4_ EQU 4; Задание номера МКУ СС4CC5_ EQU 5; Задание номера МКУ СС5; Задание матрицPrib1 MATRIX,3,5; Матрица ожидаемой прибыли СС1KPr1 MATRIX,3,5; Матрица коэффициентов прибыли СС1KZen1 MATRIX,3,5; Матрица коэффициентов загрузки СС1Prib2 MATRIX,3,5; Матрица ожидаемой прибыли СС2 KPr2 MATRIX,3,5; Матрица коэффициентов прибыли СС2 KZen2 MATRIX,3,5; Матрица коэффициентов загрузки СС2 Prib3 MATRIX,3,5; Матрица ожидаемой прибыли СС3 KPr3 MATRIX,3,5; Матрица коэффициентов прибыли СС3 KZen3 MATRIX,3,5; Матрица коэффициентов загрузки СС3 Prib4 MATRIX,3,5; Матрица ожидаемой прибыли СС4 KPr4 MATRIX,3,5; Матрица коэффициентов прибыли СС4 KZen4 MATRIX,3,5; Матрица коэффициентов загрузки СС4 Prib5 MATRIX,3,5; Матрица ожидаемой прибыли СС5 KPr5 MATRIX,3,5; Матрица коэффициентов прибыли СС5 KZen5 MATRIX,3,5; Матрица коэффициентов загрузки СС5 KRem MATRIX,3,5; Матрица коэффициентов загрузки Rem Pribil MATRIX,3,5; Матрица суммарной прибыли SrKPrib MATRIX,3,5; Матрица коэффициентов прибыли СС всех типовSrKIsp MATRIX,3,5; Матрица коэффициентов загрузки СС всех типовKolSS MATRIX,2,5; Матрица количества СС всех типов NarOtk MATRIX,1,5; Матрица среднего времени наработки до отказа по типам СС, час SrVrRem MATRIX,1,5; Матрица среднего ремонта по типам СС, час; Определение МКУ по числу СС, находящихся на дежурствеCC1_ STORAGE 35; Емкость МКУ по количеству СС1 CC2_ STORAGE 100; Емкость МКУ по количеству СС2 CC3_ STORAGE 60; Емкость МКУ по количеству СС3 CC4_ STORAGE 45; Емкость МКУ по количеству СС4 CC5_ STORAGE 60; Емкость МКУ по количеству СС5 Rem STORAGE 3; Емкость МКУ по числу мастеров-ремонтников; Исходные данныеVrMod EQU 200; Время моделирования, 1 ед. мод. вр. = 1 часStroka EQU 1; Номер строки матрицыStolbez EQU 1; Номер столбца матрицыn1_ EQU 5; Количество типов ССStoMast FUNCTION P1,D5; Стоимость работы одного мастера1,17/2,18/3,16/4,20/5,21KolSS FUNCTION P1,D5; Количество по типам СС, находящихся на дежурстве1,55/2,100/3,60/4,45/5,60KolSSRes FUNCTION P1,D5; Количество по типам резервных СС1,2/2,4/3,4/4,3/5,4NarOtk FUNCTION P1,D5; Среднее время наработки до отказа по типам СС, час1,373/2,301/3,482/4,325/5,470SrVrRem FUNCTION P1,D5; Среднее время ремонта по типам СС 1,5/2,4.2/3,2.8/4,3/5, 5.5S1_ FUNCTION P1,D5; Доход по типам от одного СС, находящегося на дежурстве 1,20/2,24.2/3,32.8/4,23/5, 25.5S2_ FUNCTION P1,D5; Убыток по типам при отсутствии одного СС на дежурстве 1,32/2,34.2/3,37/4,31/5,32.5S3_ FUNCTION P1,D5; Стоимость по типам содержания одного резервного СС 1,21/2,24.2/3,28/4,26/5, 25.5; Арифметические выражения для расчета показателейDoxMax VARIABLE VrMod#FN$S1_#FN$KolSS; Максимальный доход от дежурства ССUbitok VARIABLE VrMod#FN$KolSS#(1-SR*1/1000)#FN$S2_; Убыток от отсутствия на дежурстве ССDoxPol VARIABLE X$DoxMax-X$Ubitok; Полученный доход от дежурства ССStoRem VARIABLE (VrMod#SM$Rem#FN$StoMast)#(SR$Rem/1000); Стоимость ремонта неисправных ССZatrResSS VARIABLE FN$S3_#FN$KolSSRes#VrMod; Затраты на содержание резервных ССSumPrib VARIABLE X$DoxPol-(X$StoRem+X$ZatrResSS); Прибыль KoefPr VARIABLE MX*3(Stroka,Stolbez)/X$DoxMax; Коэффициент прибыли; Сегмент имитации постановки на дежурство СС GENERATE,,,n1_ SAVEVALUE TipSS+,1; Код 1... n2_ - признак СС1... CCn1 в X$TipSS ASSIGN 1,X$TipSS; Код 1... n2_ - признак СС1...CCn2_ в P1 SPLIT (FN$KolSS+FN$KolSSRes-1); Число СС + резервные СС; Сегмент имитации дежурства ССMet1 ENTER P1; Встать на дежурство СС типа с номером в Р1 ADVANCE (Exponential(30,0,FN$NarOtk)); Имитация выхода из строя СС LEAVE P1; Снятие с дежурства из-за выхода из строя СС типа, номер которого в Р1; Сегмент имитации работы ремонтного подразделения ENTER Rem; Занять одного мастера ADVANCE (Exponential(31,0,FN$SrVrRem)); Имитация ремонта LEAVE Rem; Конец ремонта TRANSFER,Met1; Направить исправное СС на дежурство или в резерв; Сегмент задания времени моделирования и расчета результатов GENERATE VrMod TEST E TG1,1,Met2Met23 ASSIGN 1+,1; Начало цикла изменения типов СС SAVEVALUE DoxMax,V$DoxMax; Максимально возможный доход от дежурства СС SAVEVALUE Ubitok,V$Ubitok; Убыток SAVEVALUE DoxPol,V$DoxPol; Полученный доход от дежурства СС SAVEVALUE StoRem,V$StoRem; Затраты на ремонт SAVEVALUE ZatrResSS,V$ZatrResSS; Затраты на резервные СС SAVEVALUE SumPrib,V$SumPrib; Суммарная прибыль ASSIGN 2,(P1#3) ASSIGN 3,(P2-2) MSAVEVALUE *3,Stroka,Stolbez,X$SumPrib; Прибыль по типу СС MSAVEVALUE Pribil+,Stroka,Stolbez,X$SumPrib; Суммарная прибыль по СС всех типов ASSIGN 4,V$KoefPr; Коэфициент прибыли по типам СС в Р4 ASSIGN 3,(P2-1) MSAVEVALUE *3,Stroka,Stolbez,P4; Коэфициент прибыли по типам СС MSAVEVALUE SrKPrib+,Stroka,Stolbez,(P4/n1_); Средний коэффициент прибыли по СС всех типов MSAVEVALUE *2,Stroka,Stolbez,(SR*1/1000); Коэффициент использования CC MSAVEVALUE SrKIsp+,Stroka,Stolbez,(SR*1/(1000#n1_)); Средний коэффициент использования CC всех типов TEST GE P1,n1_,Met23 MSAVEVALUE 16,Stroka,Stolbez,(SR$Rem/1000); Коэффициент использования Rem SAVEVALUE TipSS,0 Met2 TERMINATE 1 START 1000,NP; Недели 1-5: Резервных СС2=4, мастеров=3; Сегмент переопределения блоков - изменения версий моделиStolbez EQU 2 RESET START 1000,NP; Недели 6-10: Резервных СС2=4, масте-ров=3 Stolbez EQU 3 RESET START 1000,NP; Недели 11-15: Резервных СС2=4, мас-теров=3 Stolbez EQU 4 RESET START 1000,NP; Недели 16-20: Резервных СС2=4, мас-теров=3 Stolbez EQU 5 RESET START 1000,NP; Недели 21-25: Резервных СС2=4, мас-теров=3KolSSRes FUNCTION P1,D5; Количество резервных СС2 1,2/2,5/3,4/4,4/5,4 Stroka EQU 2 Stolbez EQU 1 RESET START 1000,NP; Недели 1-5: Резервных СС2=5, мастеров=3 Stolbez EQU 2 RESET START 1000,NP; Недели 6-10: Резервных СС2=5, мастеров=3 Stolbez EQU 3 RESET START 1000,NP; Недели 11-15: Резервных СС2=5, мастеров=3 Stolbez EQU 4 RESET START 1000,NP; Недели 16-20: Резервных СС2=5, мастеров=3 Stolbez EQU 5 RESET START 1000,NP; Недели 21-25: Резервных СС2=5, мастеров=3KolSSRes FUNCTION P1,D5; Количество резервных СС2 1,2/2,6/3,4/4,5/5,4 Stroka EQU 3Stolbez EQU 1 RESET START 1000,NP; Недели 1-5: Резервных СС2=6, мастеров=3 Stolbez EQU 2 RESET START 1000,NP; Недели 6-10: Резервных СС2=6, мастеров=3 Stolbez EQU 3 RESET START 1000,NP; Недели 11-15: Резервных СС2=6, мастеров=3 Stolbez EQU 4 RESET START 1000,NP; Недели 16-20: Резервных СС2=6, мастеров=3 Stolbez EQU 5 RESET START 1000; Недели 21-25: Резервных СС2=6, мастеров=3

В программе, кроме методов применения матриц и функций, показывается метод изменения версий модели. Изменение версий модели производится переопределением соответствующих блоков. Переопределяться не могут блоки GENERATE. Для переопределения блоков, описывающих ОКУ и МКУ, они должны иметь метки. Однако одного переопределения блоков недостаточно. В GPSS World изменение версий модели достигается также за счет использования команд RESET и CLEAR.

В рассматриваемом примере в процессе моделирования необходимо собирать статистику по отрезкам времени \Delta T. То есть предшествующую статистику нужно сбросить, но оставить неизменными условия функционирования системы.

Сброс в ноль статистики без удаления транзактов из процесса моделирования осуществляет команда RESET. Команда RESET не имеет операндов:

RESET

Команда также не сбрасывает генераторы случайных чисел, ячейки и матрицы ячеек, не влияет на абсолютное модельное время и нумерацию транзактов. Относительное модельное время (после последней команды RESET) устанавливается равным нулю. Таким образом, с помощью команды RESET обеспечивается удобное средство сбора статистических данных в типичных условиях функционирования систем.

После того как для данной версии модели выполнено моделирование в течение заданного числа отрезков времени \Delta T (в примере - пять), нужно изменить версию модели и провести моделирование сначала.

Изменение версии в данной модели производится переопределением функции KolSSRes, т. е. изменением количества резервных СС2, например:

KolSSRes FUNCTION P1,D5; Количество резервных СС21,2/2,5/3,4/4,4/5,4

Процесс моделирования в исходное состояние возвращает команда CLEAR. Формат записи команды:

CLEAR [A]

Операнд А может быть ON либо OFF. По умолчанию - ON.

Команда CLEAR сбрасывает всю накопленные статистические данные, удаляет все транзакты из процесса моделирования и заполняет все блоки GENERATE первым транзактом. ОКУ и МКУ становятся доступными, устанавливаются в незанятое состояние. Содержимое всех блоков становится нулевым. Генераторы случайных чисел не сбрасываются.

Если в команде CLEAR операнд А равен OFF, то сохраняемые ячейки, матрицы и логические ключи остаются без изменений. Поэтому в модели в команде CLEAR используется операнд А, равный OFF, так как нужно сохранить результаты моделирования для предыдущей версии модели.

Однако при этом нужно иметь в виду те ячейки, начальные значения которых должны быть нулевыми в новой версии модели. Необходимо предусмотреть в программе блоки приведения таких ячеек в исходное состояние. В данной модели это показано на примере сохраняемой ячейки TipSS. Если эту ячейку не привести в нулевое состояние, процесс моделирования второй версии будет остановлен по ошибке "Обращение к несуществующей памяти".

Поскольку накопленные и сохраненные в матрицах результаты моделирования нет необходимости выводить на каждом отрезке \Delta T, то в команде START используется операнд B, равный ON. В последней команде START операнд B не используется. Поэтому стандартный отчет выдается после завершения моделирования. В рассматриваемом примере - после пятнадцати наблюдений.

Ниже показан фрагмент журнала с информацией о ходе моделирования. В первых пяти наблюдениях (первой версии модели) команда RESET не влияет на абсолютное модельное время, которое растет от 0 до 1 000 000 единиц модельного времени.

После переопределения (формирования второй версии модели) выполняется команда CLEAR и абсолютное модельное время вновь изменяется от 0 до 1 000 000 единиц модельного времени.

06/05/08 17:29:10 Model Translation Begun.06/05/08 17:29:10 Ready.06/05/08 17:29:10 Simulation in Progress.06/05/08 17:29:15 The Simulation has ended. Clock is 200000.000000.06/05/08 17:29:15 Simulation in Progress.06/05/08 17:29:19 The Simulation has ended. Clock is 400000.000000.06/05/08 17:29:19 Simulation in Progress.06/05/08 17:29:24 The Simulation has ended. Clock is 600000.000000.06/05/08 17:29:24 Simulation in Progress.06/05/08 17:29:28 The Simulation has ended. Clock is 800000.000000.06/05/08 17:29:28 Simulation in Progress.06/05/08 17:29:32 The Simulation has ended. Clock is 1000000.000000.06/05/08 17:29:33 Simulation in Progress.06/05/08 17:29:37 The Simulation has ended. Clock is 200000.000000.06/05/08 17:29:37 Simulation in Progress.06/05/08 17:29:41 The Simulation has ended. Clock is 400000.000000.06/05/08 17:29:41 Simulation in Progress.…06/05/08 17:30:17 Reporting in Rem_SS_2.59.1 - REPORT Window.

Для включения в формируемый стандартный отчет матриц необходимо при открытом объекте "Модель" выполнить команду:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: