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

 

Введение

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

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

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

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

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

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

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

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

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

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

- канальная система передачи данных осуществляет связь между пунктами А и В. Пакеты поступают в пункт А с интервалом t1 (мсек.). Передача пакета занимает t2 (мсек.). В пункте А имеется буферный регистр, который может хранить E пакетов. Если пакет пришел, когда все каналы заняты, сообщение передается по спутниковому каналу за время t3 (мсек.). Смоделировать обмен информацией за 1 мин.

Данные для детерминированной модели СМО:


N=4, t1=t2=t3=10, E=3.


Данные для имитационной модели СМО: интервалы времени t1, t2 распределены нормально с параметрами: m1=m2=10, , возмущение t3 является стационарным случайным процессом с нормальным законом распределения и интервалом разброса [12...8].

Варьируемые параметры: N , E .

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


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


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


Рис. 1. Структурная схема системы передачи пакетов


Поясним принцип работы такой системы. Когда приходит пакет в п.А, он пытается «пройти» во проводному каналу; если все линии данного канала заняты, то данный пакет перенаправляется на спутник; если же и спутник занят (передает в данный момент какой-либо другой пакет), то пакет, в случае свободного буфера отправляется в него; и если же и он несвободен, то пакет считается потерянным.

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

Блок-схема данной системы приведена на рис. 2.


Моделирование случайных независимых величин


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



Программная генерация случайной величины с равномерным законом распределения на интервале [0..1] основывается на рекуррентном соотношении:


,


где x0,x1,..xn, - получаемая последовательность случайных чисел, равномерно распределенных на интервале [0..1], F( ) - функция обработки предыдущего члена последовательности для получения последующего члена. В зависимости от вида F( ) существуют разные методы генерации, но наиболее часто используются следующие методы:

) Метод серединных квадратов. Если , то



Например:


и т.д.

Рис. 3. Блок-схема метода серединных квадратов


2) Метод иррационального числа. , где - иррациональное число, { } - оператор вычисления дробной части числа.

Например:

и т.д. Во всех вышеперечисленных методах число значащих десятичных разрядов не должно быть меньше десяти.


Рис. 4. Блок-схема метода иррационального числа

3) В языке Borland Pascal для генерации случайной величины с равномерным законом распределения на интервале [0..1] (оператор random) используется конгруэнтный метод, который также применяется в большинстве других языков программирования (Basic, С, C++ и т.д.).

В нашем конкретном случае для метода серединных квадратов начальное число было взятым - 0.7239184425, для метода иррационального числа - число ПИ. Программная генерация случайной величины с плотностью распределения f(y), отличным от равномерного, производится методом обратной функции. Если xi - это последовательность, равномерно распределенная на интервале [0..1], а yi - это последовательность, имеющая плотность распределения вероятности f(y), то


.


Для показательного распределения с плотностью распределения


:.


Для нормального распределения с плотностью распределения


:,


где и - это две независимые последовательности, равномерно распределенные на интервале [0..1]. В нашем конкретном случае - равномерное распределение в интервале [0..1], а нормальное: мат.ожидание=10, а СКО1=3, СКО2=5. Все полученные значения можно увидеть в программе, в которой они отображаются в виде значений и выводятся на график.

Рис. 5. Блок-схема метода генерации чисел для нормального закона распределения


Тестирование функций моделирования случайных величин


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

Тестирование по гистограмме

Гистограмма - это кусочно-непрерывная функция плотности распределения статистического ряда. Гистограмма плотности распределения статистического ряда должна максимально приближаться к теоретической кривой плотности распределения. Степень рассогласования можно оценить по среднеквадратичному отклонению графиков (СКО). Параметры тестирования - m=20, а n=20000.


Рис. 6. Тестирование значений по гистограмме


Тестирование по критериям согласия

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


Рис. 7. Тестирование значений по критерию согласия Колмогорова

Рис. 8. Тестирование значений по критерию согласия Пирсона


Тестирование по корреляционному моменту

Позволяет проверить независимость элементов случайной последовательности. Это необходимо, поскольку программный генератор случайных чисел может «зацикливаться» с некоторым интервалом апериодичности. В таблицах 6 и 7 приведены вероятности независимости последовательности элементов при различных методах генерирования случайной величины для разных математических ожиданий и дисперсий.

