Московская финансово-промышленная академия

 

 

 

 

 

 

Н.Н. Прокимнов

 

 

 

 

Практикум по курсу

“Имитационное моделирование”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Москва, 2009
Содержание

Введение. 3

 

1.  Генерация равномерно распределенной на отрезке (0,1) случайной величины и имитация случайных событий. 3

 

2.  Имитация случайных величин с заданными законами распределения и случайных процессов. 8

 

3.  Метод статистических испытаний. 16

 

4.  Имитационная модель одноканальной системы массового обслуживания. 23

 

5.  Имитационная модель документооборота. 36

 

6.  Имитационная модель корпоративной информационной системы.. 45

 

7.  Многослойная имитационная модель экономического процесса. 51

 

8.  Отсеивающий эксперимент. 63

 

Литература. 80

 

Приложение 1. 81

 

Приложение 2. 84

 

Приложение 3. 85

 

Приложение 4. 87

 
Введение

 

Учебное пособие содержит описание лабораторных работ, перечни контрольных вопросов, подборку задач и дополнительных заданий к лабораторным работам по основным разделам курса “Имитационное моделирование”.

Каждый из разделов предваряется основными сведениями из теории компьютерного моделирования по основной теме раздела.

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

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

Содержание заданий на выполнение работ лабораторного практикума предполагает знакомство с основными понятиями теории вероятностей и математической статистики, а также наличие базовых навыков работы с электронными таблицами (приложение Excel пакета Microsoft Office) и знание основных конструкций языка С++.

В большинстве лабораторных работ предусмотрено проведение экспериментов с имитационными моделями изучаемых СМО. Порядок настройки параметров и сборки проекта, перечень модулей и настраиваемых параметров приводятся в приложениях.

 

1.     Генерация равномерно распределенной на отрезке (0,1) случайной величины и имитация случайных событий

 

1.1.Цель работы:

Изучение:

1) метода линейного конгруента получения псевдослучайных чисел, равномерно распределенных на интервале 0-1,

2) метода имитации наступления/ненаступления событий.

 

1.2.Теоретические сведения.

Эффективными методами исследования процессов и систем, получившими широкое распространение, являются методы компьютерного моделирования, в частности,  имитационное моделирование [1] и метод статистических испытаний (метод Монте-Карло) [2]. В основе вычислений по методу статистических испытаний лежит случайный выбор чисел из заданного вероятностного распределения. При практических вычислениях эти числа берут из таблиц или получают путем некоторых операций, результатами которых являются псевдослучайные числа с теми же свойствами, что и числа, получаемые путем случайной выборки. Имеется большое число вычислительных алгоритмов, которые позволяют получить длинные последовательности псевдослучайных чисел.

 

1.2.1. Получение случайных чисел, равномерно распределенных на интервале [0,1].

Один из наиболее простых и эффективных вычислительных методов получения последовательности равномерно распределенных случайных чисел, включающий только одну операцию умножения, разработан Лехмером и известен как метод линейного конгруента [3].

Алгоритм имеет четыре параметра:

m       Модуль (основание системы), m > 0

a       Множитель, 0 ≤ a < m

c        Приращение, 0 ≤ с < m

Х0     Начальное значение, или зерно (seed),  0≤ Х0 < m

Последовательность случайных чисел {Xn} получается с помощью следующего итерационного равенства:

 

 

Если m, а и с являются целыми, то создается последовательность целых чисел в диапазоне 0 ≤  Xn < m.

Выбор значений а, с и m является критичным для разработки хорошего генератора случайных чисел.

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

Существует три критерия, используемые при выборе генератора случайных чисел:

-  Функция должна создавать полный период, т.е., должны появиться все числа между 0 и m до того, как создаваемые числа начнут повторяться;

-  Создаваемая последовательность должна появляться случайно. Фактически последовательность чисел не является случайной, так как она создается детерминированным образом, но различные статистические тесты, которые могут применяться, должны показывать, что последовательность случайна;

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

 

Значения а, с и m должны быть выбраны таким образом, чтобы эти три критерия выполнялись. В соответствии с первым критерием можно показать, что если m является простым и с = 0, то при определенном значении а период, создаваемый функцией, будет равен m-1. Для 32-битной арифметики соответствующее простое значение m = 231 - 1. Таким образом, функция создания псевдослучайных чисел имеет вид:

 

 

Только небольшое число значений а удовлетворяет всем трем критериям. Одно из таких значений а = 75 = 16807, которое использовалось в семействе компьютеров IBM 360.

Генератор широко применяется, и прошел более тысячи тестов, больше, чем все другие генераторы псевдослучайных чисел.

Программа на языке С++ имеет следующий вид

 

 

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

 

1.2.2. Имитация наступления события с заданной вероятностью.

Пусть некоторое событие А происходит с вероятностью РА. Требуется воспроизвести факт наступления события А.

Поставим в соответствие событию А событие В, состоящее в том, что х ≤ РА, где х случайное число с равномерным на интервале (0,1) законом распределения. Вычислим вероятность события В:

 

 

Таким образом, события А и В являются равновероятными. Отсюда следует процедура имитации факта появления события А. Она сводится к проверке неравенства х РА, и алгоритм заключается в следующем:

1) Генерируется случайное число х;

2) Проверяется выполнение неравенства х ≤ Р(А);

3) Если неравенство выполняется, считается, что событие А произошло, если нет – не произошло.

 

1.3.         Задание.

1.3.1. Подготовка эксперимента.

Соберите проект С++ в соответствии с указаниями, содержащимися в Приложении (используется модуль 001). Запустите табличный редактор Microsoft Excel.

 

1.3.2. Изучение генератора случайных чисел.

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

2. Замените

(long)time(NULL)

в тексте функции rundum() на выражение

или на заранее просчитанное по этой формуле значение.

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

3. Восстановите текст функции rundum()  и осуществите прогоны программы с разными значениями числа выполнения программы-генератора NexpR, задавая в разделе параметров модели значения NexpR равные

-   100

-   1000

-   10000

 

Для каждого значения NexpR проведите по пять запусков и найдите среднее значение для оценок матожидания случайной величины, получаемой в результате выполнения программы-генератора, по всем запускам. Результаты занесите в Excel-таблицу:

 


N

1

2

3

4

5

СРЕДНЕЕ

100

 

 

 

 

 

 

1000

 

 

 

 

 

 

10000

 

 

 

 

 

 

 

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

4. Проанализируйте полученные данные.

5. Для отключения в последующих запусках экспериментов с генератором случайных чисел установите в разделе “Параметры модели” NexpR=0.

 

1.3.3. Изучение алгоритма имитации наступления событий.

1) В разделе параметров модели задайте значение вероятности наступления события равное

 

 

2) Выполните пробные прогоны программы с небольшим значением NexpE и изучите трассировочный вывод.

3) Осуществите прогоны программы с разными значениями числа выполнения программы-генератора NexpE, задавая в разделе параметров модели значения NexpE равные

-   100

-   1000

-   10000

 

4) Для каждого значения NexpE проведите по пять запусков и найдите среднее значение для оценок матожидания случайной величины, получаемой в результате выполнения программы-генератора, по всем запускам. Результаты занесите в Excel-таблицу:

 


N

1

2

3

4

5

СРЕДНЕЕ

100

 

 

 

 

 

 

1000

 

 

 

 

 

 

10000

 

 

 

 

 

 

 

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

5) Проанализируйте полученные данные.

6) Для отключения в последующих запусках экспериментов с программой имитации наступления события установите в разделе “Параметры модели” NexpE=0.

1.4.Отчет по работе.

Отчет по работе должен включать таблицы результатов экспериментов с

1) генератором случайных чисел

2) имитатором наступления события

 

1.5.Контрольные вопросы.

1) Чем вызывается необходимость применения программного генератора псевдослучайных чисел?

2) Чем отличается псевдослучайное число от случайного?

3) Какие требования предъявляются к программным генераторам псевдослучайных чисел?

4) В каких случаях целесообразно задавать начальное значение xn в виде константы, а в каких – случайной (псевдослучайной) величиной?

5) Какой прием обычно используется для задания начального значения последовательности случайных чисел?

6) Что понимается под имитацией случайного события?

7) Какой прием применяется для имитации случайных событий?

 

2.     Имитация случайных величин с заданными законами распределения и случайных процессов

 

2.1.Цель работы:

Изучение методов:

1) получения случайных чисел и

2) обработки результатов имитационных экспериментов.

 

2.2.         Теоретические сведения.

Значительную роль в программных средствах и системах имитационного моделирования играют методы и процедуры получения случайных величин, подчиняющихся тому или иному закону распределения. Рассмотрим основные из этих методов, а также приемы обработки результатов, получаемых с помощью имитационных моделей (см., например, [1], [2]).

 

2.2.1. Получение случайных чисел, равномерно распределенных на произвольном интервале.

Для получения случайной величины y, равномерно распределенной на интервале (a,b), можно воспользоваться выражением

 

 

где x – случайная величина,  равномерно распределенная на интервале (0,1).

Программа на языке С++ имеет следующий вид:

 

 

В этой программе интервал распределения задается своей серединой m и половиной длины s.

 

2.2.2. Метод обратной функции.

Пусть непрерывная случайная величина η задана законом распределения:

 

 

где  – плотность распределения вероятностей, а - функция распределения вероятностей. Тогда случайная величина ξ

 

 

распределена равномерно на интервале (0,1).

Отсюда следует, что искомое значение y может быть определено из уравнения:

 

 

которое эквивалентно уравнению:

 

 

где y – значение случайной величины η, а x – значение случайной величины ξ.

Решение уравнения   можно записать в общем виде через обратную функцию :

 

y=

 

Основной недостаток метода заключается в том, что интеграл не всегда является берущимся, а уравнение не всегда решается аналитическими методами.

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

 

2.2.3. Имитация величины, распределенной по показательному закону.

Функция плотности для показательного закона имеет вид:

 

 (y>0)

 

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

 

 

