- •Курсовая работа:
- •Конвейерных систем методом моделирования”
- •Оглавление Описание метода математического моделирования
- •Исходные данные
- •Описание алгоритма работы системы по методу математического моделирования
- •Блок-схема алгоритма
- •Программа
- •Расчёт значений Ic и Iп
- •Графики по рассчитанным ic и iп.
Исходные данные
Количество загрузочных линий r = 11
Количество сортировочных линий h = 6
Производительность загрузочной линии Пз = 860 посылок/час
Емкости накопителей m от 2 до 5
L = Пс/Пз L от 3 до 5
Описание алгоритма работы системы по методу математического моделирования
Блок 1: Ввод начальных данных (L, M, h. r, Pz, Em).
Блок 2: Задание интервала моделирования (Ет)
Блок 3 и 4: Обнуление массива Y(n). Показывает, что первая платформа подходит к первому узлу всегда свободной.
Блок 5: Цикл, моделирующий движения «массива тележек» Y(n) от узла к узлу сортировочной линии.
Блок 6: Цикл моделирующий прохождение L тележек мимо узла за один такт загрузочной линии.
Блок 7: Условие показывающее что груз может перегрузиться с сортировочной линии только на 1ю из L тележек между узлами.
Блок 8: Разыгрывание случайной величины t
Блок 9: Условие адресования груза в данный накопитель (Груз по адресу?), (t < 1/h)
Блок 10: Условие: Сортировочная платформа находящаяся в узле занята?
Блок 11: Условие в котором проверяется пустой ли накопитель
Блок 12: Груз из накопителя выгружается на свободную сортировочную платформу Количество отсортированных грузов +1 Груз перешел на Y(n-ю) платформу
Блок 13: Условие: Сортировочная платформа находящаяся в узле занята?
Блок 14: Количество отсортированных грузов +1 Груз перешел на Y(n-ю) платформу
Блок 15: Условие: Накопитель полон?
Блок 16: Кол-во грузов в накопителе увеличилось на +1
Блок 17: Произошел отказ в j-том узле P(j)=P(j)+l
Блок 18: Вычисляется вероятность свободном платформы после r (последнего) угла загрузочной линии
Блок 19: Вычисляет интенсивность свободных платформ всей системы
Блок 20 и 21 Otk - сумма отказов по всем узлам (все отказы)
Блок 22: Вычисляет интенсивность повтора
Блок 23: вывод Ic, Ip. Psv
Чтобы создать программу для расчёта методом математического моделирования, введём переменные и присвоим им определённое состояние системы.
m(j) - число грузов в накопителе на j - ом узле (от 1 до М)
P(j) - число отказов на j - ом узле
Y(n) - массив Y(1)...Y(L) массив состояния тележек между узлами загрузочной линии.
Z - количество загруженных платформ (На выходе одной сорт, линии после моделирования Em раз)
Em - интервал моделирования
Otk - суммарное кол-во отказов системы
Psv - вероятность свободной платформы после последнего r узла загр. Линии
t - случайная величина
Блок-схема алгоритма


Программа
unit TIIK;
procedure TForm1.btGoClick(Sender: TObject);
var
t,Ip,Ic,Psv,Pz: real; //задаём переменные типа real
Em,h,i,j,L,n,nak,otk,r,z: integer; //задаём переменные целочисленного диапазона
L_beg,L_end,m_beg,m_end: integer;
y:array [1..100] of integer; //массив состояний платформ
p:array [1..100] of integer; //массив отказов
m:array [1..100] of integer; //массив состояний накопителей
tmpstr: string;
begin
h:=strtoint(lbe_h.text); //загружаем иисходные данные с формы
r:=strtoint(lbe_r.text);
L_beg:=StrToInt(ed_L_beg.Text);
L_end:=StrToInt(ed_L_end.Text);
m_beg:=StrToInt(ed_m_beg.Text);
m_end:=StrToInt(ed_m_end.Text);
Em:=StrToInt(lbe_Em.Text);
Pz:=StrToFloat(lbe_Pz.text);
st_out.Lines.Clear; //очищаем окно вывода
for L:=L_beg to L_end do for nak:=m_beg to m_end do
begin
st_out.Lines.Add('L='+FloatToStr(L)+', m='+FloatToStr(nak));
z:=0;
otk:=0;
for i:=1 to 100 do
begin
p[i]:=0; m[i]:=0;
end;
for i:=1 to Em do
begin //Начало моделирования Em раз
for n:=1 to L do y[n]:=0; //Обнуления массива Y(N)
for j:=1 to r do
//<<< Основной цикл
for n:=1 to L do
begin
if n=1 then t:=random else t:=1; //условие n=1
if t<1/h then //Груз в адрес данного накопителя? // Да
if y[n]=1 then //Платформа занята? //Да
if m[j]=nak then //Накопитель полон?
inc(p[j]) //Да
else
inc(m[j]) //Нет
else
begin //Платформа занята? //Нет
y[n]:=1;
inc(z);
end
else //Груз в адрес данного накопителя? //Нет
if y[n]=0 then //Платформа свободна? //Да
if m[j]>0 then //Накопитель пуст? //Нет
begin
dec(m[j]);
inc(z);
y[n]:=1;
end;
end;
//Основной цикл >>>
end; //Конец моделирования Em раз
st_out.Lines.Add('Грузов отсортировано: '+IntToStr(z));
st_out.Lines.Add('Количество отказов по узлам загрузочных линий: ');
for i:=1 to r do
begin
//st_out.Lines.Add(IntToStr(i)+': '+IntToStr(p[i]));
otk:=otk+p[i];
end;
Psv:=1-z/(Em*L);
Ic:=Psv*Pz*L*h;
Ip:=Pz*otk/Em;
st_out.Lines.Add('Вероятность свободной платформы после '+IntToStr(r)+'гo узла: '+LeftStr(FloatToStr(Psv),5));
st_out.Lines.Add('Iсв='+FloatToStr(Ic)+', Iп='+FloatToStr(Ip));
st_out.Lines.Add('');
end;
end;
end.
