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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Курсовая работа

по дисциплине «Моделирование систем»

На тему

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

Задание на курсовое проектирование

имитационный моделирование массовый обслуживание

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

Требуется написать на языке GPSS World и на языке C# имитационную модель агрегированной Системы массового обслуживания, структура и параметры которой определены вариантом = (10, 0):

№ №

Конфигурация

p1

Источник

Тип 1-го узла

Тип 2-го узла

a = M ()

b1 = M (x1)

b2 = M (x2)

410

1||2

0. 7

R

*/M/2/?

*/R/1/3

10

28

28

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

1) вычислить стационарные:

— коэффициенты загрузки с11 и с12 первого двухканального узла и коэффициенты загрузки с2 для второго узла;

— средние длины очередей L1 и L2 (в 1-м и 2-м узле соответственно);

— среднее число R заявок в Системе;

— среднее время ожидания W1 и W2 в 1-м и 2-м узле;

— вероятности Q1 и Q2 потери заявки в 1-м и 2-м узле;

— среднее время E ответа системы

с контролем статистической погрешности всех вычисленных значений;

2) рассчитать переходные процессы с2(t), с11(t), с12(t), L1(t), L2(t), R (t) и определить их длительность;

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

При усовершенствовании (оптимизации) Системы ее стоимость S и вероятности потери заявки Q1 и Q2 не должны возрастать. Стоимость S как функция интенсивностей µ1 и µ2 обслуживания в узлах (1-м и 2-м соответственно), и числа мест Lmax в ограниченной очереди определяется выражением:

,

где, , и — число каналов в узле 1 и в узле 2 соответственно.

Целью усовершенствования (оптимизации) Системы является минимизация среднего времени ответа E. Варьируемые параметры Системы — это интенсивности и

(непрерывные):, , и число мест в ограниченной очереди (дискретный параметр):.

Реферат

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ, СИСТЕМА МАССОВОГО ОБСЛУЖИВАНИЯ, ЗАЯВКА, GPSS, КОЭФФИЦИЕНТ ЗАГРУЗКИ, ЭКСПОНЕНЦИАЛЬНОЕ РАСПРЕДЕЛЕНИЕ

Предметом исследований является система массового обслуживания.

Цель — провести исследование и моделирование СМО, с расчетом стационарных значений системы и контролем погрешности получаемых значений.

Также требуется реализации соответствующей СМО в GPSS и на языке высокого уровня Java.

Введение

имитационный моделирование массовый обслуживание

Имитационное моделирование (ИМ) применяется для исследования и проектирования таких сложных систем и процессов, как предприятия, информационные сети, мировые динамики в экономике или экологии и так далее.

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

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

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

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

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

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

1. Постановка задачи

Приведем параметры системы, указанные в задании на курсовое проектирование. Система схематично изображена на рисунке 1.

— длительность интервала ф поступления заявок принадлежит равномерному распределению, м.о. M (ф) = a = 10;

— интенсивность входящего потока 1/a = 0. 1;

— вероятность выбора входящей заявкой первого узла;

— время обслуживания заявки в 1-м узле принадлежит экспоненциальному распределению, его м.о. b1 = 28, интенсивность обслуживания;

— время обслуживания заявки во 2-м узле распределено равномерно, его м.о. b2 = 24, интенсивность обслуживания во 2-м узле;

— очередь в 1-м узле не ограничена, поэтому вероятность потери заявки в этом узле;

— очередь во 2-м узле ограничена максимальной длиной, поэтому вероятность потери заявки в этом узле.

Рисунок 1 — Схема Системы 24

Для представленной системы:

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

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

— стоимость исследуемого 10-го варианта Системы

= = 1/12 + 1/24 + 0. 01·3 = 11/80 =.

Требуется оптимизировать, ,.

Задача оптимизации: найти, ,, доставляющие минимум E:

(1)

и принадлежащие следующей области допустимых решений (ОДР):

(2)

где 0. 1375 — стоимость заданной Системы,

— вероятность потери заявки во втором узле заданной Системы.

