Марковские процессы

Автор работы: Пользователь скрыл имя, 04 Апреля 2012 в 17:54, курсовая работа

Краткое описание

Математическое моделирование позволяет более глубоко и объективно взглянуть на модель и найти способ её преобразования. Модель, в данном случае, представляет собой набор цифр и функций по которым работают некоторые её компоненты.
Таким образом, с помощью применения метода Динамического Программирования (Марковский процесс с дискретными состояниями и непрерывным временем. Уравнения Колмогорова для вероятностей состояний.) и создания программы на основе этого метода, будет выполнена цель курсового проекта.

Содержимое работы - 1 файл

курсовая работа.doc

— 135.50 Кб (Скачать файл)

 

В качестве выходных спецификаций используется система уравнений Колмогорова.

=-λ12p1-λ13p1

= λ12p1+ λ32p3

= λ13p1- λ32p3

 


3.3. Проектирование структуры и состава модели

 

Этап проектирования модели является завершающим в общем цикле проектирования модели.

На этом этапе выполняется процесс внешнего проектирования модели, а также проектирование и кодирование логики модели.

В процессе внешнего проектирования модели разрабатывается внешние взаимосвязи модели.

Структурные элементы модели «Случайные Марковские процессы с дискретным состоянием и дискретным временем. Уравнения Колмогорова» применительно к программе представлены в виде процедур и функций обработки первичной информации. Все составные части модели взаимосвязаны между собой и функционируют с оптимальным быстродействием, а также представляют собой законченную логическую сущность, оставляя право вызова и получения результата телу основной программы.


4. Исследование модели

4.1. Выбор метода исследования модели, подмоделей

 

Пусть система S имеет четыре возможных состояния:

S1, S2, S3, S4.

Поставим себе задачу: найти одну из вероятностей состояний, на­пример, Pi(t). Это есть вероятность того, что в момент t система будет находиться в состоянии S1.

Придадим t малое приращение ∆t и найдем вероятность того, что в момент t + ∆t система будет находиться в состоянии S1.

Как это событие может произойти? Очевидно, двумя способами:

— в момент t система уже была в состоянии S1, а за время ∆t не вышла из этого состояния или

— в момент t система была с состоянии S3, а за время ∆t перешла из него в S1.

Вероятность первого варианта найдем как произведение вероят­ности P1(t) того, что в момент t система была в состоянии S1 на услов­ную вероятность того, что, будучи в состоянии S1 система за время ∆t не перейдет из него в S2. Эта условная вероятность (с точностью до бесконечно малых высших порядков) равна 1 — λ12∆t.

Аналогично, вероятность второго варианта равна вероятности то­го, что в момент t система была в состоянии S3, умноженной на услов­ную вероятность перехода за время ∆t в состояние S1: P3(t)λ31∆t.

Применяя правило сложения вероятностей, получим:

P1(t+λ12∆t) = P1 (t) (1 — λ12∆t) + P3(t)λ31∆t.

Раскроем скобки в правой части, перенесем Pi(t) в левую и разде­лим обе части равенства на ∆t; получим:

P1(t+λ12∆t) – P1(t)

------------------------   =  — λ12P1(t) + λ31P3(t).

∆t             

Теперь устремим ∆t к нулю и перейдем к пределу:

P1(t+λ12∆t) – P1(t)

Lim       ---------------------------   =  — λ12P1(t) + λ31P3(t).

       ∆t→0              ∆t             

 

Левая часть есть не что иное, как производная   функции

dP1(t)

-------   =   — λ12P1(t) + λ31P3(t).

  dt

Таким образом, выведено дифференциальное урав­нение, которому должна удовлетворять функция P1(t). Аналогич­ные дифференциальные уравнения могут быть выведены и для осталь­ных вероятностей состояния: P2(t), P3(t), P4(t).


4.2. Выбор или построение алгоритмов и их псевдоизображения

 

   Алгоритм  точное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи за конечное число шагов.

   Алгоритм вычисления уравнения Колмогорова по матрице состояний

 

 


