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

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

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

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

имеет возможность проверки графа в целом.

Результат проверки графа вьщается в окне, приведенном на рис. 5.13, как список ошибок возможных и ошибок явных, не позво­ ляющих генерировать программный Pilgrim-файл. К явным ошибкам относятся отсутствие выходов или входов узла и неопределенные вход/выход плоскости.

Проверка корректности

1^ис. 5.13. Окно провфки корректности графа модели

Процедура проверки корректности графа вызывается автомати­ чески при запросе пользователя сгенерировать программный Pilgrim-файл, а также в любой момент времени из пункта «Вьшолнить» основного меню. При этом осуществляется проверка модели целиком, независимо от того, в какой плоскости работает пользова­ тель.

План бухгалтерских счетов. При моделировании бухгалтер­ ских проводок необходимо знать номер счета-приемника. Поскольку номер любого счета - это номер узла, его моделирующего, то для того, чтобы проще ориентироваться в их нумерации, существует ин­ формационное окно, отображающее номера и названия счетов. Это

181

окно может бьггь вызвано выбором подпункта «План счетов» пункта «Модель» основного меню программы.

Поиск узла. Функция вызьшается через меню «Узел» либо через «горячую кнопку» на верхней панели (рис. 5.14). Поиск может осу­ ществляться по номеру или по параметрам узла, таким, как имя или тип. Результаты поиска выводятся в виде списка, откуда можно пе­ рейти на любой узел, редактировать его параметры или скопировать узел в буфер.

Ф и л ь т р nUMCKd

ВЁОЕЭ

"Поиск

Номер; СП

О по номеру

© по параметрам

Имя:

]

Тип: AT

 

1 yjf .IJQHgK il

X Отмена

Результаты поиска:

 

501:Склад 1,АТ

 

502:Склад 2. AT

 

503:Склад 3, AT

 

Рнс. 5.14. Окно поиска узла

Копирование/вставка узла. Для упрощения создания набора узлов с рядом совпадающих параметров в конструкторе предусмот­ рена функция копирования/вставки узла. Чтобы скопировать узел в буфер, необходимо вьщелить его щелчком мьпни и выбрать пункт «Копировать» из меню «Узел». Вставка в те10тцую плоскость осу­ ществляется выбором пункта «Вставить» меню «Узел». При этом будет создан узел того же типа, что и прототип, и с аналогичными параметрами.

182

Очистить плоскость, функция удаляет все узлы текущей плос­ кости. Вызывается через меню «Плоскость». Операция недопустима и выдаст сообщение об ошибке в случае, если хотя бы один из узлов плоскости содержит декомпозицию.

5.4 ПРИМЕР СОЗДАНИЯ ИМИТАЦИОННОЙ МОДЕЛИ ЭКОНОМИЧЕСКОГО ПРОЦЕССА

В качестве примера, иллюстрирующего создание моделей с по­ мощью конструктора, рассмотрим следующий объект. Имеется предприятие, принимающее заказы на изготовление продукции ти­ пов А и В. Заказы на продукцию типа А поступают в среднем раз в 30 дней, а на продукцию типа В - раз в 5 дней. Для производства продукции типа А необходимо 10 дней, а для продукции типа В - 2 дня. Одновременно может идти производство только по одному заказу. При этом заказы на продукцию А являются первоочередны­ ми. Все сведения о вьшолнении заказов типов А и В фиксируются в отдельных документах. Модель строится для исследования очереди задержек заказов.

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

Опишем создание имитационной модели с помощью графиче­ ского конструктора как последовательность технологических шагов.

Ш а г I. Создание графа модели.

1.Рассмотрим в качестве автономных процессов:

производство и фиксацию вьшолненных заказов;

формирование заказов и очередь заказов на производство.

2.Определим единицу модельного времени для последующего формирования параметров модели. Очевидно, в данном примере за единицу времени удобно взять один рабочий день.

3.Запустим конструктор на вьшолнение.

4.В основном меню выберем «Файл» -> «Создать». В результате,

врабочей области экрана появится пустое окно с именем «Плос­ кость 1». Это пустая корневая плоскость.

183

5. Из панели узлов в левой части экрана перетащим в плоскость построения узлы типов parent, serv. В панели узлов также найдем узел типа ag и щелкнем.мышью по узлу ag. Надпись на панели сме­ нится на term. Добавим в плоскость построения два узла типа term. Расположим узлы в рабочей области так, как"показано на рис. 5.15.

ipyKTOf» Pilgrim

ВВЕЗ

 

Файл Узел Плосквсжк Модвяк HdCTfitMKH ВЫПОЛНИТЬ Окнп Honouib

