Научная статья на тему 'HeO: библиотека метаэвристик для задач дискретной оптимизации'

HeO: библиотека метаэвристик для задач дискретной оптимизации Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Цыганов А. В., Булычов О. И.

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

Текст научной работы на тему «HeO: библиотека метаэвристик для задач дискретной оптимизации»

0 00,4 0,08 0,12 0,16 0,2 0,24 0,28 0,32 0,36 БИТ, м

Рис. 7. Деформированная деталь после проведения лабораторного эксперимента

На деформированном образце (рис. 7) различимы поверхности, разделенные зонами перегиба, которые образовались в местах наибольшей концентрации напряжений и являются характерными формами потери устойчивости в межклеточном пространстве при производстве тонкостенных профилей. Пунктирными линиями обозначены примерные границы зон депланации поверхности донной области профиля, распределенные вдоль контрольного отрезка А-Б (см. рис. 3) конечно-элементной модели. Их положение на шкале DIST соответственно: 0,15; 0,18; 0,23 и 0,3 м, что хорошо подтверждает результаты численного эксперимента.

Численное моделирование метода интенсивного деформирования позволило прогнозировать изменения геометрических и прочностных харак-

теристик элементов профиля в межклетьевом пространстве профилегибочного оборудования.

С помощью созданных в программной среде LS-DYNA моделей были проведены исследования депланации дна профиля, выявлены области критической концентрации напряжений и подтверждены результаты более ранних исследований [3].

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

Результатами экспериментальных лабораторных исследований была подтверждена высокая надежность моделирования в среде программного комплекса ANSYS. Величины отклонений расчетных и экспериментальных данных, обусловленные принятыми допущениями, не превысили 5 %.

Литература

1. ANSYS. Basic Analysis Procedures Guide. Rel. 8.0 / ANSYS Inc. Houston, may 1994.

2. Ferry J.W. Techniques and Limitations for Cold Roll Forming High Strength Steel Bumper Components, «High Production Roll Forming», Source Book: SME, january 1983.

3. Филимонов С.В., Филимонов В.И. Метод, расчеты и технология интенсивного деформирования в роликах гнутых профилей типовой номенклатуры. Ульяновск: УлГТУ, 2004.

HeO: БИБЛИОТЕКА МЕТАЭВРИСТИК ДЛЯ ЗАДАЧ ДИСКРЕТНОЙ ОПТИМИЗАЦИИ

А.В. Цыганов, к.ф.-м..н. (Тольяттинский государственный университет,

andrew.tsyganov@gmail.com); О.И. Булычов (Ульяновский государственный педагогический университет им. И.Н. Ульянова,

oleg. bulychov@gmail com)

В статье рассматривается новая библиотека метаэвристических алгоритмов HeO для решения трудных задач дискретной оптимизации. Библиотека представляет собой набор алгоритмических каркасов, выполненных с использованием современных технологий программирования, метапрограммирования и параллельных вычислений. Приведены результаты тестирования библиотеки на задачах выполнимости из наборов SAT 2007 и SAT 2009.

Ключевые слова: дискретная оптимизация, метаэвристики, алгоритмические каркасы, параллельные вычисления, MPI, OpenMP.

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

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

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

- возможность гибридизации и распараллеливания, что позволяет на основе базовых алго-

ритмов получать новые, более эффективные методы оптимизации.

На сегодняшний день разработано большое количество программных средств, в которых реализованы те или иные метаэвристические алгоритмы для решения конкретных ЗДО. В последние годы наметилась тенденция создания универсальных библиотек (frameworks) [1], применяемых для решения самых разнообразных задач.

В настоящей статье рассматривается библиотека метаэвристических алгоритмов HeO (Heuristic Optimization), разработанная авторами с использованием современных технологий програм-

мирования, метапрограммирования и параллельных вычислений на языке C++.

Основные особенности библиотеки

Библиотека HeO является проектом с открытым исходным кодом и распространяется на основе лицензии MIT. Цель проекта - обеспечить исследователей современными и простыми в использовании средствами для решения широкого круга ЗДО.

Ключевыми особенностями библиотеки являются:

• кроссплатформенность, обеспечивающая возможность компиляции программ в операционных системах Windows и Linux без изменения исходного кода;

• поддержка архитектур х86 и х64;

• реализация методов оптимизации в виде алгоритмических каркасов;

• реализация каждого метода оптимизации с использованием двух технологий параллельного программирования: MPI и ОрепМР;

• использование оригинальной обертки (wrapper) для функций MPI',

• использование оригинальной технологии отражения (reflection), позволяющей организовать унифицированный подход к загрузке, сохранению, выводу на экран и передаче экземпляров классов по сети;

• наличие мастеров (wizards), облегчающих создание пользовательских проектов;

• прозрачность параллелизма для пользователей библиотеки.

