Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 35
Текст из файла (страница 35)
Сам активный объект содержит только таймер, который запускается и останавливается методами (функциями) этого класса. Если таймер запущен (т. е. ои активен), это свидетельствует о том, что объект движется. Окончание движения определяется по срабатыванию таймера (тем самым фиксируется прибытие в точку назначения). При этом выполняется код, который является значением параметра оплгкъча1.
Таким образом, непрерывный процесс — движение объекта — представлен виртуально, максимально экономным образом. Никакие переменные при этом ие изменяются ни непрерывно во времени, ии даже дискретно с постоянным шагом, что можно часто встретить в попытках реализовать такие процессы с меньшими затратами.
Движется только модельное время. В случае, когда нужно моделировать большое число движущихся объектов, такая реализация имеет бесспорные преиму~дества. Защищенными переменными класса истек являются координаты х и т, а также скорости по осям ик и чу. Координаты х и т, при активном таймере Глава а. Примеры моделей, разработанных с использованием языка .(аза )во хранят координаты точки назначения, при пассивном таймере в них хранятся текущие координаты объекта.
Переменная лпд1е используется лла анимации — объекты при движении должны поворачиваться по направлению движения. Все эти переменные определены в окне Код активного объекта. Методы этого класса хвои, упои, есор и другие определены как алгоритмические функции, Эти методы дают возможность работы с движущимся объектом так, чтобы они создавали иллюзию того, что объект действительно движется, хотя он только имитирует движение. Рассмотрим некоторые из этих методов.
Метод хпои вьщает текущую координату х объекта: ьг( сипев.авлссзве() ) гесигп х — сашек.десаевсО * чх> гесигп Х; Если таймер активен, то внутренняя переменная х хранит Х-координату конечной точки движения объекта. С помощью функции васяеве() таймера можно получить остаток интервала времени, на которое таймер был запущен. По конечному значению координаты х, остатку времени движения и скорости чх по этой координате, метод хпои вычисляет текущее значение координаты х. Таким образом„мы можем получить значение текущей координаты объекта, как если бы этот обьект реально двигался и координата изменялась бы непрерывно, в то время как никаких изменений переменных нет.
Метод упои построен точно так же. Метод есор — останов объекта до того, как он достиг конечной точки, если он двигался: ),г( сзпег.гвассаее() ) ( х = хпоиы; У = упоиО; сипак.хевеС(); Если таймер не активен, то это означает, что объект стоит, Если таймер активен, то его нужно сбросить, предварительно подсчитав его текущие гновые) координаты. Метод 5ипрьо(х, у) — перемещение в точку с координатами (х, у): есор()г х=х; Объект останавливается, после чего его текущие координаты изменяются. Метод еовесо(х, у) — переместить объект из его текущего положения в точку с координатами (х, у). веоры; Часть /1 Средства /(лу(.аус для имитационного модели аания систем доивъе сЬс = х — хз допЬ1е ду = у — уз х = хз У доиЬ1е дъвт = вятп( дх"с)х + ду*ду ) ъс( д1вс == 0 ) ( оп/стт1че1!)з тесптпз Чх = Че1ооьСу * с)х / дъвез Чу = Че1ооъеу * ду / дгвтз Ззпд1е = асепз ( Чх, -Чу ) з с)опЬ1е де = с)х )= 0 т дх/Чх : ду/Чуз т.ззззет.тевсатс( дв Объект останавливается, если он двигался.
Зная его текущие координаты х и у и координаты точки назначения х и у, можно подсчитать расстояние между этими точками и скорости по каждой координате, а также вычислить время движения. Это как раз то время, на которое нужно взвести таймер. Если расстояние О, то точка назначения достигнута, поэтому сразу вызывается метод оплгхъча1. Переменная лпд1е определяет угол, на который нужно повернуть изображение объекта в анимации по направлению движения.
ЗаМЕтЬтЕ, ЧтО В МОДЕЛИ дЛя аКтИВНОГО О6ЪЕКта Мочат ОПрсдсдсиа СВОЯ СПЕЦИ- альная иконка, которая будет появляться в поле того активного объекта, В КОтОрЫИ будЕт ВКЛЮЧЕН ЭКЗЕМПЛяр аКтИВНОГО ОбЪЕКта Иове .. АКтИВНЫй ОбьЕКт 8$ОСК ~ЗаПаС) Каждая из трех машин может загружаться и разгружаться, может загружаться и бункер.
С постоянной скоростью происходит как загрузка, так и разгрузка. Комбайн может одновременно и загружаться, убирая урожай. и разгружаться в кузов трактора. Реализацию непрерывных процессов заполнения и освобождения емкости можно построить так же, как реализацию лвижения, с помощью дискретных процессов: никакие переменные не меняются непрерывно во времени, изменяться будет только модельное время, а вместе с ним и время до момента окончания процесса разгрузки-загрузки, значение которого хранится в таймере.
В данной модели эта функция тоже реализована как абстракция — отдельный класс активного объекта. Класс асоок реализует описанную активность, он несколько проще класса мечет, поскольку здесь только один изменяющийся параметр — объем (в отличие от двух координат при движении на плоскости) и всегда известны границы — максимальное (полный объем, если идет загрузка) и минимальное (пустая емкость, если идет разгрузка) значения Глава В. Примеры моделей, разработанных с использованием языка Лама 171 объема материала в конце процесса.
Усложняет этот объект только то, что в общем случае (у комбайна) могут одновременно происходить оба процесса, как загрузка„так и разгрузка. Таймер этого класса моделирует непрерывнвй процесс. Если он активен, то процесс идет, и значение таймера определяет время окончания процесса. В окне Код класса веосх определены защищенные переменные этого класса: ьп и опе — интенсивности загрузки и разгрузки (они обе в общем случае могут быть отличны от нуля), а также вспомогательная переменная у, которая хранит текущее значение заполненного объема при пассивном таймере. Параметры сарае).еу, тпв1ои, опев1ои определяют максимальный объем емкости, скорости загрузки и разгрузки материала в емкость.
Если гп>осе, то происходит загрузка до объема сарасьеу, и таймер хранит время, когда загрузка закончится. Если ъп<опе, то происходит разгрузка емкости до О, и таймер также хранит время окончания этой операции. Очевидно, что в любой момент текущее значение объема загруженного материала в любом экземпляре этого активного объекта должно находиться в пределах [о, сарасьеу). Если объем материала выходит из этих границ, то это свидетельствует об ошибке в модели.
Параметр угп~съа1 определяет начальный обьем .материала, а динамические параметры опви1г и опвареу типа соде определяют в каждом экземпляре этого активного объекта те действия, которые должны быть выполнены при достижении соответствующих пороговых объемов. Методы, определенные для этого активного обьекта, также позволяют создать иллюзию того, что течет непрерывный процесс, хотя никакие переменные здесь не изменяются непрерывно. Метод пои по значениям интенсивности загрузки и интенсивности разгрузки и оставшемуся значению таймера выдает текущую величину заполненного обьема.
Метод еееу устанавливает тот объем, до которого должны выполниться загрузка/разгрузка, и запускает процесс. Этот метод в данной модели не используется, он определен в активном объекте веосх для общности. Запуск процессов загрузки/разгрузки в этом объекте осуществляется так же. если изменения параметров выполняются вызовом методов еее сарасгсу, эее гпг1ои или вее опсг1ои. При вызове этих методов автоматически вызываются соответственно методы опсьапде сарасгеу, опсьапяе тпг1ои и опсьагяе опев1ои )см. разд. 7. 7).
Эти методы определены в активном объекте веоск. Все они вызывают одну и ту же функцию опсьапяе, которая запускает процесс с новыми значениями параметров. Для активного объекта веосх также определена своя специальная иконка. Активный обьект ТгисН (Грузовик) Грузовик является самым простым объектом из трех машин в этой модели. Запустите модель и проанализируйте поведение грузовика. Как можно ви- Часть д Средства Алу~.сдк для имитационного моделирования систем пг деть на анимации (рис. 8.4), грузовик вначале стоит на парконке в поле. Если к нему подхолит трактор, то грузовик начинает нагружаться. Если он нагружен полностью, он отправляется на разгрузку в бункер.
Кроме того, грузовик может направляться к бункеру или направляться от бункера в поле по команде от кнопки. Рис. В.в. Структура и параметры активного объекта тпссх На рис. 8.5 показана структура и параметры активного объекта тксск. Его параметрами являются его скорость (чв1сстпу), емкость кузова (сарас' пу), СКОрОСтЬ, С КатсрОй ОН МОжст раЗГружатЬСя (Оп1савнпвласа) И дНЕ ОбЛаетИ, фиксирующие два его возможных положения, — Парковка (вапктпд) и Бункер (втп). Эти области будут заданы графическими обьектами на анимации, потому тип этих параметрон выбран нцареваве — базовый класс для всех графических объектов АпуЕо81с.