п I о

Рис. 5.15. Окно создания узлов в корневой плоскости

6.Зададим имена узлов. Для этого нужно дважды щелкнуть мыщью по каждому из узлов и в появившемся диалоговом окне в поле «Имя» вместо находящегося там «Object...» ввести: «Производство» для узла 102; «Отчет А» для узла 103, «Отчет В» для узла 104. Узел 101 будет содержать подуровень формирования заказов; он будет рассмотрен позже.

7.Определим маршруты транзактов. Для этого захватим изобра­ жение круга с перекрестием на панели узлов и перетащим на узел

184

«производство». После отпускания кнопки мьпни за курсором потя­ нется стрелка. Далее необходимо щелкнуть мышью по узлу «Отчет А», в результате чего появится стрелка, символизирующая маршрут прохождения транзактов из узла «Производство» в «Отчет А». Ана­ логичную операцию повторим, задав маршруты из узла «Производ­ ство» в «Отчет А» и из «Object 101» в «Производство».

Предостережение. Необходимо сначала -указывать узелисточник и потом - узел-приемник. Последующая смена направле­ ния невозможна. При создании неверного маршрута необходимо его удалить через свойства узла и потом задать новый. По окончании этого этапа должен появиться экран, подобный приведенному на рис. 5.16.

 

Плоскость 1

ВаЕЗ|

 

 

Отчет А

• А.

 

 

г

 

 

Object 101

Производатю"^

 

 

Р

S

 

 

101

102

 

 

 

Отчет В

 

 

 

( Т 1

 

М

H i

^ШЩ:.

 

 

 

 

Рис. 5.16. Окно графа корневой плоскости

8.Создадим плоскость формирования заявок. Дважды щелкнем по узлу «Object 101», в результате чего получим новую пустую плоскость 10 с именем «Object 101». В этой плоскости теми же опе­ рациями, что и ранее, создадим граф, как показано на рис. 5.17. Ос­ танемся в этой плоскости.

9.Можно увидеть, что в информационной строке в нижней части экрана красным цветом отображены надписи «Вход не назначен» и «Выход не назначен». В нашем случае плоскость 10 не будет иметь

185

входа, так как сама предназначена для генерации заявок, однако вы­ ход необходимо назначить. В левой части экрана щелкнем по кнопке «Слой». В диалоговом окне введем имя слоя «Заказы» и выход 107. Вход установим на значение «попе», т.е. отсутствующий. Результат приведен на рис. 5.18. После нажатия кнопки «ОК» одна из красньпс надписей в информащюнной строке будет заменена на «Выход: W7».

Плоскость 10 Obiecl 101

НЗЕЗ

Рис. 5.17. Окно графа плоскости 10

[fl<ip.)Mb-ipi>j слоя

Имя СЛОЯ.

Заказы

 

 

 

Вход:

 

попе

]

Выход:

107

 

I

У О К

|| X Отмена

 

Рис 5.18. Окно определения параметров слоя 10

186

Ш а г II. Определение глобальных переменных модели! Определим переменные модели. Очевидно, для работы может

понадобиться переменная времени обслуживания заявки. На левой панели щелкнем по кнопке «Переменные». Появится соответствую­ щее диалоговое окно (рис. 5.19). В нем необходимо ввести: имя пе­ ременной proc_tmie, тип переменной float. Значение можно не ука­ зывать, так как оно будет определяться при вьшолнении модели в зависимости от типа продукции.

Переменные

 

BiiJEa

Имя: proc_tiine

М|Х|^

Значение:

1/1

 

 

 

Тип: ^

3

 

1 УОК

1 Х Отмена

|

Рис. 5.19. Окно определения глобальных переменных модели

Ш а г III. Определение свойств узлов.

1. Определим свойства узлов плоскости 10. Узел 105 будет фор­ мировать заказы типа А, узел 106 - типа В. Необходимо дважды щелкнуть мышью по узлу 105, в результате чего появится диалого­ вое окно «Свойства узла». В нем щелкнуть по кнопке «Определить параметры». В результате появится окно определения параметров узлов типа ag (рис. 5.20). Очевидно, для заявок типа А значение «Приоритет» нужно указать равным 1. На выборе закона распреде­ ления не будем останавливаться,выберем его как norm - нормаль­ ное. В строке «Мат. ожидание» введем значение 30, а «Отклонение» примем равным 10. Повторим процедуру для узла 106. Но значение приоритета укажем 2, математическое ожидание примем равньш 5, а отклонение - равным 2. Теперь генераторы подготовлены.

2. Аналогичным образом определим параметры для узла 107 «Очередь заявок». Здесь всего один параметр, его необходимо устаг повить в значение «prty». Это будет означать, что заказы проходят