4.3. Сборка модели

 

   Для выбора метода сборки модели нужно, для начала иметь о них представление. В настоящий момент, в силу практических знаний, можно воспользоваться монолитным или пошаговым методом сборки модели.

   Пошаговый метод предполагает сбор программы, как конструктор, к уже созданным юнитам (процедурам) новые, только что созданные и на месте отработать их взаимодействие между ними. Этот метод не такой быстрый как монолитный, но у него есть свои преимущества, конечно если программа не такая уж и большая и состоит не из подпрограмм, а всего-навсего из нескольких процедур.

   Монолитный метод сборки – более солидный. Каждая подпрограмма изучается отдельно и разрабатывается как универсальная часть, которая без проблем взаимодействует с любым из предназначенных ему подмоделей, при условии, что она сама по себе работает без ошибок. Монолитный метод сборки был бы актуален в данном случае, если бы в проектировании программы участвовало два-три студента.

   Таким образом пошаговый метод сборки модели был выбран интуитивно как наиболее оптимальный и лёгкий применительно к данному курсовому проекту.

   Создание программы происходило следующим образом:

-   был создан интерфейс программы

к интерфейсу были подключены все позднее созданные процедуры.

 


4.4.-4.5. Идентификация подмодели или модели. Формулировка критериев адекватности, чувствительности, устойчивости модели.

 

  Идентичность программы предоставленной математической модели соответствует первоначальной её постановке на 90%, так как невозможен прямой перевод формул на программный язык без их некоторой модификации. Во всяком случае, числовое решение задачи распределения ресурсов полностью идентично ответам задач, решённых «ручным» способом или предоставленным в книге, откуда и брались методы решения поставленной цели.

   Адекватность означает, что модель, описывающая систему, адекватна в соответствии с поставленной целью при этом не важно каким путем эта цель будет достигнута.

   Адекватность должна проявляться и в программе при обработке различного рода данных и их анализе. При некорректно введенном значении того или иного типа программа должна реагировать и предусматривать корректные выход либо к началу программы либо в систему.

   Весь комплекс, представляющий структурные элементы, внешние воздействия и взаимосвязи представляет четкую систему, описывающую задачу и все ее необходимые как по условию, так и в связи с особенностями реализации свойства. Свойства в свою очередь не должны быть стандартно выработаны, а должны удовлетворять конкретно поставленной задаче и приводить в действие механизм реализации только применительно к данной, функционально оконченной цели.

   Система не даст пользователю ввести значения, лежащее за пределами исследования либо выходящими за рамки данного типа.

   Оценка устойчивости отражает влияние на программу внешних факторов, не зависящих от пользователя или системы. К таким факторам можно отнести, например, переход на летнее или зимнее время, изменение курсов валют, переход на новое тысячелетие, внедрение новых стандартов и т.д.

   Безусловно, это весьма существенные факторы, но предусмотреть их всех посредством системы обработки критических ситуаций невозможно, и все эти факторы, по мере их возникновения, должны быть модифицированы в коде программы без последствий, влияющих на поведение других элементов, напрямую зависящих от производимых изменений.

Основные количественные показатели надёжности:

1)            вероятность безотказной работы;

2)            вероятность отказа;

3)            частота (интенсивность) отказа системы;

4)            средняя наработка до отказа системы;

5)            среднее время восстановления;

6)            коэффициент готовности

5. Программирование

5.1. Выбор методов тестирования

 

   Тестирование – это процесс многократного выполнения программы с целью выявления ошибок. Тестовый прогон считается удачным, если он позволяет выявить ошибки, о эффективности тестового набора судят по его вероятности обнаружения большего числя ошибок. Тестирование  разрушительный для программы процесс и надо обладать соответственным складом ума, чтобы относиться к ней таким образом. Тестирование лучше проводить третьим лицом, не участвующим в создании и разработке программы, для повышения уровня разрабатываемых тестовых наборов. Это связано с тем, что программист, написавший программу будет просто уверен, что она работает правильно (даже если это не так) ибо для этого он её и создавал.

   Трудность тестирования состоит в том, что процесс этот творческий, плохо поддающийся формализации. Тестирование   одна из составляющих частей более общего понятия отладка. Выделяют четыре метода тестирования:

–    статистический;

–    детерминированный;

–    стохастический;

