Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 67
Текст из файла (страница 67)
У семьи есть доход, складываюшийся из доходов ее членов, а также расходы, которые состоят из арендной платы за жилье, ежемесячных трат на питание членов семьи и их транспортных расходов. Динамика семьи состоит в том, что семья может быть либо в состоянии удовлетворенности жизнью, либо в состоянии неудовлетворенности. Зги состояния зависят от того„насколько доходы семьи превышают ее расходы. В состоянии удовлетворенности жизни семья может либо потратить деньги на новую машину, либо переехать в более престижный район. Если член семьи потерял работу, он имеет нулевой доход в течение всего периода поиска работы. Если доход на одного члена семьи мал, семья переходит в состоянии неудовлетворенности. Таких состояний неудовлетворенности несколько. При отрицательном балансе доходов над расходами семья переходит в критическое состояние вяегвтке.
Только отчаявшись, в этом состоянии семья решается переехать в менее престижный район с меньшей стоимостью аренды за жилье. 18.2.3. Использование модели для анализа возможных решений Зта модель является демонстрационной. Она показывает возможность учета влияния одних факторов и характеристик в сложной системе на другие с использованием парадигмы агентного подхода к моделированию. Например, в модели можно проследить, как инвестиции в строительство нового жилья или улучшение условий для открытия новых предприятий влияют на динамику развития города, в частности, на транспортные проблемы и загрязнение.
Кроме того, в модели можно изменять число домов (квартир) и предприятий в каждом районе и комфортность района и наблюдать, как будет развиваться система в зависимости от этих изменений. С моделью можно провести эксперименты. Щелчок на любой из двух кнопок ркй гаввош Ьовве(ю)в или р!сй гвввош евгегрг)яе позволяет выбрать случайную семью или случайное производство и отобразить его характеристики.
Щелчок мышью на одной из зон выделяет зону и отображает ее характеристики. В выделенной зоне с помошью слайдеров можно изменить число квартир (слайдер Новзшй) и/или число плошадок для развертывания производства (слайдер Ввавевв) и наблюдать развитие процессов во всем городе. Глава 19 Информатика и коммуникация Основная парадигма, в рамках которой разрабатываются модели в АпуЕой1с, состоит в представлении модели как совокупности параллельно функционирующих активных объектов, взаимодействующих между собой и с окружением.
Такое представление является совершенно естественным для моделей распределенных алгоритмов, протоколов коммуникации и аппаратных средств вычислительной техники. Пример модели широко известного протокола, представленный в данной главе, демонстрирует зто утверждение. 19.1.
Алгоритм распределенного завершения Проблема распределенного завершения является классической проблемой распределенных алгоритмов. Она относится к классу тех проблем, которые при очень простой формулировке имеют нетривиальное решение. В то же время, большое число прикладных задач в области распределенных вычислений может быть сведено к этой проблеме. 19.1.1. Постановка проблемы Рассматривается н машин, связанных в произвольную компьютерную сеть. Все машины вместе выполняют некоторый распределенный алгоритм вычислений, который мы будем называть базовым алгооиимом.
Каждая машина может быть либо в активном состоянии, выполняя базовые вычисления, либо в пассивном состоянии, если она завершила свою часть распределенного вычисления. Активная машина, выполняющая базовые вычисления, может посылать сообщения каким-либо другим машинам в сети, передавая им часть работы.
Ссюбщения получаются адресатом после некоторой задержки в сети без потерь. Если пассивная машина получает сообщение, она становится активной, активная машина, получившая сообщение, остается активной и продолжает вычисления. Глава гй, Информатика и коммуникация Из активного состояния переход машины в пассивное состояние может произойти по завершении ее части общих вычислений в любой момент.
Прием сообщения является единственным событием, которое переключает машины из пассивного в активное состояние. Отсюда следует, что ситуация, в которой все машины пассивны, а в сети нет сообщений, посланных ранее какой-нибудь из активных машин, является стабильной: распределенное вычисление завершено. Цель алгоритма распределенного завершения состоит в том„чтобы некоторая машина, например О-я, обнаружила, что система пришла в зто стабильное состояние как можно быстрее после того, как оно наступило. Для чего выделенная машина должна использовать информацию от остальных машин об их состоянии.
Ясно, что алгоритм определения распределенного завершения не может быть просто проверкой текущего состояния всех машин в сети и принятия решения о завершении вычислений, если все машины отрапортовали о том, что они пассивны. Во-первых, мгновенно такую проверку выполнить в распределенной системе невозможно, и, во-вторых, в канале могут находиться задержанные сообщения базового алгоритма, которые могут активизировать перешедшую в пассивное состояние машину, которая уже послала рапорт о своем пассивном состоянии. Поэтому алгоритм обнаружения завершения вычислений в распределенной сети машин является нетривиальным. В отличие от базового алгоритма вычислений, назовем алгоритм обнаружения распределенного завершения зондированием. Зондирование может быть инициировано выделенной машиной О в любом состоянии всей сети, при любом распределении активностей в ней.
Поэтому запушенный алгоритм зондирования может дать отрицательный результат, если сеть машин не находится в стабильном состоянии. Обычно алгоритм зондирования запускается О-й машиной периодически: если очередной рауна оказался неудачным, инициируется следующий раунд. 19.1.2. Алгоритм Существует несколько решений проблемы распределенного завершения. Алгоритм, модель которого представлена здесь, предложен Э.
Дейкстрой 1Е%Р8401, работает на произвольном числе машин, пронумерованных от О до н, связанных в виртуальное кольцо. Алгоритм состоит из повторения циклов зондирования сети посылкой зонда (токена) по кольцу машин. Данный распределенный алгоритм состоит из следующих локальных правил, которые, как доказал Дейкстра, гарантируют решение проблемы: 1.
Каждая машина в сети поддерживает счетчик с. Каждая посылка сообщения базового алгоритма увеличивает с на 1; прием базового сообщения уменьшает с на 1. Таким образом, сумма всех счетчиков в сети машин в некоторый момент времени равна числу сообщений, задержанных в сети. Часть и Примеры моделей для различных областей п именения Если сумма значений счетчиков О, то никаких базовых сообщений в сети нет. 2, Машина О инициирует шаг зондирования в любой момент и в любом своем состоянии, посылая токен со значением О машине и-т.
Каждая машина ь задерживает полученный токен до тех пор, пока не станет пассивной. После этого значение токена увеличивается на с„и токен передается машине ь-т. 3. И машины, и токен имеют цвет. Вначале все машины и токен белые. Машина, получившая базовое сообщение, становится черной. Когда машина передает токен, она становится белой. Если черная машина передает токен, токен становится черным, в противном случае токен сохраняет свой цвет. 4. Когда машина О получает свой токен, прошедший по кольцу всех машин, очередной цикл зондирования закончен. Машина О„получив токен, ждет, пока она не перейдет в пассивное состояние. После этого она делает заключение о завершении базовых вычислений в сети машин при следующих условиях: ° сама машина О белая; ° полученный токен белый; ° сумма значений токена и счетчика с машины О равна О.
В противном случае завершения на этом цикле не обнаружено, машина О запускает новый цикл зондирования. 19.1.3. Модель базовых вычислений Все параллельно выполняющиеся процессы в этой распределенной системе естественно распадаются на две группы. Первую группу составляют базовые вычисления с активными и пассивными машинами, передачей сообщений и их задержками, приемом сообщений и активизацией принимающего процесса, если он был пассивен. Вторую группу составляют процессы собственно распределенного алгоритма обнаружения завершения базовых вычислений в сети. Рассмотрим сначала модель базовых вычислений.
Анализ модели Откройте модель пьаесььиеедтесеъоасьоо1. Модель построена из трех классов активных объектов: машина, выполняющая вычисления насььое, объект, задерживающий сообщения в сети сьаоое1„и корневой объект нобат. Корневой объект включает один экземпляр канала спаоое1 и и экземпляров машин.
Запустите модель на выполнение. В поле анимации (рис. 19.1) вы увидите 18 машин, расположенных по окружности и обменивающихся сообщениями. Глава 19. Информатика и коммуникация Для того чтобы можно было наблюдать прогресс базового алгоритма, машина в рабочем состоянии представлена красным прямоугольником, машина в пассивном состоянии закрашена зеленым.