Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_17.05..docx
Скачиваний:
10
Добавлен:
04.05.2019
Размер:
3.08 Mб
Скачать

1.3.2 Проектирование структуры программного обеспечения и алгоритмов

Система выращивания топологии нейронной сети состоит из двух подсистем. Чтобы показать взаимодействие двух этих подсистем построим диаграмму коммуникаций всей системы. Эта диаграмма приведена на рисунке 1.13.

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

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

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

Задачей данного дипломного проекта является реализация первой подсистемы реализации генетического алгоритма. Для того чтобы отразить взаимодействие компонентов этой подсистемы между собой, построим диаграммы коммуникации и последовательности (рисунки 1.14 и 1.15).

Обе эти диаграммы выражают взаимодействие, но показывают его различными способами и с достаточной степенью точности могут быть преобразованы одна в другую. Диаграмма коммуникации — диаграмма, на которой изображаются взаимодействия между частями композитной структуры или ролями кооперации. В отличие от диаграммы последовательности, на диаграмме коммуникации явно указываются отношения между элементами (объектами), а время как отдельное измерение не используется.

Диаграмма последовательности изображает упорядоченное во времени взаимодействие объектов. В частности, на ней изображаются участвующие во взаимодействии объекты и последовательность сообщений, которыми они обмениваются [38].

Опишем эти диаграммы. Сначала пользователю необходимо ввести параметры ГА. Их значения сохраняются в класс GAParametres. Также пользователь должен выбрать геометрические свойства требуемой топологии т.е. задать фитнесс-функцию. За вычисление фитнесс-функции отвечает класс PlanarGraphFitnessFunction. После этого пользователь запускает генетический алгоритм и управление передается классу Population. Перед началом работы ГА он создает начальную популяцию из хромосом. Сами хромосомы создаются с помощью конструктора класса MyChromosome. В свою очередь хромосома состоит из массива генов, которые описываются классом MyGen и генерируются конструктором этого класса. Затем класс Population запускает процесс эволюции, т.е. работу генетического алгоритма. Все операции генетического алгоритма выполняются в классе MyChromosome, который по окончанию эволюции, возвращает в класс Population лучшую хромосому.

Эта хромосома представляет собой набор правил, по которым может быть построена топология нейронной сети наиболее близкая к заданной. Этот набор правил и сохраняется в файл.

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

Диаграмма деятельности для варианта «Запустить генетический алгоритм», представлена ниже на рисунке 1.16.

Данная диаграмма деятельности показывает работу генетического алгоритма в общем виде. Сначала создается начальная популяция, задаются геометрические свойства требуемой топологии, затем начинается процесс эволюции включающий стандартные этапы генетического алгоритма: скрещивание, мутация и селекция.

Наибольший интерес в нашем случае из всех операций генетического алгоритма представляет собой отбор или селекция. Диаграмма деятельности для этого варианта представлена на рисунке 1.17.

Эта диаграмма показывает последовательность действий этого варианта использования. Сначала из всей популяции выбирается хромосома. Если хромосома выбрана, то она преобразовывается в набор правил для построения топологии нейронной сети. Потом по этим правилам строится граф. Чтобы не затрачивать вычислительные ресурсы на заведомо неподходящие графы, проверяем их на жизнеспособность (количество узлов > 1, граф конечен). Если граф жизнеспособен, то выполняем его планаризацию. Если граф планарен, то есть может быть уложен на плоскость, то считаем количество его граней и формируем список граней.

Рисунок 1.12 – Диаграмма классов

Рисунок 1.13 – Общая диаграмма коммуникаций

Рисунок 1.14 – Диаграмма коммуникаций разрабатываемой подсистемы

Рисунок 1.15 – Диаграмма последовательности

Рисунок 1.16 – Диаграмма деятельности для варианта «Запустить генетический

алгоритм»

Рисунок 1.17 – Диаграмма деятельности для варианта использования «Выполнить селекцию»

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