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

Имитационное моделирование экономических процессов

.pdf
Скачиваний:
241
Добавлен:
01.05.2014
Размер:
6.69 Mб
Скачать

cheg(l,none,none,Modtime,zero,zero,3);

place;

top(4): serv("Пользователи",Users,none,expo, Think_time,zero,гего,узел_приемник);

clcode

t-*iuO=QUERy; place;

Рис. 4.6. Модель корпоративной системы с одним многоканальным сервером для моделирования поведения клиентов

Генератор (узел 1) в течение единицы модельного времени гене­ рирует один транзакт, который попадает в узел creat (узел 2) в каче­ стве порождающего. Узел 2 генерирует (порождает) семейство транзактов количеством Users (модельная константа - число пользовате­ лей) и с номером семейства 4 (номер узла, моделирующего работу пользователей). Порождаю1Щ1й транзакт погибает в терминаторе (узел 3). В этот же момент происходит перенастройка генератора (оператор cheg): интервал между генерацией транзактов устанавли­ вается равным времени моделирования Modtime (это же время зада­ но в modbeg). После этого генератор «вьпслючается», так как за вре­ мя моделирования больше не успевает выпустить ни одного транзакта.

Порожденные узлом creat транзакты попадают в узел serv (узел 4), моделирующий работу пользователей. Число каналов в нем равно числу вошедших в него транзактов (константа Users), а сред­ нее время обслуживания транзакта равно среднему времени обду­ мывания пользователем запроса (модельная константа Think-time).

141

Далее - перед вькодом транзакта из узла - ему присваивается на­ чальная метка <оапрос» (в параметр t->iuO заносится модельная кон­ станта QUERY).

Таким образом, по графу модели начинает циркулировать столь­ ко запросов, сколько имеется пользователей. Адрес же возврата за­ проса можно определить по значению параметра t->ft «номер семей­ ства». В случае с одним сервером пользователей эта проблема не столь актуальна, тогда как в двух описанных далее случаях этот спо­ соб очень удобен.

2. Зарядка нескольких одноканальных серверов (рис.4.7). Описа­ ние узлов имеет следующий вид:

ад("Один транзакт",1,попе,попе,1.О, zero, z e r o , 2 ) ;

t o p ( 2 ) : Great("Размножение",none,Users,none,4,3);

place;

 

 

t o p ( 3 ) : term("Выключение");

cheg(l,none,none,modtime,zero,zero,3);

place;

=

addr[4]->na + 5;

t o p ( 4 ) : t->ft

t-*ruO

=

Think_time;

t-*iuO

= QUERY;

queue ("Прием",none, t->ft) ; place;

Группа

пользователей

Users

Рис. 4.7. Модель корпоративной системы с несколькими одноканальными серверами для моделирования поведения клиентов: N = Users + 4

142

Отличие этой схемы от варианта 1 состоит в введении дополни­ тельного узла queue (у?ел 4). Узел 2 creat генерирует Users транзактов (по числу пользователей), не присваивая им номер семейства. Далее эти транзакты попадают в очередь (узел 4), где каждому из них присваивается свой номер семейства, равный номеру сервера, в который этот транзакт поступит. Также в параметр транзакта t->ruO заносится среднее время задержки в сервере, моделирующем работу пользователя. Этот параметр используется при описании серверов пользователей (узлов с номерами из диапазона [5, Users + 4], где Users - число серверов).

3. Зарядка нескольких многоканальных серверов. Этот вариант (рис. 4.8) отличается от варианта 2 введением второго узла creat (узел 5). Он получает последовательно из очереди (узел 4) порож­ дающие транзакты, уже обладающие необходимьпйи параметрами для каждого сервера, моделирующего работу группы пользователей {см. описание узла 4 в варианте 2). Эти транзакты становятся образ­ цами для порождаемых семейств. Количество транзактов, генери­ руемых дополнительно для каждого сервера, равно числу модели­ руемых им пользователей минус 1, так как порождающий транзактобразец тоже используется в качестве запроса и поступает в тот же сервер, что и порожденные.

queue 4

Группа

пользователей

Users

Рис. 4.8. Модель корпоративной системы с несколькими многокшальными серверами

для моделирования поведения клиентов: N - Users + 5

143

в данном случае Users - это число групп пользователей. Описа­ ние второго узла creat имеет вид:

t o p ( 5 ) : creat("Размножение",t->ft,

place; Число_каналов-1, сору, t—>ft, t—>ft) ;

В операторе queue нужно также заменить параметр «номер се­ мейства» t->ft на номер 5, так как из очереди все транзакты идут в узел 5 creat. Для описания серверов число пользователей можно за­ дать в некотором массиве, доступ к которому осуществляется через значение параметра транзакта «номер семейства», равный номеру соответствующего сервера.

