
- •Глава 7. Целочисленное программирование
- •7.1. Проблема целочисленности
- •X1, x2 0, int (целые).
- •7.2. Метод отсечений
- •Пример 7.1. Выведем условие отсечения для задачи
- •X1, x2 0, целые.
- •7.3. Метод ветвей и границ
- •7.4. Аддитивный алгоритм
- •7.5. Другие методы
- •7.6. Задания для самостоятельной работы
7.5. Другие методы
В.Комлик и В.Емеличев (1968) предложили метод построения последовательности планов, который относится к классу точных методов. Идея метода состоит в следующем. Исходная линейная целочисленная задача максимизации с m условиями заменяется задачей с одним условием (расширенная задача). Для определения этого условия решается m задач, каждая с одним условием. Находится минимум из m оптимальных значений критериев minLi*=Lt*. Задача t берется в качестве расширенной (допустимое множество исходной задачи является ее подмножеством). Если оптимальный план этой задачи не является допустимым для исходной, он удаляется из допустимого множества расширенной задачи и она решается вновь. Новый оптимальный план снова проверяется на допустимость и удаляется при недопустимости. Так строится последовательность невозрачтающих (по критерию) планов. Решение завершается, как только очередной план раширенной задачи окажется допустимым для исходной, а следовательно, он будет ее оптимальным решением. Для общей задачи целочисленного программирования решение расширенной рекомендуется искать методом динамического программирования.
Точные методы целочисленного программирования отличаются высокой трудоемкостью, причем с ростом числа переменных она возрастает экспоненциально. Поэтому они применяются для задач до средней размерности. Практически решаются общие задачи с несколькими сотнями переменных, а специальные задачи (особые свойства, булевые переменные) – с 1-2 тысячами переменных. При этом в более “мощных” алгоритмах метод ветвей и границ сочетается с методом отсечений. Последний применяется при решении подзадач как способ уточнения верхней оценки: отсечения проводятся только до тех пор, пока изменяется критерий.
Для решения задач средней и большой размерности применяют приближенные методы. Класс приближенных методов весьма обширен. Во многих из них используются идеи точных методов, модифицированные для поиска приближенного решения. Значительную группу составляют методы, основанные на эвристиках - правилах, не имеющих строгого обоснования, но отвечающих здравому смыслу (представлениях о свойствах оптимального решения с учетом специфики задачи). Такие методы работают быстро, но невозможно оценить качество получаемого решения. Как правило, находится некоторое локальное решение.
В методе вектора спада (Сергиенко) локальность решения проверяется непосредственно. Вектор спада минимизируемого критерия – это векторная функция от x относительно окрестности радиуса r>0 (замкнутого шара) с центором в точке x. Размерность вектора спада равна числу целочисленных точек в шаре без x. Его компоненты характеризуют поведение критерия при отклонении от x. Они подобны относительным оценкам в симплекс-методе, но вычисляются для целочисленных точек в шаре. Если все компоненты вектора неотрицательны, то текущая точка x является локальным минимумом. В этом случае радиус шара увеличивается и вектор спада пересчитывается. Последовательность радиусов r1< r2< …< rm и начальная точка задаются априорно. Если некоторая компонента показывает улучшение решения, то осуществляется переход в лучшую точку, которая принимается за текущую, и вектор спада вычисляется относительно этой точки для шара без изменения радиуса. Если установлено, что исследуемая точка является локальным минимумом на шаре с максимальным радиусом, она принимается за решение задачи. Характеристики этого метода сильно зависят от способа вычисления вектора спада и предварительно выбираемых значений параметров алгоритма.
Ряд приближенных методов разработан для решения определенных задач с учетом их специфики, благодаря чему они более эффективны по сравнению с другими приближенными методами.
Кроме перечисленных подходов находят применение приближенные методы, использующие случайный поиск и особенно генетические алгоритмы. Последние сочетают случайные действия с детерминированными. В частности, несколько генетических алгоритмов разработано для задачи коммивояжера.