Официальная страница проекта располагается по адресу http://www.code.google.com/p/heo. В настоящее время для скачивания доступна версия 1.0 библиотеки.

Архитектура библиотеки

Содержимое библиотеки распределено по семи основным каталогам:

1) contrib - библиотеки и файлы сторонних разработчиков, не являющиеся частью проекта;

2) doc - файлы документации;

3) logins - логины и пароли пользователей (для запуска MPI-приложений);

4) problems - входные файлы задач;

5) projects - проекты пользователей и демонстрационные проекты;

6) solvers - исходные файлы реализованных в библиотеке методов оптимизации;

7) src - исходные файлы вспомогательных классов.

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

Библиотека представляет собой набор классов, которые можно разделить на две большие группы - основные и вспомогательные классы.

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

В библиотеке реализованы два метода оптимизации: генетический алгоритм (GA - Genetic Algorithm) и метод имитации отжига (SA - Simulated Annealing) [2].

Ядро основных классов библиотеки составляют так называемые решатели (solvers). Каждый решатель выполнен в виде отдельного шаблона класса и реализует конкретный метод оптимизации в соответствии с определенной технологией параллельного программирования (MPI или OpenMP). На данный момент в библиотеке имеются четыре решателя (по два на каждый метод оптимизации).

Название каждого решателя состоит из двух частей, разделенных символом подчеркивания. Первая часть - это сокращенное название метода оптимизации (например GA). Вторая часть - сокращенное название технологии параллельного программирования (например OMP). Таким образом, GA_OMP соответствует решателю, в котором реализована OpenMP--версия генетического алгоритма, а SA_MPI - решателю, в котором реализована MPI-версия метода имитации отжига.

Исходный код решателей для одного и того же метода оптимизации хранится в каталоге sol-vers/<имя метода> в следующих файлах:

<имя_метода>_common.h - исходный код, общий для всех решателей;

<имя_метода>_mpi.h - исходный код MPI-решателя;

<имя_метода>_omp.h - исходный код OpenMP--решателя.

Например, исходный код решателей для генетического алгоритма хранится в каталоге sol-vers/ga в файлах gacommon.h, gampi.h и gaomp.h соответственно.

Кроме решателей, к основным классам, исходные коды которых хранятся в каталоге solvers, относятся также конфигурационные классы. Каждый такой класс позволяет управлять работой решателей, относящихся к одному и тому же методу оптимизации, а его исходный код хранится в том же каталоге, что и исходный код самих решателей в файле <имя метода>_conflg.h (например, gacon-fig.h). Управление ходом вычислений осуществляется посредством конфигурационных файлов, данные в которых хранятся в формате параметр = значение. По умолчанию конфигурационные файлы имеют расширение *.ini.

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

Приведем пример объявления шаблона класса для решателя GA_OMP:

template<class P, class S, class C> class GA_OMP ...

Для использования решателя необходимо заменить параметры его шаблона (P, S и C) тремя классами. Первые два класса реализуются пользователем и описывают свойства решаемой задачи и ее допустимых решений соответственно. В данных классах обязательно должны быть реализованы методы, специфичные для выбранного алгоритма оптимизации (например, методов рекомбинации и мутации для генетического алгоритма). Третий класс является конфигурационным, он наследует свойства проблемно-зависимого конфигурационного класса (реализуется пользователем) и проблемно-независимого конфигурационного класса (реализован в библиотеке).

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

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

Приведем пример объявления шаблона класса Run_MPI:

template<class S> class Run_MPI...

Для запуска вычислений пользователь должен заменить параметр S в данном шаблоне на нужный решатель и вызвать метод run().

Более подробная информация об архитектуре и особенностях использования библиотеки содержится в документации (каталог doc).

Для демонстрации возможностей библиотеки были разработаны проекты для операционных систем Windows и Linux, в которых реализованы проблемно-зависимые классы для задач ONE-MAX

и MAX-SAT и использованы все имеющиеся в библиотеке решатели. Исходные коды этих проектов хранятся в каталоге projects, а входные файлы задач - в каталоге problems.

Тестовая конфигурация

и методика тестирования

Тестирование эффективности реализованных в библиотеке методов оптимизации проводилось на примере задач выполнимости (SAT) больших размерностей из наборов SAT2007 и SAT2009, доступных на сайте http://www.satcompetition.org.

Задачу выполнимости можно кратко сформулировать следующим образом: дана конъюнктивная нормальная форма функции N переменных из M клауз. Необходимо определить, существует ли двоичный набор, при котором эта функция будет выполнима (то есть значения всех ее клауз будут равны 1). Клаузы могут быть как фиксированной, так и переменной длины. Описание различных формулировок задач SAT и MAX-SAT можно найти, например, в [3].

