Модуль 1

ПРИЛОЖЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ЗАКЛЮЧЕНИЕ

 

 

 

[1] Бережная Е.В., Бережной В.И. Математические методы моделирования экономических систем: Учеб. пособие. – 2-е изд., перераб. и доп. – М.: Финансы и статистика, 2006.

[2] Бусленко Н. П. Моделирование сложных систем. – М.: Наука, 1988.

[3] Вентцель Е.С. Исследование операций. – М.: Советское радио, 1972 г.

[4] Вентцель Е.С. Задачи и упражнения по теории вероятностей: Учеб. пособие для студ.втузов/ Е.С. Вентцель, Л.А. Овчаров. – 5-е издание., испр. – М.: Издательский центр «Академия», 2003.

[5] Волков И.К., Загоруйко Е.А. Исследование операций: Учеб. для вузов/Под ред. В.С. Зарубина, А.П. Крищенко. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2000.

[6] Волковец А.И. Теория вероятностей и математическая статистика: Конспект лекций /А.И. Волковец, А.Б. Гуринович. – Мн.: БГУИР, 2003.

[7] Гмурман В.Е. 9-е изд., стер.—М.: Высшая школа, 2003.— 479 с. Книга (8 - е изд. - 2002 г.)

[8] Замятина Е.Б. Современные теории имитационного моделирования: Специальный курс. – Пермь: ПГУ, 2007.

[9] «Информатика и образование», журнал, выпуск №12. – М.: Образование и Информатика, 2003.

[10] Соболь И.М. «Метод Монте-Карло», Москва «Наука»,1985 г.

[11] Советов Б. Я., Яковлев С. А. Моделирование систем (3-е изд., перераб. и доп.). — М.: Высшая школа, 2001.

[12] Чернышов В.Н., Чернышов А.В. Теория систем и системный анализ: учебное пособие. – Тамбов: Изд-во Тамб. гос. техн. ун-та, 2008.

[13] Шеннон Р.N. Название: Имитационное моделирование систем - искусство и наука: Пер. с англ., 1978.


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

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

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

Такое распределение, конечно, мало реалистично; реально оно имеет максимум при некотором значении и быстро спадает при больших , т.е. имеет вид, изображенный на рисунке 18:

Рисунок 18. Типичная плотность вероятности распределения времени между приходами покупателей.

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

– некоторая константа,

– произвольное целое. Функции имеют максимум при и нормированы:

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

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

– длительность времени, проведенного покупателем в магазине в целом;

– длительность обслуживания;

где

– момент конца обслуживания;

– момент начала обслуживания очередного покупателя определяется либо временем его прихода (если магазин пуст), либо временем ухода предыдущего покупателя;

– условное время прихода покупателя, где – промежутки между приходами покупателей (в минутах).

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

№ п/п

Таблица 1

Необходимо ответить на вопрос, каково распределение случайных величин и при заданных распределениях случайных величин и . Допустим, в простейшем моделировании мы примем гипотезу о равновероятных распределениях величин и – скажем, для в диапазоне от 0 до 10 минут и – от 0 до 5 минут. Для построения методом статистических испытаний распределения величин и поступим так: найдем в достаточно длинной серии испытаний (реально – в десятках тысяч, что на компьютере делается достаточно быстро) значения (для Н все делается аналогично) и разделим промежуток [0,] на равных частей скажем, вначале на 10 – так, чтобы в каждую часть попало много значений . Разделив число попаданий в каждую из частей на общее число испытаний , получим набор чисел

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

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

 

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
a,b,c,d,e,f,Aa,Bb,Cc,Dd,Ee,Ff,Dg,Dh,max: real;
s1,s2:double;
i,k,j,i1,i2,w1,w2,N:integer;
L1,L2,v:array[1..11] of real;

{L1-распределение g, L2-распределение h}

g,h:array[1..20000] of real;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
w1:=strtoint(edit1.text);

{диапазон времен прихода от 0 до w1}

w2:=strtoint(edit2.text);

{диапазон времен обслуживания от 0 до w2}

N:=strtoint(edit3.text);

{число членов выборки}

Aa:=0; Bb:=w2*random; Cc:=0; Ee:=Bb; Ff:=bb;

{начальные значения}

g[1]:=0; h[1]:=0;
for k:=1 to 11 do
begin
L1[k]:=0;
L2[k]:=0;
end;
for i:=2 to n do
begin
a:=w1*random; b:=w2*random;
c:=Cc+a; if c>Ee then d:=c else d:=Ee;
e:=d+b; f:=e-c; g[i]:=f-b; h[i]:=d-Ee;
Cc:=c; Ee:=e;
if g[i]<=1 then L1[1]:=L1[1]+1;
if h[i]<=0 then L2[1]:=L2[1]+1;
for k:=2 to 10 do
begin
if (g[i]>k-1) and (g[i]<=k) then L1[k]:=L1[k]+1;
if (h[i]>k-1) and (h[i]<=k) then L2[k]:=L2[k]+1;
end;
if g[i]>10 then L1[11]:=L1[11]+1;
if h[i]>10 then L2[11]:=L2[11]+1;
s1:=s1+g[i]; s2:=s2+h[i]; end;

