Санкт-Петербургский государственный университет
Опубликован: 12.07.2013 | Доступ: свободный | Студентов: 246 / 40 | Длительность: 09:36:00
Специальности: Программист
Самостоятельная работа 5:

Имитационное моделирование алгоритма локального голосования для балансировки загрузки узлов вычислительной сети

< Лекция 5 || Самостоятельная работа 5 || Лекция 6 >
Аннотация: Пример имитационного моделирования работы алгоритма локального голосования для системы балансировки загруженности узлов децентрализованной вычислительной сети с использование платформы JADE.

Цель лабораторной работы

Презентацию к лабораторной работе Вы можете скачать здесь.

Для иллюстрации теоретических результатов приведем пример имитационного моделирования работы алгоритма локального голосования для системы балансировки загруженности узлов децентрализованной вычислительной сети с использование платформы JADE.

Программная реализация сети агентов

В качестве примера рассмотрим вычислительную сеть, состоящую из шести вычислительных узлов. Топология сети в каждый момент времени случайная [ 5.38 ] .

Разработка агентов в JADE похожа на разработку обычных Java-приложений и не требует от программиста специальных технических навыков. Для разработки достаточно иметь Java Development Kit, но для удобства мы использовали традиционную интегрированную среду разработки для Java – Eclipse. Любой агент в системе JADE является классом-наследником класса jade.core.Agent. В наследнике достаточно переопределить метод setup(), в котором агент настраивается для последюущей деятельности.

В первую очередь определяется поведение агента. Мы используем интерфейс CyclicBehaviour, который задает циклическое поведение, необходимое для осуществления итераций. Внутри интерфейса, в методе action(), описывается логика работы с сообщениями, а именно реализуются шаги вычислительной схемы, описанной выше.

Последующая деятельность агентов, в том числе доставка сообщений между ними, обеспечивается средой JADE. Управление агентами, их запуск и остановку, можно осуществлять через JADE Remote Agent Management GUI. Вывод результатов осуществляется в консоль Eclipse, для этого также можно создать специальное окно ( рис. 10.2).

Окно JADE Remote Agent Management GUI

Рис. 10.2. Окно JADE Remote Agent Management GUI

Для просмотра схемы передачи информации между агентами можно открыть окно Smiffer Agent, в котором стрелками указывается путь передачи единици информации. Рис. 10.3 показывает sniffer agent для примера реализации алгоритма достижения консенсуса, описанного выше.

Созданы шесть агентов с жестко определенной топологией сети, т.е. каждый агент связан только с двумя другими агентами. Агент "timer" подает команду для начала нового цикла обменом информации. Каждый агент начальный момент времени имеет собственное целое число. После применения протокола локального голосования и получения данных от других агентов, он записывает себе новое число и отправляет агенту "timer" сообщение со своим номером о том, что отработал такт. Новый такт не начинается, пока все агенты не "отчитаются" перед агентом "timer". Такт системы равен 1 сек. Для подсчета числа текущего такта агент сравнивает его с числом предыдущего такта. Если число агента не меняется в течении пяти тактов, то агент отправляет на "timer" сообщение об достижении консенсуса. Консенсус достигается при отсутствии изменений числа агента в пределе первого знака дробного числа.

Окно Sniffer Agent

Рис. 10.3. Окно Sniffer Agent

Инструкция по выполнению лабораторной работы

Рассмотрим два случая: стационарный и случай поступлении в тот или иной узел с течением времени новых заданий [39-41].

Для поставленной задачи будем использовать алгоритм стохастической аппроксимации для достижения консенсуса в следующем виде:

x^i_{t+1}=x^i_t+\alpha_t \sum\limits_{j \in N^i_t}y^j_t/p^j_t-x^i_t/p^j_t ( 17)
, где \alpha_t – последовательность положительно определенных размеров шагов. x^i_t - состояние узла i в момент времени t, p^i_t – производительность узла i.

