Научная статья на тему 'Применение параллельных вычислений в задачах многокритериальной оптимизации и их реализация в среде MatLab'

Применение параллельных вычислений в задачах многокритериальной оптимизации и их реализация в среде MatLab Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
407
209
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕНЕТИЧЕСКИЙ АЛГОРИТМ / ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ / МАТЕМАТИЧЕСКИЙ ПАКЕТ MATLAB

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Филатова Е. С., Филатов Д. М.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Филатова Е. С., Филатов Д. М.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение параллельных вычислений в задачах многокритериальной оптимизации и их реализация в среде MatLab»

сдвигом и поэтому хорошо работают только для неподвижных объектов. При сканировании, человек обычно находится в ортостатическом положении (неподвижном), однако при этом все равно происходят непроизвольные телодвижения. Они приводят к динамическим погрешностям для ВФ, и поэтому, оптимальным методом для определения 3D рельефа человека является метод ПФ, который позволяет по единственному изображению (со спроецированными контрастными полосами) восстановить 3D рельеф с максимальной точностью и достаточным разрешением. В современных медицинских системах [6] точность сканирования достигает 0.1 мм.

Список литературы:

1. Salvi J., Pages J., Baffle J. Pattern codification strategies in structured light systems // Pattern Recognition. - 2004. - Vol. 37. - P. 827-849.

2. Geng J. Structured-light 3D surface imaging: a tutorial // Advances in Optics and Photonics. - 2011. - № 3. - P. 128-160.

3. Gorthi S. S., Rastogi P. Fringe Projection Techniques: Whither we are? // Optics and Lasers in Engiering. - 2010. - Vol. 48. - P. 133-140.

4. Yu W. Development of a three-dimensional anthropometry system for human body composition assessment // Ph. D. thesis, University of Texas at Austin, 2008.

5. Womack K.H. Interferometric phase measurement using spatial synchronous detection // Opt. Eng. - 1984. - Vol. 23, No. 4. - P. 391-395.

6. Сарнадский В.Н., Уберт А.И. Алгоритмы автоматического восстановления 3D модели поверхности туловища человека методом компьютерной оптической топографии // Материалы XI международной конференции «Актуальные проблемы электронного приборостроения». - 2012. - Т. V - С. 81-88.

ПРИМЕНЕНИЕ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В ЗАДАЧАХ МНОГОКРИТЕРИАЛЬНОЙ ОПТИМИЗАЦИИ И ИХ РЕАЛИЗАЦИЯ В СРЕДЕ MATLAB1

© Филатова Е.С.*, Филатов Д.М.Ф

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина), г. Санкт-Петербург

В данной работе применение параллельных вычислений рассматривается на примере увеличения быстродействия работы генетического

1 Работа выполнена при финансовой поддержке гранта Президента Российской Федерации № 14^56.14.3734-МК.

* Доцент кафедры Систем автоматического управления, кандидат технических наук.

* Доцент кафедры Систем автоматического управления, кандидат технических наук.

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

Ключевые слова генетический алгоритм, параллельные вычисления, математический пакет MatLab.

Введение

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

Возможны два подхода в реализации распараллеливания генетических алгоритмов. Первый подход основан на создании одной из существующих моделей параллельных генетических алгоритмов. Такими моделями могут быть [2]:

- модель «мастер-раб» (master-slave GAs). Особенность подхода состоит в синхронной работе популяций. Популяции обладают общим адресным пространством. Мастер или управляющий процесс осуществляет развитие популяции, а подчиненные занимаются расчетом целевой функции;

- модель «мелкоструктурного подчинения» (fine-grained GAs). Имеется управляющий процесс и подчиненные сильно от него зависят, но работают в асинхронном режиме, при использовании общих ресурсов. В этой связи необходимо решать вопросы синхронизации;

- модель «сетевого взаимодействия» (coarse-grained GAs). Каждый процесс моделирует свою популяцию, используя собственное адресное пространство. Взаимодействие с другими популяциями определяется из описания связей (топологии сети взаимодействия).

Второй подход предполагает применение моделей параллельного программирования, таких как MPI, OpenMP, PVM, Pthreads для распараллеливания исполнения программы, реализующий генетический алгоритм между некоторыми кластерами. В данной работе распараллеливание генетического алгоритма осуществляется с использованием модели OpenMP.

