close

Вход

Забыли?

вход по аккаунту

?

ЛРNo.1 (2)

код для вставкиСкачать
Лабораторная работа №1
Системная динамика. Цель работы: 1. Общие сведения
Системная динамика - парадигма компьютерного моделирования, при которой для исследуемой системы строятся графические диаграммы причинных связей и глобальных влияний одних параметров на другие параметры во времени.
Нотация системной динамики включает простые графические элементы с ясной семантикой, которая позволяет по построенной графической схеме взаимных зависимостей переменных и параметров системы очень просто строить уравнения ее динамики и проигрывать их во времени.
1.1 Работа с переменными, динамическими переменными, накопителями, массивами, потоками. Непрерывные цепи Маркова.
Марковский случайный процесс с дискретными состояниями и непрерывным временем называется непрерывной цепью Маркова при условии, что переход системы из состояния в состояние происходит не в фиксированные, а в случайные моменты времени. В экономике часто встречаются ситуации, которые указать заранее невозможно. Например, любая деталь или агрегат автомобиля могут выйти из строя в любой, непредсказуемый заранее момент времени. Для описания таких систем в отдельных случаях можно использовать математический аппарат непрерывной цепи Маркова.
2. Ход работы
Имеется размеченный граф состояний системы S (Рис. 1).
S41
S31 S14 S34
S12 S54
S23 S35
Вероятности переходов:
S12=0.1; S14=0.3; S23=0.5; S31=0.1; S34=0.2; S35=0.2; S41=0.2; S54=0.1.
2.1 Моделирование непрерывной цепи Маркова без потоков.
1. В среде Anylogic выбираем пункт меню "Файл", далее "Создать", выбираем "модель". Задаем имя модели и ее местоположение, нажимаем "Далее". Выбираем пункт "Начать создание модели с нуля" и нажимаем "Готово".
Рис.2 Создание новой модели
2. Открываем класс Main. В палитре свойств выбираем вкладку "Системная динамика". Выбираем накопитель и перетаскиваем его в рабочую область. В данной модели мы будем использовать пять накопителей, т.к. в системе пять состояний (S1, S2, S3, S4, S5)
Рис.3 Палитра свойств
После того, как мы перетащили накопитель, рассмотрим его свойства и зададим ему имя S1 (для того, чтобы переименовать объект в Anylogic, нужно использовать комбинацию клавиш "Ctrl + Enter"), установим начальное значение равное единице, т.к. начальное условие при t=0: S1=1, S2=S3=S4=S5=0.
Рис.4 Окно свойств накопителя
Аналогичным образом создадим остальные состояния системы.
Рис.5 Создание состояний модели
3. На вкладке "Системная динамика" выбираем параметр и перетаскиваем его в рабочую область. Параметры нам потребуются для моделирования переходов между состояниями, таких переходов в системе восемь: S12, S14, S23, S31, S34, S35, S41, S54, (имя перехода формируется из состояния откуда осуществляется переход в состояние куда переход должен осуществиться).
Рис. 6 Окно свойств накопителя S0
В окне свойств задаем имя, тип и значение по умолчанию - вероятность перехода.
Рис.7 Окно свойств накопителя S1
3. Зададим уравнения вероятностей для каждого состояния, пользуясь следующим мнемоническим правилом: производная вероятности каждого состояния равна сумме всех потоков вероятности, идущих из других состояний в данное состояние, минус сумма всех потоков вероятности, идущих из данного состояния в другие. На Рис. 8 показано уравнение для состояния S1.
Рис.8 Соединение накопителей
После того, как будут заданы уравнения вероятностей, модель непрерывной цепи должна выглядеть, как показано на Рис. 9
Рис. 9 Связи между элементами
4. На вкладке "системная динамика" палитры свойств выберем динамическую переменную и перетащим ее в рабочую область. В окне свойств поменяем ее тип на константу, а в значении запишем нормировочное уравнение: Рис.10 Связи между элементами
5. Откроем класс Simulation:Main, в окне его свойств можно задать основные параметры эксперимента: действие перед запуском каждого эксперимента, действие перед и после "прогона модели", задать точность, настроить модельное время и т.д.
6. В классе презентации можно настроить внешний вид вашей презентации, используя палитру "Презентация". После того, как вы сделали необходимые настройки эксперимента, можно запустить модель, используя команду "Запустить" в панели верхнего меню, F5 либо из контекстного меню.
Рис. 15 Класс Simulation
Рис. 16 Страница настроек эксперимента
Рис. 17 Прогон модели
7. Проанализировав модель после прогона видно, что с наибольшей вероятностью (0.514) система перейдет в состояние S4.
2.2 Моделирование непрерывных цепей Маркова с потоками
1. В среде Anylogic выбираем пункт меню "Файл", далее "Создать", выбираем "модель". Задаем имя модели и ее местоположение, нажимаем "Далее". Выбираем пункт "Начать создание модели с нуля" и нажимаем "Готово".
2. Открываем класс Main. В палитре свойств выбираем вкладку "Системная динамика". Выбираем накопитель и перетаскиваем его в рабочую область. В данной модели мы будем так же использовать пять накопителей, т.к. в системе пять состояний (S1, S2, S3, S4, S5). В окне свойств каждого накопителя задаем имя и значение по умолчанию, по условию в начальный момент времени система находится в состоянии S1. Рис. 18 Добавление накопителей
3. Щелкаем правой кнопкой мыши по вашей модели в окне проектов и выбираем "Создать", далее "Размерность".
Рис. 19 Создание размерностей
Задаем имя размерности - Mass и диапазон (Рис. 20 )
Рис. 20 Окно свойств объекта "Размерность"
4. На вкладке "системная динамика" выбираем параметр. Задаем ему имя - Massiv. Выбираем тип "Другой", мы будем использовать тип HyperArray. Укажем, что наш параметр является массивом, установив соответствующую галочку.
Рис. 21 Создание массива
Нажимаем на многоточие в фигурных скобках и выбираем размерность. Нам требуется массив размерностью 5х5.
Рис. 22 Задание размерности массива
Теперь нажимаем кнопку "Редактировать" и зададим значения вероятностей переходов из одного состояния в другое в вид матрицы вероятностей перехода:
Рис. 23 Заполнение массива
5. Для того, чтобы сделать переход, щелкаем два раза мышкой на состоянии откуда будет осуществляться переход и перетягиваем до состояния куда этот переход надо осуществить.
Рис. 24 Добавление перехода
В окне свойств потока задаем имя перехода и его значение. Вероятность перехода вычисляется по формуле: Pi(k) = Σpj(k-1)*pij Для того, чтобы обратиться к массиву, в Anylogic используется метод get():
Рис. 25 Окно cвойств потока P12
Рис. 25 Окно свойств потока P23
Аналогичным образом создаются остальные переходы. После их создания модель должна выглядеть, как показано на Рис. 26
Рис. 26 Модель со всеми состояниями и переходами
6. Добавим динамическую переменную типа константа и запишем в нее нормировочное уравнение
Рис. 27 Добавление нормировочного уравнения
7. Запустим модель. Результаты должны быть такие же как и в предыдущей модели. Рис. 28 Прогон модели
2.3 Моделирование счетчика.
Требуется построить модель трехразрядного счетчика, работающего от генератора сигналов.
1. В среде Anylogic выбираем пункт меню "Файл", далее "Создать", выбираем "модель". Задаем имя модели и ее местоположение, нажимаем "Далее". Выбираем пункт "Начать создание модели с нуля" и нажимаем "Готово".
2. Создадим новый класс активного объекта Gen. Этот класс будет посылать сообщения первому разряду счетчика с заданной частотой. Для создания класса щелкните правой кнопкой мыши по названию вашего проекта в дереве проектов и выберите из контекстного меню пункт "Создать класс активного объекта" (Рис. 29)
Рис. 29 Создание класса активного объекта
3. Добавим простую переменную из палитры Основная в рабочую область. Тип переменной - int, начальное значение 0. Эта переменная будет увеличиваться на единицу по истечению таймаута, имитируя поступление сигнала от генератора.
Рис. 30 Добавление переменной
4. На палитре Презентация выберем Прямоугольник и перетащим его в рабочую область. В этой же палитре выберите Текст и поместите его поверх прямоугольника. Добавьте объект Порт из палитры Основная и разместите его как показано на рис. 31
Рис. 31 Размещение элементов на рабочей области
Выберете прямоугольник, текст и порт, это можно сделать, выделив все область с прямоугольником, щелкните правой кнопкой мыши и из контекстного меню выберите Группировка - Сгруппировать.
5. Для того, чтобы активный класс объекта посылал сообщения с заданной частотой счетчику, следует добавить Событие из палитры Основная. В окне свойств события, установите тип события - по таймауту, режим - Циклический, период установите равный 1.
В поле Действие впишите следующий код:
b++ ; // переменная b будет увеличиваться на 1 после каждого "тика" генератора
port_b.send(b); // значение переменной b передается на порт разряда счетчика
Рис. 32 Окно свойств события
6. Добавим еще один класс активного объекта и назовем его Razryad. Он будет моделировать разряд счетчика. Повторите пункт 4, только добавьте еще один порт, назовите его port_a. Так же разместите внутри прямоугольника три простые переменные: a, b, n. Тип - int, начальное значение - 0. После чего сгруппируйте все объекты. Переменная n будет хранить значение данного разряда. Каждый раз, когда в порт b приходит сообщение, n должен увеличиваться на единицу и сообщать порту a о переполнении, если оно наступило.
Рис. 33 Добавление разряда счетчика
7. Из палитры Основная добавим Параметр, назовите ее СС, тип переменной - int, а значение по умолчанию равно 2.
8. Добавьте диаграмму действий в модель. Рис. 34 Диаграмма действий
9. Теперь в окне свойств порта а добавьте следующий код: a = msg;
this.cc = get_Main().cc;
actionChart(a,cc);
10. Структура корневого объекта Main будет содержать один экземпляр активного объекта Gen и три экземпляра счетчиков, соединенных соответствующими переменными. Для того, чтобы поместить один класс активного объекта в корневой, в окне проектов перетащите класс активного объекта на рабочую область корневого объекта. Экземпляры активных объектов получают имена по умолчанию. Выходная переменная а у всех экземпляров объекта Razryad должна быть слева, а входная b - справа. Для того чтобы соединить переменные щелкните мышью на одной из них и не отпуская кнопки мыши протащите ее ко второй соединяемой переменной. (Рис. 35)
Рис. 35 Соединение разрядов счетчика
11. Добавьте параметр СС, тип int, значение по умолчанию равно 2. Теперь добавим Бегунок из палитры Элементы управления. С помощью этого бегунка мы сможем менять значение СС от 2 до 16. В окне свойств бегунка поставьте галочку напротив связать с и в поле ввода впишите сс, минимальное значение - 2, а максимальное - 16.
Рис. 36 Окно свойств бегунка
12. Теперь можно запустить модель.
Рис. 37 Прогон модели
2.4 Моделирование логической схемы.
Требуется построить модель логической схемы по ее структурной схеме
Документ
Категория
Рефераты
Просмотров
65
Размер файла
822 Кб
Теги
лрno
1/--страниц
Пожаловаться на содержимое документа