Использование метаэвристик для решения задач дискретного программирования

Похожий метод был предложен Камкиным [3] и успешно используется в наборе программных средств для тестирования программного обеспечения и аппаратных сред ИшТЕБК [7], однако для его применения необходимо до начала тестирования составить полную формальную спецификацию тестируемого объекта в терминах логических предикатов. Иногда, для особенно сложных систем, построение формальной спецификации является очень сложной задачей и требует больших затрат труда высококвалифицированного персонала.

Представленная теория используется при создании автоматизированной системы генерации тестов, выполняемой по заказу Дизайн-компании КМ-211. Работа выполняется в рамках программы стратегического развития ПетрГУ сотрудниками лаборатории Математического моделирования и сложных вычислительных расчетов.

Литература

1. Бурданов, И.Б. Использование конечных автоматов для тестирование программ / И.Б. Бурданов, А.С. Косачев,

B.В. Кулямин // Программирование. - 2000. - № 2. - С. 12 - 28.

2. Бурданов, И.Б. Неизбыточные алгоритмы обхода ориентированных графов. Детерминированный случай / И.Б. Бурданов, А.С. Косачев, В.В. Кулямин // Программирование. - 2003. - № 5. - С. 11 - 30.

3. Камкин, А. С. Генерация тестовых программ для микропроцессоров / А.С. Камкин // Труды Института системного программирования РАН. - 2008. - Т. 4. - Ч. 2. -

C. 23 - 65.

4. Мявря, Д.А. Задача оптимизации тестового покрытия и методы ее решения / Д.А. Мавря // Новые информационные технологии в ЦБП и энергетике: Материалы X Международной конференции. - Петрозаводск, 2012. -С. 41 - 45.

5. Мявря, Д.А. Оптимизационные задачи в тестировании конвейерных микросхем / Д.А. Мавря, В.А. Кузнецов // Новые информационные технологии в ЦБП и энергетике. Материалы X Международной конференции. - Петрозаводск, 2012. - С. 35 - 36.

6. Справочник КМ32 // Дизайн Центр КМ211. - 2011.

7. итТЕ8К - индустриальная технология надежного тестирования. - ЦКЬ: http://www.unitesk.ru/

УДК 519.87

К.Н. Сеничев, В.А. Кузнецов

ИСПОЛЬЗОВАНИЕ МЕТАЭВРИСТИК ДЛЯ РЕШЕНИЯ ЗАДАЧ ДИСКРЕТНОГО ПРОГРАММИРОВАНИЯ

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

Метаэвристика, комбинаторная оптимизация, дискретная линейная комбинация.

The article presents the description of metaheuristics algorithms for solving discrete programming problems using the basic mathematical structures. The new mix-and-match technique is proposed in the paper.

Metaheuristics, combinatorial optimization, discrete linear combination.

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

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

P: fp (х)  min, х е Q.

Метаэвристики часто напоминают явления и процессы, которые встречаются в повседневной жизни. Придуманные физиками, биологами и инженерами, они нередко появляются в качестве аналогов физических, технических или социальных процессов, что привносит определенные особенности в терминологию их описания. К примеру, значение функционала задачи может интерпретироваться как «энергия» некоторого материала или «уровень здоровья» определенной особи, что в ряде случаев не соответствует требованиям математической строгости. План х е ^ может называться «маршрутом муравья» или «хромосомой» [1], что, чаще всего, не имеет никакого отношения к рассматриваемой задаче.

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

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

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

Основные объекты в алгоритмах, основанные на метаэвристиках

Множество О чаще всего представляет собой конечное множество перестановок n элементов p = (p1,p2,- -,pn)e Sn или булевских векторов

x = (x,X2,-,Xn)e B2n .

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

Основой локальной оптимизации решения задачи является понятие x e Оx с О - окрестности решения x e О.

