А.Е.Осоргин_-_AnyLogic_6_Лабораторный_практикум. Министерство образования и науки российской федерации федеральное государственное образовательное учреждение среднего профессионального образования Поволжский государственный колледж
Скачать 3.11 Mb.
|
Накопитель, расположенный во вкладке Системная динамика панели Палитра на диаграмму класса активного объекта Heart Пиктограмма появится в поле редактора с именем stock . Одновременно внизу вместо окна свойств объекта Heart появится окно свойств выделенного накопителя. В это окно в поле имени Имя вместо предопределенного имени stock введите х (рис. 3.1) и нажмите клавишу 26 Затем, определим формулу для вычисления х в поле dx/dt = следующим образом: (x - х*x*x - b) /eps В поле Начальное значение введите х0, (рис. 3.1). При выделенной пиктограмме накопителя его имя можно перемещать по диаграмме класса. Саму пиктограмму накопителя также можно перемещать при нажатой на ней левой кнопке мыши. Вторая переменная b задана дифференциальным уравнением db/dt = х – х0 . Ее создадим в модели аналогичным образом. Установим начальное значение b равное 0. В поле Начальное значение окна свойств переменной b величину 0 можно не записывать: если это поле пусто, по умолчанию значение переменной считается нулевым. Рис. 3.1 На диаграмму класса активного объекта можно помещать текстовые комментарии. Для этого перетащите элемент Текст со вкладки Презентация панели палитр на диаграмму класса, рядом с накопителями. Введите следующий комментарий: Структура активного объекта . Его можно редактировать в поле Текст окна свойств этого комментария. Для проверки правильности синтаксиса (модели можно использовать кнопку Построить модель панели инструментов или нажать клавишу F7. Если щелкнуть на этой кнопке, то выполнится компиляция разрабатываемой модели в программный код на языке Java. Щелкните по кнопке Построить модель. В нашем примере обнаружились ошибки (рис. 27 3.2): действительно, нами не определены параметры х0 и eps Рис. 3.2 Рис. 3.3 28 На наличие ошибки указывает появившиеся символы [Х] в панели Ошибки. Для каждой ошибки показывается ее описание и местоположение - имя элемента модели, при задании которого эта ошибка была допущена. Двойной щелчок мышью по ошибке, в зависимости от того, где она была совершена, приведет к открытию того или иного редактора или панели. Если, например, это графическая ошибка, то будет открыт графический редактор, отображающий диаграмму соответствующего класса активного объекта, в котором будут выделены фигуры, которые были неправильно нарисованы. Для завершения построения модели указанные пропущенные параметры нужно задать. Пусть х0 = 0.5, eps = 0.01 . Перетащите мышью пиктограмму Параметр с вкладки Основная панели Палитры на диаграмму класса активного объекта Heart Назовите его х0, затем на вкладке Основные панели свойств этого параметра введите в поле Значение по умолчанию – 0.5. Остальные поля оставьте без изменения. Переменная eps со значением 0.01 задается так же. Снова выполните проверку синтаксиса: нажмите кнопку Построить модель. В результате на экране вы получите следующее - рис. 3.3. Надпись «Построение удачно завершено» в левом нижнем углу окна программы свидетельствует о том, что синтаксис модели правильный. 3.4. ЗАПУСК МОДЕЛИ Щелкнув на кнопке запуска модели, после ком- пиляции откроется окно презентации эксперимента. Запустив эксперимент, увидим структуру активного объекта: переменные и параметры с их значениями (рис. 3.4). Переменные b и х в этом окне начнут изменяться в соответствии с определенными для них уравнениями. Рис. 3.4 Рис. 3.5 Системы дифференциальных и алгебраических уравнений, при выполнении модели, 29 решаются одним из встроенных численных методов. Сам метод и необходимая точность решения выбираются автоматически, но можно изменить предварительные установки во вкладке Дополнительные панели свойств объекта Simulation , рис. 3.5. По умолчанию выполнение модели закончится, когда счетчик модельного времени дойдет до 100, это условие остановки эксперимента также может быть изменено во вкладке Модельное время панели свойств объекта Simulation , рис. 3.6. Проведите несколько экспериментов с различными скоростями выполнения данной модели, используя кнопки останова и запуска. Рис. 3.6 3.5. ГРАФИКИ И ДИАГРАММЫ AnyLogic позволяет наглядно представить поведение модели, в частности, представить изменения во времени всех ее переменных. Существуют два способа просмотра графиков: с помощью окон инспекта и с помощью диаграмм. Окна инспекта мы подробно рассмотрели в работе №1, здесь отметим лишь то, что эти графики строятся на базе автоматически создаваемых наборов данных, в которые периодически записываются новые и новые значения переменных. Если кривая Вашего графика покажется Вам не гладкой, а "рваной", то причина этого может заключаться в том, что AnyLogic недостаточно часто обновляет наборы данных новыми значениями. Чтобы изменить частоту обновления автоматически создаваемых для переменных наборов данных перейдите на страницу свойств Дополнительные того класса активного объекта, на диаграмме которого находится переменная и измените период обновления данных в поле Период, рис. 3.7. Для получения полнофункциональных графиков лучше воспользоваться диаграммами AnyLogic, которые позволяют динамически визуализировать данные, собираемые в результате работы модели. Набор диаграмм схож с тем, что предлагается программой MS Excel. Рис. 3.7 30 Построим графики зависимостей переменных b и х от времени и фазовую диаграмму b от х. Перетащите элемент График из палитры Статистика в то место графического редактора, где Вы хотите нарисовать график. Перейдите на страницу Основные панели Свойства. Рис. 3.8 Щелкните мышью по кнопке Добавить элемент данных. При этом над кнопкой появится новая секция свойств, задающая настройки нового элемента данных, который будет отображаться на данном графике. В поле Значение по оси X введите имя переменой Х, а в поле Значение по оси Y – имя переменной b. Задайте заголовок Фазовая диаграмма для этого элемента данных в поле Заголовок. Для того чтобы получить гладкую диаграмму нужно уменьшить период обновления данных в поле Период, рис. 3.8. Рис. 3.9 Аналогично постройте временн о й график для переменных x и b, разместив их на одном графике. Временной диапазон укажите равным 10, рис.3.10. 31 AnyLogic позволяет настраивать внешний вид и функциональность диаграмм. Поэкспериментируйте с установкой цвета графиков, опциями отображения наборов данных, размерами отображаемого окна, прозрачностью, легендой, и т. п. Проведите серию экспериментов с моделью, перезапуская ее с различными параметрами. Для изменения параметров в процессе выполнения модели, нужно в окне инспекта этого параметра щелкнуть мышью по кнопке с карандашом в верхней части окна, рис. 3.9. Рис. 3.10 3.6. ПРЕЗЕНТАЦИЯ МОДЕЛИ Для лучшего понимания динамики модели и наблюдения за процессами, в AnyLogic можно строить анимированные изображения, состоящие из динамических элементов. Графические элементы называются динамическими, поскольку все их параметры - координаты, размер, цвет и даже их видимость – в процессе выполнения модели можно сделать зависимыми от переменных и параметров, которые меняются со временем при выполнении модели. Остановите выполнение модели и вернитесь на диаграмму класса Heart . Прямо на диаграмме мы будем рисовать презентацию сердца. 3.6.1. ОБЪЕКТЫ В ПРЕЗЕНТАЦИИ Построим презентацию сердца в виде изображения овала, радиус которого будет меняться. 32 Этот радиус является функцией от значения переменной х модели. Для построения изобра- жения овала перетащите мышью из вкладки Презентация панели Палитра пиктограмму Овал на диаграмму класса. Внизу появится окно свойств этого овала. По умолчанию имя этого объекта будет oval , координаты Х и Y соответствуют месту, куда мы поместили овал, а радиус X и радиус Y соответствуют тому, что мы нарисовали. 3.6.2. ДИНАМИЧЕСКИЕ ПАРАМЕТРЫ ГРАФИЧЕСКИХ ОБЪЕКТОВ Запустив модель, мы увидим, неподвижный овал, находящийся в заданном месте. В AnyLogic принята следующая концепция: каждая характеристика графического элемента имеет два значения: статическое и динамическое. Статическое значение определяет параметр (координату, угол поворота, цвет и т. п.) объекта как константу. Динамическое определяет значение этого параметра в процессе выполнения модели и может быть определено как значение любой переменной модели. Поэтому у графических объектов в панели свойств имеются вкладки Основные и Дополнительные для статических значений, и вкладка Динамические – для динамических значений параметров. Если динамическое значение не определено, графический объект сохранит свое статическое значение. Выделите овал, представляющий динамику сердца. Статические значения его параметров задайте так: в панели свойств овала на вкладке Основные цвет заливки определите бордовым, цвет линии границы - красным; толщину линии границы установите 2. Изменение объема сердца представим радиусами овала на вкладке Динамические как функцию от переменной х , как показано на рис. 3.11. Рис. 3.11 33 Запустите модель. Проведите эксперименты с установкой различных параметров модели ( х0 и eps ) и наблюдайте, как изменяется характер сердцебиения. 3.6.3. СЛАЙДЕРЫ В ПРЕЗЕНТАЦИИ В AnyLogic существует элемент управления, позволяющий пользователю графически выбирать число из заданного диапазона значений путем перетаскивания рукоятки – бегунок. Бегунки или их еще называют слайдеры, обычно используются для изменения значений численных переменных и параметров во время выполнения модели. Перетащите мышью с вкладки Элементы управления панели Палитра пиктограмму Бегунок на диаграмму класса Heart между структурой и анимационным овалом. В поле Связать с панели свойств введите имя параметра x0 , а минимальное и максимальное значения, которые можно регулировать слайдером, установите 0 и 1. Добавить подписи к слайдеру можно простым нажатием кнопки Добавить метки, рис. 3.12. Запустите модель и проверьте действие слайдера. Аналогично сделайте слайдер для параметра eps , установив ограничения от 0,01 до 0,5. Рис. 3.12 3.6.4. ТЕКСТ В ПРЕЗЕНТАЦИИ В верхнюю часть диаграммы класса Heart введите поясняющий текст. Для этого перетащите мышью пиктограмму Текст с вкладки Презентация панели Палитра. В поле Текст вкладки Основные введите текст Модель сердца , выберите шрифт Century 34 Gothic, стиль Полужирный, размер 22. На вкладке Дополнительные установите координаты (Х, Y) этого объекта (20, 10). Следующий текст, содержащий пояснение к модели, введите чуть ниже и правее : Это упрощенная модель динамики сердечных сокращений. Модель описывается двумя дифференциальными уравнениями: dx/dt=(x-х^3-b)/ерs и db/dt=х-х0. Модель позволяет изменять параметры и наблюдать изменение ритма и формы пульсаций. При значении х0 = 0.6 сердце останавливается. Установите выравнивание по правому краю, все другие параметры текста можете оставить по умолчанию. Для того чтобы текст уместился по ширине, в нужных местах следует вставить перевод строки. Элемент Текст также имеет динамические свойства, как и другие графические элементы. Это значит, что можно в процессе выполнения модели динамически изменять положение и ориентацию текста, его цвет, и даже сам текст. Рис. 3.13 Введите в поле презентации прямоугольники, как показано на рис. 3.13, и поместите их на задний план, чтобы они выделяли функциональные блоки построенной модели. Для того чтобы фигура была фоном и не закрывала другие изображения, в контекстном меню 35 данного прямоугольника выполните команду Порядок / На задний план. Сделайте подписи к слайдерам, чтобы было понятно, какими параметрами мы управляем. Наша модель построена. Продемонстрируйте ее преподавателю. 3.7. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Измените презентацию сердца так, чтобы сплюснутый овал, имитирующий сердце вращался вокруг своей оси. (5+) 2. Перечислите параметры графических элементов, которые могут динамически изменяться в процессе выполнения модели? (5) 3. Как изменить период обновления графика в окне инспекта? (5) 4. Поместите на изображение сердца текст с динамическим значением переменной Х. (5) 5. Поместите в поле презентации текущее значение времени. (5) 6. Измените презентацию сердца так, чтобы овал, сжимаясь по оси, Y расширялся по оси X. (5) 7. Какие существуют способы построения графика изменения переменной? (4) 8. Как построить фазовую диаграмму? (4) 9. Как изменять параметры модели в процессе ее выполнения? (4) 10. Как изменить условие остановки выполнения модели? (4) 11. Как выбрать численный метод решения системы обыкновенных дифференциальных уравнений? (4) 12. Как ввести в модель слайдер и связать его с переменной? (4) 13. Как изменить период обновления графика? (4) 14. Как создать подписи к слайдеру? (3) 15. Как создать переменную, определяемую дифференциальным уравнением? (3) 16. Как открыть график в окне инспекта? (3) 17. Как запустить компиляцию модели в программный код на языке Java? (3) 18. Как создать параметр и присвоить ему значение? (3) 36 ЗАДАНИЕ 4 ДИСКРЕТНО-СОБЫТИЙНАЯ МОДЕЛЬ СЧЕТЧИКА ЦЕЛИ ЗАНЯТИЯ В результате построения этой модели будут рассмотрены следующие новые вопросы: • Создание нового класса активного объекта. • События. • Значки активного объекта. • Порты и сообщения; • Действия при получении сообщений. ФОРМА ОРГАНИЗАЦИИ ЗАНЯТИЯ Фронтальная. СТУДЕНТ ДОЛЖЕН ЗНАТЬ понятия: проект, активный объект, переменная, параметр, презентация, эксперимент, основы алгоритмического языка Java, интерфейс программы AnyLogic. СТУДЕНТ ДОЛЖЕН УМЕТЬ выполнять лабораторно-практическое задание №3, создавать модели в программе AnyLogic, ОБЕСПЕЧЕННОСТЬ компьютер с установленной программой AnyLogic версии 6, настоящий курс лабораторно-практических работ. ПРАКТИЧЕСКОЕ ЗАДАНИЕ В данной работе мы построим дискретно-событийную модель средствами AnyLogic. Системы называются дискретно-событийными, если изменения переменных состояния в них происходят только в явно определенные моменты времени или под влиянием явно определенных событий. Находясь в некотором состоянии, дискретная система сохраняет его до наступления очередного события, под воздействием которого переменные системы и, следовательно, ее состояние изменяются скачком. Например, при построении модели банка состояние системы может быть представлено количеством клиентов в помещении банка и числом занятых кассиров. Состояние системы изменяется, если новый клиент входит в банк или освобождается кассир, а это условно можно считать мгновенными событиями. 37 4.1. ДИСКРЕТНАЯ МОДЕЛЬ СЧЕТЧИКА В счетчике генератор посылает устройству отображения какой-то сигнал ("тик"). Каждый разряд десятичного счетчика считает число пришедших на его вход "тиков" по модулю 10 и передает на свой выход сигнал переполнения после прихода на его вход каждого десятого сигнала. При построении модели такого счетчика нужно использовать средства, характерные для моделей дискретно-событийных систем. Здесь нам достаточно трех таких средств: события, порта и передаваемых через порт сообщений. 4.2. ПОСТАНОВКА ЗАДАЧИ Нужно построить модель трехразрядного десятичного счетчика, работающего от импульсного генератора. На рис. 4.1 представлен счетчик, насчитавший 258 импульсов от генератора. Рис. 4.1 4.3. МОДЕЛЬ Для реализации имитационной модели нужно построить генератор "тиков", работающий с заданной частотой, и три одинаковых десятичных разряда счетчика. Следовательно, модель должна содержать три класса активных объектов: генератор "тиков", разряд счетчика по модулю 10 и, кроме того, корневой активный объект, который будет включать в себя один экземпляр генератора и три одинаковых экземпляра одноразрядного счетчика, связанные подходящим образом. Создайте в своей рабочей директории новый проект под названием DCounter . Корневой объект назовите Model . Модель будет состоять из нескольких подсистем, связанных между собой. 4.3.2. ПРЕДСТАВЛЕНИЕ СИГНАЛА КАК СООБЩЕНИЯ Генератор посылает сигналы с определенной частотой разряду счетчика. Для этого предназначен специальный пакет данных – сообщение. Сообщения принимаются и посылаются через специальные элементы активных объектов – порты. Обмен сообщениями возможен только между портами, соединенными соединителями – элементами, играющими роль путей движения сообщений. В нашей модели счетчика важен только сам факт передачи сообщений, а не содержимое. Прием сообщения будет вызывать увеличение значения разряда счетчика. 4.3.1. ГЕНЕРАТОР ТИКОВ Постройте новый активный объект Gen . Для этого в панели Проекты щелкните правой кнопкой мыши по имени проекта DCounter и в появившемся контекстном меню выберите команду Создать/Класс активного объекта. Назовите новый класс Gen 38 Класс активного объекта Gen должен посылать сообщения первому разряду счетчика с заданной частотой. Для генерации таких сообщений создадим Событие, для этого перетащите элемент Событие из палитры Основная на диаграмму класса активного объекта Gen. В окне свойств этого события нужно оставить Тип события По таймауту без изменений, а |