50012 (Разработка средств моделирования систем), страница 3
Описание файла
Документ из архива "Разработка средств моделирования систем", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "50012"
Текст 3 страницы из документа "50012"
Опишем сеть аналитически.
Количество узлов – 5.
1 узел - для источника (генератора) заявок.Закон поступления заявок -равномерный;
2 узел - обслуживающее устройство. Закон обслуживания – экспоненциальный;
3 узел - обслуживающее устройство. Закон обслуживания – экспоненциальный;
4 узел - обслуживающее устройство. Закон обслуживания – экспоненциальный;
5 узел - приемник. Поглощает по 1 заявке.
Матрица переходов для примера сети представлена на рисунке 2.2
- | 1 | 2 | 3 | 4 | 5 |
1 | 0 | 1 | 0 | 0 | 0 |
2 | 0 | 0 | 1 | 0 | 0 |
3 | 0 | 0,9 | 0 | 0,1 | 0 |
4 | 0,9 | 0 | 0 | 0 | 0,1 |
5 | 0 | 0 | 0 | 0 | 1 |
Рисунок 2.2 Матрица переходов для примера сети.
Модель на языке GPSSдолжна выглядеть так:
GENERATE 10
L3 QUEUE 1
SEIZE B1
DEPART 1
ADVANCE (EXPONENTIAL(1,0,2.1))
RELEASE B1
L1 QUEUE 1
SEIZE B2
DEPART 1
ADVANCE (EXPONENTIAL(1,0,6))
RELEASE B2
TRANSFER 0.9,L2,L1
L2 QUEUE 1
SEIZE B3
DEPART 1
ADVANCE (EXPONENTIAL(1,0,10))
RELEASE B3
TRANSFER 0.9,L4,L3
L4 TERMINATE 1
START 1000
Занесём данный текст в программу GPSS WORLD и получим стандартный отчёт.
В отчете собираются следующие статистические данные:
-
START TIME – начальное значение времени моделирования;
-
END TIME – конечное значение времени моделирование;
-
BLOCKS – число блоков, использованных при моделировании;
-
FACILITIES – число устройств, использованных при моделировании;
-
STORAGE – число многоканальных устройств, использованных при моделировании.
Информация об устройствах содержит следующие колонки:
-
FACILITY - имя устройства;
-
ENTRIES - количество транзактов, входивших в устройство;
-
UTIL. - коэффициент загрузки устройства;
-
AVE.TIME - среднее время пребывания транзакта в устройстве;
-
AVAILABLE - состояние устройства в момент окончания моделирования (1 - устройство доступно, 0 - недоступно);
-
OWNER - номер последнего транзакта, вошедшего в устройство;
-
PEND - количество транзактов, ожидающих выхода устройства из режима прерывания;
-
INTER - количество транзактов, пребывание которых в устройстве было прервано;
-
RETRY - количество транзактов, ожидающих каких-либо условий, зависящих от состояния данного устройства;
-
DELAY - количество транзактов, ожидающих возможности входа в устройство (обычно это транзакты, находящиеся в очереди);
Информация об очередях содержит следующие колонки:
-
QUEUE - имя очереди;
-
MAX - максимальная длина очереди (т.е. количество транзактов в ней) за время моделирования;
-
CONT.- длина очереди в момент окончания моделирования;
-
ENTRIES - количество транзактов, входивших в очередь;
-
ENTRIES(0) - количество транзактов, которым не потребовалось ждать в данной очереди (нулевые входы);
-
AVE.CONT.- средняя длина очереди;
-
AVE.TIME - среднее время пребывания транзактов в очереди;
-
AVE.(-0) - среднее время пребывания транзактов в очереди без учета нулевых входов (т.е. без учета транзактов с нулевым временем пребывания в очереди);
-
RETRY - количество транзактов, ожидающих каких-либо условий, зависящих от состояния данной очереди.
3 Проектирование системы
В окончательном виде любая программа представляет собой набор инструкций процессора. Всё, что написано на любом языке программирования, - более удобная, упрощённая запись этого набора инструкций, облегчающая написание, отладку и последующую модификацию программы. Чем выше уровень языка, тем в более простой форме записывается одни и те же действия.
С ростом объёма программы становится невозможным удерживать в памяти все детали, и становится необходимым структурировать информацию, выделять главное и отбрасывать несущественное. Этот процесс называется повышением степени абстракции программы.
Первым шагом к повышению абстракции является использование функции. Следующий шаг – описание собственных типов данных, позволяющих структурировать и группировать информацию.
Объединение в модули описаний типов данных и функций, предназначенных для работы с ними, со скрытием от пользователя модуля несущественных деталей, является дальнейшим развитием структуризации программы.
Введение понятия класса является естественным развитием идей модульности. В классе структуры данных и функции их обработки объединяются. Класс используется только через его интерфейс – детали реализации для пользователя класса несущественны.
Класс является типом данных, определяемым пользователем. В классе задаются свойства и поведение какого-либо предмета или процесса в виде полей данных (аналогично структуре) и функции для работы с ними. Создаваемый тип данных обладает практически теми же свойствами, что и стандартные типы. В нашей программе мы использовали три класса:
-
Класс FuncStandart содержит описание всех стандартных функций, определённых языком имитационного моделирования GPSS.
В зависимости от выбранной пользователем функции вызывается соответствующий ей метод класса FuncStandart. Вызванный метод отправляет на консоль запрос пользователю на ввод параметров выбранной функции. В зависимости от введенныхпараметров, метод генерирует строку, содержащуюописание стандартной функции с уже заданными параметрами на языке имитационного моделирования GPSS.
-
Класс GPSSOperatori содержит описание операторов языка имитационного моделирования GPSS.В зависимости от матрицы, сгенерированной в методе Matrixкласса GPSSText, вызываются соответствующие методы класса GPSSOperatori. Все методы класса возвращают строковое значение, содержащее описание требуемых операторов языка имитационного моделирования GPSS. Причем стандартные функции, которые используются в операторах как параметры, генерируются в классе FuncStandart.
-
Класс GPSSText описывает сгенерированный текст языка имитационного моделирования GPSS. Во-первых, метод класса Matrix, выводит на консоль запрос об операторах узлов, содержащихся в имитационной модели и о движении транзакта по соответствующим узлам. В зависимости от полученных данных генерируется матрица переходов. Во-вторых, в методе Programma, по матрице переходов совершается соответствующий вызов метода классаGPSSOperatori. В конечном итоге, результат работы программы записывается в файл GPSStext.txt. Этот файл содержит окончательно сгенерированный текст программы на языке имитациооного моделирования GPSS.
Идея классов является основой объектно-ориентированного программирования.
Основными свойствами ООП является инкапсуляция, наследование и полиморфизм.
Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией.
Наследование – это возможность создания иерархии классов, когда потоки наследуют все свойства своих предков, могут их изменять и добавлять новые.
Полиморфизм – возможность использования в различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать требуемое действие во время выполнения программы.
В нашей программе используется первые два свойства ООП.
Проектирование объектно-ориентированной программы представляет собой весьма сложную задачу, поскольку в процесс добавляется ещё один важный этап – разработка иерархий классов.
Представим иерархию классовнашей программы (рисунок 3.1)
Рисунок 3.1
4 РЕАЛИЗАЦИЯ СИСТЕМЫ
Как ранее уже описывалось, программа состоит из трёх классов:
-
Класс FuncStandart содержит описание всех стандартных функций, определённых языком имитационного моделирования GPSS.
-
Класс GPSSOperatori содержит описание операторов языка имитационного моделирования GPSS.
-
Класс GPSSText описывает сгенерированный текст языка имитационного моделирования GPSS.
4.1 Класс FuncStandart
-
Метод stringfBETA() задает параметры функцииBETA(Stream,Min,Max,Shape1,Shape2) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfBINOMIAL()задает параметры функции BINOMIAL(Stream,TrialCount,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfDUNIFORM()задает параметры функции DUNIFORM(Stream,Min,Max) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringf_1() задает параметры функций EXPONENTIAL(Stream,Locate,Scale), EXTVALA(Stream,Locate,Scale), EXTVALB(Stream,Locate,Scale), LAPLACE(Stream,Locate,Scale), LOGISTIC(Stream,Locate,Scale)и возвращает строку содержащую описание этих параметров с уже заданными пользователем значениями.
-
Методstring f_2() задаетпараметрыфункцийGAMMA(Stream,Locate,Scale,Shape), INVGAUSS(Stream,Locate,Scale,Shape), INVWEIBULL(Stream,Locate,Scale,Shape), OGLAPLACE(Stream,Locate,Scale,Shape), LOGLOGIS(Stream,Locate,Scale,Shape),LOGNORMAL(Stream,Locate,Scale,Shape),PEARSON5(Stream,Locate,Scale,Shape),WEIBULL(Stream,Locate,Scale,Shape)ивозвращаетстрокусодержащуюописаниеэтихпараметровсужезаданнымипользователемзначениями.
-
Метод stringfGEOMETRIC()задает параметры функции GEOMETRIC(Stream,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfNEGBINOM()задает параметры функции NEGBINOM(Stream,SuccessCount,Probability) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfNORMAL()задает параметры функции NORMAL(Stream,Mean,StdDev) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfPARETO()задает параметры функции PARETO(Stream,Locate,Scale) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод string fPEARSON6()задает параметры функции PEARSON6(Stream,Locate,Scale,Shape1,Shape2) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfPOISSON()задает параметры функции POISSON(Stream,Mean) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfTRIANGULAR()задает параметры функции
-
TRIANGULAR(Stream,Min,Max,Mode) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
-
Метод stringfUNIFORM() задает параметры функции UNIFORM(Stream,Min,Max) и возвращает строку содержащую описание этой функции с уже заданными пользователем параметрами.
4.2 Класс GPSSOperatori
-
Описываются переменные целого типа nF, nST, nFas, nQ, ответственные за номер используемой функции, номер многоканального устройства, номер одноканального устройства, номер очереди соответственно.
-
МетодGENERATE задаёт параметры оператора GENERATE и возвращает строковое значение этого оператора с заданными пользователем значениями параметров.
На первом этапе определяется промежуток времени между появлениями транзактов. Он может быть: постоянным, случайным, заданным функцией, зависящим от функции, а также не задан.
При промежутке времени между появлениями транзактов заданном функцией или зависящем от функции, определяется, какой будет функция: стандартной или пользовательской, в зависимости от этого вызываются функцииFStandи FUNCTIONсоответственно.
На втором этапе определяется время задержки появления первого транзакта. Оно может быть: задано или не задано.
На третьем этапе определяется предельное число транзактов.Оно так же может быть: задано или не задано.
На четвёртом этапе определяется приоритет транзактов. Он может быть: задан или не задан.
-
Метод ADVANCE задаёт параметры оператора ADVANCE и возвращает строковое значение этого оператора с заданными пользователем значениями параметров.
В методе определяется время задержки транзакта. Оно может быть: постоянным, случайным, заданным функцией, зависящим от функции.
При времени задержки транзакта заданном функцией или зависящем от функции, определяется, какой будет функция: стандартной или пользовательской, в зависимости от этого вызываются функцииFStandи FUNCTIONсоответственно.
-
Метод ENTER возвращает строку содержащую операторы языка имитационного моделирования GPSS, описывающие многоканальное устройство.
На первом этапе в файл GPSStext.txt (файл для записи сгенерированного текста программы на языке имитационного моделирования GPSS) записывается описание многоканального устройства, то есть его имя и количество каналов.