2. Методы решения

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

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

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

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

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

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

3. Аналитическое исследование системы

Основываясь на м.о. частоты поступления заявок можно найти интенсивность поступления заявок, она составляет 0.1 (1/М (x)).

Так как на первый блок, поступившие заявки уходят с вероятностью 0. 7, значит интенсивность поступления заявок на него можно взять равной 0. 07. Интенсивность поступления заявок на второй блок равна 0. 03, при вероятности поступления 1 — 0.7 = 0.3.

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

Так как м.о. скорости обслуживания равно 24 для каждого из элементов блока, то общая интенсивность всего блока при двух элементах равна 2(1/24) = 0. 083.

Оценка интенсивности обработки заявок первым блоком больше оценки интенсивности их поступления, что позволяет утверждать об отсутствии накопления очереди. М. о скорости обслуживания второго блока равно 24. Интенсивность равна 0. 046, при оценке интенсивности поступления заявок равной 0. 03. Однако в случае второго блока он имеет ограниченную очередь и работает с отказами, по этому нужна более глубокая оценка вероятности отказа. Вероятность того, что канал обслуживания свободен (P0) равна:

(3)

где p — приведенная интенсивность потока, равная интенсивности поступления заявок, деленной на интенсивность обработки заявок.

N — длина очереди.

В нашем случае вероятность того, что канал свободен, равна (1−0. 03/0. 046)/(1-(0. 03/0. 046)^4) = 0,42.

Вероятность отказа:

(4)

Вероятность отказа равна 0,42(0. 03/0. 046)^3 = 0,11.

Относительная пропускная способность:

(5)

Относительная пропускная способность равна 1 — 0. 11 = 0. 89.

Абсолютная пропускная способность:

(6)

Абсолютная пропускная способность равна 0. 03 0. 89 = 0. 0267

4. Программа и эксперименты на GPSS World

4. 1 GPSS-модель для расчета стационарных характеристик

Сформируем модель Системы в среде Имитационного Моделирования GPSS World. Структура программы будет состоять из трех логически отделимых в коде блоков. Первый блок отвечает за формирование входящих заявок на обслуживание. Далее происходит ветвление на две СМО с заданными вероятностями. Заявка попадает в один из двух блоков, блоки представляют собой СМО.

Ниже приведен листинг программы с комментариями блоков и этапов, проходимых заявкой:

* Варьируемые параметры системы

LMAX

EQU

3

MU1

EQU

(1/12)

MU2

EQU

(1/24)

GENERATE 10,10

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

TRANSFER. 3, LINE2

; Случ. выбор ветви маршрута

* Модель первого узла

LINE1

QUEUE

GLOB

; «Глобальная» очередь

QUEUE

1

TRANSFER

BOTH, CHANNEL1, CHANNEL2

; Переход к своб. каналу

CHANNEL1

SEIZE

U11

DEPART

1

ADVANCE

(Exponential (1,0,(2/MU1)))

RELEASE

U11

TRANSFER

, STOK

CHANNEL2

SEIZE

U12

DEPART

1

ADVANCE

(Exponential (1,0,(2/MU1)))

RELEASE

U12

* Модель второго узла

LINE2

TEST L

Q2,3,OTKAZ

QUEUE

GLOB

; «Глобальная» очередь

QUEUE

2

SEIZE

U21

DEPART

2

ADVANCE

MU2,MU2

RELEASE

U21

TRANSFER

, STOK

STOK

DEPART

GLOB

TERMINATE

OTKAZ

TERMINATE

* Таймер

GENERATE

1 000 000

;

SAVEVALUE

POTK (N$OTKAZ/N$LINE2)

TERMINATE

1

После выполнения представленной выше модели (по команде START 1) получаем следующий стандартный отчет системы GPSS о моделировании:

GPSS World Simulation Report — Untitled Model 1.4. 1

Thursday, June 14, 2012 07: 13:44

START TIME END TIME BLOCKS FACILITIES STORAGES

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

