Математическая модель цифрового устройства работы светофора

Создание математической и компьютерной модели работы светофора с датчиком на скоростном шоссе с плотным автомобильным графиком. Конечный автомат – абстрактный, без выходного потока с конечным числом возможных состояний. Работа модели в 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.