Пример 1.10. На станок поступают детали для обработки. Интервал между поступлениями деталей составляет 8±2 минуты. Время обработки детали на станке распределено по гауссовскому закону; среднее время обработки — 5 минут, стандартное отклонение — 1 минутa. Кроме того, известно, что примерно у 8% деталей во время обработки обнаруживается дефект; для его устранения требуется дополнительная обработка на том же станке в течение 3 минут.
Требуется составить программу, имитирующую работу станка в течение смены (8 часов). Данные об интервалах поступления и времени обработки деталей должны запрашиваться программой. Программа должна сообщать: количество деталей, обработанных за смену; количество деталей, для которых потребовалось устранение дефекта; среднее время ожидания обработки детали (время пролеживания детали перед станком).
На рис. 1.4 приведена схема алгоритма имитации для данной задачи. В схеме использованы следующие обозначения: Tsm — продолжительность смены; Tint — интервал между поступлениями деталей (равномерно распределенная НСВ); Tobr — длительность обработки детали на станке; Tdef — длительность устранения дефекта; t — время поступления детали на обработку (отсчитывается от начала смены); tozh — время ожидания обработки детали (если она поступила на обработку раньше, чем закончилась обработка предыдущей детали); tosv — время окончания обработки детали (время освобождения станка); tosum — суммарное время ожидания обработки всеми деталями; tosred — среднее время ожидания обработки; i — счетчик всех обработанных деталей; Rdef — СРРЧ, используемое для имитации дефекта; verdef — вероятность дефекта (в данной задаче — 0,08); idef — счетчик деталей, у которых потребовалось устранять дефект.
Ниже приводится текст программы (на языке Паскаль) для данной задачи. Имена констант и переменных в программе соответствуют именам, использованным в схеме алгоритма. Другие переменные: tmin, tmax — минимальный и максимальный интервал между поступлениями деталей (6 и 10 минут соответственно); tobr_sred — среднее время обработки детали на станке (5 минут); tobr_otkl — среднеквадратическое отклонение времени обработки (1 минута). Обозначения в процедурах имитации (ravn_sv и gauss_sv) соответствуют обозначениям, использованным в описаниях соответствующих алгоритмов (см. разделы 1.6.4, 1.6.6).
Program model1_10;
Uses crt;
Label nov, kon;
Const tsm=480;
Var
Tmin, tmax, tobr_sred, tobr_otkl, tdef, verdef: real;
T, tint, tobr, tosv, tozh, tosum, tosred, rdef: real;
I, idef: integer;
Stop: char;
Procedure ravn_sv(a, b: real; var x: real);
(* имитация равномерно распределенной случайной величины *)
Var r: real;
Begin
R:=random;
X:=a+(b-a)*r;
End;
Procedure gauss_sv(m, sigma: real; var x: real);
(* имитация гауссовской случайной величины *)
Const n=6;
Var r, rsum: real;
i: integer;
Begin
Rsum:=0;
For i:=1 to n do
begin
r:=random;
rsum:=rsum+r;
end;
X:=m+sigma*sqrt(12/n)*(rsum-n/2);
End;
Begin (* основная программа *)
Clrscr;
Write (‘Минимальный интервал между деталями: ‘); readln(tmin);
Write (‘Максимальный интервал между деталями: ‘); readln(tmax);
Write (‘Среднее время обработки детали: ‘); readln(tobr_sred);
Write (‘Отклонение во времени обработки: ‘); readln(tobr_otkl);
Write (‘Вероятность дефекта: ‘); readln(verdef);
Write (‘Время устранения дефекта: ‘); readln(tdef);
T:=0;
Tosv:=0; tosum:=0;
I:=0; idef:=0;
Nov: ravn_sv(tmin, tmax, tint);
t:=t+tint;
if t>tsm then goto kon;
if t<tosv then tozh:=tosv-t;
else tozh:=0;
gauss_sv(tobr_sred, tobr_otkl, tobr);
i:=i+1;
rdef:=random;
if rdef<verdef then begin
tobr:=tobr+tdef;
idef:=idef+1;
end;
tosv:=t+tozh+tobr;
tosum:=tosum+tozh;
goto nov;
Kon:
tosred:=tosum/ i;
writeln; writeln;
writeln(‘Обработано деталей: ‘,i);
writeln(‘Среднее время ожидания обработки: ‘,tosred:6:2);
writeln(‘Количество деталей с устраненным дефектом: ‘,idef);
stop:=readkey;
End.
Результаты работы этой программы должны быть примерно следующими: обработано 57 деталей, из них 5 имели дефект; среднее время ожидания обработки — 0,1 минуты.
Примечание. В данном алгоритме (и в программе) предполагается, что все детали, поступившие на обработку в течение смены, будут обработаны (даже если их обработка завершится уже после окончания смены).
Примечание. Данный алгоритм и программа могут использоваться (с небольшими изменениями) для имитации работы любой системы, которую можно рассматривать как одноканальную СМО с неограниченной очередью. При этом требуется, чтобы в имитируемой СМО существовал стационарный режим работы, т. е. интенсивность поступления заявок на обслуживание была меньше, чем интенсивность обслуживания.