Для определения окрестности решения на множестве О введем понятие метрики |М(x, x') > 0, определяющей степень близости элементов этого множества, удовлетворяющей всем соответствующим аксиомам.

Для векторов Б^ это может быть расстояние Хэмминга

n

Mi(x x') = XI xj- xj' I ,

j=i

Декартово расстояние

m2( x, x') =

или любая другая подходящая функция.

Метрика m1 (p, p') для перестановок представляет собой минимальное количество инверсий, необходимых для того, чтобы перевести одну из перестановок p e Sn в перестановку p' .

Метрику m2(p, p') можно построить на основе соответствующих таблиц инверсий b и b' перестановок p и p' по формуле:

n

p') = X1 bj - bj ' 1 .

j=i

В качестве расстояния Хемминга для перестановок можно использовать количество позиций перестановок с различными значениями соответствующих элементов - мощность множества индексов i = 1..П , для которых выполняется соотношение p, * p,'.

Перечисленные метрики являются наиболее распространенными вариантами для Q = Sn, однако их список можно продолжать.

Дальнейшие рассуждения носят общий характер, поэтому будем писать |m(х, х'), предполагая, что метрика выбрана определенным образом.

К окрестности будут предъявляться следующие требования:

1. х еОх - окрестность решения строится по единому правилу для каждой точки х ей и содержит ее (представляет эту точку).

2. йх ей - допустимость планов окрестности.

3. Вспомогательная задача оптимизации

Рх : fP (х)  min, х е йх.

должна решаться достаточно эффективно, например, перебором, если конечное множество йх содержит достаточно мало элементов или как-либо иначе (условие компактной окрестности).

4. Связность множества W, которая имеет место, если для любых х, х' е W существует конечная последовательность точек

х = х0, хl,..., хк = х ', х,+ 1 ейх, .

Условие 3 обеспечивает эффективность решения вспомогательных задач, а требование 4 - теоретическую возможность нахождения оптимального решения.

Окрестности точек определяются выбором метрики и численного параметра, определяющего их мощности. К примеру, окрестностями ранга k вектора х е В или перестановки p е Sn могут служить векторы или перестановки

йкх = {х ’ е W | m(х, х ’) < к}.

Поскольку {х} = е йх е ... е йП =W , параметр к логично назвать рангом окрестности.

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

Комбинирование решений в метаэвристиках

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

Аналогом просмотра направления в дискретном множестве решений - подмножеств О = 8п или перестановок О = В- становится комбинирование пары решений х', х "е О .

Решение х е О логично назвать дискретной линейной комбинацией пары решений х', х "е О , если

I т( хх)+т( х, х") - т( х, х') |< е.

для некоторого е > 0 . Значение е выбирается в зависимости от метрики т.

Подобное определение позволяет записывать точку х в форме дискретной линейной комбинации х = а' х'+ а" х", где

а ' = -

т

т

т

т

и строить дискретные отрезки [х', х"] .

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

В таком случае дискретной линейной комбинацией будем считать точку х е О , которая является решением

а '--

т

т

при условии (1) .

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

Т еперь конечное множество - отрезок решений

[х', х"] = {а" х '+а"" х"" еО | а', а"" > 0, а "+а"" = 1}

= {х = ах'+ (1 -а)х""е 010 < а < 1}

можно считать корректно определенным. Более того, можно подобрать точку х таким образом, чтобы х' е [х", х] или х" е [х', х], тем самым, формируя луч из х ' в направлении х '' и наоборот, а также определять целую прямую в пределах множества О .

Комбинирование решений на практике

На практике целевая функция, как правило, является аддитивной, тогда применим следующий метод комбинирования решений. Рассмотрим случай

0 = .

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

Структура алгоритма:

1. Если /(х1 ’, х2") < /(х1", х2"), то положить х = {х1', х2 ’}.

Иначе х = {х1'', х2''} .

2. Для к = 2.. п -1

a. Пусть хг' = хк .

Положить і = тій{(=г+1..п>1..г-1}{? | х1'ї х}.

b. Пусть х^" = хк .

Положить } = т1и{,=*+!..п,1..*-1}{ 1 х,'' й х}.

c. Если /(хк, хі') < /(хк, ху "), то добавить в х компоненту хі'. Иначе - добавить компоненту ху ".

Таким образом, мы получили комбинацию решений х', х".

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

В случае О = В^п , по аналогии, каждая компонента нового решения выбирается из соответствующих компонент решений х', х'' согласно жадному критерию.

Структура метаэвристик

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

- * —

- х *

* = / (х*) -

оптимальное решение задачи,

оптимальное значение ее целевой

2* = /

функции. Положим 2 *, если множество О - пустое.

- к = 1, 2, 3... - номер текущей итерации, перед началом первой итерации к = 0.

- 2рек - рекордное найденное значение целевой функции, хрек є О - план, на котором достигается

2рек = /(хрек ) .

- хк - текущий план, гк = /(хк) - значение целевой функции для текущего плана.

- Остарт - начальное множество допустимых

решений задачи.

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

Шаг 0

01.

Установить z =¥ и k = 1.

02.

Установить уровень окрестности Wx = Wx .

Установить Остарт = W .

03.

Построить начальный план x0 e W^.

Шаг k

k1.

Выбрать точку xk e

k2.

Если zk < zpeK (*), то положить xpeK = xk , zpeк = zk .

k3.

Если условие (Exit) выхода выполнено, закончить работу.

Иначе, проверить условие повторного запуска алгоритма.

Если условие (Restart) выполнено:

- скорректировать W^^;

- скорректировать уровень окрестности г;

- положить k = 1;

- перейти к шагу 03.

Иначе:

- положить k = k +1;

- перейти к следующему шагу.

Finish.

Каждая метаэвристика определяется набором правил.

Правило (3) задает алгоритм выбора начального решения, в качестве которого часто используется либо точка, полученная случайным образом, либо точка, которая строится строго определенным образом в зависимости от задачи, например, жадным способом.

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

Правило (5) изменения начального множества Wc-гарт используется при многократном запуске алгоритма. Например, начальное решение может выбираться из окрестности найденного на предыдущем запуске наилучшего решения.

Правило (6) устанавливает изменение ранга окрестности r. В случае слишком большой окрестности точки увеличивается сложность решения вспомогательной задачи, в случае недостаточной - выполняется мало шагов алгоритма и снижается точность вычислений.

Количество повторений работы алгоритма в условии (Exit) может

1) быть зафиксировано;

2) определяться допустимым установленным временем счета;

3) отслеживаться по динамике изменения рекорда.

Условие перезапуска алгоритма (Restart) может

1) отсутствовать;

2) определяться нарушением условия (*);

3) отслеживаться по динамике изменения рекорда.

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

03'.

Построить множество из m точек X° = {*1°, *2,-, *m> е^старт .

k1'.

Построить Xk = {*k,*2,..., *m}е W на основе

Xk -1.

Установить xk = {xk | i = argmin^.=1 m f (xk)}.

Результаты численного эксперимента

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

Таблица

Среднее отклонение от оптимального решения

№ 50 100 200 300 500

Метод локальной оптимизации 7,3 5,4 4,6 6,1 5,6

Генетический алгоритм со случайной комбинацией 8,3 7,2 5,2 7,1 6,5

Генетический алгоритм с жадной комбинацией 4,5 3,5 3,4 6,4 6,2

Метод имитации отжига 7,9 7 5,2 6,5 6,6

Литература

1. Гладков, Л.А. Генетические алгоритмы / Л.А. Гладков, В.В. Курейчик, В.М. Курейчик. - М., 2006.

2. Ковалев, М.Я. Теория алгоритмов: курс лекций: в 2 ч. Ч. 2: Приближенные алгоритмы / М.Я. Ковалев, В.М. Котов, В.В. Лепин. - Минск, 2003.

3. Кочетов, Ю.А. Методы локального поиска для дискретных задач размещения: дис. ... д-ра физ.-мат. наук / Ю.А. Кочетов. - Новосибирск, 2009.

4. Кузнецов, В.А. Метаэвристики для решения комбинаторных задач / В.А. Кузнецов, К.Н. Сеничев. - Петрозаводск, 2012.

5. Кузнецов, В.А. Состав и структура метаэвристик для решения комбинаторных задач / В.А. Кузнецов, К.Н. Сеничев // Новые информационные технологии в ЦБП и

энергетике. Материалы X Международной конференции. -Петрозаводск, 2012. - С. 34 - 35.

6. Сеничев, К.Н. Варианты и формализация генетического алгоритма / К.Н. Сеничев // Новые информационные технологии в ЦБП и энергетике: Материалы X Международной конференции. - Петрозаводск, 2012. - С. 45 - 46.

7. Сигал, И.Х. Введение в прикладное дискретное программирование / И.Х. Сигал, А.П. Иванова. - М., 2007.

8. Ballestin, F. Metaheuristics for stable scheduling on a

single machine / F. Ballestin, R. Leus // Computer and Operation Research. - 2008. - № 7. - P. 2175 - 2192.

9. Blum, C. Metaheuristics in Combinatorial Optimization: Overview and Conceptual Comparison / C. Blum // ACM Computing Surveys. - 2003. - № 3. - P. 268 - 308.

10. Hoos, H.H. Stochastic Local Search: Foundations and Applications / H.H. Hoos, T. Stutze. - San Francisco: Morgan Kaufmann Publ., 2005.