Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мод сис / V.Boev-GPSSvsAnyLogic

.pdf
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
9.01 Mб
Скачать

устройства — блоки SEIZE и RELEASE, для имитации буфера —

QUEUE и DEPART, обработки запросов — ADVANCE.

В модели должны быть следующие элементы: задание исходных данных; описание арифметических выражений;

сегмент имитации поступления и обработки запросов; сегмент задания времени моделирования и расчета результатов

моделирования.

Серверу дадим имя Server. Для вывода из модели транзактов, имитирующих обработанные и потерянные запросы, используем блоки TERMINATE с метками ObrZap и PotZap соответственно. Для счета количества всех запросов используем метку KolZap.

Выберем масштаб: 1 единице масштабного времени соответствует 1 с. Так как среднее значение интервалов поступления запросов T1 2 мин , то теперь это будет 120 ед. мод. Времени.

Рассчитаем количество прогонов, которые нужно выполнить в каждом наблюдении, т. е. проведем так называемое тактическое планирование эксперимента. Пусть результаты моделирования (вероятность обработки запросов) нужно получить с доверительной

вероятностью

0,95 и точностью

0,01. Расчет проведем для

худшего случая, т. е. при вероятности

p 0,5 , так как до экспери-

мента p неизвестно:

 

 

 

 

 

 

N t

2 p 1 p

1,96

2 0,5 1 0,5

 

3,8416

0, 25

9604.

 

2

 

0, 012

 

0, 0001

 

 

 

 

 

1.1.1.3. Блок-диаграмма модели

Построим блок-диаграмму модели для решения прямой задачи, т. е. сегмент имитации поступления и обработки запросов и сегмент задания времени моделирования и расчета результатов моделирования (рис. 1.1).

Блок-диаграмма представляет собой набор стандартных блоков. Она строится так. Из множества блоков выбирают нужные, и далее выстраивают их в диаграмму для того, чтобы в процессе функционирования модели они как бы взаимодействовали друг с другом. Диаграмма сопровождается необходимыми комментариями. Использование блоков при построении моделей зависит от логических схем работы реальных систем, моделируемых на ЭВМ.

Теперь приступим к написанию программы модели.

11

Рис. 1.1. Блок-диаграмма модели

1.1.1.4. Программа модели

Для задания исходных данных используем переменные пользователя. Они задаются с помощью команды EQU. Переменным пользователя даны такие же имена, как и в постановке задачи, но добавлен знак подчеркивания. Например, T1_, S1_ и т. д. Время моделирования зададим переменной пользователя VrMod.

Арифметическая переменная для расчета времени обработки VrObr запроса на сервере:

12