Три прогона одной длины разделяются сбросом статистики (командой CLEAR), и поэтому независимы. Группы прогонов разной длины разделяются командой Retranslate, возвращающей датчики случайных чисел в исходное состояние.

Таблица 1 — Результаты моделирования Системы

Длина прогона

с11

p12

с2

L1

L2

R

W1

W2

Q2

E

1

105

0,874

0,805

0,690

3,020

0,599

5,998

43,117

20,857

0,040

60,631

2

0,875

0,806

0,688

3,019

0,592

5,980

43,169

20,619

0,038

60,605

3

0,870

0,800

0,693

2,529

0,603

5,496

36,175

55,596

0,041

55,596

4

106

0,873

0,804

0,692

2,859

0,600

5,827

40,919

20,782

0,038

59,016

5

0,874

0,805

0,690

2,919

0,599

5,888

41,758

20,759

0,039

59,626

6

0,872

0,803

0,692

2,842

0,600

5,808

40,669

20,789

0,039

58,835

7

107

0,874

0,805

0,692

2,935

0,601

5,907

41,929

20,907

0,039

59,782

8

0,875

0,806

0,692

2,921

0,602

5,895

41,727

20,904

0,040

59,664

9

0,875

0,807

0,692

2,935

0,603

5,910

41,922

20,907

0,039

59,807

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

Таблица 2 — Оценки искомых показателей и их возможные погрешности < <>>

с1

с21

с22

L1

L2

R

W1

W2

Q2

E

Оценка

0,875

0,806

0,692

2,927

0,602

5,904

41,726

20,905

0,040

59,751

0,001

0,001

0,000

0,008

0,001

0,004

0,008

0,001

0,001

0,080

4. 2 GPSS-модель для расчета переходных процессов

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

* Варьируемые параметры системы

LMAX

EQU

3

MU1

EQU

(1/12)

MU2

EQU

(1/24)

*** Матрицы для накопления реализаций процессов ***

RO1_

MATRIX

, 1,100

; Для накопления реализаций RO1(t)

RO2_

MATRIX

, 1,100

; Для накопления реализаций RO2(t)

RO3_

MATRIX

, 1,100

; Для накопления реализаций RO3(t)

L1_

MATRIX

, 1,100

; Для накопления реализаций L1(t)

L2_

MATRIX

, 1,100

; Для накопления реализаций L2(t)

R_AVE

MATRIX

, 1,100

; Для накопления реализаций Rcp (t)

DISPR

MATRIX

, 1,100

;

PERIOD

EQU

10

; Период считывания усредняемых сл.в.

N_

EQU

1001

; Число независимых прогонов

DL_PROG

EQU