Рис. 9. Тестирование значений по корреляционному моменту


Аналогичное тестирование проведено и для нормального распределения, его так же можно увидеть в программе.

Моделирование стационарного случайного процесса (ССП)


Зададимся корреляционной функцией процесса, которая отражает степень статистической зависимости между сечениями стационарного случайного процесса, отстоящими друг от друга во времени на величину ?. Пусть корреляционная функция имеет вид , где a, b - параметры, которые определяются исходя из условия задания:



Выбирая параметры из постановки задачи ymin=8, ymax=12, а также задаваясь шагом ?t равным 0,1мс, получаем: a=; b1= 9,986.

Корреляционная функции для таких параметров имеет вид, приведенный на рис.10.


Рис. 10. Корреляционная функция


Согласно методу скользящего суммирования, значения стационарного случайного процесса Y(t) с заданной корреляционной функцией KY(?) находятся по формулам:



где y(i?t) - значения возмущения на очередном i-ом шаге моделирования, qi - случайные нормально распределенные величины с нулевым математическим ожиданием и единичной дисперсией, - математическое ожидание стационарного случайного процесса, C0, C1, C2, … Cm - константы, которые определяются из системы уравнений:



Для упрощения примем, что сечения случайного процесса, отстоящие друг от друга во времени более, чем на три шага моделирования, считаются некоррелированными, т.е. m=3. Тогда:


Решив численно эту систему с помощью MathCAD, получим, следующие значения:


Блок-схема данного алгоритма представлена на рисунке:


Рис. 11. Блок-схема метода генерации ССП

Тестирование качества смоделированного ССП


Сгенерируем совокупность значений стационарного случайного процесса: y(0), y(?t), y(2?t), …, y(i?t), …, y(N?t), которую разобьем на две совокупности: {x1 , x2 … xN/2} и {y1 , y2 … yN/2}, где xi = y(2i?t), yi = y((2i-1)?t) при i = 0,1, … N/2 (N - число испытаний, в данном примере равное 20000). Размеры каждой из выборок: NX = N/2, NY = N/2. Далее эти две выборки анализируются при помощи следующих критериев согласия.

1. Критерий согласия Смирнова.

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

Вычисляем . Сравнивается это значение корнем - . Если вычисленное значение меньше этого корня, то гипотеза верна, с вероятностью Р.

. Критерий согласия Стьюдента.

Проверяется статистическая гипотеза о том, что математические ожидания двух выборок X и Y равны. Сначала находятся математические ожидания и дисперсии двух выборок. Затем вычисляется необходимые значения и сравниваются с табличным -


Критерий согласия Фишера


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

,


Рассчитанные значение, приведенных выше критериев, приведены на рис. 12.


Рис. 12. Графическая схема системы передачи пакетов


Оптимизация поставленной задачи


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

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

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


Рис. 13. Практические значения, полученные при моделировании СМО


Рис. 14. Практические значения, полученные при моделировании СМО


Рис. 15. Практические значения, полученные при моделировании СМО


Выбираем первый вариант - пришло: 5971 пакет, пройдено по каналам: 5971 пакет, потерянных пакетов не было, а также спутник и буфер не использовались. Проведя аналогичные действия с 2 и 3-м практическими значениями, можно сделать вывод:

oсамым плохим оказался последний вариант, т.к. были потеряны пакеты данных;

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

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


Заключение


В результате выполнения данного курсового проекта, была написана программа в среде программирования - Delphi. При её написании использовались знания о СМО и о моделировании случайных величин, полученные непосредственно в процессе выполнения данной работы (из методических указаний), а так же из курса лекций по дисциплине - «Моделирование систем управления»

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


Приложение


Программаная реализация


Раздел 1

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Buttons, StdCtrls, TeEngine, ExtCtrls, TeeProcs, Chart, Series;= 200;= 400;= 5;_time = 3600;= 0;= 1;= array of extended;_Main = class(TForm)_X: TMemo;_Y: TMemo;_OutInfo: TMemo;_Generate: TSpeedButton;: TLabel;: TLabel;: TLabel;: TChart;: TBarSeries;: TChart;: TBarSeries;FormCreate(Sender: TObject);sb_GenerateClick(Sender: TObject);

{ Private declarations }

