Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 62
Текст из файла (страница 62)
Когда никто движению данного муравья не будет мешать, значение этой переменной будет равно пи11 — пустому объекту. Очевидно, что именно это значение нужно установить в поле Начальное значение данной переменной. Глава 15. Многоагентные системы Ещс ОдНа ПЕрЕМЕННая С ИМЕНЕМ т уКаЗЫВаст На ОбЪЕКт нос(е1, ВКЛЮЧаЮ(цИй все экземпляры муравьев. С помощью этого указателя можно изменять глобальные переменные — переменные ролительского объекта. Ее начальное значение установлено как пап, а в псле Код ииициализации окна Код этого активного объекта значение переменной установлено так: и = (нос(е1) цетсипет О; В поле Дополнительный код класса активного объекта лпт включена функция о, которая возвращает абсолютную скорость муравья.
Зта функция используется при вычислении нового положения каждого муравья. ПараМЕтрЫ. ПараМЕтрЫ паиЧе1осъту, еаиХ И пиит аКтИВНОГО ОбЪЕКта Лпт очевилны — они устанавливают максимальную скорость по координатам и границы движения муравья в поле анимации. Параметр ептп)(пя1е определяет, на какой угол должен повернуть муравей после того, как он встретит препятствие, чтобы избежать повторного столкновения. Параметр веортъте определяет, на сколько времени должен муравей замереть при такой встрече. Все эти параметры при экспериментах с моделью желательно устанавливать глобально, из корневого объекта, поэтому конкретные значения их внутри класса лпт можно установить произвольно (т.
е. просто считать нулевыми). Параметры с(осеет и стасе определяют лля каждой реализации объекта класса лпг, будет ли она соответственно доктором и нужно ли отслеживать лля нее траекторию движения. Зти параметры булевы, и их можно установить в гтие в каждом объекте с некоторой вероятностью, определяющей процент объектов с данным свойством в популяции. Зто удобно сделать с помощью функции гапс)ожтгпе(р), которая возвращает булевское значение гтпе с вероятностью р. В ланной модели значения параметров с)остог и стасе установлены соответственно так: тапс)сапттие( 0.1 ) гапс)оетгпе( 0.03 ) Зто означает, что в нашей модели около !О % всех муравьев при их порождении будут докторами и примерно у 3 % муравьев будет отслеживаться их траектория движения.
Стейтчарты. Стейтчарт еаьп определяет движение муравья (рис. ! 5. )0). ОН ИМЕЕТ Даа СОСтОЯНИя: СОСтсяНИЕ дВИжЕНИя аоъпя И СОСтОяНИЕ ОжИдаНИя втор. В состоянии движения муравей находится до тех пор, пока не произойдет одно из двух событий — либо он натолкнется на границу пространства, в котором живут муравьи, либо перед ним возникнет препятствие. Событие приближения муравья к границе области при его движении возникает, если муравей подошел близко к границе и его движение направлено к этой границе. Именно это определяется булевой функцией ь с)ет, вызов которой стоит в поле Событие перехода ветс)ет стейтчарта. Сама функция Часть ВС Современные парадигмы в имитационном моделировании ьохдег определена в поле Дополнительный код класса окна Код активного обьекта лле. Если это событие произошло,'то муравей изменяет направление своей скорости и переходит в состояние есор (останавливается).
Рис 15.10. Стейтчарт, определяющий движение Функция ьохаех вычисляется исполнительной системой АпуЕой(с, когда объект находится в состоянии дозля только при "толчке" извне. Такой толчок инициируется при вызове функции вегиоаШед<) у данного активного объекта. В описываемой модели это периодически делается из корня — активного объекта модем Так реализуется синхронное поведение всей системы агентов. Другой переход из состояния яоьпя в состояние веер может произойти по событию, если муравей наталкивается на препятствие — другого муравья. Сигналом этого служит его собственный непустой указатель на препятствие (оьвсзс1е).
При этом переходе выполняется следующее лействие: если данный муравей — доктор, то он вылечивает встретившегося муравья (посылая стейтчарту ьеа1еь встретившегося муравья сигнал "сите" ). Если же данный муравей не доктор и к тому же инфицирован, то он заражает встретившегося муравьи с некоторой вероятностью (посылая его стейтчарту ьеа1еь сигнал 'агг1ьсе"). В состоянии есор муравей находится фиксированное время, определенное параметром веортмае, после чего он возвращается в состояние движения. При этом он меняет направление своего движения на угол сихллля1е, также являющийся параметром класса.
Для чего пересчитываются составляющие скорости по осям. Стейтчарт ьеа1сь отслеживает здоровье муравья (рис. 15.П), он имеет лва состояния, здоровое ох и инфицированное ьаа. Глава 1о. Уногоагенгные системы Рис. 1В.11. Стейтчврт, определяющий движение Находясь в здоровом состоянии, муравей может инфицироваться либо случайно (это молелируется переходом со случайным значением таймаута с экспоненциальным распределением), либо после получения сигнала "инфицирован" ("атт1ъсс") от встретившегося ему на пути инфицированного муравья. Обратный переход из инфицированного в здоровое состояние происходит либо сразу, если данный муравей доктор, либо через некоторое случайное время, либо при получении сигнала "вылечен" (" сиге" ) от встретившегося ему на пути доктора.
При входе в состояние ок выполняется действие и.птвяок++, что приводит к увеличению числа пш ок модели, показывающего количество всех здоровых муравьев популяции. Вспомним, что переменная и указывает на включающий всех муравьев объект моце1, а лщяок — переменная этого активного класса. При выходе из состояния выполняется действие и.лщяок--. Аналогичные действия выполняются при входе и выходе из состояния ьац для изменения глобального числа инфицированных муравьев. Корневой активный обьект Моде/ Класс моае1 включает две переменных, лщяок и гщялгт1ьссец, роль которых ясна.
Первая переменная содержит текущее число здоровых, вторая — текущее число инфицированных муравьев. Эти переменные модифицируют муравьи популяции. переходя от состояния ок в состояние ьва и обратно. Корневой класс включает также набор муравьев (реплицированный экземпляр активного объекта ллс) и статический таймер з1ертппег. Параметры класса следующие: гз поил ~св — число муравьев в популяции; (') леих, ивит, гявиче1осъсу, согллпдте и веорттие — это одноименные параметры движения муравьев, которые для всех экземпляров класса лпс, включенных в класс моце1, мы сможем устанавливать и менять из класса мобет; Часть! К Современные парадигмы в имитационном моделировании П ~гъвьопхпя1е — параметр, определяющий угол зрения муравья, используемый при обнаружении им препятствия; П впар — шаг по времени, через который все экземпляры класса лпс синхронно меняют свое состояние.
Все параметры класса мопе1 имеют заданные значения, например значения таях и паях установлены как 600. Это означает, что муравьи будут двигаться в квадрате 600х600, со значением х и у от 0 до 600. Множество муравьев, которое включено в модель, названо апсв. В окне свойств любого объекта, вкл1оченного как экземпляр в класс другого активного объекта, его параметры могут быть либо оставлены такими же„какими они были установлены при определении этого класса, либо они могут быть изменены. Измененные значения параметров включенного объекта выделяются жирным шрифтом.
В данной модели параметры апспот и спасе были определены в классе л с как пепй т (о.сз) и тепйстьтгпе(о.1) соответственно. При включении в класс моае1 они остались такими же и для объекта апта. Все другие значения параметров объекта аппп выделены жирным шрифтом. Это значит, что они имеют новые значения. Действительно, хотя в поле Значение параметров объекта епсв записаны те же имена (па х, пьат, твхче1осзсу, сптплпд1е и впортзпе), что и имена этих параметров в классе лпп, но здесь они определены в области действия имен класса мопе1, поэтому это именно одноименные параметры класса моое1, а не параметры класса лпг.. Статический таймер апертцьет циклически при каждой его активизации чсрез апер единиц времени вызывает функцию прзасе, которая определена в поле Дополнительный код класса окна Код класса модем Именно эта функция определяет "жизнь" модели на каждом шаге, изменяя состояние всех объектов модели, т.
е. модель является синхронной'. В ней выполняются два шага. Сначала для каждого муравья определяется возможное препятствие, если он слишком близко подошел к какому-нибудь другому муравью и тот находится в области его видимости. Это проверяется с помощью буле|юй функции сьесхоьвсъс1е, определенной в этом же поле. Если данный муравей натолкнулся на препятствие, то его параметр оьвсзс1е будет теперь указывать на данное препятствие, а исполнительная система получает информацию о том, ч го его состояние изменено (инициируется функция весмосцгзест у данного муравья).