(100#PERIOD+0. 5)

;

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

GENERATE

, PERIOD, 1

ASSIGN

1,1

CIRCLE

MSAVEVALUE RO1_+, 1, P1,FR$U11

MSAVEVALUE RO2_+, 1, P1,FR$U12

MSAVEVALUE RO3_+, 1, P1,FR$U21

MSAVEVALUE L1_+, 1, P1,Q1

MSAVEVALUE L2_+, 1, P1,Q2

MSAVEVALUE R_AVE+, 1, P1,Q$GLOB

MSAVEVALUE DISPR+, 1, P1,(Q$GLOB2)

ASSIGN

1+, 1

ADVANCE

PERIOD

TRANSFER

, CIRCLE

;

* Источник заявок *

GENERATE 10,10

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

TRANSFER. 700, LINE2,LINE1

; Случ. выбор ветви маршрута

* Модель первого узла

LINE1

QUEUE

GLOB

; «Глобальная» очередь

QUEUE

1

TRANSFER

BOTH, CHANNEL1, CHANNEL2

; Переход к своб. каналу

CHANNEL1

SEIZE

U11

DEPART

1

ADVANCE

(Exponential (1,0,(2/MU1)))

RELEASE

U11

TRANSFER

, STOK

CHANNEL2

SEIZE

U12

DEPART

1

ADVANCE

(Exponential (1,0,(2/MU1)))

RELEASE

U12

TRANSFER, STOK

* Модель второго узла

LINE2

TEST L

Q2,3,OTKAZ

QUEUE

GLOB

; «Глобальная» очередь

QUEUE

2

SEIZE

U21

DEPART

2

ADVANCE

(1/MU2),(1/MU2)

RELEASE

U21

TRANSFER

, STOK

STOK

DEPART

GLOB

TERMINATE

OTKAZ

TERMINATE

* Таймер

GENERATE

DL_PROG

; На 100 прогонов транзакта-наблюдателя

SAVEVALUE

N_+, 1

; Счетчик прогонов

* Завершения прогонов и усреднение реализаций в конце последнего прогона

TEST E

X$N_, N_, FIN

ASSIGN

2,100

ASSIGN

1,1

NORM

MSAVEVALUE RO1_, 1, P1,(MX$RO1_(1,P1)/N_)

;

MSAVEVALUE RO2_, 1, P1,(MX$RO2_(1,P1)/N_)

;

MSAVEVALUE RO3_, 1, P1,(MX$RO3_(1,P1)/N_)

;

MSAVEVALUE L1_, 1, P1,(MX$L1_(1,P1)/N_)

;

MSAVEVALUE L2_, 1, P1,(MX$L2_(1,P1)/N_)

;

MSAVEVALUE R_AVE, 1, P1,(MX$R_AVE (1,P1)/N_)

;

MSAVEVALUE DISPR, 1, P1,(MX$DISPR (1,P1)/N_-(MX$R_AVE (1,P1))^2)

;

ASSIGN

1+, 1

LOOP

2,NORM

; ПРОДОЛЖИТЬ/ЗАВЕРШИТЬ ЦИКЛ

FIN

TERMINATE

1

INCLUDE

«REP1000. TXT»

; Включить строки файла REP1000. TXT

CLEAR

OFF

START

1

; Последний START — С выводом отчёта

Команда INCLUDE в конце программы «заменяется» строками текстового файла REP1000. txt (таблица 4). Поскольку все 10 этих строк являются командами INCLUDE, ссылающимися на файл REP100. txt, то каждая из них, в свою очередь, «заменяется» десятью строками текстового файла REP100. txt, которых, в итоге, имеем 10? 10 = 100. И, аналогично, каждая из этих 100 строк «заменяется» строками файла REP10. txt, определяющими 10 стартов модели (параметр NP в команде START запрещает вывод отчета после завершения прогона модели), разделенных сбросом статистики по команде CLEAR (параметр OFF запрещает стирать информацию, записанную в ячейки и матрицы ячеек). Общее число стартов, определенных командой INCLUDE «REP1000. TXT», составляет, т.о., 1000. После INCLUDE «REP1000. TXT» в программе пришлось записать еще одну пару команд CLEAR и START, т.к. последний START должен выполняться без параметра NP. Итого число независимых реализаций процесса составляет 1001. Это число присваивается в начале программы параметру N_.

Таблица 3 — Строки текстовых файлов для реализации 1000 независимых прогонов модели

REP1000. txt

REP100. txt

REP10. txt

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP100. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

INCLUDE «REP10. TXT»

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

START 1, NP

CLEAR OFF

4.3 Анализ переходных процессов

Выполнив программу, приведенную в разделе 4. 2, мы получаем отчет (файл REPORT), в который выведены матрицы L1_, L2_ и R_AVE, содержащие по 100 значений соответствующего показателя, относящихся к моментам модельного времени = 10, 20, …, 1000. Каждое значение — это статистическая оценка показателя, полученная усреднением соответствующей сл.в. по ее 1001 реализации. Таким образом, каждая матрица содержит значения ПП для одного из шести интересующих нас показателей (точнее — статистические оценки значений ПП). После такого переноса данных в Ms Excel нетрудно построить в нем графики ПП. Для Системы-10 получаем графики, представленные на рисунках 2,3,4.

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

Рисунок 2 — Переходный процесс для параметра L1

Рисунок 3 — Переходный процесс для параметра L2

Рисунок 4 — Оценочные П П для показателей R1, L1

Рисунок 5 — Оценочные П П для показателей Ro1, Ro2, Ro3

Рисунок 4 приводит нас к заключению, что ПП и нужно проследить на более длинном интервале времени. Чтобы сделать это, в используемой нами GPSS_программе (раздел 4. 2) увеличим вдвое период считывания усредняемых значений (в строке PERIOD EQU 10 заменим 10 на 40). В результате перезапуска этой модели (командой Retranslate или Create Simulation) параметр DL_PROG (описанный двумя строками ниже параметра PERIOD) автоматически будет должным образом пересчитан и, соответственно, изменится общее время моделирования в сегменте «таймера» модели (см. блок GENERATE DL_PROG).

Полученные для в матрицах L1_ и R_AVE новые оценочные процессы и перенесем из GPSS в Excel. На рисунке 5 получим продленный по времени ПП для показателей L1 и R.

Рисунок 5 — Продленные оценочные ПП для L1 и R

Из рисункам 5 видно, как до сих пор колеблется значение R. Этот процесс наиболее длителен из всех рассмотренных ПП. Поэтому далее ограничимся определением времени TR «установления» этого ПП.

В соответствии с общим определением длительности ПП, данным в разделе 1, время TR — это время пересечения характеристикой R (t) «порогового» уровня, составляющего 0,95R = 0,95•2,711 = 2,575.

Вычисление требуется выполнить с контролем точности, но мы располагаем пока лишь «точечной» статистической оценкой ПП (рисунок 5), имеющей неизвестную нам погрешность. Поэтому построим «интервальную» доверительную полосу ПП, для чего нам нужно найти среднеквадратичные отклонения оценок ПП, полученных при t = 20, 40, …, 2000. Вначале рассчитаем дисперсии числа заявок в Системе, усредняя которое мы получили оценки для.

Добавим в GPSS-модель (раздел 4. 2) три строки:

1) в сегмент * Матрицы для накопления реализаций процессов добавим описание матрицы DISPR — в ней будут накапливаться квадраты числа заявок:

