Вершины данного графа 1, 2, 3, 4, 5, 6 есть остановки; ребра-ветви железной дороги; e, r,t,y,x,w,1u,2u..- длина пути ветвей; ответвления от замкнутого кольца – тупики, вместе ответвления расположена стрелка. В данном курсовом проекте рассмотрена упрощенная схема пути, но на ее основе можно будет рассмотреть модернизацию в сторону усложнения пути и добавления поездов.
Процесс функционирования системы может быть реализован с помощью различных алгоритмов.
Построение математической модели. Под математической моделью будем понимать процесс установления соответствия данному реальному объекту некоторого математического объекта и исследование этой модели, позволяющее получать характеристики рассматриваемого реального объекта. Модель объекта содержит:
· совокупность входных воздействий - задача начальной и конечной точки отправления;
· совокупность воздействий внешней среды;
· совокупность внутренних параметров - длины путей(скорость, свободна или занята ветвь по которой собирается двигаться поезд);
· совокупность выходных характеристик – длина всего пройденного пути (время его прохождения, и вывод кратчайшего пути).
1) Задаем длины отдельных ветвей графа, они могут быть представлены вектором:
P[ e, r,t,y,x,w], все элементы больше нуля.
2) Задаем начальную координату или вершину отправления, она должна быть истинной для заданного графа: номер вершины – nach, где 1<=nach<=6 т.е. для нашего графа число натуральное целое не более числа вершин.
3) Задаем конечную координату или вершину прибытия: номер вершины – kon, где 1<=kon<=6, натуральное и целое.
4) Задаем длину до тупика: u, где u=1u=2u=…=6u, u>0.
5) Выбери направление обхода: по часовой стрелки или против часовой.
6) Ищем длину пути: алгоритм – по очередное суммирование всех длин пройденных ветвей, т.е.элементов вектора Р
S=[nach]+[nach+1]+…+[nach+n], где nach+n=kon.
7) Задаем уйдет ли поезд в тупик. Если уходит то к общему полученному пути прибавляем длину ветви тупика. Skon=S+u, где u элемент из вектора U[1u,2u,3u,4u,5u,6u]
8) Задаем среднюю скорость прохождения маршрута поездом: V=v.
9) Вычисляем время, затраченное на весь маршрут: T= Skon/v
4. Второй этап моделирования. Реализация машинной модели
На втором этапе математическая модель воплощается в машинную модель, т.е. решается проблема алгоритмизации модели, ее рационального разбиения на блоки и организации интерфейса между ними. Реализация алгоритма представлена на языке турбо паскаль.
4.1 Блок схема
Основная схема
4.2 Листингпрограммы
program u;uses crt;label m1,m2,m3;const n=5;typeuk=^zap;zap=records:integer;zn:boolean;Lln:uk;Rln:uk;end;varzn:char;perv,tek,pred,perv1:uk;met:boolean;i,nash,kon,znash,dl:integer; | Блок описаний: Задание названия программы, задание существующих меток, констант (n=5) – задание точного числа остановок на пути, задание типов переменных: целочисленных данных, логических переменных, логические метки, символьные переменные. |
procedure poisk1;begintek:=perv1;znash:=0;while tek^.zn=false dobeginznash:=tek^.s+znash;tek:=tek^.rln;end;writeln(' ');znash:=znash+dl;end; | Процедура поиска и задания начальной координаты, и нахождения суммарного пути по часовой стрелке. |
procedure poisk2;varcx:integer;begintek:=perv1;znash:=0;cx:=0;tek:=perv1;while tek^.zn=false dobegincx:=cx+1;znash:=tek^.lln^.s+znash;tek:=tek^.lln;end;znash:=znash+dl;end; | Процедура поиска и задания начальной координаты, и нахождения суммарного пути против часовой стрелки. |
beginclrscr;m1:writeln('Vvedite nomer nashalnoi koordinati');readln(nash);if nash>n thenbeginwriteln('Nevernii vvod');goto m1;end;m2:writeln('Vvedite nomer koneshnoi koordinati');readln(kon);if kon>n thenbeginwriteln('Nevernii vvod');goto m2;end;writeln('Vvedite put do tupika');readln(dl); | Вводим начальные координатыЕсли начальная координата больше общего числа возможных остановок на пути, выводится ошибка.Ввод конечной координатыЕсли конечная координата больше общего числа возможных остановок на пути, выводится ошибка.Ввод расстояния до тупика |
new(tek);perv:=tek;if kon=1 then perv^.zn:=true else perv^.zn:=false;writeln('Vvedite put 1');readln(tek^.s);tek^.Rln:=nil;tek^.Lln:=nil;pred:=perv;perv1:=perv;for i:=2 to n dobeginnew(tek);pred^.Rln:=tek;tek^.lln:=pred;writeln('Vvedite put ',i);readln(tek^.s);tek^.Rln:=nil;pred:=tek;if i=nash then perv1:=tek;if i=kon then tek^.zn:=true else tek^.zn:=false;end;tek^.Rln:=perv;perv^.Lln:=tek; | Здесь задается вопрос о величине каждой в отдельности ветви.Задание величины длины пути до тупика при переходе по стрелке |
m3:writeln('Vvedite napravlenie:');writeln(' Y- Po shasovoi strelke');writeln(' N- Protiv shasovoi strelki');zn:=readkey;case zn of'Y','y':poisk1;'N','n':poisk2;elsebeginwriteln('Nevernii vvod,povtorite ese ras');goto m3;end;end;writeln('Proidennii put: ',znash);readkey;end. | Вводится направления движения которое считается более оптимальным, то есть задается движение поезда по часовой стрелки или против часовой.Y-по часовойX-против часовойПри ошибки ввода неправильного значения выдается просьба ввода еще раз.Вывод длины пройденного пути |
(Рис.2)
Это результат работы программы, в которой рассмотрена задача нахождения пути, переключение направления движения, а также работа стрелки.
5. Модель движения поезда рассмотренная в MatLab
Для того чтоб знать расположение в данный момент поезда на маршруте, используем пакет Simulink в программе MatLab. Рассмотрим граф с переходящей меткой, стоящей в той вершине, в которой находиться поезд в конкретный момент времени. Данная модель является динамическим объектом. Динамический объект – это объект, поведение (выход) которого зависит не только от текущего значения входных воздействий (сигналов), но и от их значений в предыдущие моменты времени. Модель находит кратчайший путь и идет по нему. То есть в данную модель включено цифровое устройство – счетчик времени.
Модель обнаружения поезда на путях (логическая схема).
Данная логическая схема обеспечивает удобный и наглядный визуальный контроль за поведением виртуальной модели железной дороги. Достаточно лишь запустить Simulink в режиме симуляции созданной модели системы. После запуска программа определяет начальную и конечную станцию, находит кратчайший маршрут движения, запускается счетчик времени, и производиться перемещения метки поезда по вершинам до конечной станции. Для изменения конечной и начальной станции достаточно редактировать лишь два блока: DataStoreRead – начальная вершина, DataStoreRead1- конечная вершина
Входные данные к логической схеме:
е1 — конечнная станция 1
е2 — конечнная станция 2
е3 — конечнная станция 3
е4 — конечнная станция 4
е5 — конечнная станция 5
с1 — текущая станция 1
с2 — текущая станция 2
с3 — текущая станция 3
с4 — текущая станция 4
с5 — текущая станция 5
s — конечная станция.
Поступают на входы в виде двоичного сигнала
Логическая функция реализованной модели
с1 = е1
( c2 v c5 ) v e2 c5 v e5 c2с2 = е2
( c1 v c3 ) v e1 c3 v e3 c1с3 = е3
( c2 v c4 ) v e2 c4 v e4 c2с4 = е4
( c3 v c5 ) v e3 c5 v e5 c3с5 = е5
( c4 v c1 ) v e4 c1 v e1 c4s = c1
e1 v c2 e2 v c3 e3 v c4 e4 v c5 e5