Организация параллельных вычислений в MatLab

Для реализации технологии параллельных и распределенных вычислений в MatLab предусмотрены два пакета расширения, работающих в связке: DCT (Distributed Computing Toolbox) и MDCE (MatLab Distributed Computing Engine).

Дадим несколько определений основным понятиям, которые будут встречаться далее.

Клиент - текущая сессия MatLab, в которой определяются и из которой отправляются задачи.

Кластер - набор компьютеров, объединенных в сеть для решения общей вычислительной задачи.

Главный узел - узел кластера, предназначенный для запуска менеджера задач.

Узел - компьютер, который является частью кластера.

Задача - полностью описанная вычислительная операция большой размерности для выполнения в MatLab, состоящая из набора подзадач.

Подзадача - некоторый сегмент основной задачи, которая будет отправлена на исполнение в рабочий процесс.

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

Рабочий процесс - системный процесс MatLab, выполняющий вычисление подзадач.

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

Простейшая конфигурация, реализующая механизм распределенных вычислений MatLab изображена на рис. 1.

Рис. 1. Конфигурация распределенных вычислений

Менеджер задач может работать на любой машине в сети. Каждый рабочий процесс получает от него задачу на исполнение, выполняет задачу, затем возвращает результат и получает новую задачу. Когда рабочими про-

цессами выполнены все задачи, менеджер задач начинает управление следующей группой задач с доступными рабочими процессами.

Если используется менеджер задач The MathWorks, каждая машина, на которой запущен рабочий процесс или менеджер задач должна иметь MDCE службу. Служба MDCE восстанавливает рабочий процесс и менеджер задач в случае неисправности машины, то есть она автоматически возобновляет их сессии, которые были запущены перед аварией [3].

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

Типичная сессия параллельных вычислений для клиента включает следующие шаги:

1. Получение ссылки на менеджер задач при помощи специальной функции MatLab.

2. Формирование задачи, в которую будут записаны некоторые подзадачи.

3. Формирование подзадачи - сегмента основной задачи.

4. Постановка задачи в очередь на исполнение в менеджер задач.

5. Получение результатов работы.

6. Удаление задачи и освобождение ресурсов памяти.

Процедура администрирования параллельных вычислений в MatLab заключается в следующем.

1. Запуск службы MDCE.

2. Запуск планировщика. Запуск менеджера задач осуществляется при помощи команды Startjobmanager, а при помощи команды Stopjob-manager его остановка.

3. Запуск рабочих процессов на разных узлах. Запуск рабочего процесса аналогичен запуску менеджера задач и осуществляется с помощью команды Startworker. Командой Stopworker можно остановить исполнение рабочего процесса.

4. Получение ссылки на системные процессы необходимо для управления такими системными процессами как менеджер задач и рабочий процесс из клиентской сессии MatLab. В этом случае в рабочей области MatLab формируется переменная с помощью свойств и методов которой становится возможным управление этими объектами. Для поиска ссылки на указанные процессы используется функция findResource.

В качестве примеров будут рассмотрены две задачи, решаемые на базе генетических алгоритмов: параметрическая идентификация адаптивного регулятора и поиск наилучшей архитектуры нейро-нечеткой сети. Далее

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

Генетический алгоритм определения параметров адаптивного регулятора

Задачей генетического алгоритма является подбор параметров адаптивного регулятора с сигнальным алгоритмом адаптации [k r2] для электрогидравлического привода рулевой поверхности самолета, при которых обеспечивается наискорейшее затухание переходного процесса разности выходных координат объекта управления и эталонной модели.

Обобщенная схема выполнения разрабатываемого генетического алгоритма включает следующие шаги.

1. Создание начальной популяции.