или

 

 

Тогда  и, прологарифмировав и разрешив уравнение через y, будем иметь:

 

 

Получая значение х с помощью датчика равномерно распределенных на интервале (0,1) случайных чисел, можно получить значения y в соответствии с полученным выражением.

Программа на языке С++ генерации случайного числа, имеющего экспоненциальное распределение, имеет следующий вид:

 

 

Здесь параметр m функции expont есть значение, обратное параметру λ (интенсивности входящего потока, если в программе имитируется поток в системе массового обслуживания).

 

2.2.4. Обработка результатов моделирования.

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

 

2.2.5. Оценка вероятности.

В качестве оценки вероятности используется частота

 

.

 

где    m-число случаев наступления в экспериментах события А,

N-число проведенных экспериментов

Для ее получения обычно организует на программном уровне два счетчика, которые подсчитывают:

-  общее количество экспериментов N,

-  общее количество положительных исходов m.

 

2.2.6. Получение гистограмм исследуемых параметров.

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

Для этого интервал изменения случайной величины разбивается на отрезки Dti, каждому из них сопоставляется счетчик, где накапливаются mi – количество попаданий значений этой величины в Dti.

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

 

2.2.7. Оценка математического ожидания.

Оценку математического ожидания  получают как среднее арифметическое значение случайной величины yi

 

 

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

 

2.2.8. Оценка  дисперсии

Оценку дисперсии можно рассчитать по формуле:

 

 

2.3.Задание.

В работе программным образом имитируются моменты появления автобусов на одной из остановок, находящихся на маршруте движения. Считается, что событие (момент прихода очередного автобуса) происходит в момент, отстоящий от момента прихода предыдущего автобуса на случайную величину, подчиняющуюся закону распределения заданного вида. Полагая момент времени прихода первого автобуса Т1 равным 0, программа-имитатор определяет момент появления очередного автобуса на основе рекуррентного соотношения:

 

Ti+1=Ti+Dti

 

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

 

2.3.1. Подготовка эксперимента.

Соберите проект С++ в соответствии с указаниями, содержащимися в Приложении (используется модуль 002).

Запустите табличный редактор Microsoft Excel.

 

2.3.2. Детерминированный интервал времени движения.

1. Установите режим запуска с детерминированным интервалом времени движения, сделав значение переменной-переключателя dist равным 1.

2. Задайте величину среднего интервала движения

Tm = <порядковый номер в списке группы>

3. Запустите программу несколько раз c небольшим значением Nexp, получите результаты и ознакомьтесь с трассировочным выводом.

Для дальнейших запусков можно положить Nexp=100.

2.3.3. Равномерно распределенный интервал времени движения.

1. Установите режим запуска с интервалом времени движения, распределенным равномерно задав значение переменной-переключателя dist равным 2.

2. Задайте величину половинного интервала распределения Ts равной

 

Ts = Entire (Tm/5) + 1

 

4. Выполните пробные прогоны программы с небольшим значением числа испытаний, получите результаты и ознакомьтесь с ними.

5. Запустите программу и получите последовательность значений моментов времени прихода. Определите величину дисперсии  интервала движения, для чего воспользуйтесь приложением  Excel – перенесите с помощью буфера системы Windows значения на лист Excel и найдите величину дисперсии с помощью формулы для оценки дисперсии (см. раздел 2.2.8).

 

2.3.4. Экспоненциально распределенный интервал времени движения.

1. Установите режим запуска с интервалом времени движения, распределенным экспоненциально, задав значение переменной-переключателя dist равным 3.

2. Выполните пробные прогоны программы с небольшим значением числа испытаний, получите результаты и ознакомьтесь с ними.

3. Запустите программу и получите последовательность значений моментов времени прихода. Определите величину дисперсии  интервала движения, для чего воспользуйтесь приложением  Excel – перенесите с помощью буфера системы Windows значения на лист Excel и найдите величину дисперсии с помощью формулы для оценки дисперсии (см. раздел 2.2.8).

 

2.3.5. Распределение интервалов времени движения, задаваемое гистограммой.

1. Установите режим запуска с интервалом времени движения, распределенным в соответствии с гистограммой частот появления временных интервалов, задав значение переменной-переключателя dist равным 4.

2. Введите значения частот появления определенных величин интервалов времени между приходами автобусов и значения этих интервалов как начальные значения соответствующих массивов программы.

Исходные данные для составления гистограммы частот в виде замеренных промежутков между двумя последовательными событиями (приходами автобусов на остановку) приводятся в разделе 2.6.1.

3. Выполните пробные прогоны программы с небольшим значением числа испытаний, получите результаты и изучите их.

4. Запустите программу и получите последовательность значений моментов времени прихода. Определите величину дисперсии интервала движения, для чего воспользуйтесь приложением Excel – перенесите с помощью буфера системы Windows значения полученных интервалов на лист Excel и найдите величину дисперсии с помощью формулы для оценки дисперсии (см. раздел 2.2.8).

 

2.3.6. Анализ результатов.

Изучите полученные результаты. Дайте оценку каждому из использованных вариантов.

 

2.3.7. (Дополнительный).

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

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

2. Измените программу таким образом, чтобы время (момент начала движения автобусов) отсчитывалось с определенного момента, задаваемого в виде двух параметров (переменных) для значений часа и минут соответственно, а  результаты (время прихода автобуса на остановку) выводились в виде чч:мм.

Варианты исходных данных приведены в разделе 0.

Номер варианта=<порядковый номер в списке группы >

 

2.4.Отчет по работе.

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

 

2.5.Контрольные вопросы.

1) На чем основан метод получения псевдослучайного числа равномерно распределенного на произвольном интервале?

2) Какой способ применяется для имитации экспоненциально распределенного случайного числа?

3) Что такое метод обратной функции?

4) В чем состоит сущность имитации случайного числа с произвольным распределением на основе собранной статистики?

5) Как определяется среднее значение исследуемого параметра на основе результатов экспериментов, проведенных на модели?

6) Как определяется дисперсия исследуемого параметра на основе результатов экспериментов, проведенных на модели?

7) Как получить гистограмму распределения значений случайной величины на основе результатов экспериментов, проведенных на модели?

 

2.6.         Варианты работ.

2.6.1. Интервалы между приходами.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1

4

3

5

2

4

3

3

8

3

6

6

1

3

8

2

1

5

4

2

7

3

4

10

2

7

2

2

3

6

3

3

4

5

2

6

2

3

7

6

3

5

2

3

2

4

3

5

4

3

4

3

5

5

3

7

4

2

4

6

5

2

3

5

2

9

1

3

9

4

6

3

1

3

5

6

4

8

3

4

1

2

3

7

6

3

5

2

2

1

7

1

4

6

4

3

2

4

7

4

6

5

4

1

6

8

5

1

5

1

8

2

8

6

2

7

2

2

3

1

9

3

8

1

4

5

2

6

3

6

2

6

3

8

1

10

9

1

4

1

4

3

5

5

5

5

5

1

5

6

11

4

3

2

4

8

1

2

10

4

6

3

1

3

5

12

5

7

3

4

1

3

4

5

6

3

4

3

2

2

13

2

4

5

1

7

3

4

10

2

7

2

2

3

9

14

4

3

5

2

4

3

3

8

3

6

6

1

3

8

15

1

5

4

2

7

3

4

10

2

7

2

2

3

6

16

3

4

5

2

6

2

3

7

6

3

5

2

3

2

17

3

5

4

3

4

3

5

5

3

7

4

2

4

6

18

2

3

5

2

9

1

3

9

4

6

3

1

3

5

19

4

7

4

4

1

2

3

7

6

3

5

2

2

1

20

1

4

6

4

3

2

4

7

4

6

5

4

1

6

21

5

1

5

1

8

2

8

6

2

7

2

2

3

1

22

4

7

1

4

5

2

6

3

6

2

6

3

8

1

23

9

1

4

1

4

4

4

8

3

4

6

2

8

5

24

4

3

2

4

8

1

2

10

4

6

3

1

3

5

25

2

10

3

4

1

5

4

3

6

3

4

3

2

4

 

2.6.2. Режим движения.

 

Интервал движения

Рабочее
время

min

max

Начало

Конец

1.

5,0

9,0

6-00

9-00

2.

5,2

9,2

7-00

10-00

3.

5,4

9,4

8-00

11-00

4.

5,6

9,6

9-00

12-00

5.

5,8

9,8

10-00

13-00

6.

6,0

10,0

6-30

9-30

7.

6,2

10,2

7-30

10-30

8.

6,4

10,4

8-30

11-30

9.

6,6

10,6

9-30

12-30

10.

6,8

10,8

10-30

13-30

11.

7,0

11,0

6-00

9-00

12.

7,2

11,2

7-00

10-00

13.

7,4

11,4

8-00

11-00

14.

7,6

11,6

9-00

12-00

15.

7,8

11,8

10-00

13-00

16.

8,0

12,0

11-00

15-00

17.

8,2

12,0

11-00

15-00

18.

8,4

12,4

11-00

15-00

19.

8,6

12,6

11-00

15-00

20.

8,8

12,8

11-00

15-00

21.

9,0

14,0

11-30

15-30

22.

9,2

14,2

11-30

15-30

23.

9,4

14,4

11-30

15-30

24.

9,6

14,6

11-30

15-30

25.

9,8

14,8

11-30

15-30

26.

10,0

15,0

12-00

16-00

 

3.  Метод статистических испытаний

 

3.1.         Цель работы:

Изучение метода Монте-Карло.

 

3.2.         Теоретические сведения.

3.2.1. Метод статистических испытаний.

Метод статистических испытаний, или метод Монте-Карло [2], представляет собой численный метод, состоящий в получении оценок вероятностных характеристик, совпадающих с решением аналитических задач (например, с решением уравнений и вычислением определенного интеграла). Впоследствии этот метод стал применяться для имитации процессов, происходящих в системах, внутри которых есть источник случайности или которые подвержены случайным воздействиям. Он получил также название метода статистического моделирования. 

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