Далее рассмотрим возможности определения времени ответа на запрос в КИС. При моделировании работы корпоративных инфор­ мационных систем может быть поставлен вопрос, сколько времени в среднем тратит система на обработку одного запроса пользователя. Существуют три способа решения этой задачи:

1) добавить в модель дополнительный узел key и с его помощью проводить замеры времени реакции;

2)получить с помощью модели средние времена пребывания транзактов во всех узлах имитационной модели КИС и использовать эти данные для расчета времени реакции;

3)использовать только среднее время подготовки конкретным пользователем запроса (или задания) для КИС, полученное с помо­ щью модели, и загрузку узла serv, имитирующего этого пользователя.

Рассмотрим эти способы подробнее.

1. Через дополнительный узел key (рис. 4.9) транзакты не прохо­ дят; он служит только для измерений. Каждый пользователь имити­ руется одним сервером. Дополнительно каждому пользователю при­ писывается узел key. На рис. 4.9 показана работа одного пользовате­ ля. Транзакт - задание для КИС - предварительно проходит через key и запирает его. Далее, после обработки запроса, этот транзакт возвращается из модели КИС в этот же сервер, но при входе в узел serv он открывает key. В модели автоматически измеряется интервал закрытого состояния узла key и определяются математическое ожи­ дание и среднеквадратичное отклонение.

Достоинство способа: измерения очень точные при большом числе транзактов. Недостаток: необходимо для каждого пользова­ теля ввести в модель и описать дополнительный узел key, что ус­ ложняет модель.

144

Рис 4.9. Пример измерения среднего времени реакции системы

спомощью дополнительного узла key

2.Можно получить с помощью модели средние времена пребы­ вания транзактов во всех узлах имитационной модели КИС. Далее необходимо определить средние значения вероятностей переходов для всех узлов в модели (это несложно). Затем, используя нетради­ ционные методы теории стохастических сетей (см. главу 1), опреде­ лим среднее время пребывания транзакта в графе модели КИС.

Достоинство способа: применяется известная расчетная мето­ дика.

Недостатки: а) метод приближенный, так как вероятности мо­ гут меняться во времени; б) расчетная методика довольно сложная.

3. Среднее время подготовки конкретным пользователем запроса (или задания) для КИС и загрузка соответствующего узла serv, ими­ тирующего этого пользователя, определяются в модели автоматиче­ ски. Причем эти измерения всегда точны: и в случае моделирования группы типовых пользователей одним многоканальным узлом serv, и в случае моделирования каждого уникального пользователя отдель­ ным одноканальным узлом serv. Далее опишем способ измерения времени реакции КИС подробнее.

Рассмотрим временную диаграмму работы уникального пользо­ вателя с КИС (рис. 4.10). На достаточно длинном интервале времени моделирования t„ происходит п обращений к КИС. Среднее время ?„ подготовки пользователем каждого задания КИС автоматически оп­ ределяется по формуле

1

г п

^

п

 

Zt,

 

Л/=1

у

145

• • • J A

 

h

ti

tr,

t

 

 

 

 

t„.

 

 

Ш

- пользователь готовит очередное задание КИС

(время /,)

 

Q

- КИС выполняет задание пользователя

 

 

Рис. 4.10. Временная диаграмма работы пользователя и системы

Загрузка р узла serv транзактом - это доля всего времени tm , ко­ торое тратится пользователем на подготовку каждого нового задания КИС, причем справедлива формула

Р = -1

Нетрудно заметить, что доля времени моделирования, в течение которого КИС обрабатывала п запросов, равна 1 - р. Поэтому спра­ ведливо соотношение

Разделим левую и правую части этого равенства на и и получим следующее выражение:

где tc - среднее время одного цикла «запрос-ответ» при выполнении всех и за­ даний пользователя:

Ir

Время цикла состоит из двух слагаемых: времени подготовки за­ дания и времени обработки этого задания - времени реакции КИС. Поэтому запишем

где tr - искомое время реакции КИС.

146

в результате моделирования нам известны ^^ и р. В связи с вы­ шеизложенным запишем систему уравнений

Р"

_t_ = ,

Ю-Р) "

ИЗ которой получим время реакции КИС:

1-р

Р

Достоинства способа: а) он имеет такую же высокую точность, как при работе с дополнительным узлом key; б) этот способ значи­ тельно проще, чем способы 1 и 2: действительно, расчет по формуле значительно проще, чем включение и дополнительных узлов key или решение системы из п нелинейных уравнений методом итераций.