Тестирование библиотеки проводилось на двух системах. Первая представляла собой однородный кластер (систему с распределенной памятью). Ее аппаратно-программная конфигурация: количество машин - 20; процессоры - Intel Core 2 Duo E7200 @ 2.53 ГГц; ОЗУ - 2 Гб; сеть - 100 Мбит Ethernet; операционная система - Linux 2.6.25-gentoo-r7; библиотека MPI - LAM 7.1.2. Вторая являлась системой с общей памятью. Аппаратно-программная конфигурация ее следующая: процессор - Intel Core 2 Quad Q6600 @ 2.4 ГГц; ОЗУ - 4 Гб; операционная система - MS Windows XP Professional SP 2; библиотека MPI -MPICH2 1.0.8.

Методика тестирования состояла в следующем. Для решения выбирались только выполнимые задачи больших размерностей. На первой системе каждая задача поочередно решалась с помощью решателей GA_MPI и SA_MPI с числом потоков 1, 2, 4, 8, 16, 32. Для второй системы использовались все четыре решателя (GA_OMP, GA_MPI, SA_OMP, SA_MPI) с числом потоков 1, 2, 3, 4. Для каждого запуска запоминались время выполнения и число невыполненных клауз.

В таблице 1 приведены основные настройки решателей для обоих методов.

Перед рассмотрением результатов тестирования заметим, что в решателе GA_MPI реализована островная модель (island model) генетического алгоритма, а в решателях SA_MPI и SA_OMP -мультистартовая модель (multi-start model) метода имитации отжига. В этих моделях поиск решения осуществляется всеми потоками независимо, с периодической кооперацией (обменом результатами). Такая стратегия позволяет с увеличением числа потоков увеличивать точность получаемого решения (ускорять сходимость), но ускорения вы-

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

Таблица 1

GA

initial_probability=0.5 limit_output=20 populationsize =200 offspringsize=100 only_offspring=false parentselection =0 offspringselection =0 tournament_size=16 crossover_probability=0.7 mutation_probability=0.002 mutation_fadeout=false net_async=true migrationsize=3 migration_rate=25 run_count=1 max_step=500 rand_seed=1100101 debug_level=0_

SA

initial_probability=0.5 limit_output=20 move _probability=0.02 initialtemperature=1 cooling_rate=0.994 heating_rate=1. 5 isotherm_steps=20 net_async=true cooperation_rate=25 run_count=1 maxstep=10000 rand_seed=1100101 debug_level=0

В решателе GA OMP реализована модель одной популяции, с которой одновременно работают все потоки (global population model). Данная модель позволяет ускорить время вычислений, но точность решения при этом не увеличивается.

Результаты тестирования

Приведем результаты тестирования для задачи ndhf_xits_20_SAT из набора SAT 2009. Параметры задачи: число переменных - 4242, число клауз -503783.

Результаты тестирования для системы с распределенной памятью приведены в таблице 2, где N - число потоков; £ - число невыполненных клауз; А - процент невыполненных клауз; t - время решения (сек.).

Таблица 2

GA_MPI SA_MPI

N £ A t £ A t

1 1029 0,204 153 13306 2,641 41

2 989 0,196 152 10397 2,064 35

4 956 0,190 153 9963 1,978 35

8 961 0,191 148 8207 1,629 35

16 923 0,183 151 7667 1,522 34

32 891 0,177 198 7154 1,420 41

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

Результаты тестирования для решателей GA_MPI, SA_MPI и SA_OMP в системе с общей памятью оказались аналогичными приведенным выше. Исключением является решатель GA_OMP. Результаты тестирования для этого решателя приведены в таблице 3, где N - число потоков; £ -число невыполненных клауз; А - процент невыполненных клауз; 1 - время решения (сек.).

Таблица 3

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

N GA_OMP

£ A t

1 1077 0,214 122

2 1303 0,259 70

3 947 0,188 48

4 1206 0,239 38

Из таблицы 3 видно, что с увеличением числа потоков увеличивается не точность, а скорость решения. График ускорения для решателя GA_OMP приведен на рисунке.

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

В ближайшей перспективе разработчики добавят в библиотеку новые методы оптимизации, в частности, метод поиска с переменной глубиной (VDS - Variable Depth Search), а также гибридные методы (прежде всего GA+SA).

Кроме того, в следующих версиях библиотеки планируется реализация уже имеющихся методов оптимизации с использованием еще одной технологии параллельного программирования - Intel Threading Building Blocks (TBB).

Литература

1. Цыганов А.В., Булычов О.И., Лавыгин Д.С. Исследование эффективности библиотеки MaLLBa на примере задач максимальной выполнимости // Программные продукты и системы. 2009. № 3. С. 116-120.

2. Handbook of metaheuristics / Ed. by F. Glover, G.A. Kohenberger. Kluwer Academic Publishers, 2003.

3. Hromkovic J. Algorithmics for hard problems. Introduction to combinatorial optimization, randomization, approximation, and heuristics. 2nd edition. Springer, 2004.

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