Реферат: Разработка средств моделирования систем

Министерство образования Республики Беларусь

Учреждениеобразования

«Брестскийгосударственный технический университет»

Кафедра«Интеллектуальные информационные технологии»

 

ПОЯСНИТЕЛЬНАЯЗАПИСКА

ккурсовому проекту по дисциплине:

«Общаятеория систем»

натему:

«Разработкасредств моделирования систем»

КП.ИИ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

Одноканальнаяразомкнутая СМО с вероятностным узлом

 

Полученныйотчёт:

             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;

}

еще рефераты
Еще работы по информатике, программированию