–    в реальном времени.

   Статистический метод основан на особенностях структурного построения программ и обработки данных в них. Операторы и операнды текста программы анализируются в семантическом виде, поэтому этот метод еще называют семантическим тестированием. Этот метод делает программу удобочитаемой и позволяет проводить тестирование отдельных модулей ручным методом, без использования ЭВМ. Этим методом можно найти от 30 до 80 процентов ошибок логического проектирования и кодирования. Он способствует существенному увеличению производительности и повышению надежности программ, позволяет раньше обнаружить ошибки, и тем самым уменьшить степень исправления, если само исправление не повлечёт за собой ещё большие ошибки.

   Детерминированный метод является наиболее трудоемким и детализированным. Требует многократного выполнения программы на ЭВМ с использованием специальным образом подобранных тестовых наборов и вариантов данных. Производится контроль каждой комбинации исходных данных и соответствующих им результатов. Детерминированное тестирование, в силу трудоёмкости, рекомендуется применять для отдельных модулей в процессе сборки программы или для небольших программных комплексов. При тестировании программного изделия невозможно перебрать все комбинации исходных данных и проконтролировать результаты функционирования на каждого из них. Поэтому для комплексного тестирования программ применяется стохастическое тестирование.

   Стохастическое тестирование предполагает использование в качестве исходных данных множество случайных величин с соответствующими распределениями, а для сравнения результатов используется также распределения случайных величин. Стохастическое тестирование применяется для обнаружения ошибок, но для диагностики и локализации приходится переходить к детерминированному тестированию с использованием конкретных значений исходных данных из области изменения ранее использовавшихся случайных величин. Стохастическое тестирование наилучшим образом подвергается автоматизации путем использования  случайных значений (генераторов случайных величин).

   Тестирование в реальном времени. Программные изделия, предназначенные для работы в системах реального времени должны проходить тестирование в реальном масштабе времени. В процессе тестирования проверяются результаты обработки исходных данных, с учетом времени, и поступления длительности и приоритетности обработки, динамики использования памяти и взаимодействия другими программами. При обнаружении отклонений результатов от ожидаемых для локализации ошибок приходится фиксировать время и переходить к детерминированному тестированию.

   Наиболее эффективным является детерминированное тестирование. Оно основано на двух подходах:

 

1.                 Структурное тестирование

2.                 Функциональное тестирование

 

   Тестирование программы как «белого ящика» предполагает детальное изучение текста (логики) программы и построение таких входных наборов данных, которые позволили бы, при многократном выполнении программы, обеспечить выполнение максимально возможных маршрутов, логических ветвлений. Использование этого метода вполне оправдано, потому как невозможно «подходить» к только что созданной программе как к «чёрному ящику», если она этим «тестировщиком» и написана.

 


5.2.- 5.3. Кодирование на языке программирования. Комментирование программы

 

   Кодирование состоит в получении правильной программы из некоторых простых логических структур. Оно базируется на строго доказанной теореме о структурировании, которая утверждает, что любую правильную программу можно написать использованием основных логических структур:

– следование (линейная);

– разветвление (не линейная);

– циклическая.

   Комбинация правильных программ, получается с использованием этих трех основных структур, также являются правильными программами. Причем каждая структура имеет один вход и один выход. Применяя итерацию, и вложения основных структур, можно получить программу любого размера и сложности. При таком подходе возникает необходимость в безусловных переходах и метках.

В созданном программном обеспечений было применено два модуля иследующие процедуры:

       TForm 1 – в этом модуле вводятся и обрабатываются данные описывающие непрерывную цепь Маркова.

o        procedure Edit1Change – процедура ограничений на ввод количества состояний.

o        procedure Button1Click – по переменной из процедуры  Edit1Change заполняет матрицу состояний первичными данными.

o        procedure Button2Click – по матрице состояний рассчитывает уравнения Колмогорова и вызывает модуль TForm 2.

       TForm 2 – в этом модуле выводятся данные на экран.

o        procedure Button1Click – процедура вызова модуля TForm 1 для повторного применения программы.

o        procedure Button2Click – процедура закрытия программы по окончанию всех работ.

 


6. Тестирование и отладка

6.1. Синтетическая отладка

 

   Синтаксическая отладка – выявление ошибок программирования, заключающиеся в нарушении грамматических правил языка, неправильной записи конструкций языка

Информация о работе Марковские процессы