{ниже - нормировка распределений g и h}

for i:=1 to 11 do
begin L1[i]:=L1[i]/n;
L2[i]:=L2[i]/n
end;
s1:=s1/n; s2:=s2/n; Dg:=0; Dh:=0;

{ниже - расчет средних и дисперсий g и h}

for i:=1 to n do
begin
Dg:=Dg+sqr(g[i]-s1);
Dh:=Dh+sqr(h[i]-s2)
end;
Dg:=Dg/n; Dh:=Dh/n;
for i:=1 to 11 do memo1.Lines.Add(floattostr(L1[i]));
for i:=1 to 11 do memo2.Lines.Add(floattostr(L2[i]));
memo1.Lines.Add('СРЕДНЕЕ G='+floattostr(s1));
memo2.Lines.Add('СРЕДНЕЕ H='+floattostr(s2));
memo1.Lines.Add('СР-КВАДР. G='+floattostr(Dg));
memo2.Lines.Add('СР-КВАДР. H='+floattostr(Dh));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin memo1.Clear; memo2.Clear; button1.Click end;

procedure TForm1.Button3Click(Sender: TObject);
begin close end;

procedure TForm1.Button4Click(Sender: TObject);
begin form2.Show end;

end.

Графики распределений:

 

unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
procedure Form2Paint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Form2Paint(Sender: TObject);
var w,h,s,i1,i2:integer;
begin
with form2.Canvas do
begin
w:=width; h:=height; s:=w div 2;
textout(20,50,'p');
textout(s+12,h-80,'p');
textout(200,50,'w1');
textout(s+200,h-80,'w2');
moveto(10,h-100);lineto(s,h-100); moveto(10,h-100);lineto(10,50);
max:=L1[1];
for i1:=2 to 11 do if L1[i1]>max then max:=L1[i1];
for i1:=2 to 11 do v[i1]:=L1[i1]/max;
for i1:=2 to 11 do
begin
i2:=round((h-110)*(1-v[i1]))+10;
brush.Color:=rgb(random(105)+150,random(105)+150,random(105)+150);
rectangle(50*i1-90,i2,50*i1-40,h-100)
end;
moveto(s+10,h-100);lineto(w-20,h-100);moveto(s+10,h-100);lineto(s+10,50);
max:=L2[1];
for i1:=2 to 11 do if L2[i1]>max then max:=L2[i1];
for i1:=2 to 11 do v[i1]:=L2[i1]/max;
for i1:=2 to 11 do
begin
i2:=round((h-110)*(1-v[i1]))+10;
brush.Color:= rgb(random(105)+150,random(105)+150,random(105)+150);
rectangle(s-90+50*i1,i2,s-40+50*i1,h-100)
end;
end;
end;
end.

Результаты работы программы представлены на рисунках 19-20:

Рисунок 19. Результат работы Unit1

 

Рисунок 20. График распределения величин g и h при w1=10 и w2=4.

 

Оценим адекватность полученной модели. Для оценки адекватности выполняются следующие действия:

1. Задаемся доверительной вероятностью β. Рекомендуемое значение β=0,95. По статистическим таблицам находим t, которое для рекомендуемого значения β=0,95 равно 1,96.

2. Задаемся количеством проводимых экспериментов N.

3. Вычисляем половину ширины доверительного интервала:
В качестве Sg берется среднее квадратическое отклонение, вычисленное при аналитическом моделировании.

4. Подсчитываем количество попаданий оценок математических ожиданий в доверительный интервал по выполнению условия: Mg-ε≤Mg≤Mg+ε. В качестве Mg берется математическое ожидание, вычисленное при аналитическом моделировании.

Если количество попаданий оценок математических ожиданий в доверительный интервал не меньше β*N, то имитационную модель считаем пригодной по тесту адекватности.

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

В таблице 2 приведены результаты расчета средних значений величин g, h и соответствующих средних квадратических отклонений Sg, Sh, полученные при одинаковых значениях всех параметров в пяти разных сериях испытаний по 10000 событий в серии. w1=10, w2=4.

Испытание
0,400 0,969 2,996 7,149
0,414 0,997 3,015 7,340
0,391 0,976 3,026 7,280
0,413 0,960 2,974 7,199
0,399 0,878 3,000 7,314

Таблица 2

 

Оценим доверительный интервал математических ожиданий величин g и h достоверности 0. По первой выборке получаем:

0,400–0,019<Mg<0,400+0,019 ⇒ 0,381<Mg<0,419
2,996–0,140<Mh<2,996+0,140 ⇒ 2,856<Mh<3,136

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

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

Рисунок 21. Кризис наступает, w1=10; w2=9

Рисунок 22. Кризис наступил, w1=w2=10

 

 

ЛЕКЦИЯ 1