Реферат: Разработка средств моделирования систем
Министерство образования Республики Беларусь
Учреждениеобразования
«Брестскийгосударственный технический университет»
Кафедра«Интеллектуальные информационные технологии»
ПОЯСНИТЕЛЬНАЯЗАПИСКА
ккурсовому проекту по дисциплине:
«Общаятеория систем»
натему:
«Разработкасредств моделирования систем»
КП.ИИ5.08876–0281 00
Разработала:
студенткаФЭИС группы ИИ5
ШумкоТ.В.
Руководитель:Муравьев Г.Л.
Н.контроль:Муравьев Г.Л.
Брест2010
Содержание
ВВЕДЕНИЕ
1 Анализ задания
1.1 Формулирование требований к системе
1.2 Разработка концептуальной модели системы
2 Разработка имитационной модели
3 Проектирование системы
4 Реализация системы
5 Испытание и тестирование системы
Заключение
Список литературы
ПРИЛОЖЕНИЕ А
ПРИЛОЖЕНИЕ Б
ПРИЛОЖЕНИЕ В
Введение
Общая теория систем(ОТС) – это научное направление, которое занимается разработкой философских,методологических, научно-теоретических и практических проблем, связанных санализом и синтезом систем. Это междисциплинарная наука, которая предназначенадля целостного познания окружающего мира.
Развитие ОТС предопределяетсяопытом всего человечества, начиная от античных времен. Причины ее возникновениясвязаны с многокачественностью, многомерностью, разнопорядковостью реальнойдействительности, а также с укрупнением и усложнением исследуемых объектов,потребностью перехода от простого аналитического подхода в исследовании ксистемному.
Общая теория систем — специально-научная и логико-методологическая концепция исследования объектов,представляющих собой системы. ОТС тесно связана с системным подходом и являетсяконкретизацией и логикометодологическим выражением его принципов и методов.
Основными задачами ОТСявляются изучение, типология, классификация систем, изучение системообразующихи системоразрушающих факторов, выявление общих законов и закономерностей структурыи функций систем.
Одной из самыхраспространенных систем моделирования является система общецелевого назначенияGPSS. В этой системе подход к описанию моделей функциональный, способпродвижения модельного времени – событийный, метод реализации квазипаралельностей– транзактный.
GPSS — GeneralPurposeSimulationSystem, то есть общецелевая система моделирования. Этосредство предоставляет пользователю возможность создавать и «испытывать»имитационные модели различных по своему физическому устройству и назначениюсистем. Необходимо только, чтобы решаемая с помощью моделирования задача моглабыть описана средствами теории систем массового обслуживания (СМО). Строгоговоря, под это определение подпадают объекты, процесс функционирования которыхможно представить в виде состояний и правил перехода из одного состояния вдругое, определяемых в дискретной пространственно-временной области.
Система массовогообслуживания — система, которая производит обслуживание какого-либопоступающего в неё потока заявок.
В теории системмассового обслуживания, обслуживаемый объект называют требованием. В общемслучае под требованием обычно понимают запрос на удовлетворение некоторойпотребности, например, разговор с абонентом, посадка самолета, покупка билета,получение материалов на складе.
Средства, обслуживающиетребования, называются обслуживающими устройствами или каналами обслуживания.
В СМО рассматриваютсятакие случаи, когда поступление требований происходит через случайныепромежутки времени, а продолжительность обслуживания требований не являетсяпостоянной, т.е. носит случайный характер. В силу этих причин одним из основныхметодов математического описания СМО является аппарат теории случайныхпроцессов.
Основной задачей теорииСМО является изучение режима функционирования обслуживающей системы иисследование явлений, возникающих в процессе обслуживания. Так, одной изхарактеристик обслуживающей системы является время пребывания требования вочереди. Очевидно, что это время можно сократить за счет увеличения количестваобслуживающих устройств. Однако каждое дополнительное устройство требуетопределенных материальных затрат, при этом увеличивается время бездействияобслуживающего устройства из-за отсутствия требований на обслуживание, чтотакже является негативным явлением. Следовательно, в теории СМО возникаютзадачи оптимизации: каким образом достичь определенного уровня обслуживания(максимального сокращения очереди или потерь требований) при минимальныхзатратах, связанных с простоем обслуживающих устройств.
1Анализ задания
1.1 Формулированиетребований к системе
Задачаанализа рассматривается как задача проверки того, обладает ли построеннаясистема заранее указанными свойствами.
Комплексзаранее указанных свойств, которыми должна обладать проектируемая система,подразделяется на два подытоживающих свойства, называемых работоспособностью иэффективностью.
Работоспособностьсистемы состоит в правильном выполнении заданных функций, т.е. в правильнойреализации заданного множества алгоритмов обработки информации.
Эффективностьсистемы заключается в ограниченности или минимальности разного рода затрат,связанных с изготовлением и применением.
Моделирование- один из наиболее распространенных методов исследования процессовфункционирования сложных систем. Известно достаточно большое количество методовпостроения математических моделей и средств реализации моделирующих алгоритмов.
Основнаязадача моделирования заключается в том, чтобы на момент запуска моделируемойсистемы и в течение всего времени ее эксплуатации можно было обеспечить:
- требуемуюфункциональность системы и степень адаптации к изменяющимся условиям еефункционирования;
- требуемуюпропускную способность системы;
- требуемоевремя реакции системы на запрос;
- безотказнуюработу системы в требуемом режиме, иными словами — готовность идоступность системы для обработки запросов пользователей;
- простотуэксплуатации и поддержки системы;
- необходимуюбезопасность.
Программныйпродукт GPSS является одним из наиболее популярных языков для имитационногомоделирования, в котором можно получить любые свойства моделируемого объекта,однако, чтобы описать с помощью него модель, необходимо затратить немалыеусилия. Для того чтобы упростить пользователю описание однотипной системы,можно написать программу, которая выполняет построение этой системы в видетекста на GPSS.
Поусловию задания, к системе должны предъявляться следующие требования:
- описаниясистем в терминах сетей массового обслуживания;
В терминах системмассового обслуживания описываются многие реальные системы: вычислительныесистемы, узлы сетей связи, магазины, производственные участки – любые системы,где возможны очереди и отказы в обслуживании.
В вычислительнойсистеме роль обслуживающего прибора играет ЭВМ, роль заявок — решаемые задачи.Источником заявок служат терминалы пользователей. Моментом выдачи заявкиявляется момент нажатия клавиши для подачи директивы о запуске задачи нарешение. Операционная системы ЭВМ исполняет роль диспетчера: определяеточередность решения задач. В роли ячеек буфера выступают ячейки памяти ЭВМ,хранящие сведения о задачах, требующих решения.
СМО представляет собойсовокупность конечного числа обслуживающих узлов, в которой циркулируют заявки,переходящие в соответствии с маршрутной матрицей из одного узла в другой. Узелвсегда является разомкнутой СМО. При этом отдельные СМО отображаютфункционально самостоятельные части реальной системы, связи между СМО — структурусистемы, а требования, циркулирующие по СМО, — составляющие материальныхпотоков (сообщения (пакеты) в коммуникационной сети, задания вмультипроцессорных системах, контейнеры грузопотоков и т.п.).
Теория массовогообслуживания связана с разработкой и анализом математических, т.е. абстрактных,моделей, которые описывают процесс обслуживания некоторых объектов, поступающихна вход обслуживающего прибора в виде некоторого потока, и образующего в общемслучае очередь на входе обслуживающего прибора.
- рассматриваютсясети замкнутые и разомкнутые;
Разомкнутая сеть – этотакая отрытая сеть, в которую заявки поступают из внешней среды и уходят послеобслуживания из сети во внешнюю среду. Другими словами, особенностьюразомкнутой СМО является наличие одного или нескольких независимых внешнихисточников, которые генерируют заявки, поступающие в сеть, независимо от того,сколько заявок уже находится в сети. В любой момент времени в разомкнутой СМОможет находиться произвольное число заявок (от 0 до Ґ).
В замкнутой СМОциркулирует фиксированное число заявок, а внешний независимый источникотсутствует. Исходя из физических соображений, в замкнутой СМО выбираетсявнешняя дуга, на которой отмечается псевдонулевая точка, относительно котороймогут измеряться временные характеристики.
- системадолжна обеспечивать ввод и анализ корректности параметров систем;
При вводе параметров,необходимых для реализации системы, проверяется их корректность и если параметрвведён неверно, то пользователя просят повторить ввод но уже нового параметра.
- системадолжна обеспечивать генерацию отчётов.
В системе моделированияGPSSW предусмотрен стандартный отчет, в котором выводятся результатымоделирования.
Стандартный отчетвключает в себя результаты моделирования системы, например такие, как:
- коэффициентиспользования канала обслуживания;
- средняядлина очереди;
- среднеевремя пребывания требования в очереди и ряд других.
1.2 Разработкаконцептуальной модели системы
Разработкаконцептуальной модели подразумевает в себе определение структуры моделируемойсистемы, свойства ее элементов и причинно-следственные связи, присущие этойсистеме.
Наэтапе построения концептуальной модели проводится разбиение системы наэлементы, допускающиу удобное математическое или алгоритмическое описание,определяются связи между элементами.
Вданном курсовом проекте рассматриваются различные вариации систем массовогообслуживания (СМО). СМО являются подклассом стохастических сетевых моделей(ССМ).
СМОсостоит:
- изобслуживающих узлов(используются только устройства);
- измаршрутных узлов(используются только вероятностные или вообще не используются).
СМОподразделяются на линейные и нелинейные. Сеть массового обслуживания являетсялинейной, если выполняется условие: интенсивность заявок на входе в любую СМОопределяется линеной суперпозицией потоков других СМО. Другими словами, недолжно быть дулирования или удаления элементов потоков.
Линейныесети масового обслуживания в свою очередь подразделяются на разомкнутые и замкнутые. Вразомкнутой СМО есть только одиночные генераторы. Взамкнутой СМОмогут быть только одиночные генераторы.
/>
Рисунок1.2.1 Модель замкнутой СМО
Взамкнутых СМО (рисунок1.2.1) обслуженные заявки в общем случае после некоторойвременной задержки, снова поступают на вход СМО.
Разомкнутыеи замкнутые СМО могут быть как однородными, так и неоднородными. В однородныхсетях может быть только один тип заявок. В неоднородных сетях соответственноможет быть несколько типов заявок.
СМОподразделяются так же на экспоненциальные и неэкспоненциальные.В экспоненциальныхсетях входные потоки Пуасоновские, законы распределения длительностиобслуживания в каждом устройстве экспоненциальные. В неэкспоненциальных сетяхмассового обслуживания входной закон или длительности обслуживания в каждомустройстве, или и то и другое распределены не по экспоненциальным законам.
Врамках выполнения курсовой работы ограничимся рассмотрением линейных замкнутыхи разомкнутых СМО. В них используются следующие узлы:
- генератор;
- вероятностныйузел;
- приёмник.
Вероятностныйузел определяет маршрут прохождения заявки, в зависимости от вероятностиперехода, заданной в матрице переходов.
Режимыперехода рассматриваются следующие:
- режимбезусловной передачи;
- режимстатистической передачи;
- режимBOTH;
- режимALL;
Сетьсчитается заданной, если задана структура сети и потоки заявок.
Структурасети определяется через задание количества узлов и матрицу вероятностейперехода между узлами.
Дляисточников (генераторов) заявок указываемзакон поступления заявок (входнойпоток):
- бета(Beta);
- биномиальное(Binomial);
- Вейбулла(Weibull);
- дискретно-равномерное(DiscreteUniform);
- гамма(Gamma);
- геометрическое(Geometric);
- Лапласа(Laplace);
- логистическое(Logistic);
- логлапласово(LogLaplace);
- логлогистическое(LogLogistic);
- логнормальное(LogNormal);
- нормальное(Normal);
- обратноеВейбулла (InverseWeibull);
- обратноеГаусса (InverseGaussian);
- отрицательноебиномиальное (NegativeBinomial);
- Парето(Pareto);
- ПирсонатипаV (Pearson Type V);
- ПирсонатипаVI (Pearson Type VI);
- Пуассона(Poisson);
- равномерное(Uniform);
- треугольное(Triangular);
- экспоненциальное(Exponential);
- экстремальногозначения A (ExtremeValue A);
- экстремальногозначения В (ExtremeValue В).
Приемник уничтожает заявки по одной.
Структурасоединения узлов задается с помощью матрицы переходов, размером N*N, где N –количество узлов в сети. Элемент матрицы показывает, с какой вероятностьюзаявка после обслуживания в одном устройстве перейдет к обслуживанию в другомустройстве.
Также необходимо указать количество заявок, которые полностью пройдут через сеть.
Дляупрощения реализации задания сперва смоделируем различные вариации СМО на GPSSWORLD и затем на основе полученного результата помтроим программу наMicrosoftVisualStudio C++.
Рассмотримследующие виды СМО:
- одноканальнаязамкнутая смо с одним устройством;
- одноканальнаязамкнутаясмо с несколькими устройствами;
- одноканальнаязамкнутая смо с несколькими устройствами;
- одноканальнаяразомкнутая смо с одним устройством;
- одноканальнаяразомкнутая смо с несколькими устройствами;
- одноканальнаяразомкнутая смо с обратной связью;
- одноканальнаяразомкнутая смо с обратными связями и несколькими устройствами;
- одноканальнаяразомкнутая смо с вероятностным узлом;
- одноканальнаяразомкнутая смо с двумя входными потоками;
- многоканальнаязамкнутая смо;
- многоканальнаяразомкнутая смо;
- многоканальнаяразомкнутая смо с несколькими устройствами.
2 Разработка имитационной модели
Приимитационном моделировании необходимо заменить исходный объект новым, в которомвоспроизведены все черты исходного объекта: состав объекта, информационныепотоки, управление.
Имитационноемоделирование – это способ получения с помощью ЭВМ статистических данных опроцессах, происходящих в моделируемом объекте.
Реализуемаясистема должна должна генерировать входной язык (GPSS) для системымоделирования GPSSWorld.
Входнойязык GPSS будет включать операторы (блоки), которые служат для описания модели,управляют редактором и режимом моделирования.
Текстнашей программы будит состоять только из управляющих операторов, которыеописывают блоки модели. Они приводят к определенному действию и влияют напроцесс моделирования.
Рассмотримуправляющие операторы, которые будем использовать для описания системы.
2.1 Операторыуправления модельным временем
Вразрабатываемой модели будем использовать только оператор START.
Форматоператора:START A, где А – значение счетчика завершения (количество заявок,которое должно пройти через сеть до завершения моделирования).
2.2Датчики или генераторы транзактов
Форматоператора:GENERATE A, B, C, D, E, где А – определяет время, через котороепоявляется новый транзакт, В – модификатор времени, через которое появляетсяновый транзакт.
ЕслиВ не вызов функции, то В задает разбежку генерируемых по равномерному законузначений.
С– время задержки первого транзакта.
D– предельное количество генерируемых заявок (по умолчанию бесконечность).
Е– приоритет всех генерируемых транзактов.
Вместопараметра А так же могут задаваться специальные встроенные функции GPSS.
2.3Для имитации обслуживания в устройстве используем оператор ADVANCE.
Форматоператора:ADVANCE A, В, гдеА – среднее время обслуживания заявки на устройстве,В – разбежка среднего времени обслуживания при равномерном обслуживании вустройстве (если отсутствует, то используется дискретный закон) .
2.4Операторы управления маршрутными узлами
Впрограмме оператор TRANSFER:TRANSFER А, В, где В – метка, А – вероятностьперехода по метке В.
2.5Операторы управления объектами сбора статистики
QUEUEA – войти в очередь А.
DEPARTA – выйти из очереди А.
Припрохождении транзакты не задерживаются. Эти операторы не влияют на логикуработы модели. Любой транзакт может войти во сколько угодно очередей безограничений.
2.6TERMINATE (Уничтожить, терминировать)
Служитдля удаления транзактов из модели по завершении их обработки. Производитподсчет выведенных из модели транзактов, уменьшая величину специальногосчетчика — счетчика завершений.
Формат:<TERMINATE [A]>, где: А — величина, на которую будет уменьшен счетчикзавершений.
2.7SEIZE (завладеть), RELEASE (освободить)
ОператорSEIZE, является парным с оператором RELEASE, использование их по одиночке недопустимо. Имена, записываемые в операнде А пары должны быть идентичны.Оператор служит приглашением ко входу в одно из устройств модели. Транзакт,подойдя к блоку SEIZE, пытается занять устройство, названное в операторе. Еслиустройство занято, транзакт ожидает освобождения устройства перед этимоператором. Перед оператором SEIZE может находиться любое количествотранзактов. При попадании первого транзакта на обслуживание в устройство,происходит переключение, осуществляемое программой, запрещающее вход вустройство до окончания обслуживания.
Формат:<SEIZE А>, где А — имя (или номер) устройства.
Функцияоператора RELEASE — моделировать освобождение устройства. Пройдя обслуживание воператоре ADVANCE, и исполнив, оператор RELEASE, транзакт переключаетпоименованное в операторе устройство из положения «занято» в положение«свободно» и разрешает вход в ADVANCE, первому из транзактов, ожидающих передоператором SEIZE.
Формат:<RELEASE А>, где А — имя (или номер) устройства.
2.8ENTER ( войти), LEAVE (отпустить)
Этапара операторов выполняет те же функции, что и SEIZE и RELEASE, но не дляустройств, а для STORAGE — «хранилищ», то есть для ресурсов, к которым можетобращаться более одного транзакта. Такие объекты могут быть полезны примоделировании, например, распараллеленного процесса: обработки потока деталейна нескольких одинаковых станках, выхода публики из театра через несколькодверей и т.д. Эти «хранилища», или устройства параллельной обработки, должныбыть предварительно описаны в программе при помощи оператора описания STORAGE(см. ниже). По логике своей работы связки операторов SEIZE – ADVANCE – RELEASE;ENTER- ADVANCE- LEAVE; абсолютно одинаковы, но употребляются для разныхобъектов.
2.9FUNCTION ( функционировать )
Используется для определения характера функции, связывающей независимую переменную с рядом зависимых величин. Эта связь может иметь непрерывный или дискретный вид. Кроме того функция может быть представлена в символьном виде, когда значение функции вычисляется из выражения, приводимого в списке. Формат FUNCTION имеет вид:
<label FUNCTION A,B,[C] основной формат
X1,Y1/X2,Y2/,…/Xn,Yn> точки функции
Label– ярлык употребляется в обязательном порядке и служит для идентификации функции .
А- не имеет значения по умолчанию, определяет независимую переменнуюфункции (аргумент), например, если используется равномерное распределениеи БСВ берётся с 3-го генератора, то запись будет иметь вид RN3(randomnumber). Операнд может кодироваться дополнительным выражением. Единственным ограничением является то, что аргумент не может прямо или косвенно ссылаться на функцию для которой он является независимой переменной.Значения функции могут задаваться числом с плавающей точкой.
B- не имеет значения по умолчанию, состоит из двух символов ( без пробела), первый из которых представляет собой обозначение типа функции,вида: C- непрерывная числовая, D – дискретная числовая, L - список числовых значений, E - дискретная символьная, M – список дискретных символов, S- селектор объектов; второй символ представляет собой целое число связанных пар значений функции, которые представляют собой точкифункции и приводятся во второй строке описания формата. Если используется символ S, то он уточняется операндом С, используемым только в этом случае .
С - по умолчанию равен 0, применяется для перечисления типов объектов, если используются объекты разных типов, то приводятся их символы, разделяемые запятой без пробелов.
Рассмотрим пример записи функции :
SERVTIME FUNCTION RN7,D5
2,4/.55,7.5/.7,10.5/.8,13.5/1,16.5
2.10STORAGE (Запомнить )
Используется для определения ёмкости одной или нескольких памятей. Исполнение STORAGE(впрочем, как и всех рассмотренных ) происходит только после успешного завершения процесса компиляции, при этом вводится в действие оговорённое число ресурсовSTORAGE. STORAGE в силу своей специфики должен располагаться в модуле описания, до того как началось движение транзактов, так как после компиляции программа последовательно исполняет все, стоящие до первого START. Формат STORAGE может быть представлен двумя способами :
<label STORAGE A >,
Label- не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции. Ярлык является идентификатором памяти, ёмкость которой определяется. При этом формате можно определить только одну память.
А- не имеет значения по умолчанию, отсутствие приводит к ошибке компиляции. Операнд определяет ёмкость памяти, т.е. число моделируемых устройств обслуживания. Необходимо иметь в виду, что в этом форматеможно использовать одну единицу ёмкости в заданный момент времени.
Приведём примеры записи:
1. SAM STORAGE 10,
2. 3 STORAGE 5.
В первом примере памяти SAM определяется ёмкость 10, во втором примере памяти за номером 3 определяется ёмкость 5.
Используя многоканальное обслуживание можно не определять STORAGE, в этом случае ёмкость по умолчанию практически равна бесконечности ( а именно,2147483647 ).
При записи во втором формате — <STORAGESname1,A/Sname2,B/Sname3,C… > — можно определять несколько памятей сразу. Определитель памяти представляет пары обозначений, разделённых запятой, между собой пары отделяются слешем. Вначале пишется символ памяти, а затем её имя –первый член пары, после запятой пишется операнд А, В, характеризующий ёмкость памяти второй член пары. Символ S может быть отделён от имени памяти символом $ или имя может быть включено в круглые скобки, памяти одинаковой ёмкости могут записываться через тире.
Рассмотримпример GPSS-ной модели и текст программы на языке GPSS, соответствующий этоймодели.
1 Представим модельграфически (рисунок 2.1)
/>
B1 B2 B3
/> /> /> /> /> /> /> <td/> /> />— генератор
-накопитель
— устройство
Рисунок 2.1
Опишемсеть аналитически.
Количествоузлов – 5.
1узел — для источника (генератора) заявок.Закон поступления заявок -равномерный;
2узел — обслуживающее устройство. Закон обслуживания – экспоненциальный;
3узел — обслуживающее устройство. Закон обслуживания – экспоненциальный;
4узел — обслуживающее устройство. Закон обслуживания – экспоненциальный;
5узел — приемник. Поглощает по 1 заявке.
Матрицапереходов для примера сети представлена на рисунке 2.2
- 1 2 3 4 5 1 1 2 1 3 0,9 0,1 4 0,9 0,1 5 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 и получим стандартный отчёт.
Вотчете собираются следующие статистические данные:
- STARTTIME – начальное значение времени моделирования;
- ENDTIME – конечное значение времени моделирование;
- 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) ивозвращает строку содержащую описание этой функции с уже заданнымипользователем параметрами.
- Метод stringfPEARSON6()задает параметры функции 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) записывается описаниемногоканального устройства, то есть его имя и количество каналов.
На втором этапеопределяется, на каком шаге программы пользователь желает получить статистику:нахождение транзакта в очереди перед ОУ, нахождение транзакта в ОУ, общеевремя обработки транзакта, а также возможен вариант без сбора статистики.
На третьем этапезаписывается оператор захвата многоканального устройства с названием этогоустройства и количеством захвачиваемых каналов.
На четвёртомэтапе происходит переход на генерацию текста оператора ADVANCE.
На пятом этапезаписывается оператор освобождения многоканального устройства с названием этогоустройства и количеством освобождаемых каналов.
- Метод SIZE возвращает строку содержащуюоператоры языка имитационного моделирования GPSS, описывающие одноканальное устройство.
На первом этапеопределяется, на каком шаге программы пользователь желает получить статистику:нахождение транзакта в очереди перед ОУ, нахождение транзакта в ОУ, общеевремя обработки транзакта, а также возможен вариант без сбора статистики.
На втором этапезаписывается оператор захвата одноканального устройства с названием этогоустройства.
На третьем этапепроисходит переход на генерацию текста оператора ADVANCE.
На четвертомэтапе записывается оператор освобождения одноканального устройства с названиемэтого устройства.
- Метод FUNCTION задаёт параметры оператора FUNCTION и возвращает строковое значениеэтого оператора с заданными пользователем значениями параметров.
В файл GPSStext.txtнапервом этапе записывается номер генератора случайного числа; на втором этапетип функции; на третьем число точек и их координаты.
- Метод Fstandartопределяет, какая стандартнаяфункция будут вызываться, то есть обращается в класс FuncStandart, и возвращает строку, содержащуюописание этой функции.
4.3Класс GPSSText
- Переменные oper, ukazat, matrixтипа vectorнаходящиеся в области private, определяют операторы принадлежащиеузлам, указатели на узлы, матрицу переходов от одного узла к другомусоответственно.
- Метод Matrix генерирует матрицу переходов отодного узла к другому, а также определяет, какие операторы принадлежат узлам.
На первом этапеопределяется оператор на соответствующем узле.
На втором этапев соответствии с номером узла, определяется, какая строка будет генерироватьсяв матрице.
Если узелсодержит генератор, одноканальное либо многоканальное устройство, то в столбец сномером узла, в который переходит дальше транзакт, записывается 1, в остальныестолбцы записывается 0.
Если узелвероятностный, то в столбцы с номерами узлов, на которые совершается переход,записывается соответствующая вероятность, в остальные столбцы записываютсянули.
Если узелявляется терминатором, то в соответствующую строку записываются все нули.
Причем, прикаждом описании узла, в вектор operзаписываетсяоператор, соответствующий узлу.
- Метод Programma окончательно генерирует текстпрограммы, написанной на языке имитационного моделирования GPSS.
На первом этапевызывается метод Matrix,который заполняет матрицу переходов и вектор операторов.
На втором этапеопределяются узлы, на которых будут стоять указатели.
На третьемгенерируется программа в соответствии с матрицей, операторами и указателями.
В концепрограммы выводится текст, подтверждающий корректное ее завершение, а такженазвание файла, хранящего текст программы, написанной на языке имитационногомоделирования GPSS.
5 ИСПЫТАНИЕ И ТЕСТИРОВАНИЕСИСТЕМЫ
Для испытания итестирования системы мы рассмотрели четыре контрольных модели.
С помощью программы,написанной на MicrosoftVisualStudioC++,мы получили GPSSтекст и сохранили его вфайлGPSStext.txt.
Запустивсгенерированную программув GPSSWorldмы получили отчёт.
Рассмотрим тестовыечетыре модели.
Модель 1(рисунок 5.1)
2
/>/>/>/>/>/>/>1
/>
Рисунок 5.1
Система включает в себядва узла:
1 узел – генератор спостоянным законом поступления заявок и с заданной задержкой первой заявки(транзакта).
2 узел – одноканальноеобслуживающее устройство с постоянным законом распределения времениобслуживания заявок.
Задана обратная связьна ОУ. Сбор статистики осуществляется перед ОУ.
Работа программы дляданной модели выглядит следующим образом:
Количествоузлов: 2
Введите оператор1 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 1
На какой узелидет: 2
Введите оператор2 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 2
На какой узелидет: 2
Промежутоквремени между появлениями транзактов:
1 — Постоянный;
2 — Случайный;
3 — Заданфункцией;
4 — Зависит отфункции;
5 — Не задан;
Ваш выбор:1
Время междупоявлениями транзактов: 23
Время задержкипоявления первого транзакта:
1 — задано;
2 — не задано;
Ваш выбор: 1
Время: 2
Предельное числотаранзактов:
1 — задано;
2 — не задано;
Ваш выбор: 2
Приоритеттранзактов:
1 — задан;
2 — не задан;
Ваш выбор: 2
Узел 2
Время задержкитранзакта:
1 — Постоянное;
2 — Случайное;
3 — Заданофункцией;
4 — Зависит отфункции;
Ваш выбор:1
Время задержки:24
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 1
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 4
#####################################################
## Работа программы закончена! ##
## Tекстпрограммы находится в файле GPSStext.txt! ##
#####################################################
Содержимоефайла“GPSStext.txt”:
GENERATE23,,2
U_2QUEUEQ_1
SEIZEFas_1
DEPARTQ_1
ADVANCE24
RELEASEFas_1
TRANSFER,U_2
Отчет:
GPSS World Simulation Report — Untitled Model 1.1.1
Monday, December 20, 2010 00:46:21
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480000.000 9 1 0
NAME VALUE
F_1 10001.000
Q_1 10000.000
U_2 2.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 20870 0 0
U_2 2 QUEUE 40869 20869 0
3 SEIZE 20000 0 0
4 DEPART 20000 0 0
5 ADVANCE 20000 1 0
6 RELEASE 19999 0 0
7 TRANSFER 19999 0 0
8 GENERATE 1000 0 0
9 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
F_1 20000 1.000 24.000 1 2564 0 0 0 20869
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
Q_1 20869 20869 40869 1 10434.196 122547.993 122550.991 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
2564 0 480002.000 2564 5 6
21871 0 480012.000 21871 0 1
21872 0 480480.000 21872 0 8
Модель 2 (рисунок 5.2)
1 2 3
/> /> /> /> /> /> /> /> /> />Рисунок 5.2
Система включает в себядва узла:
1 узел – генератор сослучайным законом поступления заявок.
2 узел – одноканальноеобслуживающее устройство сослучайным законом распределения времени обслуживаниязаявок. После, обслуживание заканчивается.
3 узел – терминатор.
Сбор статистикиосуществляется в ОУ.
Работа программы дляданной модели выглядит следующим образом:
Количествоузлов: 3
Введите оператор1 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 1
На какой узелидет: 2
Введите оператор2 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 2
На какой узелидет: 3
Введите оператор3 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 5
Промежутоквремени между появлениями транзактов:
1 — Постоянный;
2 — Случайный;
3 — Заданфункцией;
4 — Зависит отфункции;
5 — Не задан;
Ваш выбор:2
Среднее время междупоявлениями транзактов: 23
+/-: 3
Время задержкипоявления первого транзакта:
1 — задано;
2 — не задано;
Ваш выбор: 3
Введеноневерно!!!
Ваш выбор: 2
Предельное числотаранзактов:
1 — задано;
2 — не задано;
Ваш выбор: 2
Приоритеттранзактов:
1 — задан;
2 — не задан;
Ваш выбор: 2
Узел 2
Время задержкитранзакта:
1 — Постоянное;
2 — Случайное;
3 — Заданофункцией;
4 — Зависит отфункции;
Ваш выбор:2
Среднее времязадержки: 34
+/-: 4
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 2
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 4
Узел 3
Сколькотранзактов извлечь: 1
#####################################################
## Работа программы закончена! ##
## Tекстпрограммы находится в файле GPSStext.txt! ##
#####################################################
Содержимоефайла“GPSStext.txt”:
GENERATE23,3
SEIZEFas_1
QUEUEQ_1
ADVANCE34,4
DEPARTQ_1
RELEASEFas_1
TERMINATE1
Отчет:
GPSS World Simulation Report — Untitled Model 1.2.1
Monday,December 20, 2010 01:04:42
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 34037.787 7 1 0
NAME VALUE
F_1 10000.000
Q_1 10001.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1482 481 0
2 SEIZE 1001 1 0
3 QUEUE 1000 0 0
4 ADVANCE 1000 0 0
5 DEPART 1000 0 0
6 RELEASE 1000 0 0
7 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
F_1 1001 0.999 33.979 1 1001 0 0 0 481
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
Q_1 1 0 1000 0 0.999 34.013 34.013 0
CECXN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
1001 0 22969.240 1001 2 3
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1483 0 34058.351 1483 0 1
Модель3(рисунок 5.3)
/>
/>12 3 4
/> /> /> /> /> /> /> /> /> />Рисунок 5.3
Система включает в себядва узла:
1 узел – генератор сэкспоненциальным законом поступления заявок.
2 узел – одноканальноеобслуживающее устройство с пуассоновским законом распределения времениобслуживания заявок.
3 узел – вероятностный,с вероятностью 0.2 транзакт идет на ОУ, иначе обслуживание завершается.
4 узел – терминатор(приемник).
Сбор статистикиосуществляется перед ОУ и в ОУ.
Работа программы дляданной модели выглядит следующим образом:
Количествоузлов: 4
Введите оператор1 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальноеустройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 1
На какой узелидет: 2
Введите оператор2 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 2
На какой узелидет: 3
Введите оператор3 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 4
На какой узелидет (по возрастанию): 2
Вероятность: 0.2
Второй узел: 4
Введите оператор4 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 5
Промежутоквремени между появлениями транзактов:
1 — Постоянный;
2 — Случайный;
3 — Заданфункцией;
4 — Зависит отфункции;
5 — Не задан;
Ваш выбор:3
1 — Стандартнаяфункция;
2 — Пользовательская функция;
Ваш выбор: 1
1 — BETA(Stream,Min,Max,Shape1,Shape2);
2- BINOMIAL(Stream,TrialCount,Probability);
3- DUNIFORM(Stream,Min,Max);
4- EXPONENTIAL(Stream,Locate,Scale);
5- EXTVALA(Stream,Locate,Scale);
6- EXTVALB(Stream,Locate,Scale);/>
7- GAMMA(Stream,Locate,Scale,Shape);
8- GEOMETRIC(Stream,Probability);
9- INVGAUSS(Stream,Locate,Scale,Shape);
10- INVWEIBULL(Stream,Locate,Scale,Shape);
11- LAPLACE(Stream,Locate,Scale);
12- LOGISTIC(Stream,Locate,Scale);
13- LOGLAPLACE(Stream,Locate,Scale,Shape);
14- LOGLOGIS(Stream,Locate,Scale,Shape);
15- LOGNORMAL(Stream,Locate,Scale,Shape);
16- NEGBINOM(Stream,SuccessCount,Probability);
17- NORMAL(Stream,Mean,StdDev);
18- PARETO(Stream,Locate,Scale );
19- PEARSON5(Stream,Locate,Scale,Shape);
20- PEARSON6(Stream,Locate,Scale,Shape1,Shape2 );
21- POISSON(Stream,Mean);
22- TRIANGULAR(Stream,Min,Max,Mode);
23- UNIFORM(Stream,Min,Max );
24- WEIBULL(Stream,Locate,Scale,Shape );
Ваш выбор: 4
Stream (целое,больше либо равно 1): 1
Locate(вещественное): 0
Scale(положительное вещественное): 10
Время задержкипоявления первого транзакта:
1 — задано;
2 — не задано;
Ваш выбор: 2
Предельное числотаранзактов:
1 — задано;
2 — не задано;
Ваш выбор: 2
Приоритеттранзактов:
1 — задан;
2 — не задан;
Ваш выбор: 2
Узел 2
Время задержкитранзакта:
1 — Постоянное;
2 — Случайное;
3 — Заданофункцией;
4 — Зависит отфункции;
Ваш выбор:3
1 — Стандартнаяфункция;
2 — Пользовательская функция;
Вашвыбор:1
1- BETA(Stream,Min,Max,Shape1,Shape2);
2- BINOMIAL(Stream,TrialCount,Probability);
3- DUNIFORM(Stream,Min,Max);
4- EXPONENTIAL(Stream,Locate,Scale);
5- EXTVALA(Stream,Locate,Scale);
6- EXTVALB(Stream,Locate,Scale);
7- GAMMA(Stream,Locate,Scale,Shape);
8- GEOMETRIC(Stream,Probability);
9- INVGAUSS(Stream,Locate,Scale,Shape);
10- INVWEIBULL(Stream,Locate,Scale,Shape);
11- LAPLACE(Stream,Locate,Scale);
12- LOGISTIC(Stream,Locate,Scale);
13- LOGLAPLACE(Stream,Locate,Scale,Shape);
14- LOGLOGIS(Stream,Locate,Scale,Shape);
15- LOGNORMAL(Stream,Locate,Scale,Shape);
16- NEGBINOM(Stream,SuccessCount,Probability);
17- NORMAL(Stream,Mean,StdDev);
18- PARETO(Stream,Locate,Scale );
19- PEARSON5(Stream,Locate,Scale,Shape);
20- PEARSON6(Stream,Locate,Scale,Shape1,Shape2 );
21- POISSON(Stream,Mean);
22- TRIANGULAR(Stream,Min,Max,Mode);
23- UNIFORM(Stream,Min,Max );
24- WEIBULL(Stream,Locate,Scale,Shape );
Ваш выбор: 21
Stream (целое,больше либо равно 1): 2
Mean(положительное вещественное): 0.9
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 3
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 4
Узел 4
Сколькотранзактов извлечь: 1
#####################################################
## Работа программы закончена! ##
## Tекстпрограммы находится в файле GPSStext.txt!##
#####################################################
Содержимоефайла“GPSStext.txt”:
GENERATE(EXPONENTIAL(1,0,10))
U_2QUEUE Q_1
SEIZEFas_1
ADVANCE(POISSON(2,0.9))
DEPARTQ_1
RELEASEFas_1
TRANSFER0.2,U_4,U_2
U_4TERMINATE 1
Отчет:
GPSS World Simulation Report — Untitled Model 1.1.1
Monday, December 20, 2010 01:18:39
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 9645.033 8 1 0
NAME VALUE
F_1 10001.000
Q_1 10000.000
U_2 2.000
U_4 8.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1000 0 0
U_2 2 QUEUE 1218 0 0
3 SEIZE 1218 0 0
4 ADVANCE 1218 0 0
5 DEPART 1218 0 0
6 RELEASE 1218 0 0
7 TRANSFER 1218 0 0
U_4 8 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
F_1 1218 0.109 0.865 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
Q_1 5 0 1218 475 0.121 0.957 1.569 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1001 0 9665.050 1001 0 1
Модель 4 (рисунок 5.4)
3
/>
/>/>1 2 5
/>/>/>/> 4
/>
k>1
Рисунок 5.4
Система включает в себядва узла:
1 узел – генератор спостоянным законом поступления заявок.
2 узел — вероятностный,с вероятностью 0.3 транзакт идет на одноканальное ОУ, иначе на многоканальноеОУ.
3 узел – одноканальноеобслуживающее устройство с законом распределения времени обслуживания заявокзаданным пользовательской функцией. После, обслуживание завершается.
4 узел – многоканальноеобслуживающее устройство с постоянным законом распределения времениобслуживания заявок. После, обслуживание завершается.
5 узел – терминатор.
Сбор статистикиосуществляется перед многоканальным ОУ.
Работа программы дляданной модели выглядит следующим образом:
Количествоузлов:5
Введите оператор1 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Вашвыбор: 1
Накакойузелидет:2
Введите оператор2 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальноеустройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 4
На какой узелидет (по возрастанию): 3
Вероятность: 0.3
Второй узел: 4
Введите оператор3 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностныйузел;
5 — терминатор;
Ваш выбор: 2
Накакойузелидет:5
Введите оператор4 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 3
На какой узелидет: 5
Введите оператор5 узла:
1 — генератор;
2 — одноканальное устройство;
3 — многоканальное устройство;
4 — вероятностный узел;
5 — терминатор;
Ваш выбор: 5
Промежутоквремени между появлениями транзактов:
1 — Постоянный;
2 — Случайный;
3 — Заданфункцией;
4 — Зависит отфункции;
5 — Не задан;
Ваш выбор:1
Время междупоявлениями транзактов: 34
Время задержкипоявления первого транзакта:
1 — задано;
2 — не задано;
Ваш выбор: 2
Предельное числотаранзактов:
1 — задано;
2 — не задано;
Ваш выбор: 2
Приоритеттранзактов:
1 — задан;
2 — незадан;
Вашвыбор: 2
Узел 3
Время задержкитранзакта:
1 — Постоянное;
2 — Случайное;
3 — Заданофункцией;
4 — Зависит отфункции;
Ваш выбор:3
1 — Стандартнаяфункция;
2 — Пользовательская функция;
Ваш выбор: 2
Номергенератора(аргумент ф-ии): 1
Тип функции:
1 — Скусочно-линейной (непрерывной) аппроксимацией (С);
2 — Сступенчатой (дискретной) аппроксимацией (D);
3 — Табличное,точечное задание функции без аппроксимации (L);
4 — Заданиедискретной атрибутивной (E)
5 — Заданиетабличной атрибутивной (M)
Ваш выбор: 2
Число точек: 2
X[1]=0
Y[1]=1
X[2]=1
Y[2]=2
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Вашвыбор: 4
Узел 4
Число каналов: 5
Числозахвачиваемых каналов: 1
Время задержкитранзакта:
1 — Постоянное;
2 — Случайное;
3 — Заданофункцией;
4 — Зависит отфункции;
Ваш выбор:1
Время задержки:23
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Ваш выбор: 1
Сбор статистики:
1 — нахождение вочереди перед ОУ;
2 — нахождение вОУ;
3 — общее времяобработки транзакта (1+2);
4 — нетребуется;
Вашвыбор: 4
Узел 5
Сколькотранзактов извлечь: 1
#####################################################
## Работа программы закончена! ##
## Tекстпрограммы находится в файле GPSStext.txt!##
#####################################################
Содержимоефайла“GPSStext.txt”:
F_1FUNCTIONRN1,D2
0,1/1,2
St_1STORAGE 5
GENERATE34
TRANSFER0.3,U_4,U_3
U_3SEIZE Fas_1
ADVANCEFN$F_1
RELEASEFas_1
TRANSFER,U_5
U_4QUEUE Q_1
ENTERSt_1,1
DEPARTQ_1
ADVANCE23
LEAVESt_1,1
TRANSFER,U_5
U_5TERMINATE 1
Отчет:
GPSS World Simulation Report — Untitled Model 1.3.1
Monday, December 20, 2010 02:06:40
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 34023.000 13 1 1
NAME VALUE
FAS_1 10003.000
F_1 10000.000
Q_1 10002.000
ST_1 10001.000
U_3 3.000
U_4 7.000
U_5 13.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1000 0 0
2 TRANSFER 1000 0 0
U_3 3 SEIZE 298 0 0
4 ADVANCE 298 0 0
5 RELEASE 298 0 0
6 TRANSFER 298 0 0
U_4 7 QUEUE 702 0 0
8 ENTER 702 0 0
9 DEPART 702 0 0
10 ADVANCE 702 0 0
11 LEAVE 702 0 0
12 TRANSFER 702 0 0
U_5 13 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
FAS_1 298 0.018 2.000 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
Q_1 1 0 702 702 0.000 0.000 0.000 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
ST_1 5 5 0 1 702 1 0.475 0.095 0 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1001 0 34034.000 1001 0 1
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсового проекта, на языке высокого уровняС++ в средеMicrosoftVisualC++ была разработана программагенерации GPSSтекста.Возможностью данной программыявляется построения имитационной модели системы массового обслуживания.
На практике было выявлено, что использование данногоприложения сильно упрощает построение самой модели СМО, так как нетнеобходимости в знании операторов языка имитационного уровня GPSS.
Генерируемый текст легко перемещается в среду GPSSи пользователь имеет возможностьполучить готовый отчет, содержащий все необходимые параметры для анализаимитационной модели.
СПИСОК ЛИТЕРАТУРЫ
1. МуравьевГ.Л. Моделирование систем В 2 ч. Ч.1. Конспект лекций–Брест: БГТУ 2003
2. МорозА.И. Курс теории систем. Учебник для ВУЗов– Москва: Высшая школа 1987
3. АнтоновА.В. Системный анализ. Учебник для ВУЗов – Москва: Высшая школа 2004
4. КудрявцевЕ.М.GPSSWorld. Основыимитационного моделирования различных систем.Учебник для ВУЗов – Москва 2004
5. АлтаевА.А. Имитационное моделирование на языке GPSS.Методическое пособие – Улан- Удэ2002
6. ПетуховО.А., Морозов А.В., Петухова Е.О. Моделирование системное, имитационное,аналитическое. Учебное пособие – Санкт-Петербург 2008
7. НоренковИ.П., Федорук Е.В.Имитационное моделирование систем массового обслуживания.Методические указания – Москва 1999
8. КутузовО.И., Татарникова Т.М., Петров К.О. Распределенные информационные системыуправления. Учебное пособие – Санкт-Петербург 2000
ПриложениеА
1 Одноканальнаязамкнутая СМО с одним устройством
/>/>/>/>/> B1
/>
Рисунок1Условное графическое обозначениеодноканальной замкнутойСМО с одним устройством
Система включает: одноканальное устройство (В1).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – экспоненциальный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла B1 обратно на узел В1;
— из узла S2 на узел S4.
Время обслуживания заявок распределено по – экспоненциальному закону.
GENERATE 10
L1 ADVANCE (Exponential(1,0,10))
QUEUE OHER
SEIZE B1
DEPART OHER
ADVANCE (EXPONENTIAL(1,0,2.1))
RELEASE B1
TRANSFER ,L1
GENERATE 480
TERMINATE 1
START 1
2 Одноканальнаязамкнутая смо с несколькими устройствами />/>/>/>/>/>/>
/>/>/>/>/>В1 В2
/>
Рисунок2 Условное графическое обозначениеодноканальной замкнутой смо с несколькимиустройствами
Система включает: одноканальные устройства (B1, B2).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – экспоненциальный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла B1 на узел B2;
— из узла B2 обратно на узелB1.
Время обслуживания заявок распределено по – экспоненциальному закону.
GENERATE 10
L1 ADVANCE (Exponential(1,0,10))
QUEUE 1
SEIZE B1
DEPART 1
ADVANCE (EXPONENTIAL(1,0,2.1))
RELEASE B1
QUEUE 1
SEIZE B2
DEPART 1
ADVANCE (EXPONENTIAL(1,0,6))
RELEASE B2
TRANSFER ,L1
3 Одноканальнаяразомкнутая СМО с одним устройством
B1
/> /> /> /> /> /> /> /> /> />Рисунок3 Условное графическое обозначениеодноканальной разомкнутой смо с однимустройством
Система включает: одноканальное устройство (B1).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – постоянный.
В процессе обслуживания заявки поступают:
— на узел B1;
— после прохождения узла B1обслуживание завершается.
Время обслуживания заявок распределено по – случайному закону.
GENERATE 10
QUEUE 1
SEIZE B1
DEPART 1
ADVANCE 8,4
RELEASE B1
TERMINATE 1
START 10000
4 Одноканальнаяразомкнутая СМО с несколькими устройствами
B1 B2
/>/>/>/>/>/>/>/>/>/>/>
Рисунок4 Условное графическое обозначениеодноканальной разомкнутой смо с несколькимиустройствами
Системавключает: одноканальные устройства (B1, B2).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – случайный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла B1 на узел B2;
— после прохождения узла B2обслуживание завершается.
Время обслуживания заявок распределено по – случайному закону.
GENERATE 10,3
QUEUE 1
SEIZE B1
DEPART 1
ADVANCE 8,4
RELEASE B1
QUEUE 1
SEIZE B2
DEPART 1
ADVANCE 6,2
RELEASE B2
TERMINATE 1
START 10000
5 Одноканальнаяразомкнутая СМО с обратной связью
/> /> /> /> /> /> /> /> /> />/>B1
/>
Рисунок5 Условное графическое обозначениеодноканальной разомкнутой смо с обратнойсвязью
Система включает: одноканальное устройство (B1).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – случайный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла B1 с вероятностью 0,1 обратно на узел B1, с вероятностью 0,9обслуживание завершается.
Время обслуживания заявок распределено по – случайному закону.
GENERATE 10,3
QUEUE 1
L_1 SEIZE B1
ADVANCE 8,4
RELEASE B1
TRANSFER 0.9,L_2,L_1
L_2 TERMINATE 1
START 10000
6 Одноканальнаяразомкнутая СМО с обратными связями и несколькими устройствами
/>
/>B1 B2 B3
/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> <td/> /> /> /> /> /> /> /> /> /> /> />Рисунок6 Условное графическое обозначениеодноканальной разомкнутой смо с обратнымисвязями и несколькими устройствами
Система включает: одноканальные устройства (B1, B2, B3).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – постоянный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла B1 на узел B2;
— из узла В2 с вероятностью 0,9 обратно на узел В2, с вероятностью 0,1 наузел В3;
— из узла В3 с вероятностью 0,9 на узел В1, с вероятностью 0,1обслуживание завершается.
Время обслуживания заявок распределено по – экспоненциальному закону.
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
7 Одноканальнаяразомкнутая СМО с вероятностным узлом
В2
/>В1 В4
В3
Рисунок7 Условное графическое обозначениеодноканальной разомкнутой смо свероятностным узлом
Система включает: одноканальные устройства (B1, B2, B3, B4).
Система обслуживает входной процесс одного типа.
Закон поступления заявок – случайный.
В процессе обслуживания заявки поступают:
— на узел B1;
— из узла В1 с вероятностью 0,3 на узел В2, с вероятностью 0,7 на узелВ3;
— из узла В2 и узла В3 на узел В4;
— после прохождения узла В4 обслуживание завершается.
Время обслуживания заявок на распределено по – случайному закону.
GENERATE 10,3
QUEUE 1
SEIZE B1
DEPART 1
ADVANCE 8,4
RELEASE B1
TRANSFER 0.3,L_2,L_1
L_1 QUEUE 2
SEIZE B2
DEPART 2
ADVANCE 6,4
RELEASE B2
QUEUE 4
SEIZE B4
DEPART 4
ADVANCE 6,4
RELEASE B4
L_2 QUEUE 3
SEIZE B3
DEPART 3
ADVANCE 8,6
RELEASE B3
QUEUE 4
SEIZE B4
DEPART 4
ADVANCE 6,4
RELEASE B4
TERMINATE 1
START 10000
8 Одноканальнаяразомкнутая СМО с двумя входными потоками
/>
B1
Рисунок8 Условное графическое обозначениеодноканальной разомкнутой смо с двумявходными потоками
Система включает: одноканальное устройство (B1).
Система обслуживает входные процессы двух типов.
Закон поступления заявок на первом и на втором канале – случайный.
В процессе обслуживания заявки поступают:
— на узел B1;
— после прохождения узла B1обслуживание завершается.
Время обслуживания заявок распределено по – случайному закону.
GENERATE 30,2
QUEUE OHER1
SEIZE B1
DEPART OHER1
ADVANCE (Exponential(1,0,2.5))
RELEASE B1
TERMINATE
GENERATE 15,5.5
QUEUE OHER2
SEIZE B1
ADVANCE (Exponential(4,0,2.5))
DEPART OHER2
RELEASE B1
TERMINATE 1
START 1000
9 МногоканальнаязамкнутаяСМО
B1
/>
В2
Рисунок9Условное графическое обозначениемногоканальной замкнутой смо
Система включает: одноканальные устройства (B1, B2) и многоканальное устройство.
Система обслуживает входной процесс одного типа.
Закон поступления заявок – экспоненциальный.
В процессе обслуживания заявки поступают:
— на многоканальное устройство;
— с многоканального узел В1, если В1 занят, то на узел В2;
— из узла В1 и узла В2 на многоканальное;
Время обслуживания заявок на распределено по – экспоненциальному закону.
NAK STORAGE 3
GENERATE (Exponential(1,0,10))
L1 ADVANCE (Exponential(4,0,7))
ENTER NAK
TRANSFER BOTH,KAN1,KAN2
KAN1 SEIZE B1
QUEUE 1
ADVANCE (EXPONENTIAL(8,0,4))
RELEASE B1
DEPART 1
TRANSFER ,COME
KAN2 SEIZE B2
QUEUE 2
ADVANCE 1,0
RELEASE B2
DEPART 2
COME LEAVE NAK
ADVANCE (Exponential(1,0,2))
TRANSFER ,L1
GENERATE 480
TERMINATE 1
START 1
10 Многоканальная разомкнутая СМО
/> В1
B2
Рисунок10Условное графическое обозначение многоканальной разомкнутой смо
Система включает: одноканальные устройства (B1, B2) и многоканальное устройство.
Система обслуживает входной процесс одного типа.
Закон поступления заявок – экспоненциальный.
В процессе обслуживания заявки поступают:
— на многоканальное устройство;
— с многоканального на узел В1, если В1 занят, то на узел В2;
— после прохождения узла В1 и узла В23 обслуживание заканчивается;
Время обслуживания заявок на распределено по – экспоненциальному закону.
NAK STORAGE 3
GENERATE (Exponential(1,0,10))
ENTER NAK
TRANSFER BOTH,KAN1,KAN2
KAN1 SEIZE B1
QUEUE 1
ADVANCE (EXPONENTIAL(8,0,4))
RELEASE B1
DEPART 1
TRANSFER ,COME
KAN2 SEIZE B2
QUEUE 2
ADVANCE 1,0
RELEASE B2
DEPART 2
COME LEAVE NAK
ADVANCE (Exponential(1,0,2))
TERMINATE 1
START 1000
ПриложениеБ
2 Одноканальнаязамкнутая СМО с одним устройством
Полученныйотчёт:
GPSSWorld Simulation Report — Untitled Model 1.2.1
Wednesday, December 15, 2010 10:09:06
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 10 1 0
NAME VALUE
B1 10001.000
L1 2.000
OHER 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 47 0 0
L1 2 ADVANCE 232 1 0
3 QUEUE 231 45 0
4 SEIZE 186 0 0
5 DEPART 186 0 0
6 ADVANCE 186 1 0
7 RELEASE 185 0 0
8 TRANSFER 185 0 0
9 GENERATE 1 0 0
10 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 186 0.912 2.353 1 34 0 0 0 45
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
OHER 46 45 231 15 18.194 37.807 40.432 0
CECXN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
49 0 480.000 49 0 1
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
34 0 483.814 34 6 7
33 0 513.195 33 2 3
50 0 960.000 50 0 9
3 Одноканальнаязамкнутая СМО с несколькими устройствами
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.2.1
Friday, December 10, 2010 10:30:48
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 15 2 0
NAME VALUE
B1 10000.000
B2 10001.000
L1 2.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 48 0 0
L1 2 ADVANCE 115 2 0
3 QUEUE 113 0 0
4 SEIZE 113 0 0
5 DEPART 113 0 0
6 ADVANCE 113 1 0
7 RELEASE 112 0 0
8 QUEUE 112 44 0
9 SEIZE 68 0 0
10 DEPART 68 0 0
11 ADVANCE 68 1 0
12 RELEASE 67 0 0
13 TRANSFER 67 0 0
14 GENERATE 1 0 0
15 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 113 0.571 2.426 1 48 0 0 0 0
B2 68 0.909 6.419 1 8 0 0 0 44
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 45 44 225 47 19.896 42.444 53.651 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
8 0 480.784 8 11 12
48 0 480.880 48 6 7
49 0 485.117 49 2 3
29 0 489.126 29 2 3
50 0 490.000 50 0 1
51 0 960.000 51 0 14
4 Одноканальнаяразомкнутая СМО с одним устройством
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.3.1
Wednesday, December 15, 2010 10:19:02
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 100007.316 7 1 0
NAME VALUE
B1 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 10000 0 0
2 QUEUE 10000 0 0
3 SEIZE 10000 0 0
4 DEPART 10000 0 0
5 ADVANCE 10000 0 0
6 RELEASE 10000 0 0
7 TERMINATE 10000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 10000 0.800 8.002 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 1 0 10000 6937 0.041 0.408 1.331 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
10001 0 100010.000 10001 0 1
5 Одноканальнаяразомкнутая СМО с несколькими устройствами
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.4.1
Wednesday, December 15, 2010 10:21:47
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 99971.786 12 2 0
NAME VALUE
B1 10000.000
B2 10001.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 10001 0 0
2 QUEUE 10001 0 0
3 SEIZE 10001 0 0
4 DEPART 10001 0 0
5 ADVANCE 10001 1 0
6 RELEASE 10000 0 0
7 QUEUE 10000 0 0
8 SEIZE 10000 0 0
9 DEPART 10000 0 0
10 ADVANCE 10000 0 0
11 RELEASE 10000 0 0
12 TERMINATE 10000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 10001 0.798 7.973 1 10001 0 0 0 0
B2 10000 0.600 5.995 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 3 0 20001 15110 0.101 0.504 2.060 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
10001 0 99974.589 10001 5 6
10002 0 99975.330 10002 0 1
6 Одноканальнаяразомкнутая СМО с обратной связью
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.5.1
Wednesday, December 15, 2010 10:23:37
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 798179.384 7 1 0
NAME VALUE
B1 10000.000
L_1 3.000
L_2 7.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 79800 0 0
2 QUEUE 79800 32845 0
L_1 3 SEIZE 99679 1 0
4 ADVANCE 99678 0 0
5 RELEASE 99678 0 0
6 TRANSFER 99678 36954 0
L_2 7 TERMINATE 10000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 99679 1.000 8.007 1 46955 0 0 0 69799
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 79800 79800 79800 0 39916.720 399256.926 399256.926 0
CECXN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
46955 0 469374.841 46955 3 4
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
79801 0 798181.975 79801 0 1
7 Одноканальнаяразомкнутая СМО с обратными связями и несколькими устройствами
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.6.1
Wednesday, December 15, 2010 10:26:07
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 607511.412 19 3 0
NAME VALUE
B1 10000.000
B2 10001.000
B3 10002.000
L1 7.000
L2 13.000
L3 2.000
L4 19.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 60751 0 0
L3 2 QUEUE 69769 0 0
3 SEIZE 69769 0 0
4 DEPART 69769 0 0
5 ADVANCE 69769 0 0
6 RELEASE 69769 0 0
L1 7 QUEUE 161335 59750 0
8 SEIZE 101585 0 0
9 DEPART 101585 0 0
10 ADVANCE 101585 1 0
11 RELEASE 101584 0 0
12 TRANSFER 101584 0 0
L2 13 QUEUE 10018 0 0
14 SEIZE 10018 0 0
15 DEPART 10018 0 0
16 ADVANCE 10018 0 0
17 RELEASE 10018 0 0
18 TRANSFER 10018 0 0
L4 19 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 69769 0.242 2.109 1 0 0 0 0 0
B2 101585 1.000 5.980 1 38150 0 0 0 59750
B3 10018 0.166 10.062 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 59750 59750 241122 73236 29884.081 75293.505 108138.382 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
38150 0 607513.718 38150 10 11
60752 0 607520.000 60752 0 1
8 Одноканальнаяразомкнутая СМО с вероятностным узлом
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.7.1
Wednesday, December 15, 2010 10:34:47
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 100163.273 28 4 0
NAME VALUE
B1 10000.000
B2 10003.000
B3 10001.000
B4 10002.000
L_1 8.000
L_2 18.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 10002 0 0
2 QUEUE 10002 0 0
3 SEIZE 10002 0 0
4 DEPART 10002 0 0
5 ADVANCE 10002 0 0
6 RELEASE 10002 0 0
7 TRANSFER 10002 0 0
L_1 8 QUEUE 2975 0 0
9 SEIZE 2975 0 0
10 DEPART 2975 0 0
11 ADVANCE 2975 1 0
12 RELEASE 2974 0 0
13 QUEUE 2974 0 0
14 SEIZE 2974 0 0
15 DEPART 2974 0 0
16 ADVANCE 2974 0 0
17 RELEASE 2974 0 0
L_2 18 QUEUE 10001 0 0
19 SEIZE 10001 0 0
20 DEPART 10001 0 0
21 ADVANCE 10001 0 0
22 RELEASE 10001 0 0
23 QUEUE 10001 0 0
24 SEIZE 10001 1 0
25 DEPART 10000 0 0
26 ADVANCE 10000 0 0
27 RELEASE 10000 0 0
28 TERMINATE 10000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 10002 0.802 8.035 1 0 0 0 0 0
B3 10001 0.796 7.971 1 0 0 0 0 0
B4 12975 0.777 5.996 1 10001 0 0 0 0
B2 2975 0.179 6.032 1 10002 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 2 0 10002 6398 0.084 0.840 2.331 0
2 1 0 2975 2816 0.003 0.108 2.016 0
3 5 0 10001 3377 0.536 5.366 8.102 0
4 5 1 12975 5439 0.412 3.182 5.479 0
CECXN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE
10001 0 100144.295 10001 24 25
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
10003 0 100166.033 10003 0 1
10002 0 100168.677 10002 11 12
9 Одноканальнаяразомкнутая смо с двумя входными потоками
Полученныйотчёт:
GPSSWorld Simulation Report — Untitled Model 1.13.1
Wednesday, December 15, 2010 10:45:04
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 14938.999 14 1 0
NAME VALUE
B1 10001.000
OHER1 10002.000
OHER2 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 497 0 0
2 QUEUE 497 0 0
3 SEIZE 497 0 0
4 DEPART 497 0 0
5 ADVANCE 497 0 0
6 RELEASE 497 0 0
7 TERMINATE 497 0 0
8 GENERATE 1000 0 0
9 QUEUE 1000 0 0
10 SEIZE 1000 0 0
11 ADVANCE 1000 0 0
12 DEPART 1000 0 0
13 RELEASE 1000 0 0
14 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 1497 0.258 2.572 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
OHER2 2 0 1000 0 0.189 2.823 2.823 0
OHER1 1 0 497 427 0.015 0.450 3.193 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1499 0 14949.557 1499 0 8
1498 0 14957.992 1498 0 1
10 Многоканальная замкнутая смо
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.37.1
Wednesday, December 15, 2010 11:58:09
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 480.000 20 2 1
NAME VALUE
B1 10001.000
B2 10002.000
COME 16.000
KAN1 5.000
KAN2 11.000
L1 2.000
NAK 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 36 0 0
L1 2 ADVANCE 526 29 0
3 ENTER 497 0 0
4 TRANSFER 497 1 0
KAN1 5 SEIZE 96 0 0
6 QUEUE 96 0 0
7 ADVANCE 96 1 0
8 RELEASE 95 0 0
9 DEPART 95 0 0
10 TRANSFER 95 0 0
KAN2 11 SEIZE 400 0 0
12 QUEUE 400 0 0
13 ADVANCE 400 1 0
14 RELEASE 399 0 0
15 DEPART 399 0 0
COME 16 LEAVE 494 0 0
17 ADVANCE 494 4 0
18 TRANSFER 490 0 0
19 GENERATE 1 0 0
20 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 96 0.923 4.616 1 20 0 0 1 0
B2 400 0.832 0.998 1 8 0 0 1 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 1 1 96 0 0.923 4.616 4.616 0
2 1 1 400 0 0.832 0.998 0.998 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
NAK 3 0 0 3 497 1 2.489 0.830 0 18
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
8 0 480.824 8 13 14
30 0 480.990 30 17 18
25 0 481.107 25 17 18
36 0 481.248 36 2 3
26 0 481.450 26 2 3
35 0 482.385 35 2 3
16 0 482.428 16 2 3
27 0 482.811 27 17 18
10 0 483.213 10 17 18
12 0 483.510 12 2 3
20 0 484.129 20 7 8
38 0 484.447 38 0 1
31 0 485.206 31 2 3
34 0 487.010 34 2 3
32 0 488.225 32 2 3
21 0 489.152 21 2 3
15 0 493.694 15 2 3
6 0 498.098 6 2 3
39 0 960.000 39 0 19
11 Многоканальная разомкнутая смо
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.35.1
Wednesday, December 15, 2010 11:28:56
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 9865.175 17 2 1
NAME VALUE
B1 10001.000
B2 10002.000
COME 15.000
KAN1 4.000
KAN2 10.000
NAK 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1000 0 0
2 ENTER 1000 0 0
3 TRANSFER 1000 0 0
KAN1 4 SEIZE 712 0 0
5 QUEUE 712 0 0
6 ADVANCE 712 0 0
7 RELEASE 712 0 0
8 DEPART 712 0 0
9 TRANSFER 712 0 0
KAN2 10 SEIZE 288 0 0
11 QUEUE 288 0 0
12 ADVANCE 288 0 0
13 RELEASE 288 0 0
14 DEPART 288 0 0
COME 15 LEAVE 1000 0 0
16 ADVANCE 1000 0 0
17 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
B1 712 0.300 4.162 1 0 0 0 0 0
B2 288 0.029 1.000 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 1 0 712 0 0.300 4.162 4.162 0
2 1 0 288 0 0.029 1.000 1.000 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
NAK 3 3 0 3 1000 1 0.331 0.110 0 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1001 0 9906.107 1001 0 1
12 Многоканальная разомкнутая смо снесколькими устройствами
Полученныйотчёт:
GPSS World Simulation Report — Untitled Model 1.36.1
Wednesday, December 15, 2010 11:41:57
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 10288.629 27 4 1
NAME VALUE
B1 10003.000
B2 10004.000
CAN1 10001.000
CAN2 10002.000
COME 25.000
KAN1 4.000
KAN2 15.000
NAK 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1000 0 0
2 ENTER 1000 0 0
3 TRANSFER 1000 0 0
KAN1 4 SEIZE 646 0 0
5 QUEUE 646 0 0
6 ADVANCE 646 0 0
7 DEPART 646 0 0
8 RELEASE 646 0 0
9 QUEUE 646 0 0
10 SEIZE 646 0 0
11 DEPART 646 0 0
12 ADVANCE 646 0 0
13 RELEASE 646 0 0
14 TRANSFER 646 0 0
KAN2 15 SEIZE 354 0 0
16 QUEUE 354 0 0
17 ADVANCE 354 0 0
18 DEPART 354 0 0
19 RELEASE 354 0 0
20 QUEUE 354 0 0
21 SEIZE 354 0 0
22 DEPART 354 0 0
23 ADVANCE 354 0 0
24 RELEASE 354 0 0
COME 25 LEAVE 1000 0 0
26 ADVANCE 1000 0 0
27 TERMINATE 1000 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
CAN1 646 0.503 8.016 1 0 0 0 0 0
CAN2 354 0.341 9.913 1 0 0 0 0 0
B1 646 0.369 5.875 1 0 0 0 0 0
B2 354 0.275 7.982 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 1 0 646 0 0.503 8.016 8.016 0
2 1 0 646 597 0.007 0.111 1.461 0
3 1 0 354 0 0.341 9.913 9.913 0
4 1 0 354 334 0.002 0.065 1.146 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
NAK 3 3 0 3 1000 1 1.540 0.513 0 0
FECXN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1001 0 10298.607 1001 0 1
ПриложениеB
Листинг программы:
#include «stdafx.h»
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
ofstream file(«GPSStext.txt»);
class FuncStandart
{
public:
string fBETA()
{
float x;
ostringstream S;
cout<<«Stream (целое, большелибо равно 1): »;
cin>>x;
S<<"(BETA("<<x<<",";
cout<<«Min (вещественное, меньше чем Max): »;
cin>>x;
S<<x<<",";
cout<<«Max (вещественное, больше чемMin): »;
cin>>x;
S<<x<<",";
cout<<«Shape1 (положительноевещественное): »;
cin>>x;
S<<x<<",";
cout<<«Shape2 (положительноевещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fBINOMIAL()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<"(BINOMIAL("<<x<<",";
cout<<«TrialCount (положительное целое): »;
cin>>x;
S<<x<<",";
cout<<«Probability (вещественное от 0до 1): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fDUNIFORM()
{
float x;
ostringstream S;
cout<<«Strea m(целое, больше либо равно 1):»;
cin>>x;
S<<"(DUNIFORM("<<x<<",";
cout<<«Min (целое, меньше либо равно Max): »;
cin>>x;
S<<x<<",";
cout<<«Max (целое, больше либо равноMin): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string f_1()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<x<<",";
cout<<«Locate (вещественное): »;
cin>>x;
S<<x<<",";
cout<<«Scale (положительноевещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string f_2()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<x<<",";
cout<<«Locate (вещественное): »;
cin>>x;
S<<x<<",";
cout<<«Scale (положительноевещественное): »;
cin>>x;
S<<x<<",";
cout<<«Shape (положительноевещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fGEOMETRIC()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<"(GEOMETRIC("<<x<<",";
cout<<«Probability (вещественное от 0 до 1):»;
cin>>x;
S<<x<<"))";
return S.str();
}
string fNEGBINOM()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<"(NEGBINOM("<<x<<",";
cout<<«SuccessCount (положительное целое): »;
cin>>x;
S<<x<<",";
cout<<«Probability (вещественное от 0 до 1):»;
cin>>x;
S<<x<<"))";
return S.str();
}
string fNORMAL()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<"(NORMAL("<<x<<",";
cout<<«Mean (вещественное): »;
cin>>x;
S<<x<<",";
cout<<«StdDev (положительноевещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fPARETO()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1):»;
cin>>x;
S<<x<<",";
cout<<«Locate (положительноевещественное): »;
cin>>x;
S<<x<<",";
cout<<«Scale (положительноевещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fPEARSON6()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1): »;
cin>>x;
S<<"(PEARSON6("<<x<<",";
cout<<«Locate (вещественное): »;
cin>>x;
S<<x<<",";
cout<<«Scale (положительное вещественное): »;
cin>>x;
S<<x<<",";
cout<<«Shape1 (положительное вещественное):»;
cin>>x;
S<<x<<",";
cout<<«Shape2 (положительное вещественное):»;
cin>>x;
S<<x<<"))";
return S.str();
}
string fPOISSON()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1): »;
cin>>x;
S<<"(POISSON("<<x<<",";
cout<<«Mean (положительное вещественное): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fTRIANGULAR()
{
float x;
ostringstream S;
cout<<«Stream (целое, больше либо равно 1): »;
cin>>x;
S<<"(TRIANGULAR("<<x<<",";
cout<<«Min(вещественное, меньше чем Mode): »;
cin>>x;
S<<x<<",";
cout<<«Max(вещественное, болше чем Mode):»;
cin>>x;
S<<x<<",";
cout<<«Mode(вещественно больше Min и меньшеMax): »;
cin>>x;
S<<x<<"))";
return S.str();
}
string fUNIFORM()
{
float x;
ostringstream S;
cout<<«Stream(целое, больше либо равно 1): »;
cin>>x;
S<<"(UNIFORM("<<x<<",";
cout<<«Min(вещественное, меньше чем Max): »;
cin>>x;
S<<x<<",";
cout<<«Max(вещественное, болше чем Min):»;
cin>>x;
S<<x<<"))";
return S.str();
}
};
class GPSSOperatori:public FuncStandart
{
public:
int nF,nST,nFas,nQ;
string GENERATE()
{
int n,k,m,l;
float x,K,M,L;
ostringstream S;
S<<«GENERATE »;
M7:
cout<<«Промежуток времени междупоявлениями транзактов: \n»;
cout<<«1 — Постоянный;\n»;
cout<<«2 — Случайный;\n»;
cout<<«3 — Задан функцией;\n»;
cout<<«4 — Зависит отфункции;\n»;
cout<<«5 — Не задан;\n»;
M1:
cout<<«Ваш выбор:»;
cin>>n;
switch (n)
{
case 1:
cout<<«Время между появлениямитранзактов: »;
cin>>x;
S<<x;
break;
case 2:
cout<<«Среднее время междупоявлениями транзактов: »;
cin>>x;
S<<x<<",";
cout<<"+/-: ";
cin>>x;
S<<x;
break;
case 3:
cout<<«1 — Стандартнаяфункция;\n»;
cout<<«2 — Пользовательскаяфункция;\n»;
M2:
cout<<«Ваш выбор: »;
cin>>k;
switch (k)
{
case 1:
S<<FStand();
break;
case 2:
FUNCTION();
S<<«FN$F_»<<nF;
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M2;
break;
}
break;
case 4:
cout<<«Постоянное значение,зависящее от функции: »;
cin>>x;
S<<x<<",";
cout<<«Функция:\n»;
cout<<«1 — Стандартная функция;\n»;
cout<<«2 — Пользовательскаяфункция;\n»;
M3:
cout<<«Ваш выбор: »;
cin>>k;
switch (k)
{
case 1:
S<<FStand();
break;
case 2:
FUNCTION();
S<<«FN$F_»<<nF;
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M3;
break;
}
break;
case 5:
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M1;
break;
}
cout<<«Время задержки появленияпервого транзакта:\n»;
cout<<«1 — задано;\n»;
cout<<«2 — не задано;\n»;
M4:
cout<<«Ваш выбор: »;
cin>>k;
switch(k)
{
case 1:
cout<<«Время: »;
cin>>K;
break;
case 2: break;
default:
cout<<«ВВеденоневерно!!!\n»;
goto M4;
break;
}
cout<<«Предельное числотаранзактов:\n»;
cout<<«1 — задано;\n»;
cout<<«2 — не задано;\n»;
M5:
cout<<«Ваш выбор: »;
cin>>m;
switch(m)
{
case 1:
cout<<«Количество транзактов:»;
cin>>M;
break;
case 2: break;
default:
cout<<«ВВеденоневерно!!!\n»;
goto M5;
break;
}
cout<<«Приоритет транзактов:\n»;
cout<<«1 — задан;\n»;
cout<<«2 — не задан;\n»;
M6:
cout<<«Ваш выбор: »;
cin>>l;
switch(l)
{
case 1:
cout<<«Приоритет: »;
cin>>L;
break;
case 2: break;
default:
cout<<«ВВеденоневерно!!!\n»;
goto M6;
break;
}
if((k==1)||(m==1)||(l==1))
{
if(n%2==1) S<<",,";
else S<<",";
if((m==1)||(l==1))
{
if(k==1) S<<K<<",";
else S<<",";
if(l==1)
if(m==1)S<<M<<","<<L;
elseS<<","<<L;
else S<<M;
}
else S<<K;
}
else
if(n==5)
{
cout<<«ВВедено неверно!!!\n»;
goto M7;
}
S<<endl;
system(«cls»);
return S.str();
}
string ADVANCE()
{
int n,k;
float x;
ostringstream S;
S<<«ADVANCE »;
cout<<«Время задержки транзакта: \n»;
cout<<«1 — Постоянное;\n»;
cout<<«2 — Случайное;\n»;
cout<<«3 — Задано функцией;\n»;
cout<<«4 — Зависит отфункции;\n»;
M1:
cout<<«Ваш выбор:»;
cin>>n;
switch (n)
{
case 1:
cout<<«Время задержки:»;
cin>>x;
S<<x<<endl;
break;
case 2:
cout<<«Среднее время задержки:»;
cin>>x;
S<<x<<",";
cout<<"+/-: ";
cin>>x;
S<<x<<endl;
break;
case 3:
cout<<«1 — Стандартнаяфункция;\n»;
cout<<«2 — Пользовательскаяфункция;\n»;
M2:
cout<<«Ваш выбор: »;
cin>>k;
switch (k)
{
case 1:
S<<FStand()<<endl;
break;
case 2:
FUNCTION();
S<<«FN$F_»<<nF<<endl;
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M2;
break;
}
break;
case 4:
cout<<«Постоянное значение,зависящее от функции: »;
cin>>x;
S<<x<<",";
cout<<«Функция:\n»;
cout<<«1 — Стандартная функция;\n»;
cout<<«2 — Пользовательскаяфункция;\n»;
M3:
cout<<«Ваш выбор: »;
cin>>k;
switch (k)
{
case 1:
S<<FStand()<<endl;
break;
case 2:
FUNCTION();
S<<«FN$F_»<<nF<<endl;
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M3;
break;
}
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M1;
break;
}
return S.str();
}
string ENTER(int ukaz)
{
nST++;
int n,x;
ostringstream S,Enter,Advance,Buf;
if(ukaz!=0)S<<«U_»<<ukaz<<" ";
cout<<«Число каналов: »;
cin>>x;
file<<«St_»<<nST<<" STORAGE"<<x<<endl;
cout<<«Число захвачиваемых каналов: »;
cin>>x;
Enter<<«ENTERSt_»<<nST<<","<<x<<endl;
Advance<<ADVANCE();
M2:
cout<<«Сбор статистики:\n»;
cout<<«1 — нахождение в очереди перед ОУ;\n»;
cout<<«2 — нахождение в ОУ;\n»;
cout<<«3 — общее время обработкитранзакта (1+2);\n»;
cout<<«4 — не требуется;\n»;
M1:
cout<<«Ваш выбор: »;
cin>>n;
switch(n)
{
case 1:
nQ++;
Buf<<Enter.str();
Enter.str("");
Enter<<«QUEUEQ_»<<nQ<<endl<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 2:
nQ++;
Buf<<Advance.str();
Advance.str("");
Advance<<«QUEUEQ_»<<nQ<<endl<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 3:
nQ++;
Buf<<Enter.str();
Enter.str("");
Enter<<«QUEUEQ_»<<nQ<<endl<<Buf.str();
Buf.str("");
Buf<<Advance.str();
Advance.str("");
Advance<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 4:
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M1;
break;
}
S<<Enter.str()<<Advance.str()<<«LEAVESt_»<<nST<<","<<x<<endl;
system(«cls»);
return S.str();
}
string SEIZE(int ukaz)
{
nFas++;
int n;
ostringstream S,Seize,Advance,Buf;
if(ukaz!=0)S<<«U_»<<ukaz<<" ";
Seize<<«SEIZEF_»<<nFas<<endl;
Advance<<ADVANCE();
M2:
cout<<«Сбор статистики:\n»;
cout<<«1 — нахождение в очереди перед ОУ;\n»;
cout<<«2 — нахождение в ОУ;\n»;
cout<<«3 — общее время обработкитранзакта (1+2);\n»;
cout<<«4 — не требуется;\n»;
M1:
cout<<«Ваш выбор: »;
cin>>n;
switch(n)
{
case 1:
nQ++;
Buf<<Seize.str();
Seize.str("");
Seize<<«QUEUEQ_»<<nQ<<endl<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 2:
nQ++;
Buf<<Advance.str();
Advance.str("");
Advance<<«QUEUEQ_»<<nQ<<endl<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 3:
nQ++;
Buf<<Seize.str();
Seize.str("");
Seize<<«QUEUEQ_»<<nQ<<endl<<Buf.str();
Buf.str("");
Buf<<Advance.str();
Advance.str("");
Advance<<Buf.str()<<«DEPARTQ_»<<nQ<<endl;
Buf.str("");
goto M2;
break;
case 4:
break;
default:
cout<<«ВВедено неверно!!!\n»;
goto M1;
break;
}
S<<Seize.str()<<Advance.str()<<«RELEASEF_»<<nFas<<endl;
system(«cls»);
return S.str();
}
string TRANSFER(int ukaz,float ver,int uzel1,intuzel2)
{
ostringstream S;
if(ukaz!=0)S<<«U_»<<ukaz<<" ";
S<<«TRANSFER „<<ver<<“,U_»<<uzel2<<",U_"<<uzel1<<endl;
system(«cls»);
return S.str();
}
string TERMINATE(int ukaz)
{
int x;
ostringstream S;
if(ukaz!=0)S<<«U_»<<ukaz<<" ";
cout<<«Сколько тразактов извлечь: »;
cin>>x;
S<<«TERMINATE „<<x<<endl;
system(“cls»);
return S.str();
}
void FUNCTION()
{
nF++;
int n;
float x;
cout<<«Номер генератора(аргумент ф-ии): »;
cin>>n;
file<<«F_»<<nF<<"FUNCTION RN"<<n<<",";
cout<<«Тип функции:\n»;
cout<<«1 — С кусочно-линейной(непрерывной) аппроксимацией (С);\n»;
cout<<«2 — С ступенчатой (дискретной)аппроксимацией (D);\n»;
cout<<«3 — Табличное, точечное заданиефункции без аппроксимации (L);\n»;
cout<<«4 — Задание дискретнойатрибутивной (E)\n»;
cout<<«5 — Задание табличнойатрибутивной (M)\n»;
M1:
cout<<«Ваш выбор: »;
cin>>n;
switch (n)
{
case 1:file<<«C»;break;
case 2:file<<«D»;break;
case 3:file<<«L»;break;
case 4:file<<«E»;break;
case 5:file<<«M»;break;
default:
cout<<«ВВеденоневерно!!!\n»;
goto M1;
break;
}
cout<<«Число точек:»;
cin>>n;
file<<n<<endl;
for(int i=1;i<=n;i++)
{
cout<<«X[»<<i<<"]=";
cin>>x;
file<<x<<",";
cout<<«Y[»<<i<<"]=";
cin>>x;
file<<x;
if(i<n)
file<<"/";
}
file<<endl;
}
string FStand()
{
int n;
string S;
cout<<«1 — BETA(Stream,Min,Max,Shape1,Shape2);\n»;
cout<<«2 — BINOMIAL(Stream,TrialCount,Probability);\n»;
cout<<«3 — DUNIFORM(Stream,Min,Max);\n»;
cout<<«4 — EXPONENTIAL(Stream,Locate,Scale);\n»;
cout<<«5 — EXTVALA(Stream,Locate,Scale);\n»;
cout<<«6 — EXTVALB(Stream,Locate,Scale);\n»;
cout<<«7 — GAMMA(Stream,Locate,Scale,Shape);\n»;
cout<<«8 — GEOMETRIC(Stream,Probability);\n»;
cout<<«9 — INVGAUSS(Stream,Locate,Scale,Shape);\n»;
cout<<«10 — INVWEIBULL(Stream,Locate,Scale,Shape);\n»;
cout<<«11 — LAPLACE(Stream,Locate,Scale);\n»;
cout<<«12 — LOGISTIC(Stream,Locate,Scale);\n»;
cout<<«13 — LOGLAPLACE(Stream,Locate,Scale,Shape);\n»;
cout<<«14 — LOGLOGIS(Stream,Locate,Scale,Shape);\n»;
cout<<«15 — LOGNORMAL(Stream,Locate,Scale,Shape);\n»;
cout<<«16 — NEGBINOM(Stream,SuccessCount,Probability);\n»;
cout<<«17 — NORMAL(Stream,Mean,StdDev);\n»;
cout<<«18 — PARETO(Stream,Locate,Scale );\n»;
cout<<«19 — PEARSON5(Stream,Locate,Scale,Shape);\n»;
cout<<«20 — PEARSON6(Stream,Locate,Scale,Shape1,Shape2 );\n»;
cout<<«21 — POISSON(Stream,Mean);\n»;
cout<<«22 — TRIANGULAR(Stream,Min,Max,Mode);\n»;
cout<<«23 — UNIFORM(Stream,Min,Max );\n»;
cout<<«24 — WEIBULL(Stream,Locate,Scale,Shape );\n»;
M1:
cout<<«Ваш выбор: »;
cin>>n;
switch(n)
{
case 1:return fBETA();break;
case 2:return fBINOMIAL();break;
case 3:return fDUNIFORM();break;
case 4:returnS="(EXPONENTIAL("+f_1();break;
case 5:returnS="(EXTVALA("+f_1();break;
case 6:returnS="(EXTVALB("+f_1();break;
case 7:returnS="(GAMMA("+f_2();break;
case 8:return fGEOMETRIC();break;
case 9:returnS="(INVGAUSS("+f_2();break;
case 10:returnS="(INVWEIBULL("+f_2();break;
case 11:returnS="(LAPLACE("+f_1();break;
case 12:returnS="(LOGISTIC("+f_1();break;
case 13:returnS="(LOGLAPLACE("+f_2();break;
case 14:returnS="(LOGLOGIS("+f_2();break;
case 15:returnS="(LOGNORMAL("+f_2();break;
case 16:return fNEGBINOM();break;
case 17:return fNORMAL();break;
case 18:return fPARETO();break;
case 19:returnS="(PEARSON5("+f_2();break;
case 20:return fPEARSON6();break;
case 21:return fPOISSON();break;
case 22:return fTRIANGULAR();break;
case 23:return fUNIFORM();break;
case 24:returnS="(WEIBULL("+f_2();break;
default:
cout<<«ВВеденоневерно!!!\n»;
goto M1;
break;
}
}
};
class GPSSText:public GPSSOperatori
{
vector<int> oper,ukazat;
vector<float> matrix;
public:
GPSSText()
{
nF=0;nST=0;nFas=0;nQ=0;
}
void Matrix()
{
int k,n,m,uzel;
float x;
cout<<«Количество узлов: »;
cin>>uzel;
system(«cls»);
for(int i=1;i<=uzel;i++)
{
M1:
cout<<«Введите оператор»<<i<<" узла:\n";
cout<<«1 — генератор;\n»;
cout<<«2 — одноканальноеустройство;\n»;
cout<<«3 — многоканальноеустройство;\n»;
cout<<«4 — вероятностныйузел;\n»;
cout<<«5 — терминатор;\n»;
cout<<«Ваш выбор: »;
cin>>n;
if((n<1)&&(n>5))
{
cout<<«ВВеденоневерно!!!\n»;
goto M1;
}
oper.push_back(n);
if(n==4)
{
M2:
cout<<«На какой узел идет(по возрастанию): »;
cin>>m;
if(m>uzel)
{
cout<<«ВВеденоневерно!!!\n»;
goto M2;
}
for(int i=1;i<m;i++)matrix.push_back(0);
cout<<«Вероятность: »;
cin>>x;
matrix.push_back(x);
M3:
cout<<«Второй узел:»;
cin>>k;
if(k>uzel)
{
cout<<«ВВеденоневерно!!!\n»;
goto M3;
}
for(int i=m+1;i<k;i++)matrix.push_back(0);
matrix.push_back(1-x);
for(int i=k+1;i<=uzel;i++)matrix.push_back(0);
}
else
if(n==5)
for(int i=0;i<uzel;i++)matrix.push_back(0);
else
{
M4:
cout<<«На какой узел идет:»;
cin>>m;
if(m>uzel)
{
cout<<«ВВеденоневерно!!!\n»;
goto M4;
}
for(int i=1;i<m;i++)matrix.push_back(0);
matrix.push_back(1);
for(int i=m+1;i<=uzel;i++)matrix.push_back(0);
}
system(«cls»);
}
}
void Programma()
{
int n,uzel1=0,uzel2=0,uzel;
float ver;
bool b;
ostringstream Proga;
Matrix();
uzel=oper.size();
for(int i=0;i<uzel;i++)ukazat.push_back(0);
Proga<<GENERATE();
for(int i=0;i<uzel;i++)
{
if(matrix[(uzel-1)*uzel+i]>0)
ukazat[i]=i+1;
if(ukazat[i]==0)
for(int j=i;j<uzel;j++)
if(matrix[j*uzel+i]>0)
ukazat[i]=i+1;
}
for(int i=1;i<uzel;i++)
{
cout<<«Узел „<<i+1<<endl;
switch(oper[i])
{
case 1:
break;
case 2:
Proga<<SEIZE(ukazat[i]);
break;
case 3:
Proga<<ENTER(ukazat[i]);
break;
case 4:
uzel1=0;
for(int j=0;j<uzel;j++)
if(matrix[i*uzel+j]>0)
if(uzel1==0)
{
uzel1=j+1;
ver=matrix[i*uzel+j];
}
else uzel2=j+1;
ukazat[uzel1-1]=uzel1;
ukazat[uzel2-1]=uzel2;
Proga<<TRANSFER(ukazat[i],ver,uzel1,uzel2);
break;
case 5:
Proga<<TERMINATE(ukazat[i]);
break;
default: break;
}
if(oper[i]!=5)
{
n=0;
for(int j=0;j<uzel;j++)
if((matrix[i*uzel+j]>0))
for(intl=0;l<uzel;l++)
{
if((matrix[l*uzel+j]>0)&&(oper[l]!=4))
n++;
if(n>1)
{
Proga<<“TRANSFER,U_»<<j+1<<endl;
ukazat[j]=j+1;
n=0;
}
}
}
}
file<<Proga.str();
file.close();
cout<<"\n\n\n\n\n\n\n\n\t#####################################################\n";
cout<<"\t## Работа программызакончена! ##\n";
cout<<"\t## Tекст программы находитсяв файле GPSStext.txt! ##\n";
cout<<"\t#####################################################\n";
}
};
int main()
{
setlocale(LC_ALL,"");
GPSSText T;
T.Programma();
system(«pause»);
return 0;
}