DISPR

MATRIX

, 1,100

;

2) в сегмент * Транзакт-наблюдатель за строкой MSAVEVALUE R_AVE+, 1, P1,Q$GLOB вставим блок, осуществляющий накопление квадратов числа:

MSAVEVALUE DISPR+, 1, P1,(Q$GLOB2)

;

3) в сегмент *Завершения прогонов и усреднение реализаций … сразу за строкой MSAVEVALUE R_AVE, 1, P1,(MX$R_AVE (1,P1)/N_) добавим блок, вычисляющий (внутри цикла) оценки дисперсий =:

MSAVEVALUE DISPR, 1, P1,(MX$DISPR_(1,P1)/N_-(MX$R_AVE (1,P1))^2)

;.

В результате выполнения модели получаем матрицу DISPR, содержащую оценки дисперсии числа заявок в Системе при t = 40, 80, …, 4000. Переводим матрицу DISPR из отчета REPORT в столбец листа Excel, который располагаем рядом со столбцом оценок ПП. Вычисляем столбец среднеквадратичных отклонений оценок ПП по формуле

.

Строим столбец, определяющий нижнюю границу доверительной полосы для ПП как разность. Аналогично столбец с верхней границей доверительной полосы вычисляем как сумму. На рисунке 6 построена доверительная полоса R (t). Полученная доверительная полоса пересекает пороговый уровень в диапазоне от 0,1 до 1 тыс. единиц времени, то есть для времени ПП получаем интервальную оценку 100? TR?1000.

Рисунок 6 — Доверительная полоса R (t)

Наряду с интервальной оценкой времени можно найти уточненную точечную оценку. Все П П, показанные на рисунках 2 — 5, хорошо аппроксимируются экспоненциальными функциями вида

,