Механизм метода можно пояснить на примере вычисления определенного интеграла. Для определения площади под графиком функции Y=F(X):

 

 

что является графической интерпретацией определенного интеграла, можно использовать следующий подход:

-  ограничим функцию прямоугольником, площадь которого   легко вычисляется;

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

-  определим число точек N’, которые будут находиться ниже графика функции;

 

Тогда значение интеграла (площадь под графиком функции) определится из выражения:

 

 

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

 

3.2.2. Имитация событий, составляющих полную группу.

Пусть события , составляют полную группу [4]. Тогда вероятности этих событий Рi  удовлетворяют равенству:

 

 

Имитация факта появления одного из событий Аi (i=1,n) состоит к проверке неравенств:

 

 

Выполнение k-го неравенства эквивалентно наступлению события Аk. Этот алгоритм иногда называют алгоритмом “розыгрыша по жребию”. Его можно интерпретировать как установление номера k-го отрезка длиной Рk, на который пало случайное число х, при условии разбиения отрезка единичной длины на отрезки с длинами P1,P2,...Pn,  [2]:

 

 

Типичным для практики является представление данных наблюдения за какими-либо событиями в виде таблицы, в которой регистрируются частоты наступления этих событий. Если события объединять в группы, поставив в соответствие каждой группе индекс k=1,..., N (k, в частности, может означать номер временного интервала наблюдения, число на игральной кости и т.п.), то таблица вида

 

k

1

2

3

N

fk

 

 

 

 

 

 

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

Программа на языке С++, реализующая алгоритм выбора по жребию, имеет следующий вид:

 

 

Таблица частот задается первыми parts элементами массива nums частот появления и массива vals значений случайной величины.

 

3.2.3. Некоторые формулы теории вероятностей.

Для вычисления теоретических значений вероятностей безотказной работы системы, состоящей из ненадежных элементов, следует использовать следующие выражения теории вероятностей [4].

Вероятность одновременного наступления независимых событий A и B находится как произведение вероятностей наступления каждого события:

 

 

Для полной группы несовместных событий , т.е., событий, для которых

 

 

и

 

 

и некоторого события В справедлива формула полной вероятности:

где  есть условная вероятность наступления события B при условии наступления события .

 

3.3.Задание.

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

 

3.3.1. Подготовка инструментария эксперимента.

Соберите проект С++ в соответствии с указаниями, содержащимися в Приложении (используется модуль 001).

Запустите табличный редактор Microsoft Excel.

 

3.3.2. Оценка надежности однофункциональной схемы.

1. Из каталога стандартных компонентов (см. 3.5.1) составьте исследуемую схему. Все компоненты, номера которых указаны в строке с номером варианта в таблице вариантов (см. 3.5.2), соединяются последовательно, один за другим.

Номер варианта=<Порядковый номер в списке группы>

Схема, таким образом, выполняет одну функцию.

Работоспособность всей схемы определяется одновременной работоспособностью всех трех компонентов.

2. Настройте текст раздела исходного СРР-модуля, включив в него:

-   описание констант со значениями безотказной работы отдельных блоков по значениям, приведенным в  3.5.3;

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

3. Отключите выполнение ненужных разделов программы, установив в разделе “Параметры модели” значения NexpR=0 и NexpE=0.

4. Осуществите пробные прогоны программы с небольшим значением NexpS и изучите трассировочный вывод.

5. Осуществите прогон программы, задав в качестве числа испытаний значение NexpS=100000. Результаты следует занести в Excel-таблицу:

 


N

1

2

3

4

5

СРЕД-НЕЕ

100000

 

 

 

 

 

 

 

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

6. Проанализируйте полученные данные.

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

 

3.3.3. Оценка надежности многофункциональной схемы.

Выполните все шаги раздела 3.3.2 для случая, когда моделируется схема с тремя функциями (ветвями). Иначе говоря, компоненты образуют три параллельные цепочки таким образом, что при каждом испытании включается одна из трех веток компонентов с вероятностями:

Р1 = 0,2,  Р2 = 0,3,  Р3 = 0,5.

 

3.4.         Контрольные вопросы.

1) В чем заключается идея метода Монте-Карло?

2) Чем достигается статистическая точность метода?

3) Каковы основные достоинства и недостатки метода?

4) Как зависит точность результата, полученного на основе метода статистических испытаний, от числа проведенных испытаний?

5) Как можно повысить вычислительную эффективность (на примере данной работы)?

6) Как имитируются события, образующие полную группу событий?

 

3.5.Варианты исходных данных.

3.5.1. Компоненты моделируемой схемы.

 

 

3.5.2. Варианты соединений компонентов в общую схему.

 

    Компонент

I

II

III

1

1

2

3

2

1

2

4

3

1

2

5

4

1

2

6

5

1

3

4

6

1

3

5

7

1

3

6

8

1

4

5

9

1

4

6

10

1

5

6

11

2

3

4

12

2

3

5

13

2

3

6

14

2

4

5

15

2

4

6

16

2

5

6

17

3

4

5

18

3

4

6

19

3

5

6

20

4

5

6

 

3.5.3. Надежность блоков 

 

P

1

0,95

2

0,80

3

0,75

4

0,70

5

0,65

6

0,60

7

0,85

8

0,80

9

0,75

10

0,70

11

0,80

12

0,75

13

0,85

14

0,75

15

0,70

16

0,50

17

0,70

18

0,80

 

4.    Имитационная модель одноканальной системы массового обслуживания.

 

4.1.         Цель работы:

Изучение:

1) основных возможностей и правил работы конструктора Gem,

2) концепций и основных конструкций моделирующей системы Pilgrim,

3) порядка разработки и запуска программной модели в среде моделирующей системы Pilgrim,

4) интерпретации результатов имитационного моделирования.

 

4.2.Теоретические сведения.

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

 

 

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

В случае, когда входящий поток (поток заявок) имеет пуассоновское распределение, среднее время ожидания заявок в очереди  в такой системе можно определить по формуле Полачека-Хинчина [5]:

 

 

где   

 - среднее время ожидания в очереди

 - среднее время обслуживания

 -      коэффициент загрузки канала

 -    коэффициент вариации времени обслуживания.

Коэффициент загрузки канала можно найти как

 

 

где   - средний интервал между заявками во входящем потоке.

Коэффициент вариации времени обслуживания определяется как

 

 

где  -среднеквадратическое отклонение времени обслуживания.

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

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

В настоящей работе проводится изучение подхода на основе имитационного моделирования с использованием системы Pilgrim [1].

Для задания законов и параметров распределения случайных величин, используемых в моделях настоящей работы, в конструкторе Gem имитационной системе Pilgrim используются параметры со следующими именами и правилами для задания их значений:

 

Параметр

Название в GEM

Значения

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

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

none - детерминированный

expo - экспоненциальный

norm - нормальный

Математическое ожидание

Параметр 1

Действительное число

Среднеквадратическое отклонение

Параметр 2

Действительное число

 

4.3.Содержание работы.

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

Модель 1 –модель СМО с детерминированным интервалом времени между заявками в потоке и детерминированным временем обслуживания. Очевидно, что если время обслуживания и интервал поступления являются детерминированными величинами (то есть не имеют разброса) и время обслуживания меньше интервала между поступлениями, то очередь к обслуживающему прибору образовываться не должна.

Модель 2 –модель СМО с нормальным законом распределения интервала между заявками и нормальным распределением времени обслуживания. Появление случайности должно теперь привести к возникновению очередей.

Модель 3 –модель СМО с пуассоновским входным потоком (экспоненциальным законом распределения интервала между заявками). В случае простейшего потока заявок применима формула Полачека-Хинчина, и среднее за весь период моделирования время ожидания в очереди не будет равно нулю.

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

 

4.3.1. Модель 1.

1) Запустите файл Gem.exe (обычно находится в папке Pilgrim/Gem).

2) В меню Файл выберете пункт Создать и разверните рабочую плоскость на весь экран.

 

 

3) С помощью палитры объектов постройте на рабочей плоскости граф модели:

 

 

Изображения узлов перетаскиваются при нажатой левой кнопке мыши.

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

Для удаления узла:

- захватите инструмент  левой кнопкой мыши,

- не отпуская кнопку, поместите указатель мыши на удаляемый узел,

- подтвердите необходимость удаления.

 

Для проведения стрелки:

- захватите инструмент  левой кнопкой мыши,

- не отпуская кнопку, поместите указатель мыши на узел-источник стрелки,

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

- поместите указатель мыши на узел-приемник стрелки и щелкните левой кнопкой мыши.

 

Для удаления стрелки:

- войдите в окно описания узла-источника стрелки,

- пометьте мышкой соответствующий Выход из узла,

- нажмите кнопку Удалить.

 

4) Узлы модели:

 

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

 

 

Параметры узла:

 

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

1

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

none

Матожидание

10

 

Таким образом, задается регулярный поток транзактов, следующих один за другим  с постоянным интервалом в 10 временных единиц.

 

Узел Queue моделирует очередь транзактов.

Для данной модели узел настраивать не нужно.

 

Узел Serv – это прибор или сервер, осуществляющий какое-либо обслуживание транзактов в течение модельного времени, отличного от нуля.

 

 

Параметры узла:

 

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

1

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

none

Матожидание

5

 

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

 

 

Узел Term представляет собой терминатор транзактов. Он реализует функцию удаления из модели входящего в узел транзакта. Одновременно узел фиксирует время его существования, начиная с момента выхода этого транзакта из генератора. Этот узел можно получить из узла ag после того, как он помещен на плоскость, изменением его свойства Класс со значения AG на значение Terminator. Изменить класс узла можно также и до его помещения на плоскость, нажатием на клавишу под значком узла ag на панели инструментов.

5)  Инициализация модели.

Нажмите кнопку ModBeg под палитрой объектов.

 

 

В строке Название введите имя модели, которое будет указано в таблице результатов моделирования.

