Имитационное моделирование экономических процессов
.pdfcheg(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