где C = x () -известное стационарное значение характеристики, A — размерный коэффициент, ф — некоторая постоянная времени. Правда, при построении такой аппроксимации следует иметь в виду, что в окрестностях точки t = 0, как показывает содержательный анализ процессов обслуживания в Системе, рассматриваемые нами переходные характеристики явно не вписываются в такое экспоненциальное представление. Поэтому рекомендуется применять экспоненциальную аппроксимацию к описанию части ПП, начинающейся, например, моментом достижения процессом трети или половины его стационарного уровня. Построение аппроксимации в Excel сводится к применению метода наименьших квадратов для определения неизвестных A, ф по известным оценкам аппроксимируемого ПП в точках отсчетов. Это легко делается с помощью встроенного в Excel сервиса «Поиск решения…».

Например, по оценочному ПП для среднего числа заявок в Системе-10 при известном C = R () = 5,904 находим A = 1,567, ф = 725,1215. Таким образом, имеем аппроксимацию ,. Эта аппроксимация построена по диапазону данных, относящихся ко времени. В этом диапазоне абсолютная погрешность составила в среднем 0. 11.

На рис. 7 показан «фрагмент» зависимостей и, в окрестности точки. Определяя как момент пересечения кривой порогового уровня R = 5,608, находим точечную оценку 230 (на рисунке 7 точка пересечения практически посередине между соседними абсциссами R (t) в 220 и 240 единиц).

Рисунок 7 — Нахождение уточненной оценки для TR на основе аппроксимации Rap(t)

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

5. Моделирование на алгоритмических языках

Моделирование было также проведено написанием Имитационной Модели на языке высокого уровня C#. Реализация Системы в соответствии с описанным режимом работы её узлов и режимом поступления заявок возможна с применением следующих принципов и методик:

— календаря событий (КС). По сути список с парами временная метка — событие[1];

— параллельное и одновременное событие сразу нескольких событий регулируется системой приоритетов и временной меткой самих событий;

— подсчет статистики как складывание дискретных величин[1].

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

Рисунок 8 — Программа на языке высокого уровня

По умолчанию в интерфейс программы занесены данные для заданного варианта. Результат запуска программы можно увидеть на рисунке 9.

Рисунок 9 — Искомые параметры после прогона модели

Таблица 10 — Результаты моделирования Системы в программе

Длина прогона

с1

с21

с22

L1

L2

R

W1

W2

Q2

E

1

105

0,927

0,865

0,697

3,164

0,712

7,002

68,677

31,94

0,0004

62,740

2

0,918

0,832

0,707

2,513

0,676

7,603

74,534

33,204

0,0004

62,581

3

0,919

0,845

0,692

2,460

0,635

8,238

84,306

31,881

0,0004

68,478

4

106

0,924

0,853

0,704

2,564

0,651

8,509

85,524

32,552

0,0005

70,613

5

0,919

0,848

0,707

2,601

0,649

8,151

81,543

32,571

0,0004

67,519

6

0,920

0,851

0,709

2,518

0,657

8,498

85,065

32,800

0,0004

70,325

7

107

0,919

0,849

0,707

2,551

0,655

8,214

82,471

32,706

0,0005

68,213

8

0,919

0,849

0,708

2,548

0,656

8,341

82,188

32,758

0,0005

67,997

9

0,920

0,849

0,709

2,597

0,664

8,232

83,600

32,990

0,0004

69,068

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

Таблица 11 — Оценки искомых показателей и их возможные погрешности < <>>

с1

с21

с22

L1

L2

R

W1

W2

Q2

E

Оценка

0,92

0,85

0,71

2,57

0,66

8,26

82,75

32,82

0,00

68,43

0,00

0,00

0,00

0,07

0,01

0,17

1,83

0,37

0,00

1,39

Сравнивая таблицу 11 с таблицей 3 раздела 4.1 можно сделать вывод о некоторых несоответствиях результатов симуляции на разработанной программе, результатам моделирование в среде GPSS. Можно сделать следующие выводы по реализованной программе:

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

— несоответствие полученных результатов, результатам симуляции GPSS, что говорит о возможности неправильной организации логики блоков или неправильных используемых формулах;

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