В строке Время следует указать длительность периода моделирования – 2000.

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

Строки Задержка и Поток предназначены для задания номеров контролируемых узлов: очереди (узел Queue) и терминатора (узел Term) соответственно. Для указанных узлов в процессе моделирования будут строиться графики времени задержки в узле типа Queue и динамики выходного потока в узле типа Term. Зададим в строке Задержка номер 102, для получения графика динамики задержек в очереди модели.

6) Задание имени файла-отчета.

Целесообразно указать имя и расширение для файла с отчетом о результатах моделирования, которые выводятся автоматически системой Pilgrim.

Для этого нажмите кнопку ModEnd под палитрой объектов и в открывшемся окне

 

 

введите имя файла.

Рекомендуется указывать расширение txt, что позволит открывать файл для последующего просмотра приложением Notepad по умолчанию.

7) Генерация Pilgrim -программы.

Если сохранение модели в графическом формате было успешно выполнено, нужно в меню Выполнить выбрать пункт Генерировать С++ файл. В указанной пользователем папке будет создан файл Pilgrim -программы с расширением .cpp (имя вводится пользователем).

8)Следуя указаниям

9)Приложение 4

10)           

11)            Создание и запуск модуля Pilgrim- создайте выполняемый модуль программной модели.

12)          Следуя указаниям

13)          Приложение 4

14)           

15)            Создание и запуск модуля Pilgrim- осуществите прогоны программной модели.

16) Изучите полученные результаты.

 

4.3.2. Модель 2.

Повторите все действия раздела 4.3.1 для параметров модели 2, задав их следующим образом:

 

Узел ag

 

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

norm

Матожидание

10

Отклонение

3

 

Таким образом, задается поток транзактов, имеющих нормальный закон распределения со средним значением 10 временных единиц и среднеквадратическим отклонением в 3 временные единицы.

 

Узел serv

 

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

1

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

norm

Матожидание

9

Отклонение

3

 

Таким образом, задается нормальный закон обслуживания транзактов со средним значением 9 временных единиц и среднеквадратическим отклонением в 3 временные единицы.

 

4.3.3. Модель 3.

В разделе исследуется модель массового обслуживания с пуассоновским входным потоком и тремя вариантами вида распределения времени обслуживания:

А-  детерминированное

В- экспоненциальное

С- нормальное

 

Необходимо получить результаты с помощью

1) эксперимента с имитационной моделью и

2) теоретических расчетов на основе формулы Хинчина-Полачека.

Результаты должны быть помещены в Excel-таблицу:


 

Модель

Средний

интервал

прихода

заявок

tq

Среднее

время

обслуживания

ts

 

 

 

Среднее время ожидания в очереди

tw

Формула

Хинчина-Полачека

Имитационная модель

Тмод = 2000

Тмод = 50000

Запуск 1

Запуск 2

Запуск 3

Среднее

Запуск 1

Запуск 2

Запуск 3

Среднее

A

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 


1)  Повторите действия раздела 4.3.1 для каждого из трех наборов параметров (Номер варианта – Порядковый номер в списке группы):

 

Узел ag

 

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

expo

Матожидание

tq

Отклонение

none

 

Узел serv

А

 

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

none

Матожидание

ts

Отклонение

none

 

В

 

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

expo

Матожидание

ts

Отклонение

none

 

С

 

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

norm

Матожидание

ts

Отклонение

ts  / 3

 

(Число каналов во всех вариантах модели задается равным 1.)

Удобнее менять параметры узлов ag и serv непосредственно в сгенерированном cpp-файле. Для этого следует отыскать в .cpp-файле узловые операторы ag и serv и менять их параметры.

Для изменения параметров узла serv в .cpp-файле нужно найти строку:

serv ("Object 103", 1, none, norm, 9, 3, none, 104);

(здесь среднее время обслуживания в узле равно 9) и менять параметр со значением norm и два, следующих за ним.

Изменения параметров узла ag осуществляются аналогично.

Для каждого набора параметров сделайте по три запуска программной модели и определите среднее значение времени ожидания в очереди.

2) Задайте время моделирования равным 50000 и повторите все эксперименты предыдущего пункта.

3) С помощью формулы Полачека-Хинчина найдите значение времени ожидания в очереди для вариантов А, В, С.

4) Сравните теоретические результаты с результатами, полученными на имитационной модели для разного времени моделирования. Какие выводы можно сделать относительно полученных результатов?

 

4.4.Отчет по работе.

Отчет по работе должен содержать

-   файлы с полученными результатами прогонов и

-   таблицу со сводкой результатов экспериментов и вычислений по формуле Хинчина-Полачека.

 

4.5.Контрольные вопросы.

1)      Что такое имитационная модель?

2)      Какое средство системы Pilgrim используется для описания модели?

3)      Какими возможностями обладает конструктор Gem?

4)      Что является параметрами основных узлов?

5)      Каким образом задаются параметры узлов?

6)      Что входит в параметры модели?

7)      Как задаются параметры модели?

8)      Из чего состоят выходные параметры моделирования в системе Pilgrim?

9)      Каковы основные этапы создания программной модели в системе Pilgrim?

10) В каких случаях целесообразно применять аппарат имитационного моделирования для решения задач систем массового обслуживания?

11) Как отражается значение параметра Время моделирования на значениях выходных параметрах модели?

 

4.6.Варианты параметров модели 3

   средний интервал между приходами заявок

   среднее время обслуживания заявок

 

1

10.0

5.0

2

11.0

3.0

3

9.0

4.0

4

7.0

3.5

5

12.0

7.0

6

6.0

4.0

7

5.5

2.0

8

8.5

4.5

9

12.0

8.0

10

7.5

4.0

11

9.0

6.5

12

13.0

8.0

13

10.0

4.0

14

10.0

7.0

15

9.5

4.5

16

13.0

9.0

17

8.5

4.5

18

7.5

3.5

19

9.0

5.0

20

10.0

6.0

21

9.0

6.0

22

12.0

9.0

23

8.0

4.0

24

9.5

4.0

25

11.0

5.0

26

13.0

7.0

 

5.     Имитационная модель документооборота

 

5.1.Цель работы:

Изучение:

1) средств и приемов работы с приоритетами,

2) приемов маршрутизации транзактов.

 

5.2.Теоретические сведения.

В системе Pilgrim [1] обеспечивается возможность назначения транзактам приоритетов и применения различных правил обработки транзактов с разными  приоритетами в узлах модели.

В генераторе с бесконечной емкостью ag:

 

аg (Р123456789)

 

параметр Р3 задает приоритет (число типа int в диапазоне 1-32767), назначаемый каждому сгенерированному транзакту; если приоритет не нужен, то Р3=none.

Очередь queue

queue (Р123)

определяет узел, моделирующий очередь транзактов. Эта очередь строится по одному из двух правил: либо транзакты упорядочены в порядке поступления, либо вновь поступающие транзакты поступают в конец своей приоритетной группы (более приоритетные транзакты находятся ближе к началу очереди, а менее приоритетные – к концу). Приоритет транзакта тем выше, чем больше значение его приоритета. Дисциплина задается параметром Р2, значениями которого могут быть:

Р2= ргtу, для очереди с приоритетами,

Р2= none,  для очереди без приоритетов.

Узел обслуживания с N параллельными каналами serv

serv (Р12345678)

описывает узел, осуществляющий какое-либо обслуживание транзактов в течение модельного времени, отличного от нуля. Это одно- или многоканальный обслуживающий прибор, работающий по правилам абсолютных приоритетов или без них и имеющий стек для транзактов, обслуживание которых было прервано транзактами более высокого приоритета (правило относительных приоритетов реализуется, как было описано выше, в узле типа queue – очередь).

Дисциплина обслуживания задается параметром Р3:

Р3= abs:     используется приоритетная дисциплина с прерыванием обслуживания менее приоритетного транзакта более приоритетным, при этом менее приоритетный транзакт перемещается в специальный стек;

Р3= none: транзакты ставятся в очередь в порядке поступления.

 

Для Р3= abs имеются две возможности продолжения обслуживания транзактов, перемещенных в стек:

1)  после того, как приоритетный транзакт покидает узел serv, обслуживание транзактов, находящихся в стеке, продолжается с прерванного места, причем сохраняется чистое заданное время обслуживания, без учета времени нахождения прерванного транзакта в специальном стеке;

2)  после того, как приоритетный транзакт покидает узел serv, обслуживание транзактов, находящихся в стеке, начинается заново.

 

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

Имитацию такой ситуации можно обеспечить с помощью оператора присваивания типа

t -> ga=again,

который необходимо выполнить перед входом транзакта в узел serv. В этом случае при прохождении через serv транзакт получает признак возобновления обслуживания. После выхода из узла serv этот признак теряется.

Следует отметить, что среднее время обслуживания транзактов в узле serv и среднее время задержки в узле – это разные времена. При прерываниях обслуживания транзакта (с его дообслуживанием) чистое время его обработки будет меньше времени задержки в узле на длительность обслуживания приоритетных транзактов.

 

5.3.Содержание работы.

В работе создается и исследуется модель обработки документов в офисе.

Предполагается, что в офис приходят документы двух типов: обычные и срочные.

Срочные документы приходят реже, чем обычные, и требуют более длительной обработки.

Срочные документы обрабатываются вне очереди, при этом обслуживание обычного документа прерывается до окончания обслуживания срочного.

После обработки документы подшиваются в соответствующие папки.

Требуется найти:

-   Среднее время задержки документа в очереди

-   Среднее время обслуживания документа секретарем

-   Степень загрузки секретаря

-   Количество подшитых обычных документов

-   Количество подшитых срочных документов

 

1) Запустите приложение Excel и подготовьте таблицу для занесения результатов запусков модели следующего вида:

 

Возобновление обслуживания

Параметр

Запуск

Среднее

1

2

3

Продолжение

Tожидания

 

 

 

 

Tобслуживания

 

 

 

 

