Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 17
Текст из файла (страница 17)
Модель будет состоять из нескольких подсистем, связанных между собой по переменным. 5.2.4. Генератор тиков Постройте новый активный объект оеп. Для этого в дереве классов проекта щелкните правой кнопкой мыши по имени проекта ссппсет и в появившемся контекстном меню выберите команду Новый класс активного объекта (или щелкните мышью на кнопке|9) панели инструментов). Назовите новый активный объект оеп. В появившемся окне структуры этого активного объекта слева па границе прямоугольника, ограничивающего объект реп, расположите выходную переменную а (рис.
1.16). Рис. 5. то. Структура активного объекта Оеп Для создания а перенесите переменную ~ О~ с панели инструментов на левую границу прямоугольника и в появившемся окне свойств новой переменной определите ее в поле Направление как выходную с именем а, задав ее тип ьпседет и значение по умолчанию О. Далее. введите в качестве параметра активного объекта сеп вещественную переменную гтечпепсу со значением по умолчанию 2. Переменная а должна возрастать на 1 с некоторой заданной частотой гте~ епсу (отражая число "тиков" генератора). Чтобы это сделать, в активный объект оеп введите статический таймер, у которого установите циклическое повторение срабатывания через каждые игтечпепсу единиц времени. Для этого перенесите иконку Я таймера с панели инструментов внутрь прямоугольника, ограничивающего активный объект аеп, и в появившемся окне свойств таймера установите, что этот таймер циклический, срабатывающий каждые тугтечпепсу единиц модельного времени и при каждом срабатывании выполняющий действие а++, т.
е. увеличение на 1 пе- Гпева б. Рвзработке простых моделей непрерывных систем ременной а (рис. 5 )б). Таким образом, например, если таймер проработал 278 раз, то выходная переменная а генератора будет иметь значение 278. Проверьте синтаксическую правильность модели (шелкнув на кнопке (~ панели инструментов). Ваша модель должна соответствовать лтодели соскьоооовсооооехт в папке Мтх)е! Ехатр!ез~рагт П. 5.2.5. Разряд счетчика Введите еще один класс активного объекта в проект. Этот класс будет моделировать разряд десятичного счетчика. Он будет иметь три целые переменные: выходную а, входную Ь и внутреннюю и, в которой' будет храниться значение данного разряда (рис.
5. (7). Рис. 5.17. Структура активного объекта соопеех Пусть выходная переменная а принимает значение числа десятков входной величины Ь, а переменная и принимает значение числа единиц Ь, т. е. а = ф'10, и = Ь вЂ” а "тО (заметьте, что делится целое число). Тогда, например, если на входе разряда счетчика переменная Ь имеет значение 278, то переменная а примет значение 27, а переменная п — значение 8.
Если же Ь = 27, то а примет значение 2, а и — значение 7. Понятно, что последовательное соединение таких одноразрядных счетчиков позволит отобразить во внутренних переменных и этих объектов последовательные десятичные разряды целого числа, поступившего на вход младшего разряда. В соответствии с этими рассуждениями определим Вид переменных а и и в окне свойств этих переменных как Формула, установив в поле (в ) )выражение ьтто, а в поле ~т= выражение в-ь" ых 5.2.6.
Корневой объект Структура корневого объекта подет очевидна. Он содержит один экземпляр активного объекта оео и три экземпляра счетчиков, соединенных по соответствуюшим переменным. вг Часть Д Средства Алунде для имитационного моделирования систем Для введения экземпляра генератора в корневой объект, откройте окно редактора объекта Мгя)е! и методом отав-апт)-т(гор перетащите в поле редактора ОДИН ЭКЗЕМПЛЯР ГЕНЕРатОРа (НажаВ ЛЕВУЮ КЛаннтЦУ МЫШИ На ИМЕНИ аео) И три экзелшляра счетчика.
Экземпляры активных объектов получают имена по умолчанию и изображаются так, как показано на рис. 5.!8 (эти имена и изображения экземпляров активных объектов можно менять). Расположение интерфейсных переменных на изображении экземпляра объекта совпадает с их расположением на изображении класса. Следовательно, выходная переменная а у всех экземпляров объекта сооогег находится слева, входная переменная с — справа.
Для связи экземпляров объектов, помещенных в поле редактора структуры объекта иоае1, щелкните на изображении одной из соединяемых интерфейсных переменных и, не отпуская клавишу мыши, протащите ее ко второй соединяемой переменной. Переменные окажутся связанными прямой линией. Семантика такой связи проста: входная интерфейсная переменная будет принимать значение соединенной с ней выходной интерфейсной переменной.
Рис. 5.18. структура корневого активного ооьектв мосе1 Запустите людель. В окне корневого объекта модели можно наблюдать изменение во времени значений всех переменных (рис. 5. )9). Если щелкнуть в окне редактора по изображению любого из включенных экземпляров активного объекта, то откроется окно структуры этого активно- ГО ОбЪЕКта. НаПРИМЕР, ШЕЛКНИтс ПО ИЗОбРажЕНИЮ сооосег1. ОтКРОЕтСЯ ОКНО редактора, показывающее структуру активного объекта со огег. Для наблюдения изменения переменных введите графики„на которые поместите значения сооогегач соопоег1.о и соиогегз.о. Сравните свою мо- ДЕЛЬ С МОДЕЛЬЮ Соостоооивооиосег2. Главе Б.
Разработке простых моделей нелрерыеных систем Рис. 6.19. Корневой объект модели 5.2.7. Анимация модели Анимация счетчика построена из анимированных графических образов разрядов и образа генератора. Эти графические образы должны быть определены в окнах анимации соответствующих активных объектов. Графический образ каждого экземпляра активного объекта автоматически включается в окно анимации содержащего его активного объекта. Анимация генератора Графический образ объекта пес представим прямоугольником, содержащим изображение импульса (см. рис. 5.15). Щелкнув правой кнопкой по имени пес в дереве проекта, откройте контекстное меню и в нем выберите команду Новая анимация.
В открывшемся окне анимации нарисуйте прямоугольник 50х40, левым верхним углом помещенный в начало координат. Залейте его каким-нибудь цветом, а также выберите цвет для линии границы. Ширину линии можно сделать равной 2. Используя кнопку ломаной Я на панели инструментов, нарисуйте в поле прямоугольника импульс в соответствии с рис. 5.15. Одинарный щелчок мыши при рисовании ломаной порождает очередную точку, двойной щелчок мыши заканчивает рисование. Видимое поле анимации объекта пес, ограниченное штриховой линией, лучше сделать точно по границам прямоугольника. Часть д Средства Алунде для имитационного моделирования систем ва Анимация разряда счетчика Разряд счетчика представим прямоугольником, солержащим значение состояния разряда (оно хранится в переменной и).
Создайте новую анимацшо для объекта сооссет и в окне этой анимации нарисуйте прямоугольник 40х60, также левым верхним углом помещенный в начало координат. Залейте его каким-нибудь цветом, а также выберите цвет для линии границы. Внутрь прямоугольника нужно вставить цифру, т. е. текстовый символ. Поместите тула текст (кнопка ДТ-, со статическим значением О. Выберите характеристики текста: шрифт Аг(а1, стиль Во1а, размер 28, цвет зеленый. В поле динамического значения этого текста поместите имя переменной и, значение которой требуется отображать.
Штриховую линию, ограничивающую видимое поле анимации, уменьшите точно по границам прямоугольника. Анимация корневого объекта Корневой объект иоае1 включает три экземпляра объекта сосоеет и один экземпляр объекта пес. Когда мы откроем окно анимации корневого объекта, мы увидим уже помещенные туда три одинаковых изображения разрядов счетчика и одно изображение генератора.
Их расположение в поле анимации соответствует расположению соответствующих экземпляров активных объектов в окне структуры объекта иооез. Запустите модель на выполнение. Вы увидите, что значения на изображениях разрядов счетчика будут отражать состояния этих разрядов. Достройте анимацию в соответствии с тем, как она представлена в модели сосегсиосесоиоеегз. 5.3. Заключение: поддержка моделирования непрерывных процессов в Апу~.оя!с В этой главе были изучены некоторые концепции Апу(.оя(с и средства, поддерживающие моделирование непрерывных процессов. Рассмотрим повторно эти концепции по порялку.
5.3.1. Активные обьекты Определение класса активного объекта задает шаблон, и отдельные его экземпляры могут использоваться как составные блоки других активных объектов. Вся модель представляется как набор классов активных объектов, каждый из классов может включать произвольное число объектов-экземпляров других классов. Активный объект определяется своей структурой (составом включенных в него объектов) и поведением, которое изменяет со временем состояние активного объекта. Корнем иерархии включений экземпляров Глава 5. Разработка простых моделей непрерывных систем классов активных объектов является класс активного объекта, по умолчанию получающий имя иаыь представляющий собственно разрабатываемую модель со своим единственным экземпляром с предопределенным именем сссс.
5.3.2. Переменные Непрерывные процессы залаются в Апу(.од(с очевидным образом: определением вещественных переменных формулами и уравнениями (алгебраическими и дифференциальными) в их привычной аналитической записи. Переменные в модели определяют состояние динамического объекта, они изменяются с течением времени по законам, определяемым уравнениями и формулами. Значения переменных можно изменять и контролировать. У кажлого экземпляра активного объекта существует свой набор переменных и свой набор параметров, поэтому поведения различных экземпляров одного и того же активного объекта могут быть различны. Переменные могут быть либо внувренннлш (перел1енные состояния объекта), либо интер4ейснлснн.
Связи по интерфейсным переменным в Апу(.оя(с являются направленными: переменные могут быть определены в олпом активном объекте, а их значения использоваться в других. Переменные также могут быть скалярного либо вентлорного тта. Изменение скалярных переменных в процессе выполнения модели могут отображаться в графиках.