Заключение

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

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

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

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

Список использованных источников

1. Задорожный В. Н. Моделирование систем: учеб. пособие по курсовому проектированию/ В. Н. Задорожный — Омск: Изд-во ОмГТУ, 2009. — 38 с.

2. Задорожный В. Н. Имитационное и статическое моделирование: учеб. пособие / В. Н. Задорожный — Омск: Изд-во ОмГТУ, 2007. — 132 с.

Приложение

(Обязательное)

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

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

namespace Imitation_Model

{

class Eventt: IComparable

{

public int Time;

public int Event;

public Eventt (int A, int B)

{

Time = A;

Event = B;

}

public int CompareTo (object obj)

{

Eventt to = obj as Eventt;

if (to. Time > this. Time) return -1;

if (to. Time == this. Time)

{

if (to. Event > this. Event)

{

return 1;

}

else

{

return -1;

}

}

return 1;

}

}

}

Класс календарь. Реализует логику работы журнала событий.

using System;

using System. Collections. Generic;

using System. Collections;

using System. Linq;

using System. Text;

namespace Imitation_Model

{

class Calendar

{

//SortedList Events;

List< Eventt> Events2;

public Calendar ()

{

//Events = new SortedList ();

Events2 = new List< Eventt>();

}

public void AddEvent (int Time, int Event)

{

//Events. Add (Time, Event);

Events2. Add (new Eventt (Time, Event));

Events2. Sort ();

}

public int GetTime ()

{

int a = Events2[0]. Time;

//Events. RemoveAt (0);

return a;

}

public int GetEvent ()

{

int a = Events2[0]. Event;

Events2. RemoveAt (0);

return a;

}

}

}

Основной рабочий класс — Model. Описывает логику работы всей системы.

using System;

using System. Collections. Generic;

using System. Collections;

using System. Linq;

using System. Text;

using System. Windows. Forms;

namespace Imitation_Model