Будем проводить имитационное моделирование для системы, показанной на рис. 10.1, состоящей из 6 вычислительных блоков. Были выбраны начальные состояния загруженности узлов:

x^1_0=3300, x^2_0=7500, x^3_0=5200, x^4_0=4150, x^5_0=6300, x^6_0=2100

Производительности узлов:

p^1=2, p^2=0.75, p^3=1.2, p^4=1.7, p^5=3.5, p^6=2.1
и они не меняются со временем.

Начальная топология сети приведена на рис. 10.4(А). С течением времени топология сети дважды меняется: рис. 10.4(В) и 5.4(С).

Топология сети

Рис. 10.4. Топология сети

Матрицы связности для трех случаев выглядит так:

A_{G_A}= \begin{pmatrix}
 &-1 &1 &0& 0& 0& 0\\
&0 &-1 &1/2 &1/2 &0 &0\\
&0 &0 &-1 &0 &1 &0 \\
&0 &0 &0 &-1 &1 &0\\
&0 &0 &0 &0 &-1 &1\\
&1 &0 &0 &0 &0 &-1
\end{pmatrix}
\qquad
A_{G_B}= \begin{pmatrix}
 &-1 &0 &1& 0& 0& 0\\
&0 &-1 &1/2 &1/2 &0 &0\\
&0 &0 &-1 &0 &1 &0 \\
&0 &0 &0 &-1 &1 &0\\
&0 &0 &0 &0 &-1 &1\\
&1 &0 &0 &0 &0 &-1
\end{pmatrix}
\\
A_{G_C}= \begin{pmatrix}
 &-1 &0 &1/2& 1/2& 0& 0\\
&1 &-1 &0 &0 &0 &0\\
&0 &0 &-1 &0 &1 &0 \\
&0 &0 &0 &1 &-1 &0\\
&0 &1 &0 &0 &0 &-1\\
&1 &0 &0 &0 &0 &-1
\end{pmatrix} ( 18)

  1. Для простоты сначала рассмотрим стационарный случай – систему, в которой все узлы имеют определенную начальную загрузку, и новые задания не поступают.

    График невязки при работе алгоритма (17) для такой системы приведен на рис. 10.5. Система сходится примерно за 75 шагов. Используем коэффициент \alpha_t=1/\sqrt{t}.

    График невязки для стационарного случая

    Рис. 10.5. График невязки для стационарного случая
  2. Рассмотрим случай, когда в процессе работы алгоритма в систему поступает новый заказ. Используем постоянный размер шага \alpha_t=0.1. Моделирование этого случая приведено на рис. 10.6.

    На рис.10.7 приведены графики для величины ошибки оценивания с разными постоянными параметрами шага \alpha. Ошибка оценивания определяется следующим образом: E_{rr}=\sum_i \sqrt {\frac {(x^i_t-x^*)^2} n}.

График невязки для случая поступления нового заказа в процессе работы системы

Рис. 10.6. График невязки для случая поступления нового заказа в процессе работы системы
Сравнение разных параметров шага α

Рис. 10.7. Сравнение разных параметров шага α

Видно, что чем больше \alpha, тем состояния узлов быстрее сходятся к консенсусу, но с определенного момента поведение системы перестает быть стабильным.

Выводы

В этой главе была рассмотрена задача достижения консенсуса при неполном обмене информацией в условиях переменной топологии. Описан алгоритм стохастической аппроксимации для достижения среднеквадратического консенсуса. Проведено моделирование алгоритма для задачи балансировки загруженности узлов децентрализованной вычислительной сети при поступлении в каждый узел только зашумленной информации о загруженности и производительности соседей, причем топология сети может меняться со временем, а информация от соседей доходить с задержкой во времени.

< Лекция 5 || Самостоятельная работа 5 || Лекция 6 >
Николай Корнеев
Николай Корнеев

В самостоятельной работе №1 нет примера lab01 файла labAtom32.rar. Ссылка которая есть в презентации

www.math.spbu.ru/user/gran/Atom32/lab01

не работает?