{ Public declarations };_Main: Tfm_Main;,Nx,Ny,m:integer;: array [0 .. 400] of real;


{$R *.dfm}congruential_method(init:longint):Tmas;i:integer;(result, 0);:= nil;:= init;i := 0 to N - 1 do(result, i + 1);[i] := random;;;stationary_process(q,C:Tmas;var x,y:Tmas);i:integer;,k,m: Integer;:real;:= (Ymax - Ymin) / 2;:= N div 2;:= N div 2;(x,Nx);(y,Ny);:= 0; m := 0;i := 0 to N-1 do(i mod 2)=0 then[k] := C[0]*q[i]+C[1]*q[i+1]+C[2]*q[i+2]+C[3]*q[i+3]+My;(k);[m] := C[0]*q[i]+C[1]*q[i+1]+C[2]*q[i+2]+C[3]*q[i+3]+My;(m);;;;normal_distribution(x,x1:Tmas):Tmas;i:integer;(result,0);:= nil;i := 0 to N - 1 do(Result, i + 1);[i] := sigma * cos(2 * pi * x[i]) * sqrt(-2 * ln(x1[i])) + mat;;;Tfm_Main.FormCreate(Sender: TObject);;:= 4000;:= 40;;criterion_for_approval_Smirnov(Fx,Fy:Tmas):Tmas;: integer;, buf,p: Extended;:= 0;i := 0 to m - 1 do:= abs(Fx[i] - Fy[i]);buf > D then:= buf;;(result,2);:= 1 - exp( (2*D*D)/(1/Nx + 1/Ny) );[0] := D;[1] := p;;criterion_for_approval_Student(Dx,Dy,mx,my:extended):Tmas;D,t:extended;:integer;:= ( (Nx - 1)*Dx + (Ny - 1)*Dy ) / (Nx + Ny -2);:= sqrt( ( sqr(mx-my)*Nx*Ny ) / ( D* (Nx + Ny) ) );:= Nx + Ny -2;(result, 2);[0] := t;[1] := b;;mat_expectation(a:Tmas ; na:integer):extended;i:integer;:= 0.0;i := 0 to na-1 do:= result + a[i];:= result / na;;variance(a:Tmas; na:integer; m:extended):extended;: Integer;:= 0.0;i := 0 to na-1 do:= result + sqr(a[i] - m);:= result / (na -1);;criterion_for_approval_Fisher(Dx,Dy:extended):Tmas;F,b1,b2:extended;(result, 3);(Dy>=Dx) then:= Dy / Dx:= Dx / Dy;:= Nx -1 ;:= Ny -1 ;[0] := F;[1] := b1;[2] := b2;;OutputInfo(sX,sY,Student,Fisher,Smirnov:Tmas;mx,my,dx,dy:extended);: Integer;_Main.mm_X.Lines.Clear;_Main.mm_Y.Lines.Clear;_Main.mm_OutInfo.Lines.Clear;i := 0 to Nx-1 do_Main.mm_X.Lines.Add(FloatTostrF(sX[i],ffFixed,5,4)+#13);_Main.mm_Y.Lines.Add(FloatTostrF(sY[i],ffFixed,5,4)+#13);;

//fm_Main.mm_OutInfo.Lines.Add('Критерий Смирнова: D = ' +

//FloatToStrF(Smirnov[0],ffFixed,5,4) +#13);_Main.mm_OutInfo.Lines.Add('Критерий Стьюдента: mx = '+(mx,ffFixed,5,4) + '; my = ' +(my,ffFixed,5,4) + '; dx = ' +(dx,ffFixed,5,4) + '; dy = ' +(dy,ffFixed,5,4) + ';t = ' +(Student[0],ffFixed,5,4) + '; b = ' +(Student[1],ffFixed,6,0)+#13);_Main.mm_OutInfo.Lines.Add('Критерий Фишера: F = ' +(Fisher[0],ffFixed,5,4) + '; b1 = ' +(Fisher[1],ffFixed,6,0) + '; b2 = ' +(Fisher[2],ffFixed,6,0) +#13);;Gistrogramma(y: Tmas; var interval_mas:Tmas;N:integer):Tmas;,Fmas:Tmas;, Xmin, delta: Extended;, j: integer;: array of int64;(Pmas, 0);:= nil;(interval_mas, 0);_mas := nil;(count, 0);:= nil;:= y[0];:= y[0];i := 0 to N - 1 doY[i] <= Xmin then:= Y[i];Y[i] >= Xmax then:= Y[i];;;:= (Xmax - Xmin) / m;(interval_mas, 1);_mas[0] := Xmin;i := 1 to m do(interval_mas, i + 1);_mas[i] := interval_mas[i - 1] + delta;;i := 0 to m - 1 do(count, i + 1);j := 0 to N - 1 do((Y[j] >= interval_mas[i]) and (Y[j] <= interval_mas[i + 1])) then(count[i]);;;i := 0 to m - 1 do(Pmas, i + 1);[i] := count[i] / N;;i := 0 to m - 1 do(Fmas, i + 1);j := 0 to i do[i] := Fmas[i] + Pmas[j];;;:= Fmas;;paint_stat_distribution_function(Fx,interval_x,Fy,interval_y:Tmas);:integer;i := 0 to m - 1 do_Main.Chart1.Series[0].AddXY(interval_x[i], Fx[i], '', clTeal);i := 0 to m - 1 do_Main.Chart2.Series[0].AddXY(interval_y[i], Fy[i], '', clRed);;Tfm_Main.sb_GenerateClick(Sender: TObject);C:Tmas;,x1,q,sX,sY,Student,Fisher, Fx,Fy,interval_mas_X,interval_mas_Y: Tmas;:Tmas;,my,Dx,Dy:extended;(C,3);[0] := 0.3823603619;[1] := 1.624466512;[2] := 7.26482697;[3] := 32.48903197;:= congruential_method(5197619869); //последовательно х:= congruential_method(9058197581); //последовательность х*:= normal_distribution(x,x1); // коэффициенты q_process(q,C,sX,sY); // метод суммирующих:= mat_expectation(sX,Nx); //мат. ожидание:= mat_expectation(sY,Ny);:= variance(sX,Nx,mx); //дисперсия:= variance(sY,Ny,my);

//критерии согласия:= Gistrogramma(sX,interval_mas_X,Nx);:= Gistrogramma(sY,interval_mas_Y,Ny);_stat_distribution_function(Fx,interval_mas_X,Fy,interval_mas_Y);// статическая функция распределения:= criterion_for_approval_Smirnov(Fx,Fy);:= criterion_for_approval_Student(Dx,Dy,mx,my);:= criterion_for_approval_Fisher(Dx,Dy);(sX,sY,Student,Fisher,Smirnov,mx,my,dx,dy);;.

Раздел 2

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Buttons, ActnMan, ActnColorMaps, XPMan,mmsystem, StdCtrls,;N = 3600;= 200;= 400;a = 0;b = 3000;a = 0;b = 3000;= record:integer;:integer;_fail:integer;_fail:real;;= array of Tzap;= array of extended;_Main = class(TForm)_Info: TStringGrid;_m1_min: TEdit;_m3_min: TEdit;_FormData: TSpeedButton;: TSpeedButton;_m1_max: TEdit;_m3_max: TEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;_m_h: TEdit;: TLabel;: TStringGrid;FormDestroy(Sender: TObject);sb_RunClick(Sender: TObject);FormCreate(Sender: TObject);ed_t1KeyPress(Sender: TObject; var Key: Char);ed_t2KeyPress(Sender: TObject; var Key: Char);ed_t3KeyPress(Sender: TObject; var Key: Char);ed_t4KeyPress(Sender: TObject; var Key: Char);ed_t5KeyPress(Sender: TObject; var Key: Char);ed_TKeyPress(Sender: TObject; var Key: Char);sb_StopClick(Sender: TObject);sb_ContinueClick(Sender: TObject);sb_FormDataClick(Sender: TObject);sbOptimClick(Sender: TObject);

{ Private declarations }:integer;

{ Public declarations };_Main: Tfm_Main;,m2,m3,m4,m5:integer;,sigma2,sigma3,sigma4,sigma5:integer;_val:longint;,count_T,count_t3:integer;a,t1b,t2a,t2b,t3a,t3b,t4a,t4b,t5a,t5b,Ta,Tb:integer;,t2,t3,t4,t5,T:Tmas;_time,start_fail_time:real;,fail_DATA:integer;,now_time_t1,now_time_t2,now_time_t4,now_time_t5:real;_PC1,process_PC2,ON_PC1,ON_PC2,control_signal,start_t1,flag_change:boolean;_t2,start_t4,start_t5,recovery,flag_opt:boolean;_PC1,status_PC2,status_DATA:byte;:Tmaszap;_file_data:string;

{$R *.dfm}KeyEnter(var key:char);not(key in ['0'..'9',#8]) then key:=#0;;congruential_method(init:integer):Tmas;i:integer;(result, 0);:= nil;:= init;i := 0 to N + 5 do(result, i + 1);[i] := random;;;normal_distribution(x,x1:Tmas;sigma,mat:integer):Tmas;i:integer;(result,0);:= nil;i := 0 to N + 5 do(Result, i + 1);[i] := sigma * cos(2 * pi * x[i]) * sqrt(-2 * ln(x1[i])) + mat;;;stationary_process(q,C:Tmas):Tmas;i:integer;:real;:= (Ymax - Ymin) / 2;i := 0 to N-1 do(result,i+1);[i] := C[0]*q[i]+C[1]*q[i+1]+C[2]*q[i+2]+C[3]*q[i+3]+My;;;RandomParametres;x,x1,C,q: Tmas;:= congruential_method(random(7590185714));:= congruential_method(random(1590185712));(C,4);[0] := 0.3823603619;[1] := 1.624466512;[2] := 7.26482697;[3] := 32.48903197;:= normal_distribution(x,x1,1,0); // коэффициенты q:= normal_distribution(x,x1,sigma1,m1); //Исходные параметры системы:= normal_distribution(x,x1,sigma2,m2);:= normal_distribution(x,x1,sigma3,m3);:= normal_distribution(x,x1,sigma4,m4);:= normal_distribution(x,x1,sigma5,m5);:= stationary_process(q,C);;CalH(t1,t2,t3,t4,t5,T:real):real;Low =1; High =6;CountParam = Low..High;= array[CountParam] of real;mas:Tmas;:CountParam;:real;[1] := t1;[2] := t2;[3] := t3;[4] := t4;[5] := t5;[6] := T;:= mas[Low];i := Low+1 to High domas[i]<min then:= mas[i];;:= min;;GO_PC(num:integer);num = 1 then_PC1 := true; //данные поступили в ЭВМ2_PC1 := 2;if num = 2 then_PC2 := true; //данные поступили в ЭВМ2_PC2 := 2;;_t2 :=true;_time_t2 := time; // для этого запоминаем текущее время_DATA := 2;;Data_Received();_time_t1 := time;(ON_PC2) andnot(ON_PC1) then //Если данные пришли на ЭВМ2 и ЭВМ1 еще не восстановилосьnot(process_PC2) then //если ЭВМ2 не занята_PC(2);not(control_signal) then //Если нет управляющего сигнала_fail_time :=time;[count-1] := 2*t1[count-1]; //но нет управляющего сигнала, то уменьшаем интенсивность процесса;(ON_PC1 and not(process_PC1) ) then // Если ЭВМ 1 не в отказе_PC(1) // и не в процессе обработкиif (not(status_DATA=2)) then // походу данные потеряны....._DATA := 4;(fail_DATA);_t2 := false;;;Change_PC;_PC2 := 0;_PC2 := false; //выключим ЭВМ2_PC1 := 1;_PC1 := true; //включим ЭВМ1_t1 := true; //запускаем передачу данных в ЭВМ1_time_t1 := time; // запоминаем текущее время_signal :=true;;Data_Process();_PC1 then //если были данные на обработке ЭВМ1_DATA :=3;_PC1 := 3;_PC1 := false; //останавливаем обработку_signal := true; //запускаем управляющий сигнал_t2 := false; //останавливаем отсчет обработки данных_time_t2 := 0; //обнуляем времяif process_PC2 then_DATA :=3;_PC2 := 3;_PC2 := false;_t2 := false;_time_t2 := 0;(recovery) then //если мы обработали данные, но ЭВМ1 уже готова//к работе:=false;_PC;_change :=true;


Введение имитационный моделирование массовый обслуживание Реальные сложные системы, к числу которых относятся и современные АСУ, можно исследовать с помощ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