{

class Model

{

Random Ran;

Calendar Events;

//Model Parametrs

int Lmax;

int Mo1;

int Mo2;

int MoIn;

double P = 0. 7;

int prevmodeltime;

int modelTime;

int modelMaxTime;

//Data

int Atm_Q11; //Queue to blocks

int Atm_Q12;

int Atm_Q2;

bool Works_Q11; // Is it works

bool Works_Q12;

bool Works_Q2;

//Params

double LoadQ11; //Avg size of queue

double LoadQ12;

double LoadQ2;

double OccupyQ11; //Avg time of occupation

double OccupyQ12;

double OccupyQ2;

int Leaved; //System queue declines

int Entered;

int GotTHRU11;

int GotTHRU12;

int GotTHRU2;

//EventsTable Codes

// 0 — NewTransact

// 1 — WentTransact

// 2 — Went to 1 block

// 3 — Went to 2 block

// 4 — Maked thru 11 block

// 5 — Maked thru 12 block

// 6 — Maked thru 2 block

//Construct

public Model (int mq, int m1, int m2, int SimTime, int L)

{

modelTime = 0;

modelMaxTime = SimTime;

Lmax = L;

Mo1 = m1;

Mo2 = m2;

MoIn = mq;

Ran = new Random ();

Events = new Calendar ();

Events. AddEvent (0, 0);

while (modelTime < modelMaxTime)

{

iterateEvent ();

}

}

//-1/л * Math. Log (1 — r. NextDouble ())

//GetEvent

public void iterateEvent ()

{

modelTime = Events. GetTime ();

int Ev = Events. GetEvent ();

GetStat ();

if (modelTime < modelMaxTime)

{

switch (Ev)

{

case 0: Event0(); break;

case 1: Event1(); break;

case 2: Event2(); break;

case 3: Event3(); break;

case 4: Event4(); break;

case 5: Event5(); break;

case 6: Event6(); break;

}

}

else MessageBox. Show («Симуляция завершена»);

}

//Events

public int ExpRan (int Mo)

{

return Math. Abs (Convert. ToInt32(Mo*Math. Log (1-Ran. NextDouble ())));

}

public void Event0()

{

int time = modelTime + Ran. Next (MoIn*2);

Events. AddEvent (time, 1);

Events. AddEvent (time, 0);

}

public void Event1()

{

Entered++;

if (Ran. NextDouble () < P)

{

Events. AddEvent (modelTime, 2);

}

else

{

Events. AddEvent (modelTime, 3);

}

}

public void Event2()

{

if (!Works_Q11)

{

Works_Q11 = true;

Events. AddEvent (ExpRan (Mo1) + modelTime, 4);

}

else

if (!Works_Q12)

{

Works_Q12 = true;

Events. AddEvent (ExpRan (Mo1) + modelTime, 5);

}

else

{

if (Atm_Q11 > Atm_Q12)

{

Atm_Q12++;

}

else

{

Atm_Q11++;

}

}

}

public void Event3()

{

if (!Works_Q2)

{

Works_Q2 = true;

Events. AddEvent (Ran. Next (Mo2 * 2) + modelTime, 6);

}

else

{

if (Atm_Q2 < Lmax)

{

Atm_Q2++;

}

else

{

Leaved++;

}

}

}

public void Event4()

{

GotTHRU11++;

if (Atm_Q11 > 0)

{

Atm_Q11--;

Events. AddEvent (ExpRan (Mo1) + modelTime, 4);

}

else

{

Works_Q11 = false;

}

}

public void Event5()

{

GotTHRU12++;

if (Atm_Q12 > 0)

{

Atm_Q12--;

Events. AddEvent (ExpRan (Mo1) + modelTime, 5);

}

else

{

Works_Q12 = false;

}

}

public void Event6()

{

GotTHRU2++;

if (Atm_Q2 > 0)

{

Atm_Q2--;

Events. AddEvent (Ran. Next (Mo2 * 2) + modelTime, 6);

}

else

{

Works_Q2 = false;

}

}

public double Avg (double F, double S, int F1, int S1)

{

return (F * F1 + S * S1) / (F1 + S1);

}

public void GetStat ()

{

int delta = modelTime — prevmodeltime;

if (prevmodeltime ≠ modelTime)

{

LoadQ11 = Avg (LoadQ11, (double)Atm_Q11, modelTime, delta); //Avg size of queue

LoadQ12 = Avg (LoadQ12, (double)Atm_Q12, modelTime, delta);

LoadQ2 = Avg (LoadQ2, (double)Atm_Q2, modelTime, delta);

OccupyQ11 = Avg (OccupyQ11, (Works_Q11)?(1): (0), modelTime, delta); //Avg time of occupation

OccupyQ12 = Avg (OccupyQ12, (Works_Q12)? (1): (0), modelTime, delta);

OccupyQ2 = Avg (OccupyQ2, (Works_Q2)? (1): (0), modelTime, delta);

}

prevmodeltime = modelTime;

}

public string PrintStat ()

{

string Stat = ««;

Stat += «Средняя очередь блока 1_1tt» + LoadQ11. ToString () + «rn»;

Stat += «Средняя очередь блока 1_2tt» + LoadQ12. ToString () + «rn»;

Stat += «Средняя очередь блока 2tt» + LoadQ2. ToString () + «rn»;

Stat += «Средняя занятость блока 1_1t» + OccupyQ11. ToString () + «rn»;

Stat += «Средняя занятость блока 1_2t» + OccupyQ12. ToString () + «rn»;

Stat += «Средняя занятость блока 2tt» + OccupyQ2. ToString () + «rn»;

Stat += «Отказовtttt» + Leaved. ToString () + «rn»;

Stat += «Прошло через блок 1_1tt» + GotTHRU11. ToString () + «rn»;

Stat += «Прошло через блок 1_2tt» + GotTHRU12. ToString () + «rn»;

Stat += «Прошло через блок 2tt» + GotTHRU2. ToString () + «rn»;

return Stat;

}

}

}

ПоказатьСвернуть
Заполнить форму текущей работой