Загрузка секретаря

 

 

 

 

Обработано
документов

обычных

 

 

 

 

срочных

 

 

 

 

Повторение

Tожидания

 

 

 

 

Tобслуживания

 

 

 

 

Загрузка секретаря

 

 

 

 

Обработано
документов

обычных

 

 

 

 

срочных

 

 

 

 

 

2)  Запустите конструктор Gem.

3)  Создайте плоскость новой модели и постройте граф:

 

 

В модель включены два генератора:

-     генератор обычных документов (имеющих приоритет 1) и

-     генератор срочных документов (имеющих приоритет 2).

 

Транзакты узла queue при поступлении переупорядочиваются так, что транзакт с приоритетом 2 помещается в начало очереди транзактов.

Если в узле serv в момент поступлении транзакта с приоритетом 2 обслуживался транзакт с приоритетом 1, то его обслуживание прерывается, и на обслуживание поступает транзакт с приоритетом 2.

Покинувшие узел serv транзакты приоритета 1 направляются в папку 1, а транзакты приоритета 2 направляются в папку 2. Папки имитируются узлами типа term.

4) Задайте параметры инициализации модели и параметры узлов ag и queue.

AG101 ( «Документ 1»)

 

 

AG101( «Документ 2»)

 

 

Q103 («Стол»)

Для реализации модели обслуживания с приоритетами, необходимо соответствующим образом настроить узел queue (очередь): во вкладке «Определить параметры» в поле Приоритет следует выбрать значение prty, чтобы транзакты в узле располагались в порядке убывания приоритета к концу очереди.

 

 

5) Переменные

Прежде чем настраивать узел serv необходимо определить две переменные M и G.  Для обеих переменных задайте тип float.

 

 

 

6) Задайте параметры узла Q104 («Секретарь»)

На вкладке Определить параметры заполните поля следующим образом:

- Приоритетность - abs  (обслуживание транзакта с низшим приоритетом в случае прихода транзакта с более высоким приоритетом будет прерываться)

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

- Параметр 1 - M

- Параметр 2 - G

 

 

В разделе «Общий С++ текст до вхождения в узел» записать текст (значения M и G должны устанавливаться соответственно варианту работу):

if (t->pr==1)

{

M=1;

G=0.33;

}

else

{

M=3;

G=1;

}

 

 

Задайте условия перехода из сервера в соответствующую папку (узел term):

Условие перехода для обычных документов (из 104 в 105):

t->pr==1

 

 

Условие перехода для срочных документов (из 104 в 106):

t->pr==2

 

7) Установив все параметры, сгенерируйте исходный модуль и соберите исполнительный модуль модели.

8) Проведите по три запуска модели.

Результаты занесите в верхнюю часть таблицы с результатами.

9) Установите режим с повторением обслуживания прерванных транзактов, для чего перед узловым оператором serv в тексте исходного модуля добавьте строку:

t->ga=again;

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

10) Оцените изменение ситуации в случае, если обработкой документов будут заниматься два секретаря: задайте в качестве параметра “число каналов” узла serv значение 2, сделайте по одному-два запуска в каждом режиме и изучите результаты запусков.

 

5.4.Отчет по работе.

Отчет по работе должен включать

-    Файлы-отчеты системы  с результатами запусков и

-    Excel-таблицу со сводкой основных параметров (см. п.1).

 

5.5.         Контрольные вопросы.

1) Что такое приоритет?

2) Какие типы приоритетов можно использовать в системе Pilgrim?

3) Какие приоритеты и как влияют на обработку транзактов в узле queue?

4) Какие приоритеты и как влияют на обработку транзактов в узле serv?

5) Каким образом можно задать значение приоритета транзакта?

6) Какие из полученных результатов можно использовать для предварительной оценки адекватности модели?

7) Предложите какой-либо способ помимо использованного в работе для настройки параметров узла serv на обработку транзактов каждого приоритета.

 

5.6.Варианты.

Значения параметров определяются по значению N (порядковый номер в списке группы):

 

Узел

Параметры

Значение

1

ag (101)

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

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

- Математическое ожидание

- Среднеквадратическое отклонение

 

 

norm

2 * N
2/3
* N

1

ag (102)

Интервал между поступлениями срочных документов

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

-   Математическое ожидание

-   Среднеквадратическое отклонение

 

 

norm

8 * N
8/3
* N

3

queue (103)

Признак обслуживания с приоритетами

Prty

4

serv (104)

Длительность обслуживания обычных документов

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

-   Математическое ожидание

-   Среднеквадратическое отклонение

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

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

-   Математическое ожидание

-   Среднеквадратическое отклонение

 

 

norm

N

1/3 * N

 

 

norm

8 * N

8/3 * N

 

 

Величина времени моделирования – 960.

 

6.  Имитационная модель корпоративной информационной системы

 

6.1.         Цель работы:

Изучение:

1) схем зарядки замкнутых моделей в системе Pilgrim,

2) приемов получения выходных данных.

 

6.2.Теоретические сведения.

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

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

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

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

- Пользователи (или группы пользователей, в зависимости от сложности моделируемой системы) представляются одно- или многоканальными узлами типа serv (серверы);

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

- Конкретное состояние транзакта (запрос – ответ) фиксируется значением одного из его параметров;

- Для зарядки транзактами серверов пользователей, принадлежащих к одному классу, используется единственный генератор, порождающий всего один транзакт. Далее транзакты размножаются с помощью узлов типа creat.

 

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

 

 

Текст программы на языке Pilgrim [1]:

ag ("Старт",1,none, none,1.О,zero,zero,2);

top (2):  creat ("Множитель", none, Users, none, 4, 3);

              place;

top (3):   term ("Стоп");

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

               place;

top (4):   t->ft = addr[4]->na  +   5;

               t->ru0  = Think_time;

               t->iu0  =  QUERY;

               queue ("Распределитель",  none,  t->ft) ;

               place;

 

Узел 2 creat генерирует Users транзактов (по числу пользователей), не присваивая им номер семейства.

Далее эти транзакты попадают в очередь (узел 4), где каждому из них присваивается свой номер семейства, равный номеру сервера, в который этот транзакт поступит. В параметр транзакта  t->ru0 заносится также среднее время задержки в сервере, моделирующем работу пользователя. Этот параметр используется при описании серверов пользователей (узлов с номерами из диапазона [5, Users + 4], где Users - число серверов).

Для оценивания среднего времени реакции КИС  можно:

-  прибегнуть к приему с включением  в модель дополнительных узлов типа key вместе с соответствующей логикой или

-  воспользоваться следующим выражением:

 

 

где  означает среднее время обдумывания пользователем ответа системы перед выдачей нового ей очередного запроса.

 

 

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

 

6.3.Содержание работы.

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

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

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

Модель системы строится для случая четырех пользователей.

1) Создание графа модели.

С помощью конструктора Gem постройте граф модели как показано на рисунке:

 

 

В качестве значений параметров модели задаются следующие:

 

Имя

Тип

Смысл

Начальные значения

Users

int

Число пользователей

4

modtime

float

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

50000

T_time[]

float

Время обдумывания ответа

{N*3,N*4, N*5, N*6}

Q_time[]

float

Время обработки запроса

{0.8*N*3, 0.7*N*4, 0.6*N*5, 0.45*N*6}

 

где N – порядковый номер в списке группы.

В настройках modbeg в качестве времени моделирования указывается переменная modtime.

В настройках modend указывается имя файла-отчета.

Раздел “после вхождения в узел” узла 103  должен содержать текст:

cheg (101,none,none,modtime,zero,zero,102);

Узел 102 (creat) должен породить Users транзактов и направить их в узел 104 (queue).

Раздел “до вхождения в узел” описания узла 104 должен содержать текст:

t->ft=addr[104]->na+105;

t->ru0=T_time[addr[104]->na];

t->ru1=Q_time[addr[104]->na];

В качестве закона распределения в параметрах узлов имитации пользователей 105-108 следует указать значение expo для экспоненциального распределения времени обдумывания.

2) Редактирование текста программной модели.

После генерации программного кода необходимо произвести несколько корректировок.

В узле 104 убрать сгенерированные С++ - операторы и изменить параметры узлового оператора queue 

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

Для узлов 105-108 установить параметры

 

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

1

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

norm

Среднее время

ru0

Отклонение

ru0/3

 

В узле 110 убрать сгенерированные С++ - операторы и изменить параметры узлового оператора serv

serv ("КИС", 1, none, norm, t->ru1, t->ru1/3, none, t->ft);

После этого следует проверить текст модуля на наличие пропусков и ошибок.

3) Запуски программной модели.

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

Для всех запусков необходимо оценить среднее время реакции системы  с использованием выражения:

 

 

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

4) Определение времени ответа с помощью дополнительного узла key.

 

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

Для этого необходимо выполнить следующее.

- Добавить в программную модель четыре узла (соответственно числу работающих в системе пользователей) типа key.

Узлам присвоить номера 115, 116, 117, 118 и скорректировать параметр, задающий максимальное число узлов модели, в операторе modbeg.

- Добавить описание узлов key в программную модель, включив функцию hold(<номер узла key>) вслед за узловым оператором, которые будут переводить узлы в закрытое состояние после прохода через них транзактов.

- Скорректировать узловые операторы serv, имитирующие работу пользователей, добавив перед узловыми операторами функцию rels(<номер узла key>) и изменив параметр маршрутизации транзакта на номер соответствующего узла key.

 

Произвести запуски модели, оценить значения времени реакции системы и сопоставить их со значениями,  полученными путем расчета.

Результаты расчета и запусков внесите в таблицу следующего вида:

 

Польз.

Кзагр

 

Расчет-

ное

Изме-ренное

1

 

 

 

 

 

2

 

 

 

 

 

3

 

 

 

 

 

4

 

 

 

 

 

 

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

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

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

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

 

6.4.Отчет по работе.

Отчет по работе должен содержать файлы с результатами прогонов и сводку результатов в форме таблицы раздела 6.3.

 