VrObr VARIABLE (Normal(2,(S1_#Koef),(S2_#Koef))))/Q_

Переменная пользователя Koef введена для удобства изменения (пропорционального изменения) характеристик нормального закона распределения, которому подчиняется вычислительная сложность запросов. Особенно целесообразно использование этой переменной при проведении экспериментов.

Вероятность обработки VerObr запросов на сервере будем определять как отношение количества обработанных N$ObrZap запросов к количеству всего поступивших N$KolZap запросов:

VerObr VARIABLE N$ObrZap/N$KolZap

В арифметическом выражении VerObr, например, N$ObrZap — системный числовой атрибут — количество транзактов, вошедших в блок с меткой ObrZap, а N$KolZap — количество транзактов, вошедших в блок с меткой KolZap.

Количество обработанных запросов определяется арифметическим выражением:

Res VARIABLE INT(N$ObrZap/X$Prog)

Все необходимое для написания программы модели имеется. Напишем программу модели для решения прямой задачи.

;Обработка запросов сервером. Прямая задача

;Задание исходных данных

T1_

EQU

120

; Средний интервал поступления запросов, с

S1_

EQU

60000000

; Среднее значение вычислительной сложно-

сти запросов, оп

 

 

S2_

EQU

200000

; Стандартное отклонение вычислительной

сложности запросов, оп

 

Q_

EQU

600000

; Средняя производительность сервера, оп/с

Emk

EQU

5

; Ёмкость входного буфера

Koef

EQU

1

; Коэффициент изменения характеристик

нормального распределения

 

VrObr

VARIABLE

(Normal(9,(S1_#Koef),(S2_#Koef)))/Q_

VerObr

VARIABLE

N$ObrZap/N$KolZap

 

Res

VARIABLE

INT(N$ObrZap/X$Prog)

VrMod

EQU 3600

; Время моделирования, 1 ед. мод. времени = 1 с.

; Сегмент имитации обработки запросов

 

 

GENERATE (Exponential(2,0,T1_))

; Источник запросов

KolZap

TEST L

Q$Server,Emk,PotZap

; Занят ли буфер?

 

QUEUE

Server ; Встать в очередь к серверу

13

 

SEIZE

Server

; Занять сервер

 

DEPART

Server

; Покинуть очередь к серверу

 

ADVANCE

V$VrObr ; Имитация обработки запроса

 

SAVEVALUE SumTime+,M1; Время обработки всех запросов

 

RELEASE

Server

; Освободить сервер

ObrZap

TERMINATE

; Обработанные запросы

PotZap

TERMINATE

; Потерянные запросы

; Сегмент задания времени моделирования и расчета результатов

 

GENERATE

 

VrMod

 

 

TEST L

 

X$Prog,TG1,Met1

; Если X$Prog < TG1,

 

SAVEVALUE

Prog,TG1

; то X$Prog = TG1

Met1

TEST E

 

TG1,1,Met2

; Если TG1 = 1, то

 

SAVEVALUE

VerObr,V$VerObr

; расчет и сохранение

в ячейке VerObr вероятности обработки запросов

 

 

SAVEVALUE

Res,V$Res ; числа обработанных запросов

 

SAVEVALUE

TimeMean,(X$SumTime/N$ObrZap)

Met2

TERMINATE

1

 

 

START

9604

; Количество прогонов модели

При расчете количества обработанных запросов Res в арифметическом выражении N$ObrZap/X$Prog используется число прогонов. В арифметическом выражении указано не явное число прогонов, а в виде содержимого ячейки X$Prog. Число прогонов заносится предварительно в эту ячейку по завершении первого прогона модели, но до того момента, когда из счетчика завершений TG1 будет вычтена первая единица. В этом случае арифметическое выражение не зависит от числа прогонов, которое может меняться на различных этапах создания и эксплуатации модели, в том числе и в зависимости от исходных данных, а также от точности и достоверности результатов моделирования. Поскольку количество обработанных запросов не может быть дробным числом, то для получения целого числа, записываемого в ячейку Res, используется процедура INT из встроенной библиотеки.

Среднее время X$TimeMean обработки одного запроса определяется как отношение суммарного времени X$SumTime к количеству обработанных запросов N$ObrZap. В данной модели можно определять X$TimeMean как сумму средних времен обработки одного транзакта на сервере и среднего времени задержки в очереди.

Для уменьшения машинного времени расчет искомых показателей производится не после каждого прогона, а после завершения последнего прогона, т. е. когда содержимое счетчика завершений будет равно единице (TG1 = 1).

14

1.1.1.5. Ввод текста программы модели, исправление ошибок

ипроведение моделирования

1.Запустите GPSS World.

2.Закройте окно напоминания о необходимости обновления «Заметок». Откроется главное меню.

3.Для ввода текста GPSS World имеет текстовый редактор. Откройте окно текстового редактора. Для этого выберите в меню File

/New и в появившемся меню выберите Model. Нажмите Ok.

4.Наберите текст программы модели, т. е. создайте объект «Модель». При вводе текста следует использовать клавишу [Tab]. Например, после набора Т1_ нужно нажать клавишу [Tab]. Интервалы табуляции установлены по умолчанию.

5.После ввода программы модели создайте объект «Процесс моделирования», представляющий собой оттранслированный объект «Модель». Для трансляции выберите Command / Create Simulation. По этой команде транслятор GPSS проверяет программу модели на наличие синтаксических ошибок.

6.При наличии синтаксических ошибок система в окне JOURNAL выдаст список сообщений об ошибках трансляции. Перейдите к п. 7. При отсутствии ошибок в окне JOURNAL появится со-

общение Model Translation Begun. Ready. Перейдите к п. 9.

7.Исправьте ошибки. Для поиска ошибок в тексте программы модели и их исправления используйте команду Search / Next Error, предварительно перейдя из окна JOURNAL в текст программы модели. При первом выполнении этой команды курсор мыши помещается в строке текста модели с ошибкой. После исправления первой ошибки вновь используйте команду Search / Next Error и т.д. столько раз, сколько ошибок в тексте программы.

8.После исправления ошибок перейдите к п.5.

9.Сохраните модель. Для этого выберите в главном меню File /

Save As. Дайте модели имя Модель процессов изготовления из-

делий и нажмите Ok.

10.Откликом в данной модели является вероятность обработки запросов сервером. Ранее вы рассчитали количество прогонов мо-

дели для худшего случая при точности

0,01, и доверительной

вероятности

0,95 : N = 9604.

 

11. Запустите модель. Для этого в главном меню выберите Command / Start и в диалоговом окне вместо 1 наберите 9604. Нажмите Ok.

15

12.При наличии логических ошибок для их поиска в тексте программы модели и исправления используйте команду Search / Goto Line столько раз, сколько ошибок указано в окне JOURNAL. Там же (в окне JOURNAL) указаны номера строк с ошибками.

13.При отсутствии логических ошибок в модели по окончании еѐ работы система GPSS World автоматически создает стандартный отчет, который появится в окне Report. В окне будут содержаться следующие данные:

об именах объектов модели; блоках модели; ОКУ и МКУ; очередях;

сохраняемых величинах.

В результате решения прямой задачи получим, что за один час

сервером будет обработано N 29 запросов, а вероятность обработки составит VerObr 0,97 . Если не использовать процедуру INT — выделения целого числа с отбрасыванием дробной части, будет обработано 29,161 запроса. Среднее время обработки одного запроса составит TimeMean =255,262.

1.1.1.6. Дисперсионный анализ (отсеивающий эксперимент)

Сущность этого эксперимента состоит в проведении многофакторного дисперсионного анализа с целью выявления степени влияния различных факторов и их комбинаций (взаимодействий) на значение целевой функции (функции отклика, представленной в виде уравнения регрессии).

Для каждого фактора необходимо выбрать два уровня — нижний и верхний. Рекомендуется выбирать уровни, значительно отстоящие друг от друга. Это необходимо для получения также значительно отличающихся откликов.

В условиях прямой задачи требуется исследовать зависимость вероятности обработки запросов от трех факторов, например, при следующих их минимальных и максимальных значениях

(табл. 1.1):

 

 

 

Таблица 1.1

 

 

 

 

 

Уровни

 

Факторы

 

 

 

 

 

 

факторов

 

 

 

 

T1_, с

Koef

Q_, оп/c

 

 

 

Нижний

60

0.5

300000

 

Верхний

180

1.5

700000

 

16

Для проведения дисперсионного анализа нужно воспользоваться созданным в п. 1.1.1.4 объектом «Модель». В программе модели удалите последнюю строку.

Откройте модель Прямая задача. Выберите Edit / Insert Experiment / Screening … (Правка / Вставить эксперимент / Отсеивающий …).

Откроется диалоговое окно Screening Experiment Generator

(Генератор отсеивающего эксперимента) (рис. 1.2).

Приступите к заполнению полей диалогового окна.

В поля Experiment Name (Имя эксперимента) и Run Procedure Name (Имя процедуры запуска) введите, например,

Dis_Server и Dis_Server_Run соответственно (рис. 1.3).

Имена эксперименту и процедуре запуска эксперимента даѐт пользователь.

Дальше расположена группа полей Factors (Факторы). В рассматриваемом примере определяется вероятность обработки запросов, поступающих на сервер. Факторы, влияние которых необходимо исследовать, были определены нами ранее (см. табл. 1.1).

Рис. 1.2. Диалоговое окно (незаполненное) Screening Experiment Generator (Генератор отсеивающего эксперимента)

17

Рис. 1.3. Диалоговое окно (заполненное) Screening Experiment Generator (Генератор отсеивающего эксперимента)

В GPSS World максимальное количество факторов, влияние которых на функцию отклика можно исследовать посредством дисперсионного анализа, равно шести.

Введите ранее выбранные факторы, начиная с фактора А. В по-

ле Name (User Variable) (Имя (Переменная пользователя)) вве-

дите имя фактора, в поля Value1 и Value2 — его нижний и верхний уровни соответственно. После ввода всех факторов для дальнейшей работы будем иметь факторы А, В и С.

Ниже идет группа Fraction (Часть полного эксперимента).

Эксперимент, проводимый в GPSS World, может быть полным факторным экспериментом (ПФЭ) или дробным факторным экс-

периментом (ДФЭ). Группа Fraction (Часть дробного экспери-

мента) позволяет это задавать, т. е. позволяет провести стратегическое планирование эксперимента, цель которого, как вам известно, является определение количества наблюдений и сочетаний уровней факторов в них для получения наиболее полной и достоверной информации о поведении системы.

Установке ПФЭ соответствует кнопка Full, для ДФЭ в 1/2 от ПФЭ — Half, в 1/4 — Quarter, в 1/8 — Eight, в 1/16 — Sixteen.

18

Установите пока Half (1/2). Справа под Run Count появится

число 4, так как 22 4. Это количество наблюдений, которое необходимо сделать. Количество прогонов в каждом наблюдении будет указано позже.

В поле Expression (Выражение) группы Result (Результат)

введите выражение, по которому вычисляется вероятность обра-

ботки запросов: N$ObrZap/N$KolZap.

После группы Result (Результат) расположены два флажка, позволяющие выбирать опции.

При выборе опции Generate Run Procedure вместе с экспериментом создается стандартная процедура запуска, которую пользователь может корректировать согласно своим требованиям.

Выбор второй опции Load F11 with CONDUCT Command за-

крепляет команду CONDUCT за функциональной клавишей F11. Тогда после создания объекта «Процесс моделирования» для запуска эксперимента нужно только нажать функциональную клавишу F11. Выберите обе опции.

Перед созданием эксперимента необходимо изучить группы смешивания с целью осуществления стратегического планирования эксперимента. Для этого нужно нажать кнопку Alias Groups (Группы смешивания). Появится диалоговое окно Alias Groups

(Группы смешивания) (рис. 1.4).

При изучении групп смешивания необходимо вначале найти отсутствующие факторы, а затем факторы, которые неразличимы, так как находятся в одной группе смешивания. Например, взаимодействие факторов А и В — АВ.

Рис. 1.4. диалоговое окно Alias Groups (Группы смешивания)

19

Из рис. 1.4 видно, что отсутствующих факторов нет. Факторы А, В и С находятся в различных группах смешивания по два фактора в каждом. Невозможно будет судить об эффектах, т. е. о влиянии на отклик взаимодействий двух факторов. В некоторых случаях этого будет достаточно.

Нажмите кнопку Cancel (Отмена).

В диалоговом окне Screening Experiment Generator (Генера-

тор отсеивающего эксперимента) в группе Fraction (Часть дробного эксперимента) установите Full (ПФЭ). Под Run Count

появится число 8.

Обратите внимание, что кнопка Alias Groups (Группы смешивания) при установке полного факторного эксперимента Full (ПФЭ) не будет активной.

Теперь необходимо создать Plus – операторы и вставить их в нижнюю часть модели Прямая задача. Для этого нажмите кнопку

Insert Experiment (Вставить эксперимент), расположенную в левой нижней части диалогового окна Screening Experiment Generator (Генератор отсеивающего эксперимента).

Так как была выбрана опция Generate Run Procedure, то создана стандартная процедура запуска с именем Dis_Server_Run. Появится ее диалоговое окно, дающее возможность пользователю изменить процедуру запуска согласно своим требованиям

(рис. 1.5).

Рис. 1.5. Диалоговое окно стандартной процедуры запуска

20