Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования системы связи
Эксперимент Варьирование параметров
Эксперимент Варьирование параметров может проводиться только для детерминированных моделей.
Создайте эксперимент Варьирование параметров для стохастической модели Система_связи с целью наблюдения за изменением коэффициента готовности в зависимости от количества резервных СС и мастеров-ремонтников.
- В панели Проект Щёлкните правой кнопкой мыши элемент модели Система_связи и из контекстного меню выберите Создать эксперимент.
- В появившемся диалоговом окне из списка Тип эксперимента: выберите Варьирование параметров.
- В поле Имя введите имя эксперимента, например, Система_связи_Вар_параметров.
- Щёлкните кнопку Готово. Появится страница Параметры панели Свойства (Рис. 5.26).
- Обратите внимание, что на странице Параметры по сравнению с оптимизационным экспериментом отсутствуют опции минимизировать, максимизировать, Количество итераций. Последнее определяется AnyLogic в зависимости от диапазонов и шагов изменения параметров. Не используются и репликации, по
- Задайте диапазон допустимых значений параметров. Перейдите в таблице на Рис. 5.26 на строку с этим параметром. Щёлкните мышью в ячейке Тип. Выберите тип параметра, отличный от значения фиксированный. Параметр КССР_1 типа int, поэтому он может изменяться в диапазоне. Выберите Диапазон. В ячейку Мин введите минимальное значение 1, в ячейку Макс - максимальное значение 3, в ячейке Шаг укажите величину шага 1.
- Задайте также остальные параметры, как на Рис. 5.26.
- Вернитесь на страницу Основные и щёлкните кнопку Создать интерфейс.
- В эксперименте Варьирование параметров в отличие от эксперимента Оптимизация интерфейс создаёт пользователь. Связано это с тем, что выходными результатами данного эксперимента могут быть любые показатели моделируемой системы.
- Создайте интерфейс, показанный на Рис. 5.27. Автоматически добавлены только параметры эксперимента. Здесь вы видите график, который будет отображать значение коэффициента готовности системы связи для каждой итерации.
- Перетащите элемент График из палитры Статистика на диаграмму.
- На странице Местоположение и размер и установите: X: 260, Y: 100, Ширина: 510, Высота: 400, Цвет фона: Нет заливки, Цвет границы: Нет линии.
- Щёлкните Добавить элемент данных.
- Установите опцию Набор данных. Заголовок: КоэфГотСС. Набор данных: dataset. Установите Не обновлять данные автоматически.
- Перейдите на страницу Область диаграммы. Установите: Смещение по Х: 50, Смещение по Y: 30, Ширина: 450, Высота: 330.
- Из палитры Статистика перетащите элемент Набор данных. Установите опцию Не обновлять автоматически.
- Из палитры Основная перетащите элемент Переменная. На панели Свойства в поле Имя: введите коэфГотСС. Установите Уровень доступа: public. Тип: double.
- Щёлкните диаграмму интерфейса. На странице Действия Java панели Свойства и введите коды:
- в поле Действие после прогона модели:
коэфГотСС = root.degurstvo.КоэфГотСС;
- в поле Действие после итерации
dataset.add(getCurrentIteration(),коэфГотСС);
- в поле Действие после прогона модели:
- Выполните Система_связи / Система_связи_Вар_параметров.
- Щёлкните Запустить.
- Начнет выполняться эксперимент. Во время эксперимента можно видеть на графике изменение значения коэффициента готовности системы связи. Фрагмент результатов выполнения эксперимента Варьирование параметров приведен на Рис. 5.28.
- Эксперимент был приостановлен после 301 прогона. По графику можно видеть как изменяется коэффициент готовности системы связи. В данный момент времени коэффициент готовности равен 0,801 при КССР_1=КССР_5 = kol_master =1, КССР_2= КССР_3=5, КССР_4=3.
- На Рис. 5.28 видно, что 301 прогон был выполнен даже в виртуальном режиме за 2029, 3 с.
увеличить изображение
Рис. 5.28. Фрагмент результатов выполнения эксперимента Варьирование параметров
Экспорт модели как Java апплета
Модели AnyLogic являются приложением Java, поэтому их можно запускать на большинстве современных платформ, а также помещать на веб-сайты в виде апплетов.
Наличие такой возможности позволяет удалённым пользователям запускать интерактивные модели в веб-браузере при отсутствии AnyLogic или какого-либо другого программного обеспечения. В этом случае на клиентской машине будут запускаться скопированные из сети файлы модели с такой же поддержкой интерактивной работы, что и при запуске из среды AnyLogic.
Экспортируйте модель ComSystem в виде Java апплета.
- Щёлкните в панели Проекты модель ComSystem и выберите Экспорт/В Java апплет (запускается в веб браузере) из контекстного меню.
- Откроется диалоговое окно Экспорт модели (Рис. 5.29). Щелчком мыши раскройте список Экспортировать эксперимент и выберите в нем Simulation. Настройки этого эксперимента будут применены к экспортируемой модели.
- В поле Каталог для создаваемых файлов укажите каталог, в который вы хотите поместить файлы экспортируемой модели. Можно также выбрать каталог с помощью диалогового окна навигации, которое становится доступным при нажатии кнопки Выбрать.
- По умолчанию кнопки панели инструментов и другие элементы пользовательского интерфейса апплета будут на том языке, который выбран в настройках вашего компьютера (Язык: <системный по-умолчанию>). При необходимости можно выбрать для интерфейса апплета другой язык из выпадающего списка Язык: (на данный момент AnyLogic поддерживает русский, английский, китайский, немецкий и итальянский языки).
- Оставьте установленным флажок Открыть апплет модели в веб браузере.
- Щёлкните кнопку Готово. Откроется диалоговое окно, в котором будет сообщение об успешном завершении экспортирования модели ComSystem: Модель ComSystem была экспортирована в G:\BOEV.
- Щёлкните OK.
Модель, экспортированная как Java апплет, представляет собой набор следующих файлов (Рис. 5.30):
- файл .html, используемый для запуска Java апплета;
- файл com.xj.anylogic.engine.jar исполняющего модуля AnyLogic;
- скомпилированный .jar файл модели (model.jar);
- .jar файлы и классы, необходимые для построения модели.
При публикации апплета модели в сети Интернет нужно предоставить доступ ко всем этим файлам из кода апплета. Это значит, что если вы добавляете ссылку на .html файл модели на веб страницу, то необходимо разместить все эти файлы в той же директории, где и этот .html файл. Для показа апплета на своей веб странице следует скопировать код апплета из .html файла модели в код своей страницы, и добавить все файлы, сгенерированные при экспорте модели, в тот же каталог, где находится ваша страница.
Запустите апплет модели, дважды щелкнув ComSystem.html. Результаты работы апплета модели показаны на Рис. 5.31. Коэффициент прибыли равен 0,949 (см. п. 5.1.8.3).
Модель в 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
В программе, кроме методов применения матриц и функций, показывается метод изменения версий модели. Изменение версий модели производится переопределением соответствующих блоков. Переопределяться не могут только блоки GENERATE. Для переопределения блоков, описывающих ОКУ и МКУ, они должны иметь метки. В командах START, кроме последней, указывается операнд В - NP - не выводить отчёт. Однако одного переопределения блоков недостаточно. В GPSS World изменение версий модели достигается также за счет использования команды CLEAR.
В рассматриваемом примере в процессе моделирования необходимо собирать статистику по версиям модели. Нужная собранная статистика должна быть сохранена, а ненужная - сброшена.
Процесс моделирования в исходное состояние возвращает команда CLEAR. Формат записи команды:
CLEAR [A]
Операнд А может быть ON либо OFF. По умолчанию - ON.
Команда CLEAR сбрасывает всю накопленные статистические данные, удаляет все транзакты из процесса моделирования и заполняет все блоки GENERATE первым транзактом. ОКУ и МКУ становятся доступными, устанавливаются в незанятое состояние. Содержимое всех блоков становится нулевым. Генераторы случайных чисел не сбрасываются.
Если в команде CLEAR операнд А равен OFF, то сохраняемые ячейки, матрицы и логические ключи остаются без изменений. Поэтому в модели в команде CLEAR используется операнд А, равный OFF, так как нужно сохранить результаты моделирования предыдущей версии модели.
Однако при этом нужно иметь в виду те ячейки, начальные значения которых должны быть нулевыми в новой версии модели. Необходимо предусмотреть в программе блоки приведения таких ячеек в исходное состояние. В данной модели это показано на примере сохраняемой ячейки TipSS. Если эту ячейку не привести в нулевое состояние, процесс моделирования второй версии будет остановлен по ошибке "Обращение к несуществующей памяти".
Поскольку накопленные и сохраненные в матрицах результаты моделирования нет необходимости выводить после каждого варианта, то в команде START используется операнд В, равный ON. В последней команде START операнд В не используется. Поэтому стандартный отчет выдаётся после завершения моделирования. В рассматриваемом примере - после девяти наблюдений.
Ниже показан фрагмент журнала с информацией о ходе моделирования. В первом наблюдении (первой версии модели) модельное время изменяется от 0 до 1 000 000 единиц модельного времени (1000 прогонов # 1000 часов работы моделируемой системы).
После переопределения (формирования второй версии модели) выполняется команда CLEAR и абсолютное модельное время вновь изменяется от 0 до 1 000 000 единиц модельного времени.
07/11/11 16:56:06 Model Translation Begun. 07/11/11 16:56:06 Ready. 07/11/11 16:56:06 Simulation in Progress. 07/11/11 16:56:26 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:56:26 Simulation in Progress. 07/11/11 16:56:46 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:56:46 Simulation in Progress. 07/11/11 16:57:06 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:57:06 Simulation in Progress. 07/11/11 16:57:31 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:57:31 Simulation in Progress. 07/11/11 16:57:55 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:57:55 Simulation in Progress. 07/11/11 16:58:19 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:58:19 Simulation in Progress. 07/11/11 16:58:44 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:58:44 Simulation in Progress. 07/11/11 16:59:09 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:59:09 Simulation in Progress. 07/11/11 16:59:33 The Simulation has ended. Clock is 1000000.000000. 07/11/11 16:59:33 Reporting in Модель сеть связи 3.128.1-REPORT.
Для включения в формируемый стандартный отчет матриц необходимо при открытом объекте "Модель" выполнить команду:
Edit/Settings/Reports/Matrices/Применить/Ok
Результаты моделирования после 1000 прогонов приведены ниже. Но опять в целях сокращения приведены для СС1 первые три матрицы с абсолютной и относительной прибылью, а также с коэффициентами использования СС1.
MATRIX RETRY INDICES VALUE PRIB1 0 1 1 411920.775 1 2 412047.879 1 3 395398.298 2 1 975100.990 2 2 973737.015 2 3 972026.043 3 1 1029846.786 3 2 1029847.984 3 3 1029916.195 KPR1 0 1 1 .374 1 2 .374 1 3 .359 2 1 .886 2 2 .885 2 3 .883 3 1 .936 3 2 .936 3 3 .936 KZEN1 0 1 1 .778 1 2 .778 1 3 .772 2 1 .976 2 2 .976 2 3 .975 3 1 .995 3 2 .995 3 3 .995