6.5.Контрольные вопросы.

1)  Что такое замкнутая имитационная модель?

2)  Что такое зарядка модели”?

3)  Какие существуют способы зарядки модели?

4)  Какие приемы можно применить для расчета среднего времени реакции КИС на запросы пользователей?

5)  Предложите один или несколько способов определения временных параметров помимо использованных в работе.

 

7.     Многослойная имитационная модель экономического процесса

 

7.1.Цель работы:

Изучение:

1)  средств построения имитационных моделей на основе методологии декомпозиции процессов,

2)  приемов работы с приоритетами,

3)  способов маршрутизация транзактов.

 

7.2.Теоретические сведения.

Широко применяемые при создании и использовании имитационных моделей CASE-средства активно используют методологию структурного анализа, предусматривающую наглядное и эффективное проектирование системы путем выделения ее составляющих и их последовательного рассмотрения. Описание системы начинается с общего обзора и выделения основных ее компонентов или процессов. Для визуального представления создается первый уровень или слой, на котором отображаются выделенные процессы и их взаимосвязи. Далее для ряда процессов может быть проведена детализация, в свою очередь, выделяющая новые процессы в их структуре. Так, последовательным усложнением описания объекта и его процессов разработчик достигает необходимой детализации. Глубина детализации определяется как необходимой точностью, так и набором исходных данных. В процессе структурного анализа выявляется иерархическая структура модели.

С помощью конструктора Gem системы Pilgrim [1] можно строить многоуровневые модели, организуя иерархию плоскостей построения модели.  Иерархические модели устроены следующим образом: верхний уровень модели содержит ряд узлов, среди которых есть такие, которые детализируются на нижних уровнях. При этом, создавая детализирующий уровень, пользователь опять может поместить на нее узлы, которые могут быть детализированы еще ниже. Таким образом, граф модели примет иерархическую структуру. Число уровней вложенности. Конструктором не ограничено, т.е. пользователь может сколько угодно подробно детализировать и обобщать процессы модели.

При создании новой модели пользователь начинает работу корневого уровня, и поэтому некоторые процессы модели с целью дальнейшей детализации могут быть представлены в общем виде. Для выполнения структурной декомпозиции в системе Pilgrim определяется особый тип узла parent, использующийся исключительно как средство создания наглядных многоуровневых моделей. Узел типа parent содержит ссылку на плоскость, его детализирующую, т.е. используется для описания процессов, которые можно рассмотреть на отдельной плоскости. Узел parent не выполняет никаких действий по обработке транзакта и при генерации программного кода просто заменяется своей декомпозицией, т.е. порождаемым им слоем. Например, если пользователь создал узел типа parent с номером 4, то в программном файле узел с таким номером сгенерирован не будет. С точки зрения генератора программного файла узел parent представляет собой простой маршрутизатор, который может иметь любое количество входов, ссылку на детализирующий уровень и единственный выход. На рисунке в плоскости 1

 

 

имеется последовательность узлов Клапан 101àДействие 102àОчередь 103.

Узел Действие 102 является узлом типа parent и содержит детализирующую плоскость  с цепочкой Очередь 104 à Сервер 105:

 

 

В этой плоскости стрелка, направленная из левого верхнего угла экрана в узел Очередь 104, обозначает, что этот узел является входом  на плоскость, а стрелка из узла Сервер 105 в правый верхний угол - выходом с плоскости.  При генерации программного файла получим следующую цепочку:

Клапан 101 à Очередь 104 à Сервер 105 à Очередь 103,

т. е. узел Действие 102 является лишь средством реализации (виртуальным узлом) и будет обработан генератором как узел Pilgrim

Иногда при построении модели может возникнуть необходимость выделения некоторых типовых действий по обработке данных. Это могут быть запросы на выполнение бухгалтерской проводки, требования выделения моделируемого ресурса или какие-либо другие действия. При возникновении такой задачи удобно обозначить подпрограммы, обращение к которым было бы возможно из любого места модели. Для этого используются узлы типа pay, rent, down. Такие узлы, так же как и parent, содержат переход на более низкий уровень модели, однако имеют несколько иной механизм действия и область применения. Если с помощью узла типа parent можно создавать иерархические модели, имеющие на любой сколько угодно глубоко вложенной плоскости новые узлы parent, то с помощью узлов типа pay, rent, down возможно лишь реализовать подпрограммы на двух слоях модели и невозможно построить общую иерархию уровней.

Рассмотрим принцип работы таких узлов на примере узла pay. На плоскости 1

 

 

находится узел типа pay, содержащий обращение к подпрограмме, расположенной в плоскости 12:

 

 

Входом плоскости 12 является узел с названием «Р/счет», а выходом - узел с именем «Бухгалтерия». При генерации программного файла в узле «Бухгалтерия» в качестве параметра, определяющего номер следующего узла, на который переходит транзакт, будет указано не конкретное значение, а специальный параметр транзакта updown. При этом предполагается, что каждый транзакт, попадающий в выходной узел плоскости, содержит в параметре updown номер узла, на который следует выполнить переход. Параметр транзакта updown инициализируется в узле типа pay, т.е. в данном случае в узле с названием «Плата поставщику».

Аналогичным образом реализуется переход на подпрограмму с использованием узлов типа rent и down. Они также инициализируют переменную транзакта updown. Таким образом, использовать узлы типа pay, rent и down для реализации иерархических моделей нельзя: на уровне подпрограммы для узла одного из этих типов нельзя размещать никакой из узлов типа pay, rent, down, поскольку каждый из этих узлов заново выполнит инициализацию параметра updown, т.е. заменит значение updown, установленное уровнем выше, организуя циклическую ссылку (это приведет к семантической ошибке).

Чтобы защитить пользователя от совершения таких ошибок, конструктор не позволяет создавать в текущей плоскости узлы типа pay, rent, down, если управление передано с более высокого уровня через узел перечисленного типа. Однако узлы обращения к подпрограмме имеют одно важное преимущество перед узлом parent. Оно состоит в том, что транзакт сам «помнит», куда ему необходимо вернуться; поэтому из нескольких узлов (или слоев) можно обращаться к общей плоскости, содержащей детальное выполнение типового действия.

Предположим, что в последнем примере имеется некоторая организация, имеющая собственный расчетный счет и выполняющая ряд операций по перечислению средств; часть операций необходимо смоделировать. В плоскости 12 создана подпрограмма «Плата поставщику», выполняющая бухгалтерскую проводку по перечислению средств со счета фирмы. Если возникает необходимость смоделировать аналогичную ситуацию с перечислением средств (например, возврат кредита), то можно создать новый узел типа pay и указать ему в качестве подпрограммы плоскость 12.

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

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

 

7.3.Содержание работы.

В работе требуется построить модель производственного предприятия с использованием концепции многослойной модели. Моделируемая система описывается следующим образом.

Предприятие осуществляет прием и обработку заказов на изготовление продукции, которая может принадлежать одному из двух типов А и В.

Заказы на продукцию типа А поступают в среднем раз в  дней, а на продукцию типа В - раз в  дней (значения даны в таблице с вариантами).

Для производства продукции типа А необходимо  дней, а для продукции типа В -  дней (значения даны в таблице с вариантами). Одновременно может обслуживаться только один заказ. Заказы на продукцию А являются первоочередными.

Все сведения о выполнении заказов типов А и В фиксируются в отдельных документах.

Модель строится для исследования очереди задержек заказов.

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

1)  Создание графа модели.

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

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

-   производство и регистрация выполненных заказов;

За единицу модельного времени следует взять один рабочий день.

Запустите конструктор Gem, выберете Файл à Создать, и поместите на появившуюся пустую корневую плоскость с именем Плоскость 1 узлы типов parent serv и два узла типа term, расположив их следующим образом:.

 

 

Задайте имена узлов:

 

Номер

Имя

102

Производство

103

Отчет А

104

Отчет В

 

Определите маршруты транзактов, соединив узлы графа модели. б

 

 

Создайте плоскость формирования заявок, для чего двойным щелкнем по узлу Object 101 получите новую пустую плоскость 10 с именем Object 101 и создайте на ней граф:

 

 

В информационной строке в нижней части экрана красным цветом отображены надписи Вход не назначен и Выход не назначен. Плоскость 10 не имеет входа, так как предназначена для генерации заявок. Для задания выхода необходимо в левой части экрана щелчком по кнопке Слой открыть диалоговое окно, в котором ввести имя слоя Заказ,. установить Вход в значение nonе, а в поле Выход указать 107:

 

 

После нажатия ОК одна из красных надписей в информационной строке будет заменена на Выход: 107.

2) Определение глобальных переменных модели.

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

 

 

в котором ввести имя переменной proc_time и тип переменной float. Значение указывать не нужно, так как оно будет задаваться динамически, в зависимости от типа продукции.

3) Определение свойств узлов плоскости 10.

Узел 105 типа ag (имитация поступления заказов типа А):

 

Приоритет

2

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

norm

Среднее время

Отклонение

 

Узел 106 типа ag (имитация поступления заказов типа В):

 

Приоритет

1

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

norm

Среднее время

Отклонение

 

Узел 107 типа queue (имитация нахождения заказов в очереди на выполнение):

 

Приоритет

prty

 

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

4) Определение свойств узлов плоскости 1.

Узел 102 типа serv (производство):

 

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

1

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

abs

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

norm

Среднее время

proc_time

Отклонение

proc_time/3

 

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

Для этого необходимо:

-  выбрать в поле Выходы строку Из 102 в 103 и в поле Условие перехода указать: 

t->pr = = 1.

что обеспечит переход в узел 103 транзактов с приоритетом 1 (значение параметра t->pr);

-  в поле C++ текст ввести строку

proc_time = ;

что обеспечит настройку времени обслуживания транзактов приоритета 1 в узле serv в значение равное ;

-  выбрать в поле Выходы строку Из 102 в 104 и в поле C++ текст ввести строку: 