187

очередь в соответствии с приоритетами. Поэтому заявки на произ­ водство продукции типа А будут проходить прежде заявок на про­ дукцию типа В.

AG детализация ЕЯ

Приоритет:

 

1

 

Закон распределения:

norm

•9

 

 

 

 

Мат. ожидание:

 

30

 

Отклонение:

 

10

 

 

 

 

Дополнительный:

 

none

 

 

 

 

1

•ок

1

X Отмена

Рис. 5.20. Окно определения переменных узла типа ag Заказы А

3. Определим свойства узлов плоскости 1. Начнем с узла 102 ти­ па serv. Дважды щелкнем по нему мьыцыр - появится диалоговое окно «Свойства узла» (рис. 5.21). В поле «Выходы» на выберем строку «Из 102 в 103». В поле «Условие перехода» укажем «t->pr = = 1». Это значит, что по этой ссылке перейдут только те транзакты, которые в качестве параметра t-»pr (приоритет) имеют значение 1. В поле «C++ текст», располагающееся под «Условием перехода», вве­ дем строку «proc_time = 10». Далее, выбрав в поле «Выходы» строку «Из 102 в 104», в поле «C++ текст» напишем «proc_time = 2». Щелк­ нем по кнопке «Определить параметрьп>. В появившемся диалого­ вом окне «Serv детализация» зададим параметры: число каналов = 1; приоритетность = abs; закон распределения = norm; математическое ожидание = proc_time; отклонение = proc_time/2; дополнительно = попе (рис. 5.22). Таким образом, определен обслуживающий прибор с одним каналом и временем обслуживания, зависящим от приори­ тета транзакта.

4. Для узлов типа term параметров не существует.

188

CeDHCrEia

^S.m

 

 

 

102

 

 

Ямя:

Произюпспо

Ш ОлрЕдели1ь шрамЕтрьт..

Kvacc:

Seiver

J

Плоскость

Общий С+* T«Kcr.

До npaxoжжения узла |поод» пррярж^вниа узла |

SP=0;

Входы

Бикоды

Из 101 ж 102

"Условие ттереуода:

 

Из 1021104 |t->pr==l

 

C++ TMLCT.

 

p*oc_tiKie = 10

 

Уладить

• Ok

Прннекить

Рис, 5.21. Окно определения общих свойств узла 102 Производство

IScrv деталнЗс1цня

 

 

Q '

Число каналов

 

1

 

Приоритетность

 

abs

[J

Закон распределения:

norm

уЛ

Мат ожидание

 

ргос_Ьте

1

Отклонение

 

ргос_йте/2 |

Дополнительно

 

попе

 

 

^

 

 

 

1

Уок

1

X Отмена

 

Рис. 5.22. Окно определения переменных функции serv для узла Производство

189

Ш аг IV. Определение параметров функцийmodbeg и modend. 1. Определим параметры функции modbeg. В левой панели инст­ рументов щелкнем по кнопке modbeg либо выберем соответствую­ щий пункт меню раздела «Модель». В появившемся диалоговом ок­ не зададим имя модели «Очередь заказов». Параметр «Узлы» обо­ значает порядковый номер последнего узла модели и рассчитывает­ ся автоматически. Поле «Время» подразумевает время вьшолнения модели, в моделируемых единицах времени. Поскольку за единицу времени взят один день, то рассмотрим модель на отрезке времени 365 единиц, т.е. один год. Параметр «ПСЧ» служит для настройки датчика случайных чисел. Значение, отображенное по умолчанию, позволяет при каждом запуске получать различные результаты мо­ делирования. Поле «Пространство» используется при пространст­ венном моделировании и в нашем случае не понадобится. В поле •«Задержка» несйбходимо иаести номер узла типа queue, информация о котором будет отображаться при вьшолнении модели, т.е. в нашем случае это номер 107. Поля «Поток» и «Точность» оставим без из­ менений. Результат определения параметров в диалоговом окне при­

веден на рис. 5.23.

Н«змв1м: Проююпстао под заки

\

Лли-

|107

1

Врвжх;

|365

1

ПСЧ:

|(b»c)tmie(NULL)|

 

 

Прос1р«игао'

{none '

I'l

Зедеряаа.

|107

1

Потог

jnoM

1

Точяосп:

|2

 

 

Рис. 5.23. Окно определения параметров функции modbpg

2. Определим параметры функции modend. Для нашей задачи ос­ тавим параметры modend, заданные по умолчанию. Вызов диалого­ вого окна для ввода параметров бсуществляется аналогично вызову окна modbeg.

190