Недостаток: не определяется среднеквадратичное отклонение.

4.5 СОСТАВ ПРОЕКТА И ПРИМЕНЕНИЕ ОБОЛОЧКИ DEVELOPER STUDIO

Обычно имитационная модель создается в среде Developer Studio с применением федств Visual С-н-. Проект относительно разработки программ - это приложение Windows. Предположим, что среда Developer Studio расположена на жестком диске С в папке Msdev (путь c:\Msdev), а файл с текстом модели в терминах Pilgrim нахо­ дится в папке с именем ModelDir на жестком диске D (путь d:\ModelDir). Текст модели - это файл, созданный текстовым редак­ тором Developer Studio или Notepad, имеющий срр-окончание (суф­ фикс), например ModelText.cpp. Для определенности назовем наш проект ModelPro.

Рассмотрим типовые технологические последовательности дей­ ствий, необходимые при создании, модернизации и выполнении мо­ делей. Во всех режимах используются три клавиши меню Developer Studio: File - фе^ . Insert - вставить и Build - построить.

147

Создание моделей. Создание новой модели обычно проходит с использованием следующего пути по меню и подменю: FiIe-> New -* Project Workspace -> режим Application -» выбор пап­ ки ModelDir (можно через режим Browse) -» указание имени проек­ та ModelPro. В результате будет создан файл управления проектом ModelPro.mdf.

Дальнейшие действия различаются в зависимости от типа проекта:

типовой проектмодели;

проект модели с диалоговым окном для управления парамет­ рами при ее запуске или во время выполнения;

проект модели с функциональным окном для конечного поль­ зователя (вывод информации в понятном для потребителя виде).

Типовой проект модели. Создание типового проекта не требует от разработчика знаний языка C++. Проект состоит из четырех файлов:

текст модели ModelText.cpp. Находится в папке d:\ModeDir;

общая библиотека Comctl32.1ib, содержащая средства Windows

иPilgrim. Бе состав слабо изменяется при разработке новых версий моделирующей системы Pilgrim. Она находится в папке c:\Msdev\Lib;

библиотека Pilgrim.lib. Существенно изменяется в процессе развития системы Pilgrim. Ее можно найти в папке c:\Msdev\Lib;

файл ресурсов Pil@im.res. Также изменяется в процессе разви­ тия системы Pilgrim. Его можно найти в папке c:\Msdev\Projects.

Все вьш1еперечисленные файлы подключаются к проекту с ис­ пользованием клавиши Insert общего меню Developer Studio. Обычно

вменю и подменю выполняются действия: Insert -*• Files into Project -> выбор суффикса (срр, lib, res) -> определение пути к файлу -> подключение.

Далее выполняются компиляция и сборка модели: выбирается клавиша Build общего меню Developer Studio и режим Rebuild All. В результате создается выполняемая модель: файл ModelPro.exe.

Запуск готовой модели из общего меню можно выполнить так:

Build -> Execute ModelPro.exe.

Проект модели с диалоговым окном для управления параметра­ ми. Создание такого проекта требует от разработчика некоторых знаний Visual C++.

Сначала необходимо скопировать из папки c:\Msdev\Projects в папку d:\ModelDir следующие пять файлов: Parametr.cpp,

148

Palette.bmp, Pilgrim.ico, UserHid.h, UserRes.rc. Проект имеет сле­ дующий состав:

текст модели ModeIText.cpp. Находится в папке d:\MocIeroir;

типовая программа Parametr.cpp. Программа написана на язьосе C++; в зависимости от количества регулируемых параметров ее не­ обходимо настраивать на модель. Она также находится в папке d:\Moderoir;

общая библиотека Comctl32.1ib, содержащая средства Windows

иPilgrim. Находится в папке c:\Msdev\Lib;

библиотека Pilgrim.lib. Она существенно изменяется в процес­ се развития системы Pilgrim. Находится в папке c:\Msdev\Lib;

файл ресурсов UserRes.rc. Находится в папке d:\ModelDir. На­ писан на языке создания Windows-ресурсов. В зависимости от коли­ чества регулируемых параметров этот файл необходимо настраивать на модель.

Прежде чем компилировать и собирать модель, рассмотрим от­ дельно файл ресурсов UserRes.rc и типовую программу Parametr.cpp.

Файл ресурсов имеет две части: неизменяемую (стандартную) и изменяемую. Макет файла - это UserRes.rc. Текст изменяемой части на языке описания ресурсов Vsual C++ приведен ниже (см. приложе­ ние 1).

//

ИЗМЕНЯЕМАЯ ЧАСТЬ МАКЕТА

//

//

 

PARMBOX DIALOG

DISCARDABLE