proc_time = ;

что обеспечит настройку времени обслуживания транзактов приоритета 2 в узле serv в значение равное 1.

 

 

5) Определение параметров функций modbeg и modend.

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

 

Название

Работа с заказами

Время

365

Задержка

107

 

Для всех остальных параметров сохраняются значения по умолчанию:

 

 

6)  Генерация текста имитационной модели в операторах Pilgrim.

Для генерации программного файла необходимо в основном меню выбрать Выполнить à Генерировать C++ файл. При этом конструктором сначала будет выполнена проверка модели, в нашем случае не обнаружившая никаких ошибок или подозрительных участков на графе модели.

После нажатия кнопки ОК будет выведено стандартное диалоговое окно, предлагающее сохранить файл с расширением «срр». Сохраненный конструктором файл можно далее компилировать в среде Visual C++.

Программная модель, автоматически сгенерированная конструктором и помещенная в срр-файл, имеет следующий вид (для значений  =30,  =5,  =10,  ==2):

#include <Pilgrim.h>

forward

{

int   fw;

int  proc_time;

modbeg("Производство под заказ", 107,365,(long)time(NULL),none,107,none,none, 2);

ag("Заказы A", 105, 2, norm, 30, 10, none, 107);

ag("Заказы В",  106, 1, norm, 5, 2, none, 107);

network(dummy, dummy)

{

top(102):

if ( t->pr = = 1 )

                   {

                         proc_time = 10;

 fw=103;

                   }

else

{

proc_time = 2;

fw=104;

}

serv("Производство", 1, abs, norm, proc_time,  proc_time/2, none, fw);

place;

top(103):

term("Отчет А");

place;

top(104):

term("Отчет В") ;

place;

top(107):

queue ("Очередь заказов", prty, 102);

place;

fault(123);

}

modend ("pilgrim.rep", 1, 8, page); return 0; }

}

7) Сборка имитационной модели в операторах Pilgrim.

Проводится в соответствии с

Приложение 4

 

Создание и запуск модуля Pilgrim-

8) Эксперимент на имитационной модели в операторах Pilgrim.

Подготовьте в приложении Excel таблицу для записи результатов.

 

Параметр

Запуск

Среднее

1

2

3

Tожидания

 

 

 

 

Tобслуживания

 

 

 

 

Загрузка производства

 

 

 

 

Обработано заказов

Типа А

 

 

 

 

Типа В

 

 

 

 

 

Проведите запуски программной модели и занесите результаты в таблицу.

9) Сравнение экспериментальных результатов с ожидаемым.

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

 

7.4. Отчет по работе

Отчет по работе должен включать:

-  Файл с графом модели (*.pgf)

-  Сгенерированный исходный текст (*.cpp)

-  Таблицу с результатами прогонов.

7.5.Варианты работ

Средние интервалы поступления и обслуживания заявок типа А и В:

 

1

11

2

4

1

2

12

2

4

1

3

13

3

5

1

4

14

3

5

1

5

15

4

5

2

6

16

4

5

2

7

17

4

5

2

8

18

4

6

2

9

19

4

6

2

10

20

5

6

2

11

21

5

6

2

12

22

5

5

3

13

23

5

6

3

14

24

5

6

3

15

25

6

7

3

16

26

6

7

3

17

27

6

7

3

18

28

6

7

3

19

29

6

7

3

20

30

6

8

4

21

31

7

8

4

22

32

7

8

4

23

33

7

8

4

24

34

7

8

4

25

35

7

8

4

26

36

7

8

4

 

7.6.         Контрольные вопросы.

1) В чем заключается принцип декомпозиции при создании имитационных моделей?

2) Как называются уровни декомпозиции в системе Pilgrim?

3) Что позволяет сделать узел типа parent?

4) В чем состоит отличие узла типа parent от других узлов многослойного моделирования?

5) Какие ограничения установлены в системе Pilgrim на использование узлов типа rent, pay и down?

 

8.  Отсеивающий эксперимент

 

8.1. Цель работы:

 

Изучение методов выбора существенных факторов эксперимента.

 

8.2. Теоретические сведения.

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

Объект исследования удобно представлять в виде «черного ящика»:

 

 

В зависимости от целей моделирования в ходе эксперимента должны быть решены одна или несколько задач, например, нахождение совокупности значений входных параметров Х1, Х2,… Хn, оптимизирующей выходной параметр. Методики решения таких задач разрабатываются и изучаются теорией планирования эксперимента [6]. Входные параметры в теории планирования эксперимента называют факторами, а выходные параметры – откликом.  Одной их типичных задач планирования эксперимента является задача выделения среди множества факторов, число которых может быть весьма велико, подмножества тех, которые несущественно влияют на отклик. Решение задачи отсеивания несущественных факторов может значительно сократить время экспериментов с моделью и затраты на их проведение. Процедура нахождения несущественных факторов применяется на начальных этапах, когда сведений о влиянии различных факторов недостаточно, и носит название отсеивающего эксперимента.

Переменным Х1, Х2,… Хn можно сопоставить геометрическое понятие факторного пространства – пространства, координатные оси которого соответствуют значениям факторов. Совокупность конкретных значений всех факторов образует точку в многомерном факторном пространстве.

Область планирования задается интервалами возможного изменения факторов Хimin< Хi < Хimax  для i =1, 2, …, n. Факторы, однако, могут иметь разные размерности (Мбайт, ГГц, операций/с) и различные диапазоны изменения. В теории планирования эксперимента используют кодирование факторов.

Переход к кодированным (безразмерным) значениям задается преобразованием

 

 

где

 – натуральное значение фактора;

      – именованное значение фактора, соответствующее нулю в безразмерной шкале;

 – интервал варьирования фактора;

 – кодированное значение фактора.

 

При проведении отсеивающих экспериментов все факторы варьируются на двух уровнях. Нижний и верхний уровень каждого фактора выбираются из технологических соображений и предшествующего опыта. Общее число опытов должно быть не меньше числа исследуемых факторов. Комбинация уровней факторов определяется матрицей планирования - таблицей, показывающей, на каком уровне устанавливается каждый конкретный фактор в каждом опыте. В этой таблице "+1" (или просто "+") означает, что фактор берется на верхнем уровне, "-1" (или "-") - на нижнем (для качественных факторов эти понятия условны, например, "дисциплина обслуживания" на нижнем уровне может быть LIFO, на верхнем - FIFO, важно, чтобы отличие между уровнями было как можно больше в рамках допустимых пределов работоспособности исследуемой системы) В каждом конкретном опыте уровни факторов в отсеивающем эксперименте должны быть выбраны так, чтобы матрица планирования обладала следующими свойствами (свойства ортогональности):

6) сумма чисел в каждом столбце кроме первого равнялась нулю и

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

Примером матрицы планирования может быть следующая таблица:

 

Номер опыта

i

ФАКТОРЫ

Результат опыта
F

0

1

2

3

4

5

6

7

1

+

+

+

+

+

+

+

+

95

2

+

-

+

-

+

-

+

-

98

3

+

+

-

-

+

+

-

-

87

4

+

-

-

+

+

-

-

+

105

5

+

+

+

+

-

-

-

-

83

6

+

-

+

-

-

+

-

+

81

7

+

+

-

-

-

-

+

+

91

8

+

-

-

+

-

+

+

-

86

?Fi+

 

356

357

369

385

349

370

372

 

?Fi-

 

370

369

357

341

377

356

354

 

ΔFi

 

14

12

12

44

28

14

18

 

Ранг

 

4

6

6

1

2

4

3

 

 

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

1 - день недели,

2 – качество помещения,

3 - район города,

4 - вид банковской операции,

5 - время (период) дня,

6 - категория клиента,

7 - квалификация кассира;

Столбец с обозначением "0" не отвечает никакому фактору, он появился вследствие правила формирования матрицы, которое поясняется ниже.

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

Чтобы построить матрицу, обладающую свойствами ортогональности, за основу берутся так называемые матрицы Адамара. Матрица Адамара размерности  строится из матриц размерности  по правилу:

 

 

Матрица планирования нашего примера образована матрицей , отсюда столбец с номером 0. С такой матрицей можно проверить влияние не более, чем семи факторов. Если проверяемых факторов больше (от 8 до 15) , то следует строить матрицу . Число опытов в этом случае равно16, если же факторов меньше 15, то просто отбрасываются последние столбцы матрицы .

После выполнения эксперимента по данному плану анализируем его результат следующим образом.

Для каждого фактора j,  j=1,…7 находим сумму значений выходного параметра по всем опытам, где j-ый фактор был на верхнем уровне (  ):

 

.

 

и сумму значений выходного параметра по всем опытам, где j-ый фактор был на нижнем уровне (  ):

 

 

После чего находим разность

 

 

и вносим результаты в соответствующие столбцы таблицы. Теперь ранжируем факторы по убыванию  в предположении того, что более сильно влияющие факторы характеризуются большим значением абсолютной величины разности. Ранг фактора вносится в нижнюю строку таблицыОшибка! Источник ссылки не найден..

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

 

8.3.Содержание работы.

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

Работа выполняется с помощью табличного процессора Excel.

 

8.4.Отчет по работе.

Отчет по работе должен содержать заполненную матрицу планирования отсеивающего эксперимента  в виде:

 

Номер опыта

i

ФАКТОРЫ

Результат опыта
F

0

1

2

3

1

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?Fi+

 

 

 

 

 

 

 

 

 

?Fi-

 

 

 

 

 

 

 

 

 

ΔFi

 

 

 

 

 

 

 

 

 

Ранг

 

 

 

 

 

 

 

 

 

 

Описание структуры таблицы приведено в разделе 0.

 

8.5.Варианты работ.

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

Обозначения:

N  - Число факторов

 - Значение i-го фактора на верхнем уровне

 - Значение i-го фактора на нижнем уровне

№ 1            (N=7)

 

121

115

101

97

94

93

89

88

 