Каждая популяция представляет собой набор из 20 хромосом, в свою очередь представляющих собой пары коэффициентов адаптивного регулятора [kj r2J, где i = 1^20. Двоичное кодирование хромосом не применяется, каждая хромосома состоит из двух чисел типа double (см. рис. 2).

k=0

Популяция P(0)

хромосома 1 хромосома 2

хромосома 20

Рис. 2. Формирование начальной популяции

Обозначения, принятые на рис. 2: к - шаг выполнения генетического алгоритма (0 обозначает начальную популяцию), Р - текущая популяция, К -коэффициенты, входящие в состав хромосомы. Запись К(0) обозначает, что данная хромосома сформирована на начальном шаге (начальная популяция).

Начальная популяция создается исходя из экспериментов, проведенных в [1]. Начальная популяция также может задаваться произвольным образом, но это существенно замедляет поиск генетический алгоритмом оптимального решения.

2. Оценивание приспособленности.

В качестве функции приспособленности каждой хромосомы вычисляется время регулирования для ошибки следования системы за эталонной моделью. Для этого необходимо промоделировать разработанную в Ма1ЬаЪ 81-шиИпк структурную схему электрогидравлического привода, после чего по

[K(0)11 K(0)i2] [K(0)21 K(0)22]

[K(0)201 K(0)202]

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

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

3. Отбор.

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

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

3. Применение генетических операторов.

В классическом генетическом алгоритме применяются два основных генетических оператора: оператор скрещивания и оператор мутации.

Скрещивание реализуется путем попарного обмена хромосомами между сформированными парами родителей случайным образом. Начиная с первой пары последовательно берется каждая пара родителей из родительского пула и случайным образом потомку присваивается в качестве его первой хромосомы (в нашем случае это коэффициент k) первая хромосома одного из выбранных родителей, а в качестве второй хромосомы - вторая хромосома одного из той же пары родителей.

Мутации подвергаются особи, имеющие наихудшее значение функции приспособленности. Мутация заключается в суммировании каждой хромосомы родителя со случайным образом сгенерированным числом с распределением Гаусса:

mutationChildren(i,:) = parent + scale .* randn(1,length(parent)).

Параметр scale, который входит сомножителем в данном выражении определяет степень мутации. Если этот параметр равен 0, то никаких изменений в особи не происходит.

Также дополнительно существует параметр shrink, который определяет насколько быстро параметр scale будет убывать в результате выполнения каждого шага генетического алгоритма. Если параметр shrink будет равен нулю, то уменьшения степени мутации не будет происходить при каждом после-

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

5. Условие останова алгоритма.

Условием останова в данном случае является два критерия:

1. Достигнуто конечное число итераций равное 50.

2. Алгоритм останавливается в случае, если нет улучшения для целевой функции в последовательности следующих друг за другом поколений длиной 10.

Генетический алгоритм поиска наилучшей архитектуры нейро-нечеткой сети

Задачей генетического алгоритма является подбор архитектуры нейро-нечетких сетей (ННС), входящих в систему краткосрочного прогнозирования электропотребления, при которых достигается наилучшая точность прогнозирования. Построение ННС осуществляется встроенной функцией Matl-Lab genfis2, которая используется алгоритм кластеризации данных для генерирования ННС. Радиусы влияния кластеров, которые определяют будущую архитектуру ННС и являются параметром, подлежащим подбору при помощи генетического алгоритма.

Подробно реализация данного генетического алгоритма изложена в [4] и практически аналогична схеме, описанной для предыдущей задачи с двумя отличиями. Первое отличие заключается в размере и виде популяции, которая представляет собой набор особей [Гц r2i r3i r4i], i = 1^30. Каждая хромосома в особи является радиусом кластеризации для каждой из четырех ННС, реализующих систему прогнозирования. Начальная популяция задается случайным образом в интервале [0, 1].

Второе отличие заключается в реализации процедуры отбора турнирным методом.

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

Реализация параллельного генетического алгоритма в среде MatLab

В качестве кластера для реализации распараллеливания были использованы две рабочих станции (ПК) на базе двуядерного процессора. На каждом ПК устанавливается среда MatLab Simulink и пакеты расширений Distributed Computing Toolbox и MATLAB Distributed Computing Engine, а так же вспомогательный инструментарий Genetic Algorithm Toolbox для реализации ГА.

Для реализации параллельных вычислений создается параллельная программа и используется корневая (открытая) программа математического

пакета MatLab Fcnvectorizer. Эта программа является частью инструментария Genetic Algorithm Toolbox для реализации ГА. Важным шагом, для работы параллельной программы, является запись в корневой программе Fcnvectorizer команд, которые осуществляют подготовку к параллельным вычислениям и по которым происходит непосредственный запуск параллельной программы.

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

1. Программа моделирования Start. В данной программе реализуется настройка и вызов на исполнение генетического алгоритма.

2. Программа Fcnvectorizer (корневая программа Genetic Algorithm Toolbox). В ней происходит настройка кластера состоящего из двух рабочих станций, создание параллельной задачи, её свойств, создание параллельного задания, выполнение задачи и вывод результата. Также в этой программе происходит распараллеливание популяции между двумя узлами кластера при помощи вызова специально созданных подпрограмм Par_chromos и Gal. Таким образом, происходит параллельная работа двух независимых процессов, каждый из которых выполняется в отдельном программном потоке.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Par_chromos - параллельная задача. Здесь происходит процесс распараллеливания исполнения программы Gal на два рабочих процесса.

Gal -программа расчета функции оптимизации для ГА. В ней после параллельного моделирования параметров (для первой задачи - это моделирование в Simulink, для второй - запуск системы прогнозирования) происходит получение значения функции приспособленности.

Параллельная программа Par_chromos является подпрограммой корневой программы Fcnvectorizer.

Алгоритм распараллеливания вычислений следующий:

1. Формирование генетическим алгоритмом популяции состоящей из определенного набора хромосом. Популяция будет делиться на количество узлов в кластере.

2. Распараллеливание процесса моделирования используя уникальный идентификатор labindex в программе Par_chromos. Он присваивает каждому рабочему процессу свой порядковый номер. Наш кластер состоит из двух рабочих станций. Если labindex равен единице, то первый рабочий процесс (первый компьютер) из кластера моделирует первую половину популяции. Если labindex равен двум, второй рабочий процесс (второй компьютер) из кластера моделирует вторую половину популяции.

3. Далее программа Gal запускает работу генетического алгоритма.

Таких итераций может быть множество. Процесс распараллеливания

будет проходить каждый раз.

Особенности распараллеливания, связанные с MatLab и Simulink:

1. Математический пакет MatLab должен быть запущен на всех рабочих станциях входящих в кластер;

2. Брандмауэр операционной системы должен быть либо отключен, либо следует произвести его настройку;

3. Схема Simulink, которую требуется запускать при распараллеливании, должна быть открыта на главной рабочей станции;

4. Все созданные для параллельной работы программы должны находиться на главной рабочей станции;

5. Параметры, которые требуются для настройки схемы Simulink, необходимо прописать как в командной строке MatLab, так и непосредственно в параллельной программе;

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

Заключение

Проведенные в работе исследования показали, что для решения трудоемких оптимизационных задач использование распараллеливания повышает скорость поиска решения в разы, особенно если при параллельной работе генетического алгоритма необходимо запускать моделирование Simulink, обучение ННС и другие длительные процессы.

Организация программного распараллеливания работы генетического алгоритма между двумя рабочими станциями позволила повысить быстродействие в среднем в 1,5-2 раза по сравнению с реализацией алгоритма на одном ПК.

Список литературы:

1. Второв В.Б., Филатов Д.М. Вопросы расчета параметров адаптивного регулятора в системе с эталонной моделью и сигнальной адаптацией // Известия СПбГЭТУ «ЛЭТИ». - СПб., 2009. - № 10. - С. 39-46.

2. Кныш Д.С., Курейчик В.М. Параллельный генетический алгоритм с нечетким оператором миграции // «Искусственный интеллект». - Донецк, 2010. - № 3. - С. 73-80.

3. Оленев Н.Н. Параллельное программирование в Matlab и его приложения. - М.: ВЦ РАН, 2007. - 120 с.

4. Филатова Е.С., Филатов Д.М., Стоцкая А.Д. Генетический алгоритм поиска наилучшей архитектуры нейронечеткой сети // Тезисы докл. Меж-дунар. конф. по мягким вычислениям и измерениям SCM-2015 (Санкт-Петербург, 19-21 мая 2015 г.). - Saint-Petersburg, 2015. - Vol. 1. - P. 379-382.

i Надоели баннеры? Вы всегда можете отключить рекламу.