Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования системы связи
Модель в GPSS World
Состав модели в GPSS World
Как уже отмечалось, система связи представляет собой многофазную многоканальную систему массового обслуживания замкнутого типа с отказами и ожиданием.
Какие ограничения в системе?
- Число мастеров-ремонтников в ремонтном подразделении.
- Максимальное число одновременно находящихся СС на дежурстве.
- Максимальное число резервных СС.
- Общее число СС в системе.
Для моделирования двух первых ограничений целесообразно использовать МКУ, а для третьего и четвертого ограничений - транзакты.
Модель системы связи должна состоять из следующих сегментов:
- описание арифметических выражений;
- сегмент имитации постановки на дежурство СС;
- сегмент имитации функционирования системы дежурства СС;
- сегмент имитации функционирования ремонтного подразделения;
- сегмент задания времени моделирования и вычисления результатов моделирования;
- расчет ожидаемой прибыли;
- сегмент переопределения блоков программы - изменения версий модели.
Сегмент переопределения блоков модели необходим для изменения версий модели, т. е. изменения количества резервных СС и мастеров-ремонтников в ремонтном подразделении, а также номеров строк и столбцов матриц, в которые записываются результаты моделирования. Количество переопределений в сегменте соответствует числу версий модели минус один.
Программа GPSS-модели
Предполагается, что количество типов СС в системе предоставления услуг связи может изменяться от одного до максимального значения n2_. Программа модели, как уже омечалось при разработке AnyLogic-модели, построена для n2_=5.
Для хранения результатов моделирования используются матрицы. В целях придания неизменности программы модели при варьировании количеством типов СС матрицы должны быть пронумерованы. Однако GPSS World при описании матриц командой MATRIX не позволяет вместо имени указывать число. Матрицы нужно вначале описать, дав им имена, а затем пронумеровать.
Результаты моделирования для одного типа СС хранятся в семи матрицах, например, для СС типа 1 (СС1) с идентификаторами:
- Prib1 - матрица ожидаемой прибыли СС1;
- KPr1 - матрица коэффициентов прибыли СС1;
- KZen1 - матрица коэффициентов использования СС1;
- DoxMax1 - матрица максимальных доходов от СС1;
- DoxDeg1 - матрица доходов от дежурства СС1;
- ZatrRem1 - матрица затрат на ремонт СС1;
- ZatrResSS1 - матрица затрат на резервные СС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 - четыре, пять и шесть.
; Модель функционирования системы связи ; Задание номеров матрицам Prib1 EQU 1 ; Матрица ожидаемой прибыли СС1 KPr1 EQU 2 ; Матрица коэффициентов прибыли СС1 KZen1 EQU 3 ; Матрица коэффициентов использования СС1 DoxMax1 EQU 4 ; Матрица максимальных доходов СС1 DoxDeg1 EQU 5 ; Матрица доходов от дежурства СС1 ZatrRem1 EQU 6 ; Матрица затрат на ремонт СС1 ZatrResSS1 EQU 7 ; Матрица затрат на резервные СС1 Prib2 EQU 8 ; Матрица ожидаемой прибыли СС2 KPr2 EQU 9 ; Матрица коэффициентов прибыли СС2 KZen2 EQU 10 ; Матрица коэффициентов использования СС2 DoxMax2 EQU 11 ; Матрица максимальных доходов СС2 DoxDeg2 EQU 12 ; Матрица доходов от дежурства СС2 ZatrRem2 EQU 13 ; Матрица затрат на ремонт СС2 ZatrResSS2 EQU 14 ; Матрица затрат на резервные СС2 Prib3 EQU 15 ; Матрица ожидаемой прибыли СС3 KPr3 EQU 16 ; Матрица коэффициентов прибыли СС3 KZen3 EQU 17 ; Матрица коэффициентов использования СС3 DoxMax3 EQU 18 ; Матрица максимальных доходов СС3 DoxDeg3 EQU 19 ; Матрица доходов от дежурства СС3 ZatrRem3 EQU 20 ; Матрица затрат на ремонт СС3 ZatrResSS3 EQU 21 ; Матрица затрат на резервные СС3 Prib4 EQU 22 ; Матрица ожидаемой прибыли СС4 KPr4 EQU 23 ; Матрица коэффициентов прибыли СС4 KZen4 EQU 24 ; Матрица коэффициентов использования СС4 DoxMax4 EQU 25 ; Матрица максимальных доходов СС4 DoxDeg4 EQU 26 ; Матрица доходов от дежурства СС4 ZatrRem4 EQU 27 ; Матрица затрат на ремонт СС4 ZatrResSS4 EQU 28 ; Матрица затрат на резервные СС4 Prib5 EQU 29 ; Матрица ожидаемой прибыли СС5 KPr5 EQU 30 ; Матрица коэффициентов прибыли СС5 KZen5 EQU 31 ; Матрица коэффициентов использования СС5 DoxMax5 EQU 32 ; Матрица максимальных доходов СС5 DoxDeg5 EQU 33 ; Матрица доходов от дежурства СС5 ZatrRem5 EQU 34 ; Матрица затрат на ремонт СС5 ZatrResSS5 EQU 35 ; Матрица затрат на резервные СС5 KRem EQU 36 ; Матрица коэффициентов использования Rem ; Задание номеров МКУ, имитирующих дежурство СС CC1_ EQU 1 ; Задание номера МКУ СС1 CC2_ EQU 2 ; Задание номера МКУ СС2 CC3_ EQU 3 ; Задание номера МКУ СС3 CC4_ EQU 4 ; Задание номера МКУ СС4 CC5_ EQU 5 ; Задание номера МКУ СС5 ; Задание по типам количества СС, находящихся на дежурстве n2_ EQU 5 ; Количество типов СС VrMod EQU 1000 ; Время моделирования, 1 ед. мод. вр. = 1 час KolProg EQU 1000 Stroka EQU 1 ; Номер строки матрицы Stolbez EQU 1 ; Номер столбца матрицы Prib1 MATRIX ,3,3 ; Матрица ожидаемой прибыли СС1 KPr1 MATRIX ,3,3 ; Матрица коэффициентов прибыли СС1 KZen1 MATRIX ,3,3 ; Матрица коэффициентов загрузки СС1 DoxMax1 MATRIX ,3,3 ; Матрица максимальных доходов СС1 DoxDeg1 MATRIX ,3,3 ; Матрица доходов от дежурства СС1 ZatrRem1 MATRIX ,3,3 ; Матрица затрат на ремонт СС1 ZatrResSS1 MATRIX ,3,3 ; Матрица затрат на резервные СС1 Prib2 MATRIX ,3,3 ; Матрица ожидаемой прибыли СС2 KPr2 MATRIX ,3,3 ; Матрица коэффициентов прибыли СС2 KZen2 MATRIX ,3,3 ; Матрица коэффициентов загрузки СС2 DoxMax2 MATRIX ,3,3 ; Матрица максимальных доходов СС2 DoxDeg2 MATRIX ,3,3 ; Матрица доходов от дежурства СС2 ZatrRem2 MATRIX ,3,3 ; Матрица затрат на ремонт СС2 ZatrResSS2 MATRIX ,3,3 ; Матрица затрат на резервные СС2 Prib3 MATRIX ,3,3 ; Матрица ожидаемой прибыли СС3 KPr3 MATRIX ,3,3 ; Матрица коэффициентов прибыли СС3 KZen3 MATRIX ,3,3 ; Матрица коэффициентов загрузки СС3 DoxMax3 MATRIX ,3,3 ; Матрица максимальных доходов СС3 DoxDeg3 MATRIX ,3,3 ; Матрица доходов от дежурства СС3 ZatrRem3 MATRIX ,3,3 ; Матрица затрат на ремонт СС3 ZatrResSS3 MATRIX ,3,3 ; Матрица затрат на резервные СС3 Prib4 MATRIX ,3,3 ; Матрица ожидаемой прибыли СС4 KPr4 MATRIX ,3,3 ; Матрица коэффициентов прибыли СС4 KZen4 MATRIX ,3,3 ; Матрица коэффициентов загрузки СС4 DoxMax4 MATRIX ,3,3 ; Матрица максимальных доходов СС4 DoxDeg4 MATRIX ,3,3 ; Матрица доходов от дежурства СС4 ZatrRem4 MATRIX ,3,3 ; Матрица затрат на ремонт СС4 ZatrResSS4 MATRIX ,3,3 ; Матрица затрат на резервные СС4 Prib5 MATRIX ,3,3 ; Матрица ожидаемой прибыли СС5 KPr5 MATRIX ,3,3 ; Матрица коэффициентов прибыли СС5 KZen5 MATRIX ,3,3 ; Матрица коэффициентов загрузки СС5 DoxMax5 MATRIX ,3,3 ; Матрица максимальных доходов СС5 DoxDeg5 MATRIX ,3,3 ; Матрица доходов от дежурства СС5 ZatrRem5 MATRIX ,3,3 ; Матрица затрат на ремонт СС5 ZatrResSS5 MATRIX ,3,3 ; Матрица затрат на резервные СС5 KRem MATRIX ,3,3 ; Матрица коэффициентов загрузки Rem Pribil MATRIX ,3,3 ; Матрица суммарной прибыли SrKPrib MATRIX ,3,3 ; Матрица коэффициентов прибыли СС всех типов SrKIsp MATRIX ,3,3 ; Матрица коэффициентов загрузки СС всех типов ; Определение МКУ по количеству СС, находящихся на дежурстве CC1_ STORAGE 55 ; Емкость МКУ по количеству СС1 CC2_ STORAGE 100 ; Емкость МКУ по количеству СС2 CC3_ STORAGE 60 ; Емкость МКУ по количеству СС3 CC4_ STORAGE 45 ; Емкость МКУ по количеству СС4 CC5_ STORAGE 60 ; Емкость МКУ по количеству СС5 Rem STORAGE 3 ; Емкость МКУ по числу мастеров-ремонтников ; Описание арифметических выражений DoxMax VARIABLE VrMod#FN$S1_#FN$KolSS ; Максимальный доход от дежурства СС Ubitok VARIABLE VrMod#FN$KolSS#(1-(SR*1/1000))#FN$S2_;Убыток от отсутствия на дежурстве СС DoxDeg VARIABLE (AC1-P$Nach1)#FN$S1_ ; Полученный доход от дежурства СС StoRem VARIABLE (AC1-P$Nach)#FN$StoMast ; Стоимость ремонта неисправных СС ZatrResSS VARIABLE FN$S3_#FN$KolSSRes#VrMod; Затраты на содержание резервных СС SumPrib VARIABLE X$DoxDeg-(X$ZatrRem+MX*4(Stroka,Stolbez)+V$Ubitok) ; Прибыль KoefPr VARIABLE MX*6(Stroka,Stolbez)/X$DoxMax; Коэффициент прибыли StoMast FUNCTION P1,D5 ; Стоимость работы одного мастера 1,17/2,18/3,16/4,20/5,21 KolSS FUNCTION P1,D5 ; Количество по типам СС, находящихся на дежурстве 1,55/2,100/3,60/4,45/5,60 KolSSRes FUNCTION P1,D5 ; Количество по типам резервных СС 1,2/2,4/3,4/4,3/5,4 NarOtk FUNCTION P1,D5 ; Среднее время наработки до отказа по типам СС, час 1,373/2,301/3,482/4,325/5,470 SrVrRem FUNCTION P1,D5 ; Среднее время ремонта по типам СС, час 1,6.5/2,4.2/3,2.8/4,3/5,5.5 S1_ FUNCTION P1,D5 ; Доход по типам от одного СС, находящегося на дежурстве 1,20/2,24.2/3,32.8/4,23/5,25.5 S2_ FUNCTION P1,D5 ; Убыток по типам при отсутствии одного СС на дежурстве 1,32/2,34.2/3,37/4,31/5,32.5 S3_ FUNCTION P1,D5 ; Затраты по типам на содержание одного резервного СС 1,21/2,24.2/3,28/4,26/5,25.5 ; Сегмент постановки на дежурство СС GENERATE ,,,n2_ SAVEVALUE TipSS+,1 ; Код 1 ... n2_ - признак СС1 CCn2 в X$TipSS ASSIGN 1,X$TipSS ; Код 1 ... n2_ - признак СС1 CCn2_ в P1 SPLIT (FN$KolSS+FN$KolSSRes-1) ; Число СС + резервные СС ; Сегмент имитации дежурства СС Met1 ENTER P1 ; Встать на дежурство СС типа, номер которого в Р1 ASSIGN Nach1,AC1 ; Время начала дежурства ADVANCE (Exponential(5672,0,FN$NarOtk)) ; Имитация выхода СС из строя, номер которого в Р2 LEAVE P1 ; Снятие с дежурства из-за выхода из строя СС типа, номер которого в Р1 ASSIGN 3,0 Met3 ASSIGN 3+,1 ; Начало цикла изменения типов СС TEST E P1,P3,Met4 ; Р1=Р3? ASSIGN 4,(P1#7) ; Р4=Р1#7 ASSIGN 5,(P4-2) ; Номера матриц: 5,12,19,26,33 MSAVEVALUE *5+,Stroka,Stolbez,V$DoxDeg ; MSAVEVALUE Pribil+,Stroka,Stolbez,V$DoxDeg Met4 TEST GE P3,n2_,Met3 ; Все ли типы СС? ; Сегмент имитации работы ремонтного подразделения ENTER Rem ; Занять одного мастера ASSIGN Nach,AC1 ; Время начала дежурства ADVANCE (Exponential(5672,0,FN$SrVrRem)) ; Имитация ремонта LEAVE Rem ; Конец ремонта ASSIGN 3,0 Met5 ASSIGN 3+,1 ; Начало цикла изменения типов СС TEST E P1,P3,Met6 ; Р1=Р3? ASSIGN 4,(P1#7) ; Р4=Р1#7 ASSIGN 5,(P4-1) ; Номера матриц: 6,13,20,27,34 MSAVEVALUE *5+,Stroka,Stolbez,V$StoRem ; MSAVEVALUE Pribil+,Stroka,Stolbez,V$StoRem Met6 TEST GE P3,n2_,Met5 ; Все ли типы СС? TRANSFER ,Met1 ; Направить исправное СС на дежурство или в резерв ; Сегмент задания времени моделирования и расчета результатов GENERATE VrMod TEST E TG1,1,Met2 ASSIGN 1,0 Met7 ASSIGN 1+,1 ; Начало цикла изменения типов СС ASSIGN 2,(P1#7) ; Р2=Р1#7 ASSIGN 9,(P2-2) ; Номера матриц: 5,12,19,26,33 SAVEVALUEDoxDeg,((MX*9(Stroka,Stolbez))/KolProg);Доход от дежурства MSAVEVALUE *9,Stroka,Stolbez,X$DoxDeg ASSIGN 3,(P2-3) ; Номера матриц: 4,11,18,25,32 MSAVEVALUE *3,Stroka,Stolbez,V$DoxMax; Максимально возможный доход от дежурства СС SAVEVALUE DoxMax,MX*3(Stroka,Stolbez) ASSIGN 4,(P2-0) ; Номера матриц: 7,14,21,28,35 MSAVEVALUE *4,Stroka,Stolbez,V$ZatrResSS ; Затраты на резервные СС ASSIGN 5,(P2-1) ; Номера матриц: 6,13,20,27,34 SAVEVALUE ZatrRem,((MX*5(Stroka,Stolbez))/KolProg) MSAVEVALUE *5,Stroka,Stolbez,X$ZatrRem ASSIGN 6,(P2-6) ; Номера матриц: 1,8,15,22,29 MSAVEVALUE *6,Stroka,Stolbez,V$SumPrib ASSIGN 7,(P2-5) ; Номера матриц: 2,9,16,23,24 MSAVEVALUE *7,Stroka,Stolbez,V$KoefPr MSAVEVALUE Pribil+,Stroka,Stolbez, MX*6(Stroka,Stolbez) ; Суммарная прибыль по СС всех типов ASSIGN 8,(P2-4) MSAVEVALUE SrKPrib+,Stroka,Stolbez,(MX*7(Stroka,Stolbez)/n2_) ; Средний коэффициент прибыли по СС всех типов MSAVEVALUE *8,Stroka,Stolbez,(SR*1/1000) ; Коэффициент использования CC MSAVEVALUE SrKIsp+,Stroka,Stolbez,(SR*1/(1000#n2_)) ; Средний коэффициент использования CC всех типов TEST GE P1,n2_,Met7 ; Все ли типы СС? MSAVEVALUE 31,Stroka,Stolbez,(SR$Rem/1000); Коэффициент использования Rem SAVEVALUE TipSS,0 Met2 TERMINATE 1 START 1000,NP ; Вариант1: ССР2=4, мастеров=3 KolSSres FUNCTION P1,D5 1,2/2,5/3,4/4,4/5,4 Stolbez EQU 2 CLEAR OFF START 1000,NP ; Вариант2: ССР2=5, мастеров=3 KolSSres FUNCTION P1,D5 1,2/2,6/3,4/4,4/5,4 Stolbez EQU 3 CLEAR OFF START 1000,NP ; Вариант3: ССР2=6, мастеров=3 KolSSres FUNCTION P1,D5 1,2/2,4/3,4/4,4/5,4 Stroka EQU 2 Stolbez EQU 1 Rem STORAGE 4 ; Емкость МКУ по числу мастеров-ремонтников CLEAR OFF START 1000,NP ; Вариант4: ССР2=4, мастеров=4 KolSSres FUNCTION P1,D5 1,2/2,5/3,4/4,4/5,4 Stolbez EQU 2 CLEAR OFF START 1000,NP ; Вариант5: ССР2=5, мастеров=4 KolSSres FUNCTION P1,D5 1,2/2,6/3,4/4,4/5,4 Stolbez EQU 3 CLEAR OFF START 1000,NP ; Вариант6: ССР2=6, мастеров=4 KolSSres FUNCTION P1,D5 1,2/2,4/3,4/4,4/5,4 Stroka EQU 3 Stolbez EQU 1 Rem STORAGE 5 ; Емкость МКУ по числу мастеров-ремонтников CLEAR OFF START 1000,NP ; Вариант7: ССР2=4, мастеров=5 KolSSres FUNCTION P1,D5 1,2/2,5/3,4/4,4/5,4 Stolbez EQU 2 CLEAR OFF START 1000,NP ; Вариант8: ССР2=5, мастеров=5 KolSSres FUNCTION P1,D5 1,2/2,6/3,4/4,4/5,4 Stolbez EQU 3 CLEAR OFF START 1000 ; Вариант9: ССР2=6, мастеров=5