№ 2       (N=5)                       

 

 

109

   

101

   

97

   

97

   

96

   

93

   

89

    

88

 

№ 3         (N=6)                     

 

  

121

 

115

 

101

  

97

  

94

  

93

  

89

 

88

 

№ 4       (N=7)                       

 

120

101

97

93

91

88

84

79

 

№ 5       (N=5)                       

 

    

125

   

105

   

98

   

97

   

97

   

91

   

67

 

58

 

№ 6       (N=5)                       

 

    

125

   

105

   

98

   

97

   

93

   

91

   

76

   

69

 

№ 7       (N=5)                       

 

   

152

   

143

   

111

   

98

   

89

   

76

47

    

33

 

№ 8        (N=6)                               

 

 

167

  

152

 

111

  

99

  

98

  

89

 

51

  

33

 

№ 9     (N=7)     

 

142

131

98

94

86

74

69

47

 

№ 10   (N=7)      

 

164

131

98

95

94

74

69

47

 

№ 11    (N=7)

 

143

132

104

103

94

75

69

64

 

№ 12  (N=6)      

 

 

148

 

122

  

114

  

97

  

79

  

66

  

66

 

57

 

№ 13         (N=5)                   

 

   

137

   

123

    

99

   

97

   

84

   

79

   

75

   

59

 

№ 14     (N=6)

 

 

110

  

99

 

96

  

88

 

87

  

87

  

83

  

68

 

№ 15      (N=5)

 

   

134

   

128

   

96

   

85

   

75

    

74

   

63

   

55

№ 16      (N=7)

 

126

117

104

88

79

56

54

48

 

№ 17     (N=6)

 

  

146

 

117

 

105

  

98

  

94

  

79

  

69

 

48

 

№ 18      (N=6)    

 

  

110

  

99

 

97

  

82

 

78

  

69

 

69

  

68

 

№ 19          (N=5)

 

   

130

   

124

   

99

   

98

   

94

   

86

   

73

    

71

№ 20     (N=7)

 

126

117

99

88

79

56

54

48

 

№ 21      (N=5)

 

   

113

   

97

   

84

    

75

   

75

   

67

   

59

   

56

 

№ 22        (N=6)

 

  

132

  

124

 

122

  

87

  

78

 

74

  

65

 

56

 

№ 23     (N=7)

 

124

122

117

88

87

78

75

69

№ 24       (N=6)

 

 

126

  

125

  

114

 

99

  

99

  

89

  

78

 

73

 

8.6.Контрольные вопросы.

1) Что в теории планирования эксперимента называется фактором?

2) Что в теории планирования эксперимента называется откликом?

3) Зачем и как кодируются факторы?

4) В чем состоит сущность постановки задачи отсеивания факторов?

5) Как организуется и проводится отсеивающий эксперимент?

 

Литература

 

1

Емельянов А.А., Власова Е.А., Дума Р.В. Имитационное моделирование экономических процессов. – М.: Финансы и статистика, 2007.

2

Соболь И.М. «Метод Монте-Карло» . – М.: «Наука»,1985 г.

3

Кнут Д. Искусство программирования для ЭВМ. Т. 2. Получисленные алгоритмы. Пер.с англ. - М.: Мир, 1977

4

Гнеденко Б.В. Курс теории вероятностей. Изд.9. М.:, URSS, 2007

5

Гнеденко Б.В., Коваленко И.Н. Введение в теорию массового обслуживания, Изд.4. М.:, URSS. 2007

6

Монтгомери Д. Планирование эксперимента и анализ данных. Пер.с англ.Л.: «Судостроение», 1980.

 


Приложение 1

 

Настройка и сборка С++-программ

 

В ряде лабораторных работ для изучения и исследования методик и приемов моделирования используются программные модули на языке С++.

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

В лабораторных работах используются модули:

 

Имя

Назначение

001.cpp

Генератор ПСЧ

Имитация наступления событий

Прототип программной модели метода Монте-Карло

002.cpp

Генератор случайного числа с экспоненциальным законом распределения

Генератор случайного числа с раcпределением, задаваемым гистограммой

Имитация автобусного движения

 

Настройка и запуски программ следует производить по следующим правилам.

1.  Создание проекта модели.

a.  Создайте на жестком диске рабочую папку для проекта.

b. Откройте приложение Microsoft Visual C++.

c.  Создайте новый проект, для чего выполните:

File à Newà Projects à Win32 Application

 

 

В окне  Project name нужно указать имя проекта (латинскими буквами).

В окне Locaton нужно указать (через кнопку Browse) путь к проекту.

Нажмите OK.

В открывшемся окне выберете A simple Win32 application:

 

 

и нажмите Finish.

d. Перейдите в режим FileView (нажав соответствующую вкладку в нижней части левой панели)

 

 

в папке Source выберете и откройте  двойным щелчком мыши по имени файла созданного СРР-модуля  для отображения его содержимого на правой панели

e.                 Соберите проект и проверьте корректность сборки одним из следующих способов:

-  Build à Rebuild All главного меню 

-  Нажатием функциональной клавиши F7

-  Нажатием значка  панели инструментов

 

Появление сообщения 0 error(s), 0 warning(s) в окне отчета о процессе построения свидетельстует о правильности выпонения шага.

2. Создание выполняемого файла модели.

a.  Замените текст СРР-модуля текстом модуль-шаблона, для чего:

-   выделите весь текст СРР-модуля (EditàSelect All),

-   откройте двойным щелчком по имени файла с текстом модуля-образца, из библиотеки CPPs (тексты модулей приводятся в
Приложение 3

 

-   Исходные тексты С++-программ),

-   выделите весь текст модуля (EditàSelect All) и скопируйте его в буфер (EditàCopy),

-   переключитесь на СРР-модуль собранного проекта (Window à <имя модуля>),

-   выполните вставку из буфера с заменой выделенного текста (EditàPaste),

-   переключитесь на модуль шаблона и закройте модуль (защелкой окна).

b. Проверьте правильность выполненной операции, запустив сборку проекта (см. выше).

3. Задание реквизитов файла результатов.

a.  Рекомендуется сохранять результаты запусков для отдельных пунктов задания в отдельных файлах. Для указания нужного выводного файла в строке

 

 

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

b. Проверьте правильность выполненной операции, запустив сборку проекта (см. выше) и открыв файл с помощью Windows-приложения Блокнот (Notepad).

c. Внимательно изучите текст программы.

 

Приложение 2

 

Параметры C++-программ

 

Для каждого прогона производится задание значения параметров программ. Рядом с каждым параметром (переменной С++) стоит комментарий, поясняющий содержательный смысл параметра и, возможно, правило заданий его значения. 

-  NexpR (long)    число испытаний (запусков) генератора псевдослучайных чисел

-  NexpE (long)    число испытаний (запусков) алгоритма имитации случайного события

-  NexpS (long)    число испытаний проводимых методом Монте-Карло

-  Pevent (float)    вероятность наступления случайного события

 


Приложение 3

 

Исходные тексты С++-программ

 

Модуль 001.CPP

 

 

Модуль 002.CPP

 

 

Приложение 4

 

Создание и запуск модуля Pilgrim- модели

 

Создание исполняемого файла модели.

1) Создайте на жестком диске рабочую папку для будущего проекта.

2) Перенесите в рабочую папку файл модели <имя модели>.cpp.

3) Откройте приложение Microsoft Visual С++.

4) Выполните:

File à Newà Projects à Win32 Application

В окне Locaton посредством кнопки  (Browse) укажите путь к файлу модели <модель>.cpp.

В окне  Project name укажите имя проекта (латинскими буквами) и нажмите OK.

В открывшемся окне оставьте неизменными установку по умолчанию для типа проекта (Empty application) и нажмите OK

5) Внесите в проект файлы, необходимые для построения объектного кода модели.

 

Файл

Папка

Comctl32.lib 

стандартная библиотека  (папка) С++
Visual Studio/VC98/Lib

Pilgrim.lib 

стандартная библиотека  (папка) С++
Visual Studio/
VC98/Lib

Pilgrim.res 

стандартная библиотека  (папка) С++
Visual Studio/
VC98/ Projects

<имя модели>.cpp

имя папки с файлом должно соответствовать имени проекта, которое было указано в окне Location (файл модели);

 

Вставка выполняется командой Add Files To Folder / Add Files To Project контекстного меню, вызываемого правым щелчком мыши после установки курсора на имя проекта (предварительно должна быть выбрана вкладка  в окне проектов).

6)  Постройте исполняемый файл модели.

Выполняется одним из следующих способов:

-  Build à Rebuild All главного меню Visual Studio

-  Нажатием функциональной клавиши F7

-  Нажатием значка  панели инструментов

 

Если в окне отчета о процессе построения появится сообщение 0 errors, можно запустить программную модель с помощью одного из следующих способов:

-  Build à Execute ModelPro.exe.

-  Нажатием комбинации функциональных клавиш Ctrl + F5

-  Нажатием значка  панели инструментов

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

1)  Перед запуском процесса имитации целесообразно выбрать в меню Результаты пункт Динамика задержки. После этого в меню Моделирование выбрать пункт Запуск модели. Тогда график задержки по выбранной при построении графа модели очереди будет изображаться динамически. Пример отображения графика показан на рисунке:

 

 

Синим цветом показано среднее время задержки в очереди.

Конкретный вид графика определяется параметрами моделирования (проанализируйте параметры модели №1 и определите, каким должен быть вид графика среднего времени задержки в очереди).

Можно также выбрать режим динамического построения графика потока в транзактов в терминаторе.

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

2) В папке созданного проекта откройте и изучите файл результатов, где сведены в таблицу выходные параметры всех узлов модели (файл имеет по умолчанию расширение rep, если это не было изменено в настройках):

 

 

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

4) Изменения можно вносить минуя стадию создания с помощью конструктора файла .pgf  непосредственно в файл.cpp,. Следует иметь в виду, однако, что эти изменения не будут отражены в файле .pgf.