Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 68
Текст из файла (страница 68)
Машины пронумерованы в соответствии с их индексами. Сообщения представлены стрелками, соединяющими передающую и принимающую машины. Стрелка от машины ь к машине х видна, пока хотя бы одно сообщение ( ь, ю находится в канале. У каждой машины в процессе работы подсчитывается разность с чис>и переданных и полученных сообщений. Слайдерами во время выполнения модели можно менять параметры: среднюю задержку сообщений в канале, среднее время выполнения порции базовых вычислений и интервал времени между запросами помощи одной машиной от других посылкой базовых сообщений. Чем меньше среднее время выполнения порции базовых вычислений, тем быстрее завершатся вычисления. Тот же эффект получим с увеличением среднего времени до запроса помощи от другой машины (асс петр тпсессат) и уменьшением времени задержки сообщения в канале.
Изменить три этих параметра можно с помощью слайдеров. Параметр и также можно менять в разных экспериментах — это параметр активного объекта моае1. На анимации также представлены три индикатора, отображающих относительные количества работающих и пассивных машин„а также число сообщений, находящихся в канале.
Рис. 19.1. Анимация процесса сазовых вычислений Часть И Лримеры моделей для равличнык областей и менения Класс сообщений Мевеаде Сообщения, которыми обмениваются машины, не несут никакой информации, однако они должны иметь номер адресата, чтобы посылка была адресной. Для отображения в анимации сообщения, передающегося от одной машины к другой, в сообщении хранится также и номер отправителя.
Класс сообщений мевваяе определен с полями воиксе и гтевсьпасьоп, Модель вычислителя Активный объект масььле включает две переменные: с (счетчик посланных и полученных сообщений) и ьавесо1ок (этот цвет показывает в анимации состояние машины в базовых вычислениях: активное оно либо пассивное). В поле Дополнительный код класса окна Код определены также следующие параметры: указатель на корневой объект омлет, число машин в модели и, номер этого экземпляра в массиве машин т, а также радиус а окружности, на которой будут в анимации располагаться изобрвкения машин. Все эти параметры будут определены в корневом объекте, они недоступны из класса масньле и могут быть определены только после компиляции.
Поэтому значения всех параметров получаются в поле Код инициализации этого активного объекта, когда станет известным корневой объект сипак. Объект масмьле имеет один стейтчарт с именем еаьл, который моделирует поведение машины в базовых вычислениях (рис. 19.2). Рис. 19.2. Стейтчерт, определяющий алгоритм базовых вычислений Стейтчарт имеет два состояния, активное нокиьпя, которым моделируется обработка машиной очередной порции информации, и пассивное м1е. Ясно, что для нашей цели работу машины нал очередной порцией вычислений можно смоделировать просто задержкой. Поэтому из рабочего состояния Глава 19. Информатика и комм никация зэк машина может перейти в пассивное по истечении таймауга раесеааьавтьае (переход е).
В любом состоянии стейтчарт может получить базовое сообшение типа иеаааве. Эти сообщения передаются и принимаются через порт реке. Порт передает сообщение стейтчарту только если оно адресовано этому экземпляру активного объекта (что определяется номером этой машины т). Условие приема сообшения записано в пале Действие по получеиии окна свойств порта. Если сообшение получено в активном состоянии, то машина остается в этом состоянии (переход е1).
Если сообщение получено в пассивном состоянии, машина возврашается в активное состояние (переход ег). При каждой посылке базового сообшения в канал счетчик с увеличивается на 1, при каждом получении базового сообшения счетчик с уменьшается на 1 в соответствии с алгоритмом. В рабочем состоянии машина может послать сообщение какой-нибудь другой машине (переход ез). По истечении времени веене1ртьееоие новое сообшение направляется случайно выбранному адресату. При этом счетчик с увеличивается на 1 в соответствии с алгоритмом.
Пересчета времени, оставшегося до окончания вычисления в случае посылки сообшения о помощи, не происходит, поэтому переход ез помешен внугрь состояния иогхьав. Активный объект иасььае имеет два динамических параметра, определяюших время вычисления очередной порции данных (ргесеааьадтьее) и время запроса помоши от других машин (дееие1ртпкеоие). Эти параметры будут для каждой машины установлены как результат вычисления значения случайной величины при каждом использовании параметров. Кроме того, в стейтчарте изменяются количества активных и пассивных машин в системе при входе и выходе из соответствующих состояний, а также число базовых сообшений в канале при каждом порождении сообшения (переход ез) и при каждом получении сообщении из канала (переходы е1 и сг). Соответствуюшие переменные ногхьад, ьпге и теаеавее определены в корневом объекте мопет, поэтому доступ к ним выполняется с помощью префикса енаег, который содержит указатель на включающий объект иаьа.
Модель среды передачи сообщений базового алгоритма ( СЬаппе!) Активный объект сиааае1 имеет порт, через который принимаются и посылаются сообщения типа иеаааде, а также динамический таймер. В качестве своего единственного параметра таймер имеет соабшение этого типа. Каждый раз, как только порт канала принимает сообшение, с ним связывается новый экземпляр таймера, который устанавливается на срабатывание по таймауту сиааае1петау. По истечении таймаута это сообшение отправляется через этот же порт всем объектам, с которыми этот порт соединен, т.
е. всем машинам одновременно. Как уже отмечалось, примет это сообшение только та машина, номер которой стоит в поле пеееьааеьеа сообщения. У всех остальных машин условие приема сообшения будет вычисляться как еа1ее. Часть К Приме моделей для различных областей применения Модель корневого обьекта (Моде!1 Корневой объект включает один экземпляр канала и н экземпляров машин.
Порты машин соединены с портом канала. Параметры, определенные в этом объекте, используются как параметры экспоненциальных распределений, генерирующих случайные времена обработки порции вычислений, задержки СООбщсинй И т. П. В КаЧЕСтас арГуМЕНта фуНКМИИ еирппепега1() Задастея средняя частота наступления события, которал обратна среднему интервалу времени между событиями. Янимация Анимация в этой модели играет определяющу)о раль не только при проведении компьютерного эксперимента, но н для понимания функционирования системы (в данном случае — сложного распределенного алгоритма), а также для отладки самой модели. Анимация машины представлена прямоугольником, цвет которого ЬааеС01сх МЕНяЕтСя В ЗаВИСИМОСтИ От СОСтОяНИя МаШИНЫ вЂ” В СтсйтЧартс таьп этот параметр устанавливается в соответствующее значение при входе в каждое из двух состояний.
Прямоугольники всех экземпляров машин в корневом объекте маьп должны располагаться по окружности. Координаты и угол поворота изображения машины определяются номером 1 экземпляра МаШИНЫ. СтатИЧЕСКая фуНКцИя апд1е(1), ОПрсдЕЛЕННая В КОРНЕВОМ ОбЪЕКтЕ, вычисляет угол поворота вектора, направленного на изображение 1-й машины относительно оси Х (например, О-й экземпляр будет помещен на оси У, т. е. вектор к этому прямоугольнику повернут на 90 градусов).
Вычисляется также разворот изображения каждой машины относительно оси. В анимации корневого объекта мсс)е1 отметим технику визуализации базовых сообщений, находящихся в канале. Для этого в поле анимации определены н*н стрелок с координатами начала и конца, вычисляемыми для каждой пары машин (1,х) так, чтобы стрелка была направлена от 1-го прямоугольника к )с-му. Для этого в пале Дополнительный код класса определены четыре функции ьедгпх, ьедьпт, епбх, епс)т, определяющие координаты начала и конца стрелки, направленной от 1-й машины к к-й: с(пиЫе Ьед1пх[ ьпс 1 ) [ хепихп (В-40)"Мапь.сса( апд1е(1|Н) ); соиЬ1е Ьед1пт ( ьпе 1 ) ( сеппхп (я-40)*наСЬ.агп( апд1е(1/и) )) доиЫе епс)х( ьпс и ) ( хееихп (д-40) *Ма еь.
соа ( апд1е (КЪН) ); Глава Ж ИнФо тика и коммуникация ооиЬ1е епс)У< ъпе К ) ( геспгп (В-40)*наеь.е1п( апя1е[КЪИ) ); ФУНКцИя апд1е ОПРЕдЕЛЕНа КаК арИфМЕтИЧЕСКая фуНКцИя От цЕЛОй ПЕРЕ- менной (пдех: иаеь. Рх/2 + (2*вась. Р1/Б! " 1поех Каждая такая стрелка должна быть видима, только если сообщение от 1-й машины к к-й находится в канале. Для управления видимостью в поле Дополиителы(ый код класса определен массив опиау размером и*и, элементы которого вначале равны О, и каждый раз, как 1-я машина посылает базовое сообшение к-й машине (переход сз стейтчарта еаъп активного объекта иаоьгпе, рис. 19.2), соответствующий элемент массива опнау увеличивается на 1. При получении базового сообщения в порт активного объекта масьзпе, соответствуюший элемент массива опиау уменьшается на 1.
Видимость СтрЕЛКИ От МаШИНЫ 1 К МаШИНЕ К уСтаНОВЛЕНа В Егпе, ЕСЛИ СООтВЕтСтВуЮ- ший элемент массива опнау не равен О. 19.1.4. Модель алгоритма распределенного завершения Этот алгоритм строится над базовым алгоритмом, и оба алгоритма работают параллельно. Такую организацию параллельных процессов смоделировать в Апу1.ой(с очень просто. А именно, в каждой машине кроме стейтчарта аеьп, реализу)ошего базовые вычисления системы машин, добавляется новый стейтчарт„работающий параллельно с основным и реализуюший описанный ранее алгоритм.