1, 28, 3X5, 202

STYLE WS

POPUP

I WS_CAPTION

 

 

CAPTION "^Диалоговая настройка модели"-

BEGIN

 

 

 

 

 

GROUPBOX "Параметры бизнес-процесса",

LTEXT

100,5,3,245,30,WS

TABSTOP

 

"Фирма:",

-1, 1ТУ, 20, 30, 8, NOT WS GROUP

EDITTEXT

DM_TITLE,40,18,200,12

-1, 78,38,80,8

LTEXT

/'Единица времени",

 

LTEXT

NOT WS_GROUP

 

-1, 63,53,95,8

"Время моделирования",

LTEXT

NOT WS_GROUP

 

-1, 63,68,95,8

"Прибытие

пассажиров",

LTEXT

NOT WS_GROUP

 

 

"Интервал подхода такси",-!, 63,83,95,8

LTEXT

NOT WS_GROUP

 

-1,229,38,80,8

"Период времени",

 

LTEXT

NOT WS GROUP

 

 

"Окошко

4",-l, 63, 98,95,8,NOT WS GROUP

149

EDITTEXT

 

DM Tl,

5, 36,70,12

 

EDITTEXT

 

DM PI,

5, 51,55,12

 

EDITTEXT

 

DM~P2,

5, 66,55,12

 

EDITTEXT

 

DM P3,

5, 81,55,12

 

EDITTEXT

 

DM~P4,

5, 96,55,12

 

EDITTEXT

 

DM~P5,

5,111,55,12

 

EDITTEXT

 

DM~P6,

5,126,55,12

 

EDITTEXT

 

DM"P7,

5,141,55,12

 

EDITTEXT

 

DM~P8,

5,156,55,12

 

EDITTEXT

 

DM~P9,

5,171,55,12

 

EDITTEXT

 

DM~P10,

5,186,55,12

 

EDITTEXT

 

DM~T2,

156, 36,70,12

 

EDITTEXT

 

DM~P11,156, 51,55,12

 

EDITTEXT

 

DM~P12,156, 66,55,12

.

EDITTEXT

 

DM~P13,156, 81,55,12

EDITTEXT

 

DM~P14,156, 96,55,12

 

EDITTEXT

 

DM~P15,156,111,55,12

 

EDITTEXT

 

DM~P16,156,126,55,12

 

EDITTEXT

 

DM~P17,156,141,55,12

 

EDITTEXT

 

DM~P18,156,156,55,12

 

EDITTEXT

 

DM~P19,156,171,55,12

 

EDITTEXT

 

DM~P20,156,186,55,12

 

PUSHBUTTON

"Готово",IDOK,

265, 7,34,12

 

PUSHBUTTON

"Отмена",IDCANCEL,265,21,34,12

 

END

"Окошко

5",-l, 63,113,95,8,NOT WS GROUP

LTEXT

LTEXT

"Окошко

б",-1, 63,128,95,8,NOT WS'"GROUP

LTEXT

"Окошко

7",-l, 63,143,95,8,NOT WS""GROUP

LTEXT

"Окошко

8",-l, 63,158,95,8,NOT WS""GROUP

LTEXT

"Окошко

9",-l, 63,173,95,8,NOT WS""GROUP

LTEXT

"Окошко 10",-1, 63,188,95,8,NOT WS""GROUP

LTEXT

"Окошко 11",-1,214, 53,95,8,NOT WS""GROUP

LTEXT

"Окошко 12",-1,214, 68,95,8,NOT WS'"GROUP

LTEXT

"Окошко 13",-1,214, 83 95,8,NOT WS""GROUP

LTEXT

"Окошко 14",-1,214, 98,95,8,NOT WS""GROUP

LTEXT

"Окошко 15",-1,214,113,95,8,NOT WS""GROUP

LTEXT

"Окошко 16",-1,214,128,95,8,NOT WS""GROUP

LTEXT

"Окошко 17",-1,214,143,95,8,NOT WS""GROUP

LTEXT

"Окошко 18",-1,214,158,95,8,NOT WS""GROUP

LTEXT

"Окошко 19",-1,214,173,95,8,NOT WS'"GROUP

LTEXT

"Окошко 20",-1,214,-188, 95, 8,NOTWS"[GROUP

Этот файл обеспечивает вьюод диалогового окна для управления 20 параметрами модели (рис. 4.11). Если такое количество велико, то можно изменить (сократить) текст файла UserRes.rc для сокращения размеров этого окна и уменьшения количества наблюдаемых или управляемых параметров модели. Кроме того, можно задать совсем другое расположение внутренних окошек для наблюдения за пара­ метрами.

150