Математическая модель цифрового устройства работы светофора
Создание математической и компьютерной модели работы светофора с датчиком на скоростном шоссе с плотным автомобильным графиком. Конечный автомат – абстрактный, без выходного потока с конечным числом возможных состояний. Работа модели в Visual Basic.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.06.2011 |
Размер файла | 348,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
ГОУ ВПО "Северо-кавказский государственный технический университет"
Факультет информационных технологий и телекоммуникаций
Кафедра прикладной математики и компьютерных технологий
Курсовая работа
По предмету ”Математическое программирование”
Тема ” Математическая модель цифрового устройства работы светофора”
Ставрополь, 2011 г
Содержание
- 1. Введение
- 2. Конечный автомат
- 3. Схема и математическая модель работы светофора
- Математическая модель
- 4. Работа модели в Visual basic
- 5. Вывод
- 6. Список литературы
1. Введение
Цель работы заключается в создании математической и компьютерной модели работы светофора с датчиком. Рассматривается скоростное шоссе с плотным авто-трафиком. Проблема заключается в том что на шоссе нет дорожного перехода, а если поставить светофор то будут возникать большие скопления автомобилей. В качестве решения предложено установить светофор для пешеходного перехода с платформой датчиком, который включает красный свет автомобилям в случае появления пешехода. Плюсом модели является то, что в случае отсутствия пешеходов не возникает заторов, так как автомобилям все время горит зеленый свет.
2. Конечный автомат
Конечный автомат - абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.
Существуют различные варианты задания конечного автомата. Например, конечный автомат может быть задан с помощью пяти параметров:
где:
Q - конечное множество состояний автомата;
q0 - начальное (стартовое) состояние автомата ();
F - множество заключительных (или допускающих) состояний, таких что ;
У - допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;
д - заданное отображение множества во множество подмножеств Q:
(иногда д называют функцией переходов автомата).
Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово "принимается" автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово "отвергается".
Конечные автоматы широко используются на практике, например в синтаксических, лексических анализаторах, и тестировании программного обеспечения на основе моделей.
Другие способы описания
Диаграмма состояний (или иногда граф переходов) - графическое представление множества состояний и функции переходов. Представляет собой нагруженный однонаправленный граф, вершины которого - состояния КА, ребра - переходы из одного состояния в другое, а нагрузка - символы, при которых осуществляется данный переход. Если переход из состояния q1 в q2 может быть осуществлен при появлении одного из нескольких символов, то над дугой диаграммы (ветвью графа) должны быть надписаны все они.
Таблица переходов - табличное представление функции д. Обычно в такой таблице каждой строке соответствует одно состояние, а столбцу - один допустимый входной символ. В ячейке на пересечении строки и столбца записывается действие, которое должен выполнить автомат, если в ситуации, когда он находился в данном состоянии на входе он получил данный символ.
Детерминированность
Конечные автоматы подразделяются на детерминированные и недетерминированные.
Детерминированным конечным автоматом (ДКА) называется такой автомат, в котором для каждой последовательности входных символов существует лишь одно состояние, в которое автомат может перейти из текущего.
Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Недетерминированность автоматов достигается двумя способами:
Если рассмотреть случай, когда автомат задан следующим образом:
,
где:
S - множество стартовых состояний автомата, такое что ;
Тогда появляется третий признак недетерминизма - наличие нескольких начальных (стартовых) состояний у автомата.
Существует теорема, гласящая, что "Любой недетерминированный конечный автомат может быть преобразован в детерминированный так, чтобы их языки совпадали" (такие автоматы называются эквивалентными). Однако, поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.
В силу последних двух замечаний, несмотря на бомльшую сложность недетерминированных конечных автоматов, для задач, связанных с обработкой текста, преимущественно применяются именно НКА.
Автомамтное программимрование - это парадигма программирования, при использовании которой программа или её фрагмент осмысливается как модель какого-либо формального автомата.
В зависимости от конкретной задачи в автоматном программировании могут использоваться как конечные автоматы, так и автоматы более сложной структуры.
Определяющими для автоматного программирования являются следующие особенности:
временной период выполнения программы разбивается на шаги автомата, каждый из которых представляет собой выполнение определённой (одной и той же для каждого шага) секции кода с единственной точкой входа; такая секция может быть оформлена, например, в виде отдельной функции и может быть разделена на подсекции, соответствующие отдельным состояниям или категориям состояний
передача информации между шагами автомата осуществляется только через явно обозначенное множество переменных, называемых состоянием автомата; между шагами автомата программа (или её часть, оформленная в автоматном стиле) не может содержать неявных элементов состояния, таких как значения локальных переменных в стеке, адреса возврата из функций, значение текущего счётчика команд и т.п.; иначе говоря, состояние программы на любые два момента входа в шаг автомата могут различаться между собой только значениями переменных, составляющих состояние автомата (причём такие переменные должны быть явно обозначены в качестве таковых).
Полностью выполнение кода в автоматном стиле представляет собой цикл (возможно, неявный) шагов автомата.
Название автоматное программирование оправдывается ещё и тем, что стиль мышления (восприятия процесса исполнения) при программировании в этой технике практически точно воспроизводит стиль мышления при составлении формальных автоматов (таких как машина Тьюринга, автомат Маркова и др.)
сфетофор visual basic модель
3. Схема и математическая модель работы светофора
Мы имеем граф-схему работы светофора:
0
1
1
0
Графическая модель дороги
Зеленый свет светофора для автомобилей горит 60 секунд после чего происходит проверка датчика (нажат/не нажат 1/0), если датчик нажат то включается красный на 30 секунд после чего опять зеленый на 60 секунд. Далее если датчик не нажат то светофор продолжает гореть зеленым до следующей проверки датчика.
Математическая модель
Математическая модель состоит из двух автоматов G и W, где G-автомат управляющий светофором, а W-автомат, отражающий наличие или отсутствие пешеходов.
Временный сигнал отсутствует x1=0 в течении 60 секунд и появляется x1=1 в течении 30 секунд.
Красный сигнал светофора z=1 включается когда x1=1
Датчики это x2, при срабатывании x2=1, в остальное время x2=0
G:
q1 = {q2/x1w2, q3/x1w1},
q2 = {q1/^x1},
q3 = {q1/^x1},
W:
w1= {w2/^x2},
w2= {w1/x2},
4. Работа модели в Visual basic
Общий текст программы имеет вид:
Option Explicit
Dim num1 As Integer
Dim firstTime As Date
Dim lastTime As Date
Dim newTime As Date
Dim deltaLastTime As Long
Dim deltaFirstTime As Long
Dim sensorColor As Long
Dim timerColor As Long
Sub ResetNewProtocol ()
firstTime = Time
lastTime = firstTime
newTime = firstTime
Form1. DrawWidth = 1
Form1. Line (58, 460) - (422, 514), &H8000000F, BF
Form1. ScaleMode = 3
Form1. DrawWidth = 5
Form1. Line (60, 470) - (420, 470), RGB (0, 0, 0)
Form1. Line (60, 487) - (420, 487), RGB (0, 0, 0)
Form1. Line (60, 504) - (420, 504), RGB (0, 0, 0)
End Sub
Sub DrawNewProtocol ()
Dim tmpTimeBegin As Long
Dim tmpTimeEnd As Long
tmpTimeBegin = DateDiff ("s", firstTime, lastTime)
tmpTimeEnd = DateDiff ("s", firstTime, newTime)
Form1. DrawWidth = 1
Form1. Line (60 + 4 * tmpTimeEnd, 460) - (60 + 4 * tmpTimeEnd, 514), RGB (128, 128, 128)
Form1. DrawWidth = 3
Form1. Line (60 + 4 * tmpTimeBegin, 470) - (60 + 4 * tmpTimeEnd, 470), s2. FillColor
Form1. Line (60 + 4 * tmpTimeBegin, 487) - (60 + 4 * tmpTimeEnd, 487), sensorColor
Form1. Line (60 + 4 * tmpTimeBegin, 504) - (60 + 4 * tmpTimeEnd, 504), timerColor
End Sub
Sub EventNewProtocol (timeEvent As Date)
deltaFirstTime = DateDiff ("s", firstTime, timeEvent)
If deltaFirstTime > 90 Then
ResetNewProtocol
Else
lastTime = newTime
newTime = timeEvent
deltaLastTime = DateDiff ("s", lastTime, timeEvent)
DrawNewProtocol
End If
End Sub
Sub protocol (text As String)
Text1. text = Str (DateDiff ("s", firstTime, Time)) + ": " + text + vbCrLf + Text1. text
End Sub
Private Sub Command1_Click ()
If txtGreen. text <= 0 Or txtGreen. text > 60 Then
MsgBox "неправильное число"
GoTo m1
End If
If txtRed. text <= 0 Or txtRed. text > 30 Then
MsgBox "неправильное числ"
GoTo m1
End If
firstTime = Time
lastTime = firstTime
newTime = firstTime
protocol ("Начало работы")
txtGreen. Locked = True
txtRed. Locked = True
txtGreen. BackColor = &H8000000A
txtRed. BackColor = &H8000000A
shd0. Visible = False
shd1. Visible = True
shd2. Visible = False
l1. Visible = True
semag
timerColor = RGB (0, 200, 0)
t1. Interval = txtGreen. text * 1000
t2. Interval = txtRed. text * 1000
protocol ("Включен таймер зелёного")
t1. Enabled = True
Command1. Visible = False
Command2. Visible = True
ResetNewProtocol
m1:
End Sub
Sub semag ()
EventNewProtocol (Time)
s1. FillColor = &HFF&
s4. FillColor = &HFF&
s2. FillColor = &HFF00&
s3. FillColor = &HFF00&
protocol ("Зажёгся зелёный")
End Sub
Sub semar ()
EventNewProtocol (Time)
s2. FillColor = &HFF&
s3. FillColor = &HFF&
s1. FillColor = &HFF00&
s4. FillColor = &HFF00&
protocol ("Зажёгся красный")
End Sub
Private Sub Command2_Click ()
num1 = 0
txtGreen. Locked = False
txtRed. Locked = False
txtGreen. BackColor = &H80000005
txtRed. BackColor = &H80000005
t1. Enabled = False
t2. Enabled = False
shd2. Visible = False
shd1. Visible = False
shd0. Visible = True
l1. Caption = "Датчики отжаты (давить левой кнопкой мыши)"
l1. Visible = False
sensorColor = RGB (200, 200, 0)
s1. FillColor = &H808080
s4. FillColor = &H808080
s2. FillColor = &H808080
s3. FillColor = &H808080
Command1. Visible = True
Command2. Visible = False
protocol ("Конец работы")
End Sub
Private Sub Command3_Click ()
Text1. text = ""
ResetNewProtocol
End Sub
Private Sub Form_Load ()
Form1. Hide
Form2. Show
t3. Interval = 500
sensorColor = RGB (200, 200, 0)
End Sub
Private Sub Image1_Click ()
End Sub
Private Sub shd1_Click ()
EventNewProtocol (Time)
num1 = 1
shd0. Visible = False
shd1. Visible = False
shd2. Visible = True
l1. Caption = "Дорожный переход (есть пешеходы)"
protocol ("Датчики нажаты")
sensorColor = RGB (200, 0, 200)
End Sub
Private Sub shd2_Click ()
EventNewProtocol (Time)
num1 = 0
shd0. Visible = False
shd2. Visible = False
shd1. Visible = True
l1. Caption = "Датчики отжаты (давить левой кнопкой мыши)"
protocol ("Датчики отжаты")
sensorColor = RGB (200, 200, 0)
End Sub
Private Sub t1_Timer ()
EventNewProtocol (Time)
t1. Enabled = False
If num1 = 1 Then
semar
End If
t2. Enabled = True
timerColor = RGB (200, 0, 0)
protocol ("Включен таймер красного")
End Sub
Private Sub t2_Timer ()
EventNewProtocol (Time)
t2. Enabled = False
If s1. FillColor = &HFF& Then
t1. Enabled = True
Else
semag
t1. Enabled = True
End If
timerColor = RGB (0, 200, 0)
protocol ("Включен таймер зелёного")
End Sub
Private Sub t3_Timer ()
Form2. Hide
Form1. Show
t3. Interval = 0
End Sub
Окно программы
5. Вывод
С помощью данной математической модели была составлена программа управления светофорами, позволяющая одновременно и установить переход со светофором на оживленном шоссе и с другой стороны минимизировать время простаивания транспорта на светофоре.
По результатам компьютерной модели видно следующее:
Время горения красного и зеленого сокращено чтобы нагляднее видеть изменения:
В графе Светофор зеленым цветом обозначается зеленый свет светофора и красным - красный свет светофора.
В графе датчик желтый - датчик неактивен, а фиолетовый - активен (есть пешеход).
По этим данным можно заметить что включения красного света светофора происходит спустя некоторое время после нажатия датчика. Таким образом достигается максимальная эффективность данной модели.
6. Список литературы
1. Иванов В.Т. Математическое моделирование. Модели прогнозирования. (Методические указания для самостоятельной работы по курсу ЦИПС) - Уфа, 1988.
2. Советов Б.Я., Яковлев С.А. Моделирование систем. - М.: Высшая школа, 1998.
3. Математическое моделирование: Пер. с англ. / Под ред. Дж. Эндрюса, Р. Мак-Лоуна. - М.: Мир, 1979.
4. Кондаков В.М. Математическое программирование. Элементы линейной алгебры и линейного программирования. - Пермь: Из-во ЛГУ, 1992.
5. Акулич И.Л. Математическое программирование в примерах и задачах. - М.: Высшая школа, 1993.
6. Белошапка В.К. Информационное моделирование в примерах и задачах. - Омск: Из-во ОГПИ, 1992.
Размещено на Allbest.ru
Подобные документы
Определение унитарных и бинарных функций. Представление булевых функций: дизъюнктивная и конъюнктивная нормальная форма. Общая характеристика правил и стратегии игры в шашки. Особенности математической модели цифрового устройства для игры в шашки.
курсовая работа [544,0 K], добавлен 28.06.2011Система программирования - Visual Basic. Новые возможности. Быстрый запуск проекта. Средства управления. Что позволяет Visual Basic. Краткое описание работы. Corel Draw. Отличие векторной графики от растровой. Краткое описание работы в Corel Draw.
курсовая работа [1,3 M], добавлен 04.10.2008Составление блок-схемы алгоритма решения задачи, погрешности вычисления суммы членов числового ряда. Разработка программ на языке на Visual Basic, работа с массивами. Особенности работы со строковыми данными. Варианты реализации формы приложения.
контрольная работа [220,4 K], добавлен 18.06.2010Рабочая среда Visual Basic (VB) и ее основные компоненты. Ввод и вывод данных в VB. Объявление переменных и констант в программе. Создание и работа с процедурами и функциями, их виды. Организация ветвления в VB. Использование циклов в программировании.
практическая работа [502,5 K], добавлен 26.10.2013Разработка математической модели системы. Моделирование работы конвейера сборочного цеха в течении 8 часов. Определение вероятности пропуска секции. Расчет количества скомплектованных изделий за 8 часов. Исследование системы на имитационной модели.
контрольная работа [98,3 K], добавлен 24.09.2014Описание Visual Basic Scripting Edition как скриптового языка программирования, интерпретируемого компонентом Windows Script Host. Правила работы языка и применение VBS-сценариев для обработки данных, управления системой, работы с учетными записями.
доклад [31,3 K], добавлен 11.05.2012Программный проект Баз данных средствами Visual Basic 6.0. Проектирование структуры таблицы базы данных Visual Basic 6.0. Заполнение созданных таблиц БД исходными данными. Создание пользовательского меню. Вид формы и свойства элементов управления.
курсовая работа [3,0 M], добавлен 19.06.2010Построение математической модели корпуса судна. Изучение работы последней версии программы FastShip6. Построение теоретической поверхности корпуса теплохода, проходящего ремонт на судостроительном предприятии. Процесс построения поверхности по ординатам.
дипломная работа [656,0 K], добавлен 24.03.2010Проектирование на основе микропроцессора контроллера для модели железной дороги, который должен управлять маршрутами поезда в соответствии с поступающими с клавиатуры командами. Модель движения поезда, рассмотренная в MatLab. Реализация машинной модели.
курсовая работа [558,3 K], добавлен 28.06.2011Решение экономических задач с помощью Microsoft Excel и инструментария Visual Basic For Application. Способы запуска редактора Visual Basic, правила его синтаксиса. Создание автоматических макросов по сортировке и выборке. Создание управляющих кнопок.
курсовая работа [852,0 K], добавлен 24.09.2010